Programming Links for October 4th, 2009

Coworker and friend Kevin Fitzpatrick’s “The Masterless Apprenticeship” new series on learning and craftmanship. Absolutely fantastic.

rallydev: Jean Tabaka: Escalation is Killing Agile – Can We Please Stop It?

plope.com: You’re the Smartest Guy In The Room.. but please, try to restrain yourself.

org-babel: executable source code blocks in org-mode – I need to try this – it sounds amazing.

When no one can run the software

naked capitalism: Another Lehman Mess: No One Can Run the Software:

I have no idea whether this estimate is still valid, but back in the days when I was working with O’Connor & Associates, the head of technology (and O’Connor had a well run technology operation) said the cost of documenting software (as in having the developers write up what they did in sufficient detail so a third party could maintain the it) was an additional 20%. It was very difficult to get traders to pay for it, ironically not so much for the hard dollar costs, but the fact that IT was resource constrained. The idea that the coders would spend a lot of time on leaving a paper trail, rather than getting to a business center’s urgent need, was a hard sell.

But Lehman illustrates what happens when you do what most places do, and skip documentation.

The UNIX Way

Kas Thomas of CMS Watch riffs on “The UNIX Way”, principals summarized by Mike Gancarz:

1. Small is beautiful.
2. Make each program do one thing well.
3. Build a prototype as soon as possible.
4. Choose portability over efficiency.
5. Store data in flat text files.
6. Use software leverage to your advantage.
7. Use shell scripts to increase leverage and portability.
8. Avoid captive user interfaces.
9. Make every program a filter

Read the whole piece.

Programming Links for May 27th, 2009

InfoQ: Bruce Eckel on Python, Java, Flex, and RIAs

O’Reilly: Dreaming of Rails as the Next Microsoft Access

It’s Only Software: 5 Minute Guide to Spring and JMX

Yet Another Java Blog: 5 Part Series: Intro to Caching,Caching algorithms and caching frameworks

Eli Bendersky: A year with Python

itzer.com: Java Kicks Ruby on Rails in the Butt

As a tool maker, how responsible are you for how people use your tools?

It’s a difficult question with a lot of valid points of view. Take Michael Osinski – he was a successful software engineer on Wall Street from the 80s to the 90s – and according to him – helped write software that enabled the current financial crisis:

…I wrote the software that turned mortgages into bonds.

…The software proved to be more sophisticated than the people who used it, and that has caused the whole world a lot of problems.

I never would have thought, in my most extreme paranoid fantasies, that my software, and the others like it, would have enabled Wall Street to decimate the investments of everyone in my family. Not even the most jaded observer saw that coming. I can’t deny that it allowed a privileged few to exploit the unsuspecting many. But catastrophe, depression, busted banks, forced auctions of entire tracts of houses? The fact that my software, over which I would labor for a decade, facilitated these events is numbing.

Our software was rolled out to ride the latest wave. Traders loved it. What had taken days before now took minutes. They could design bonds out of bonds, to provide the precise rate of return that an investor wanted. I used to go to the trading floor and watch my software in use amid the sea of screens. A programmer doesn’t admire his creation so much for what it does but for how it does it. This stuff was beautiful and elegant.

The aim of software is, in a sense, to create an alternative reality. After all, when you use your cell phone, you simply want to push the fewest buttons possible and call, text, purchase, listen, download, e-mail, or browse. The power we all hold in our hands is shocking, yet it’s controlled by a few swipes of a finger. The drive to simplify the user’s contact with the machine has an inherent side effect of disguising the complexity of a given task. Over time, the users of any software are inured to the intricate nature of what they are doing. Also, as the software does more of the “thinking,” the user does less.

Last month, my neighbor, a retired schoolteacher, offered to deliver my oysters into the city. He had lost half his savings, and his pension had been cut by 30 percent. The chain of events from my computer to this guy’s pension is lengthy and intricate. But it’s there, somewhere. Buried like a keel in the sand. If you dive deep enough, you’ll see it. To know that a dozen years of diligent work somehow soured, and instead of benefiting society unhinged it, is humbling. I was never a player, a big swinger. I was behind the scenes, inside the boxes.

Those are some choice quotes from his piece in New York Magazine. Read the whole thing.

His story raises many powerful, deep questions about what we do, who we do it for, why we do it, and repercussions. It was courageous, even if I don’t necessarily agree. I tend to believe that software does not change human nature – but there are people in the industry who swear that what we do is literally changing mankind. If so – should they be looking in the mirror? Should we all?

This post is participating in @weeklyblogpost: week8: tools. Checkout other posts there about the topic and feel free to join in.

Web Development Links for Thursday, September 25th, 2008

InfoQ: JSR 311 Final: Java API for RESTful Web Services

IBM developerWorks: Mastering Grails: RESTful Grails: Build a resource-oriented architecture

InfoQ: Joshua Bloch: Bumper-Sticker API Design

Aaron Swartz: The Semantic Web In Breadth

Mock Objects: “Growing Object-Oriented Software, Guided by Tests”: Chapter 1. What’s the point of Test Driven Development?

Code To Joy: A fascinating quote attributed to James Gosling: “James Gosling once said that every configuration file becomes a programming language, so you might as well think that way.”

Wiki.Directi.Com: Building a Scalable Architecture for Web Apps – Part I

Previously: InfoQ: How to Design a Good API & Why it Matters

David Van Couvering: “I think I’m not alone in this belief”

From David Van Couvering ‘s Blog: Technology as a positive force:

You may have read my blog about my concerns around technology. At the same time, I also believe that if you are conscious and committed and vigilant about how you use it, technology can be a huge enabler for helping make a difference in people’s lives. That was actually one of the key reasons I chose computers as a career path when I first started in the mid-eighties.

You are not alone David.