Keep OSNews alive by becoming a Patreon, by donating through Ko-Fi, or by buying merch!

General Development Archive

Could You Live Without Blocking Calls?

After having an interesting discussion with Brendan on the topic of deadlocks in threaded and asynchronous event handling systems (see the comments on this blog post), I just had something to ask to the developers on OSnews: could you live without blocking API calls? Could you work with APIs where lengthy tasks like writing to a file, sending a signal, doing network I/O, etc is done in a nonblocking fashion, with only callbacks as a mechanism to return results and notify your software when an operation is done?

Native x86 Android Runtime: Android Applications on Windows

"A startup called BlueStacks has developed an Android runtime environment for the Windows operating system. It will enable users to run Android applications alongside conventional Windows software on Microsoft's operating system. The technology impressed some major investors who have supplied $7.6 million in Series A funding so that BlueStacks can turn its software into a business."

Javascript Emulator Lets Linux Run in a Browser Tab

The name Fabrice Bellard may not be recognizable to a lot of people, but the work he carries out as a programmer and computer scientist is. . . . He is a very talented programmer, and his latest project demonstrates once again just how talented he is. Using the super-fast JavaScript engines that now come as standard in popular web browsers, he has managed to create a PC emulator that runs in a browser. As a demonstration he has posted a link to a version of the Linux kernel running in such a scenario.

The Rise (And Fall?) of Application Stores

Application stores are growing everywhere like mushrooms. While users have initially embraced application stores because of the ease they offer with application installation, developers have several complaints. Division of profits from paid application and ineffectiveness of the screening process are among the major issues. Are application stores the best distribution channel possible? Can they satisfy both developers and users?

Open Source Programming Tools on the Rise

InfoWorld's Peter Wayner takes a look at 13 open source development projects making waves in the enterprise. From Git to Hadoop to build management tools, "even in the deepest corners of proprietary stacks, open source tools can be found, often dominating. The reason is clear: Open source licenses are designed to allow users to revise, fix, and extend their code. The barber or cop may not be familiar enough with code to contribute, but programmers sure know how to fiddle with their tools. The result is a fertile ecology of ideas and source code, fed by the enthusiasm of application developers who know how to 'scratch an itch'."

LLVM 2.9 Released

"This release includes 6 months of development that provide major enhancements and new features over the LLVM 2.8 release. LLVM 2.9 includes much better optimization and code generation than LLVM 2.8 (particularly for modern ARM targets), improved support for C++'0x in Clang, and a much more mature LLDB."

ISO Finalizes C++ Update

The C++ programming language is about to be updated, as the ISO steering committee for the language has approved the final draft specifying its next version. The ISO/IEC Information Technology Task Force will review the steering committee's Final Draft International Standard will review and, barring any complications, publish the draft later this year. It will be known as C++ 2011.

Enlightenment Libraries Reach 1.0

Enlightenment version 16 was one of most configurable window managers back in late nineties (and still is). For the next version however Rasterman and friends decided to create a complete desktop shell instead of just a simple window manager. Enlighenment version 17 is therefore based on a set of graphical libraries which can used for other applications as well. But do we need another set of libraries when QT and GTK+ are already mature and stable? Depending on your needs, you might find that using the Enlightenment libraries is truly an enlightening experience!

Recent Google Go Build Brings Treats for Windows

Go is a highly hyped (last year) new programming language by Google. Thanks to ongoing community effort, its Win32 compatibility constantly improves. This week's rolling release should be considered a major milestone. In the somewhat dry words: "implementation of callback functions for Windows" and "cgo: windows/386 port", it introduces two major breakthroughs for this platform: WinAPI GUI support, and the ability to easily wrap and link external (non-Go) libraries. Note that there's an unofficial compiled build for Win32 available for download.

Portable C Compiler Approaching 1.0

The BSD licensed Portable C Compiler (PCC) is steadily on the road for a 1.0 release and is now able to compile a FreeBSD/amd64 CURRENT system with almost no changes. The current version of PCC has evolved from the original PCC developed at Bell Labs during the 1970s and has been maintained by Anders Magnusson and a small team of developers during the last decade. It has received more attention during the last few years, especially by OpenBSD and NetBSD people seeing it at as a viable option as a GCC replacement.

Roll Your Own Toy UNIX-clone OS

"This set of tutorials aims to take you through programming a simple UNIX-clone operating system for the x86 architecture. The tutorial uses C as the language of choice, with liberally mixed in bits of assembler. The aim is to talk you through the design and implementation decisions in making an operating system. The OS we make is monolithic in design (drivers are loaded through kernel-mode modules as opposed to user-mode programs), as this is simpler."

Introduction to OpenCL

"Using a GPU for computational workloads is not a new concept. The first work in this area dates back to academic research in 2003, but it took the advent of unified shaders in the DX10 generation for GPU computing to be a plausible future. Around that time, Nvidia and ATI began releasing proprietary compute APIs for their graphics processors, and a number of companies were working on tools to leverage GPUs and other alternative architectures. The landscape back then was incredibly fragmented and almost every option required a proprietary solution - either software, hardware or both. Some of the engineers at Apple looked at the situation and decided that GPU computing had potential - but they wanted a standard API that would let them write code and run on many different hardware platforms. It was clear that Microsoft would eventually create one for Windows (ultimately DirectCompute), but what about Linux, and OS X? Thus an internal project was born, that would eventually become OpenCL."

12 Programming Mistakes to Avoid

InfoWorld's Peter Wayner outlines the 12 most common programming mistakes, and how to avoid them. "Certain programming practices send the majority of developers reaching for their hair upon opening a file that has been exhibiting too much 'character'. Spend some time in a bar near any tech company, and you'll hear the howls: Why did the programmer use that antiquated structure? Where was the mechanism for defending against attacks from the Web? Wasn't any thought given to what a noob would do with the program?" Wayner writes. From playing it fast and loose, to delegating too much to frameworks, to relying too heavily on magic boxes, to overdetermining the user experience - each programming pitfall is accompanied by its opposing pair, lending further proof that "programming may in fact be transforming into an art, one that requires a skilled hand and a creative mind to achieve a happy medium between problematic extremes".

CDE: Automatic Packaging of Code, Data, Environment

"CDE is a tool that automatically packages up the Code, Data, and Environment involved in running any Linux command so that it can execute identically on another computer without any installation or configuration. The only requirement is that the other computer have the same hardware architecture (e.g., x86) and major kernel version (e.g., 2.6.X) as yours. CDE allows you to easily run programs without the dependency hell that inevitably occurs when attempting to install software or libraries. You can use CDE to allow your colleagues to reproduce and build upon your computational experiments, to quickly deploy prototype software to a compute cluster, and to submit executable bug reports."

A Decade of Agile Programming: Has it Delivered?

InfoWorld offers a look back at the first decade of agile programming. Forged in February 2001 when a group of developers convened in Utah to find an alternative to documentation-driven, 'heavyweight' software development practices, The Manifesto for Agile Software Development sought to promote processes that accommodate changing requirements, collaboration with customers, and delivery of software in short iterations. Fast-forward a decade, and agile software development is becoming increasingly commonplace, with software firms adopting agile offshoots such as Scrum, Extreme Programming, and Kanban - a trend some see benefiting software development overall

7 Programming Languages on the Rise

InfoWorld's Peter Wayner reports on once niche programming languages gaining mind share among enterprise developers for their unique abilities to provide solutions to increasingly common problems. From Python to R to Erlang, each is being increasingly viewed as an essential tool for prototyping on the Web, hacking big data sets, providing quick predictive modeling, powering NoSQL experiments, and unlocking the massive parallelism of today's GPUs.