General Development Archive

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.

Microsoft Slaps Motorola with Patent Lawsuit over Android

Anyone who did not see this one coming after Microsoft's patent deal with HTC and Apple's meticulousness in avoiding Windows Mobile in its suit against HTC hasn't been paying attention. Microsoft has filed a patent complaint with the US International Trade Commission, as well as a patent lawsuit in the US District Court for the Western District of Washington against Motorola over its Android-based devices.

Recreational Programming With LoseThos

Technologists fear (and loathe) that which has no purpose. Why must some insist in deriding an operating system like Haiku that doesn't fit their particular needs or precepts of what has a purpose, when, it's advanced enough to have a decent web-browser and productivity software? Today I shall be further offending these people's tastes with a look into LoseThos--a pure 64-bit, preemptive-multitasking, multicored PC operating system that is intended to be used as a secondary operating system for user's recreational programming on their best PC while dual booting a primary system such as Linux or Windows where they do networking and other modern activities such as multimedia. Yes, LoseThos has no networking, no security of any kind, and VGA graphics; but it certainly has a purpose: to be fun! (for programmers, at least)

Is Computer Science a Dead End in the Workplace?

Fatal Exception's Neil McAllister asks whether the need for advanced development expertise is on the decline in an era in which tools grow increasingly more advanced, and coding increasingly moves offshore. 'Few companies share Google's zeal for academic credentials when hiring new developers. Many are willing to accept self-taught programmers, particularly if they have other skills relevant to the business.'

Creating Mobile Web Applications With HTML5

In this five-part series, you will take a closer look at several new technologies that are part of HTML5, that can have a huge impact on mobile Web application development. Part 1: Combine HTML5, geolocation APIs, and Web services to create mobile mashups. Part 2: Unlock local storage for mobile Web applications with HTML5. Part 3: Make mobile Web applications work offline with HTML5. Part 4: Using Web Workers to speed up your mobile Web applications. Part 5: Develop new visual UI features in HTML 5.

Why Johnny Can’t Code

"For three years son Ben, and I have engaged in a quixotic but determined quest: We've searched for a simple and straightforward way to get the introductory programming language BASIC to run on either my Mac or my PC. Why on Earth would we want to do that, in an era of glossy animation-rendering engines, game-design ogres and sophisticated avatar worlds? Because if you want to give young students a grounding in how computers actually work, there's still nothing better than a little experience at line-by-line programming." Looking beyond the immediate fear-inducing acronym BASIC, this article delves deeply into what it means to simply be in control--via a basic understanding of under the hood--of your own computer, and how our whiz-bang world of technology today is failing to bestow this understanding on this generation of would-be hackers.