Today's Question:  What does your personal desk look like?        GIVE A SHOUT

 SOFTWARE DESIGN


  Optimization Tricks used by the Lockless Memory Allocator

With the releasing of the Lockless Memory Allocator under the GPL version 3.0 license, we can now discuss more of the optimization tricks used inside it. Many of these are things you wouldn't want to use in normal code. However, when speed is the ultimate goal, sometimes we need to break a few rules and use code that is a little sneaky.The SlabA slab is a well-known technique for allocating fixed size objects. For a given object size, a chunk of memory is divided up into smaller regions of that length. Since all the interior objects have the same size, fragmentation is eliminated. The only rea...

4,312 0       OPTIMIZATION MEMORY ALLOCATION


  The Death Of The Spec

Earlier today, my colleague Matt Burns wrote a post noting that most tablet makers may be largely failing because they’ve sold their soul to Android and are now just in the middle of a spec war, which no one can win. I’m gonna go one step further in that line of thinking: the spec is dead.There have been a few key stories from the past couple of weeks that highlight this new reality. Barnes & Noble unveiled the new Nook Tablet. Consumer Reports looked at the iPhone 4S. Andthe first reviews came in about the Kindle Fire.On paper, the Nook Tablet is the...

2,307 0       SPECIFICATION ANDROID PLATFORM SOFTWARE DESIGN


  The Balanced Developer

In preparation for a recent team offsite, I spent some time thinking about what I hold dear as a software developer. One idea I kept coming back to is the notion of balance. I see balance manifesting itself several ways in the work of a successful developer, some of which follow.Speed Versus QualityThe most obvious example is the balance of development speed and quality. When building software, it’s never a good idea to write code as fast as possible without any attention toward maintainability, just as it’s never a good idea to spend such an inordinate amount of time designing a...

2,689 0       SOFTWARE QUALITY DEVELOPMENT BALANCE SPEED


  Don't Give Your Users Shit Work

The problem with shit work is that no one likes doing it, but an awful lot of people say they do.Shit workTake a look at Twitter Lists. The idea behind Twitter Lists was that users would carefully cultivate lists on Twitter of different accounts they’re following (or not following). These could be divided into lists like Family, Friends, Coworkers, People I Find Mildly Attractive, People To Murder, People I Find Mildly Attractive And Want To Murder, and so on.The problem is that, anecdotally, no one seems to use Lists. Twitter is filled with users who have carefully made a few lists, an...

6,646 0       DESIGN FACEBOOK TWITTER USER ORIENTED


  The business of software

Inspired by a talk I gave yesterday at the BOS conference. This is long, feel free to skip!My first real job was leading a team that created five massive computer games for the Commodore 64. The games were so big they needed four floppy disks each, and the project was so complex (and the hardware systems so sketchy) that on more than one occasion, smoke started coming out of the drives.Success was a product that didn't crash, start a fire or lead to a nervous breakdown.Writing software used to be hard, sort of like erecting a building used to be hundreds of years ago. When you set ou...

1,863 0       SOFTWARE DESIGN BUSINESS SOFTWARE DESIGN


  DESIGNERS NEED ENGINEERS

Like so many of you, I’ve been indulging in the amateur analyses all over the web about why Steve Jobs, p.b.o.h., was so great. The recurring message is pithily summarized by Mathew Ingram: “Technology is the least important thing about Apple products”.Bullshit. The reason why Apple manages to build such magnificent products is because design and usability drive the engineering, yet the technology behind their products is by no means trivial. Apple cares a lot about engineering, more than Dell and Samsung and RIM.It takes one designer to decide that ...

2,658 0       ENGINEER DESIGNER RELATIONSHIP


  I hate cut-and-paste

Me, I blame the IDE's.Coding used to be hard. Not because programming itself was overly hard, but mostly because editors absolutely sucked. How much the typical development environment in the 70's and 80's sucked is hard to convey (except for a very lucky few, and those would have likely been using DEC and WANG gear). I got in on the tail end of the punch card era. Punching your own program is lots of fun. Once. And if you drop a deck you get to play with the sorter, which is also lots of fun (ok, maybe twice, invariably, on every third usage the sorter would jam and that would be really reall...

2,384 0       SHORTCUT IDE EDITOR CUT AND PASTE BLAME


  Test-Driven Development? Give me a break...

Update: At the bottom of this post, I've linked to two large and quite different discussions of this post, both of which are worth reading... Update 2: If the contents of this post make you angry, okay. It was written somewhat brashly. But, if the title alone makes you angry, and you decide this is an article about "Why Testing Code Sucks" without having read it, you've missed the point. Or I explained it badly :-)Some things programmers say can be massive red flags. When I hear someone start advocating Test-Driven Development as the One True Programming Methodology, that's...

3,150 0       TEST DRIVEN APPLICATION DESIGN TOOL