Blogs

May 24, 2012

Why Does C++ Allow Arithmetic on Null Pointers?

My last two notes discussed a subtle language-design issue that simplifies programmers' lives in ways that they often don't suspect. This theme seems useful, so I'll continue it.

May 23, 2012

Let's All Write a Mobile OS!

Intel, Nokia, Microsoft and the endless relaunching of mobile operating systems

May 23, 2012

The Long and Short of Parallelism

Ten years ago, multi-core processors were just on the horizon. Today they are mainstream and have become the impetus for a revolution in computer programming that can make best use of the two, four, six, or eight cores.




Articles                                     RSS

Automatic Reference Counting on iOS

May 22, 2012

Automatic reference counting is an innovative way of managing Objective-C objects on MacOS X 10.7 and iOS 5. It does away with explicit retain, release and autorelease messages, and it behaves the same on both platforms - Mobile

We Who Value Simplicity Have Built Incomprehensible Machines

May 22, 2012

How creeping feature additions turn good ideas into morasses of incomprehensible options. - Design

Developer's Reading List

May 22, 2012

The most interesting books of the last month, selected and reviewed by Dr. Dobb's editors. - Tools

Extracting Function Parameter and Return Types in C++

May 17, 2012

Using the metaprogramming capabilities of C++ and generic programming, it's possible to create an elegant parser of parameter types. Command-line interpreters, parsers, and syntax checkers are among the many applications. - C/C++

Software Engineers All!

May 15, 2012

Faking a CS degree will get you fired. Falsely claiming to be a software engineer will get you — wait, is that even possible? - Design

Interview With Ward Cunningham

May 15, 2012

The creator of the Wiki dishes on the Wiki, Wikipedia's policies, OO design, technical debt, CoffeeScript and Perl, how to survive as a veteran programmer, and doing the simplest thing that could possibly work. - Design

Testing OO Systems, Part 1

May 15, 2012

OO tests stimulate an object and observe that object's behavior. The tests do not look at the object's state to judge whether or not the test succeeds, they just look at the object's behavior. When I call dog.expressHappiness(), my test succeeds when I observe that wagTail() is called. I would never look inside the dog at the isHappy field. - Testing

The New C Standard Explored

May 08, 2012

C11 specifies many security features that require minimal changes to existing code. They greatly reduce unexpected behavior and prevent many kinds of common attacks. - C/C++

The New Native Languages

May 08, 2012

D and Go are at the forefront of a new generation of native languages emerging in the space between C and C++. - Design

Kernels, Contexts, Threads, and Extensible Database Architecture

May 07, 2012

If you are building a new database management system or simply want to write better database applications, you should be aware of the extensible architecture of operating systems and database managers. - Database

Best of the Web

What the New iPad and iOS 5.1 Mean for Developers

The new display is gorgeous. But local storage for HMTL5 is currently broken on the new iPad and performance of some apps is slower. Here's a deep dive into the issues, including benchmarks and analysis.

Quick Read

Triple Buffering as A Concurrency Mechanism

Triple Buffering is a way of passing data between a producer and a consumer running at different rates. It ensures that the consumer sees only complete data with minimal lag.

Quick Read

Embedding GDB Breakpoints in C Source Code

Have you ever wanted to embed GDB breakpoints in C source code? Something like this:
printf("Hello,\n");
EMBED_BREAKPOINT;
printf("world!\n");

Quick Read

Writing Kernel Exploits

Why attack the kernel? Because it has a huge attack surface with potential for very interesting bugs. This presentation (pdf) takes a code-level dive into recently reported Linux-kernel exploits.

Quick Read


More "Best of the Web" >>



Video

Enabling People and Organizations to Harness the Transformative Power of Technology