Ian compares Pylons and TurboGears and makes a few interesting general observations along the way.
The axioms of web architecture and an invitation for big vendors to understand them.
That argument debunked for most real world applications.
I liked the way different types of boundedness were presented:
- I/O-bound. Completing a unit of work earlier just means waiting longer for the next block/message.
- Memory-bound. Completing a unit of work earlier just means more time spent thrashing the virtual-memory system.
- Synchronization-bound (i.e. non-parallel). Completing a unit of work earlier just means waiting longer for another thread to release a lock or signal an event – and for the subsequent context switch.
- Algorithm-bound. There’s plenty of other work to do, and the program can get to it immediately, but it’s wasted work because a better algorithm would have avoided it altogether.
As much as I agree with the thrust of the article, C programs really are faster in real life, but I think it’s because people who program in C are more likely to be familiar with common performance problems and tradeoffs. It’s hard not to be at that level.
Nice. The todo / email / information “management system” I’ve been using for a while has a name now:
This doesn’t just apply to email, of course — it works for any todo list. But only if you say no to reordering, prioritizing, estimating deadlines, and doing the most important things first. Forget all that. Do it now.
Seriously. All that productivity snake oil is destroying your productivity. Being productive at managing productivity is not the same as being productive.
In comments related to the recent shutdown of Favrd:
I’ve spent the past year or so reading and writing and doing my level best to chip away at 40 years of belief in the logical fallacy that one’s identity meaning – self-worth, self-image, whatever you want to call it – can accurately be measured in the thoughts of others. Much as you and I may enjoy being encouraged through recognition and praise and dislike being saddened by rejection or indifference (god knows we’re taught to right from the outset by caregivers: good boy, pretty picture, heckuva job Brownie), deriving personal value from these transactions in the absence of a well-formed internal frame of reference through which you can decide on your own what does and doesn’t work, and subsequently accept the opinions of others as feedback, is just plain faulty thinking, of the sort that makes otherwise capable, centred people all loopy and weird.
Disco.
From the apparently just published, Coders at Work (Apress, 2009), Brad Fitzpatrick Talks About Programming:
In practice, nothing works. There are all these beautiful abstractions that are backed by shit. The implementations of libraries that look like they could be beautiful are shit. And so if you’re the one responsible for the cost of buying servers, or reliability – if you’re on call for pages – it helps to actually know what’s going on under the covers and not trust everyone else’s library, and code, and interfaces. (…)
They should have titled the book, “In Practice, Nothing Works”. Anyway, you can grab the — ick — PDF ebook for $20 on Apress.
Ian Bicking’s talk from DjangoCon 2009. Stimulating. I’m sure a nice comment thread will develop here over the next few days as well.
I don’t even know how to summarize this. Let’s do this: follow this link if one or more of the following apply to you. 1.) you’ve read Godel Escher Bach and appreciated the anthill discussion between Achilles and Anteater, 2.) are interested in how brains work, 3.) like cities but not overly planned ones, 4.) would like to see evidence of a city constructed in the shape of an airplane.
Jonathan Dahl talks about minimalism and clarity in writing and how to use these principles in programming. Great talk. He uses a lot of analogy and audio/visual stuff at the beginning, which (in my experience) typically means that the presenter has no fucking idea what they’re talking about. Not here. Excellent, well-rounded talk.
Aaron Swartz with a classic mindfuck. Reader beware: this same basic set of stories was told to me by a friend a few years ago and bothers me to this day.
Real artists ship.
“As I see it, we are all piles of slowly decaying meat, wrapped in the skins and hairs of other creatures, wearing colorful vestments made of skillfully woven plants, staring at what is essentially a pile of oil, metal, and sand all day. We spend most of our waking lives gathering piles of paper that we use to buy more dead animals, woven plants, and varying sized piles of wood, sand, oil, and metal. At night, we sleep in carefully crafted piles of these materials heated by barrels of decayed animals and plants and dream about having even larger stacks of paper with which we can use to impress other piles of sentient meat.”
Tom Preston-Werner shows you how to think.
Christian Neukirchen’s Ruby styleguide. The best I’ve seen.
Adam Gomaa: “… this state of affairs doesn’t really help my general feeling of hopelessness when it comes to programming – I know that no matter how good I get, I’m still stuck at being just one person, and the code a single person can write is pitifully small.”
I’ve come to the same conclusion within the past couple of years. I take on much smaller projects now and try to contribute more to existing projects rather than playing mad scientist on massive works that will never see the light of day. I’ve also come to appreciate the idea of paying lots of attention to detail on one small thing rather than churning out large quantities of half-baked features.
“Of course, Strunk and White, as the book is commonly called, has nothing to do with software (it was written in 1935) and everything to do with writing: grammar, composition, and style for users of the English language. But in its 100 short pages this book has more to say about the craft of software than many books you’ll find in the ‘Computing’ section of your local bookstore. All you have to do is replace a few key words throughout the text and presto! Pearls of software development wisdom, delivered in near-perfect English.”
Sam Ruby on how DVCS + mailing list has removed the need for bug tracking systems on some projects. I’m feeling a similar pull in my own work.
The greatest thing I’ve ever seen on the internet.
“We’re born as unreal people but somehow get turned into respectable members of society with good cover stories.”
“You (and I) suck. Plan for it. Expect it. Get over it.”
Erik Engbrecht: “Java took cheap Unix processes and made them expensive. To compensate, it provided primitives for multithreading.”
Rafe kicks off a series detailing various aspects of his coding philosophy. The first is near and dear to my heart: less code
Not sure how I missed linking to this. Pretty much mirrors my feelings on PHP to a T, except more thought out.
Brad Neuberg (Google Gears): “Our historical closeness to the web creates a kind of myopia, where we can’t see how amazing it is. It’s a billion Library of Alexandria’s dropped into our laps.”
Ahh, those were the days… What’s left to fight for?
“Most of the time you should be working on The Next Most Important Thing. But there are times when it’s okay to depart. Times when you need to depressurize after completing a dive in the stressful, complex pool of Big Problems.”
From IMil in comments: “Shocking statement #(n+1): 80% of the 80% believe that they belong to [the] 20%.” A recursively shocking statement! i.e., (0..Infinity).inject (0.8) { |x,n| x * 0.8 }
“What if closures and meta-programming and expressive type systems and annotations and all of the other tools that give us the power to build powerful abstractions actually don’t scale to larger teams?”
“… coined by Ward Cunningham to describe the obligation that a software organization incurs when it chooses a design or construction approach that’s expedient in the short term but that increases complexity and is more costly in the long term.”
“The easy and fun way to test whether a mission statement/purpose/motto is garbage is to negate it and see whether it still holds up.”
“Talking about a software development schedule more than a year out is like talking about where we go after we die. Everyone has some idea where we’ll end up, but those ideas differ wildly, and there’s a lack of solid evidence to support any of them.”
“There is an important tradeoff between the computational power of a language and the ability to determine what a program in that language is doing.”
“It was as if its architects were given a perfectly good hammer and gleefully replied, ‘neat! With this hammer, we can build a tool that can pound in nails.’” — that is THE SINGLE FUNNIEST SENTENCE ever assembled in the history of english language!
“You will avoid taking care of simple things because the solution is inelegant or simply feels wrong. Time to think will no doubt yield a better result, you’ll say.” Aye!
“… it cannot be denied that logic and philosophy stand to lose an important conceptual label should the meaning of BTQ become diluted to the point that we must distinguish between the traditional and erroneous modern usage. This is why we fight.”
“… on Java, too many web frameworks – think JSF, or Struts 1.x – consider the Web something you work around using software patterns. The goal is get off the web, and back into middleware…”
Q: Are you working for Reddit as full-time programmer? A: No, I left reddit several months ago. Q: Why did you leave? A: My boss asked me to.
“… let me try one last time to say why I wrote this book, what it is about, and what its principal thesis is.”
Tim reviews the new Hofstadter book.
Being neither unhappy or intelligent, I wouldn’t know :)
:)
John Panzer: “Software development is a knowledge acquisition activity, not a manufacturing activity.”
Nugget of wisdom: “… developing for the web is frequently about accepting small compromises to big philosophical ideals.”
“the version control system is a first order effect on software, along with two others – the build system and the bugtracker. Those choices impact absolutely everything else. Things like IDEs, by comparison, don’t matter at all.”
“The thing that unites the free software developers, and the only thing that unites us, is that we make free software.”
Somebody should create a feed that posts a single random entry per day from the Atom Wiki.
More good stuff from Chalain. This time the topic is classes that end in “er”.
A nice go at classifying different types of code transition.
Dijkstra’s writing style is so perfect.
I missed the precursor to the last link. This one might even be better..
I would love to read this but I’m too busy doing work. Let me know if it’s interesting. Work, work, work! ;)