software development concepts

software development concepts

The Positive Impact of Negative Thinking

In Waltzing with Bears: Managing Risk on Software Projects, DeMarco and Lister outline the dangers of penalizing negative thinking: Once you’ve identified and quantified these risks, they can be managed just like the others. But getting them out on the table can be a problem. The culture of our

By Jeff Atwood ·
Comments

security

The Six Dumbest Ideas in Computer Security

Marcus Ranum, the inventor of the proxy firewall, brilliantly condenses why many security efforts are doomed from the start: they fall prey to the The Six Dumbest Ideas in Computer Security : 1. Default Permit Also known as “on by default.” This one is huge, and it alone is why the

By Jeff Atwood ·
Comments
The Spolsky-Babbitt Connection

software development concepts

The Spolsky-Babbitt Connection

I noticed something strange in a Windows ME screenshot embedded in a Joel Spolsky article I linked yesterday: Notice the Qantas icons? Those are shortcuts to a now-defunct unix machine at Joel’s company, Fog Creek Software. You can find evidence of it at the bottom of this forum post

By Jeff Atwood ·
Comments
Managed Code Analysis Tools

software development concepts

Managed Code Analysis Tools

Navigating a new codebase can feel like like landing on an alien planet. That’s where static code analysis tools come in handy; they’re akin to software tricorders. They provide a general snapshot of unfamiliar code: Is it normal? Is it unusual? Is it dangerous?* There’s an element

By Jeff Atwood ·
Comments
Head First Design Patterns

software development concepts

Head First Design Patterns

I’m beginning to wonder if the book Head First Design Patterns would be better titled Ass Backwards Design Patterns. Here are some quotes from pages 594 and 595 of this 629 page book: First of all, when you design, solve things in the simplest way possible. Your goal should

By Jeff Atwood ·
Comments

user experience

The User Interface Is The Application

Shawn Burke’s post Shippin’ Ain’t Easy (but somebody gotta do it) explains why you have to resist change at the end of a project, no matter how justifiable and rational the reasons may be. Even the smallest change has a real risk of introducing additional bugs. The first

By Jeff Atwood ·
Comments

.net

Clean Sources Plus

Omar Shahine’s Clean Sources is a nifty little right-click app for .NET developers: This application does one thing. It adds an explorer shell menu to folders that when selected will recursively delete the contents of the bin, obj and setup folders. If you have a .NET project that you

By Jeff Atwood ·
Comments

programming languages

Are All Programming Languages The Same?

There’s a chart in Code Complete that compares the productivity of working in different languages: Programmers working with high-level languages achieve better productivity and quality than those working with lower-level languages. Languages such as C++, Java, Smalltalk, and Visual Basic have been credited with improving productivity, reliability, and comprehensibility

By Jeff Atwood ·
Comments

security

Nasty Software Hacks and Intel’s CPUID

We were discussing nasty software hacks today at lunch. The worst hacks are always in software, but those software hacks have an insidious tendency to seep into the hardware, too. I was reminded of Intel’s infamous CPUID hack: Prior to the Pentium, software had to jump through elaborate loops

By Jeff Atwood ·
Comments
Microsoft 1978

programming languages

Microsoft 1978

I’m sure most of you are familiar with this famous Microsoft group photo from December 1978: Groovy. In case you were wondering, the photo is authentic. It’s even featured on the official Microsoft Bill Gates biography page. Of course we recognize Bill Gates in that famous photo, but

By Jeff Atwood ·
Comments

programming languages

How to fit three bugs in 512 bytes of security code

In the spirit of iPod modem hacking, Michael Steil documents how hackers compromised the Xbox security system. Mostly thanks to 512 bytes of rather buggy security code embedded in the Xbox boot ROM: The Xbox is an IBM PC, i.e. it has an x86 CPU. When the machine is

By Jeff Atwood ·
Comments