software development concepts

Obscenity Filters: Bad Idea, or Incredibly Intercoursing Bad Idea?

programming languages

Obscenity Filters: Bad Idea, or Incredibly Intercoursing Bad Idea?

I’m not a huge fan of The Daily WTF for reasons I’ve previously outlined. There is, however, the occasional gem – such as this one posted by ezrec: Browsing through a web archive of some old computer club conversations, I ran across this sentence: “Apple made the clbuttic mistake

By Jeff Atwood ·
Comments

programming languages

Programming Is Hard, Let’s Go Shopping!

A few months ago, Dare Obasanjo noticed a brief exchange my friend Jon Galloway and I had on Twitter. Unfortunately, Twitter makes it unusually difficult to follow conversations, but Dare outlines the gist of it in Developers, Using Libraries is not a Sign of Weakness: The problem Jeff was trying

By Jeff Atwood ·
Comments
Spawning a New Process

programming languages

Spawning a New Process

I don’t usually talk about my personal life here, but I have to make an exception in this case. I debated for days which geeky reference I would use as a synonym for “we’re having a baby.” The title is the best I could do. I’m truly

By Jeff Atwood ·
Comments
Alpha, Beta, and Sometimes Gamma

software development concepts

Alpha, Beta, and Sometimes Gamma

As we begin the private beta for Stack Overflow later this week, I wondered: where do the software terms alpha and beta come from? And why don’t we ever use gamma? Alpha and Beta are the first two characters of the Greek alphabet. Presumably these characters were chosen because

By Jeff Atwood ·
Comments

hardware

Understanding The Hardware

I got a call from Rob Conery today asking for advice on building his own computer. Rob works for Microsoft, but lives in Hawaii. I’m not sure how he managed that, but being so far from the mothership apparently means he has the flexibility to spec his own PC.

By Jeff Atwood ·
Comments
Monkeypatching For Humans

c#

Monkeypatching For Humans

Although I love strings, sometimes the String class can break your heart. For example, in C#, there is no String.Left() function. Fair enough; we can roll up our sleeves and write our own function lickety-split: public static string Left(string s, int len) { if (len == 0 || s.Length == 0)

By Jeff Atwood ·
Comments
iTunes is Anti-Web

software development concepts

iTunes is Anti-Web

Ever find yourself clicking on links to music or videos and getting blasted in the face with this delightful little number? That’s right – links to any sort of music, TV shows, movies, podcasts, audiobooks or anything else available through Apple’s iTunes store requires custom software to be installed

By Jeff Atwood ·
Comments
Spartan Programming

programming languages

Spartan Programming

As I grow older and wiser even older as a programmer, I’ve found that my personal coding style has trended heavily toward minimalism. I was pleased, then, to find many of the coding conventions I’ve settled on over the last 20 years codified in Spartan programming. No, not

By Jeff Atwood ·
Comments
Regular Expressions: Now You Have Two Problems

regular expressions

Regular Expressions: Now You Have Two Problems

I love regular expressions. No, I’m not sure you understand: I really love regular expressions. You may find it a little odd that a hack who grew up using a language with the ain’t keyword would fall so head over heels in love with something as obtuse and

By Jeff Atwood ·
Comments
Revisiting the XML Angle Bracket Tax

xml

Revisiting the XML Angle Bracket Tax

Occasionally I’ll write about things that I find sort of mildly, vaguely thought provoking, and somehow that writing turns out to be ragingly controversial once posted here. Case in point, XML: The Angle Bracket Tax. I’m still encountering people online who almost literally hate my guts because I

By Jeff Atwood ·
Comments

ruby

Exploring Wide Finder

I have decidedly mixed feelings about the book Beautiful Code, but one of the better chapters is Tim Bray’s “Finding Things.” In it, he outlines the creation of a small Ruby program: counts = {} counts.default = 0 ARGF.each_line do |line| if line =~ %r{GET /ongoing/When/dddx/(dddd/

By Jeff Atwood ·
Comments

software development concepts

Finally, a Definition of Programming I Can Actually Understand

I believe very strongly that a blog without comments is not a blog. For me, the whole point of this blogging exercise is the many-way communication of the comments – between me and the commenters, and among the commenters themselves. As I said in How To Advertise on Your Blog Without

By Jeff Atwood ·
Comments