software development concepts

The Greatest Invention in Computer Science

programming languages

The Greatest Invention in Computer Science

What do you think the single greatest invention in computer science is? Besides the computer itself, I mean. Seriously, before reading any further, pause here for a moment and consider the question. I’ve talked before about how young so-called modern computer programming languages really are, and it bears repeating

By Jeff Atwood ·
Comments
Strong Opinions, Weakly Held

programming languages

Strong Opinions, Weakly Held

I seldom pause to answer criticism of my blog. If I did, I’d have time for little else in the course of the day, and no time for constructive work. But occasionally I’ll encounter a particularly well written critique that gives me pause, such as Alastair Rankine’s

By Jeff Atwood ·
Comments
Crash Responsibly

software development concepts

Crash Responsibly

As programmers, it is our responsibility to ensure that when something goes horribly wrong with our software, the user has a reasonable escape plan. It’s an issue of fundamental safety in software error handling that I liken to those ubiquitous airline safety cards. Which one accurately depicts the way

By Jeff Atwood ·
Comments
Is HTML a Humane Markup Language?

html

Is HTML a Humane Markup Language?

One of the things we’re thinking about while building stackoverflow.com is how to let users style the questions and answers they’re entering on the site. Nothing’s decided at this point, but we definitely won’t be giving users one of those friendly-but-irritating HTML GUI browser layout

By Jeff Atwood ·
Comments

xml

XML: The Angle Bracket Tax

Everywhere I look, programmers and programming tools seem to have standardized on XML. Configuration files, build scripts, local data storage, code comments, project files, you name it – if it’s stored in a text file and needs to be retrieved and parsed, it’s probably XML. I realize that we

By Jeff Atwood ·
Comments
Understanding Model-View-Controller

programming languages

Understanding Model-View-Controller

Like everything else in software engineering, it seems, the concept of Model-View-Controller was originally invented by Smalltalk programmers. More specifically, it was invented by one Smalltalk programmer, Trygve Reenskaug. Trygve maintains a page that explains the history of MVC in his own words. He arrives at these definitions in a

By Jeff Atwood ·
Comments
Programmers Don’t Read Books – But You Should

programming languages

Programmers Don’t Read Books – But You Should

One of the central themes of stackoverflow.com is that software developers no longer learn programming from books, as Joel mentioned: Programmers seem to have stopped reading books. The market for books on programming topics is miniscule compared to the number of working programmers. Joel expressed similar sentiments in 2004’

By Jeff Atwood ·
Comments
Everything I Needed to Know About Programming I Learned from BASIC

programming languages

Everything I Needed to Know About Programming I Learned from BASIC

Edsger Dijkstra had this to say about Beginner’s All Purpose Symbolic Instruction Code: It is practically impossible to teach good programming style to students that have had prior exposure to BASIC; as potential programmers they are mentally mutilated beyond hope of regeneration. I’m sure he was exaggerating here

By Jeff Atwood ·
Comments
Core War: Two Programs Enter, One Program Leaves

programming languages

Core War: Two Programs Enter, One Program Leaves

Our old pal A. K. Dewdney first introduced the world to Core War in a series of Scientific American articles starting in 1984. (Full page scans of the articles, including the illustrations, are also available.) Core War was inspired by a story I heard some years ago about a mischievous

By Jeff Atwood ·
Comments

software development concepts

Let That Be a Lesson To You, Son: Never Upgrade.

(Update: This piece originally ran on April Fools’ day; although the content of the post is not an April Fools’ joke, the retro styling definitely was. View a screenshot of how this post looked on April 1, 2008) I occasionally follow Jamie Zawinski’s blog. Jamie’s an interesting guy.

By Jeff Atwood ·
Comments

user-experience

Revisiting “Keyboard vs. The Mouse, pt 1”

You may know Bruce Tognazzini from his days as Apple Computer employee #66, or perhaps his classic books Tog on Interface and Tog on Software Design. He’s still quite relevant today; his list of the ten most persistent UI bugs is an excellent reminder that many of the biggest

By Jeff Atwood ·
Comments

technology trends

Just a Little Bit of Software History Repeating

I lived in the Denver area at the time Denver International Airport’s completely computer automated baggage system was unveiled in 1994. The troubled development of this system was big local news. The premise of Denver’s plan was as big as the West. The distance from a centralized baggage

By Jeff Atwood ·
Comments