Steve Klabnik: Nobody Understands REST or HTTP

Steve Klabnik outlines some best practices in API design in “Nobody Understands REST or HTTP”, some of which I admit I need to follow more consistently. As he states in the end:

Seriously, most of the problems that you’re solving are social, not technical. The web is decades old at this point, most people have considered these kinds of problems in the past. That doesn’t mean that they always have the right answer, but they usually do have an answer, and it’d behoove you to know what it is before you invent something on your own.

Good article with clear to use tips.

A James Shore 2006 Post My Favorite Design Read So Far in 2012

James Shore’s post in 2006, “Quality With a Name” summarizes clearly what I try and express and practice in my systems design work.

This is something to not only read and bookmark, but print out to remind folks who are building systems what exactly is good software design.

A good software design minimizes the time required to create, modify, and maintain the software while achieving acceptable run-time performance.

If you’re interested how a number systems I’ve helped design have had such long lives and have grown from small teams to support large ecosystems, “Quality With a Name” is a great place to start

Recently he gave a presentation on evolutionary design that is a good watch.

I’m looking forward to seeing his presentation at Philly’s Emerging Technologies Conference.

“Every day at my job I helped people just barely survive” on Metafilter and Hacker News

codacorolla, a librarian, posted his thoughts to a Metafilter conversation about Califaornia cuts to library funding and spurs a terrific thread at Hacker News.

Read his entire comment and check out the conversation:

“The digital divide isn’t just access, but also ability, and quality of information, and the common dignity of having equity of participation in our increasingly digital culture.”

I’m proud to say there has been a movement in Philadelphia on supporting the mission of libraries, and rethinking how they support their ultimate purpose, and that whenever funding has gotten seriously threatened, people have stood up.

For my part, I’m in talks with my local library to host an after school program teaching MIT’s Scratch. Following that I’d like to initiate a Code and Coffee meetup there and maybe encourage the Blogger Meetups that use to take place to consider local branch libraries as places to meet.

Mark Nottingham’s Web API Versioning Smackdown

Mark Nottingham gave me a few additional things to consider when building a version lookup into an API in “Web API Versioning Smackdown”. Product Tokens? Building it into the URI? HATEOS?

Randall Degges: “How I Learned to Program”

Randall Degges has a great post on how he, and you, can get started programming: “How I Learned to Program”:

Programming is, without a doubt, the most mentally rewarding thing I’ve ever done. Programming taught me that life should be fun, filled with creativity, and lived to the fullest. Programming taught me that anything is possible; I can do anything I want using only my mind.

Programming also taught me that learning is fun. It showed me that the more you know, the more power you have. Programming showed me that a life filled with learning is a life worth living. Programming revealed to me who I am inside, and has continuously helped me work towards my goals.

Is Programming The New High School Diploma?

Daniel Markham makes the case for incorporating programming into what we consider literacy in his post “Programming is the new High School Diploma”.

I’m not sure I’d go as far as he would, but this is not an idea to dismiss out of hand as quite a few folks did in a Metafilter thread I was following that led me to post the following:

Actually there are many, many folks circling in on the idea that programming *is* part of a new definition of literacy.

I believe people should have basic programming skills, in as much as they have basic writing skills.

NOT simply to ‘know how a computer works’. Programing is far more than the act of giving instructions to computers to do things.

The idea isn’t to create more programmers/software engineers/computer scientists, just as teaching writing isn’t done for the sole aim of creating more authors (although it more easily opens the door). Instead, programming should be taught as a means to explore science, health, social studies, history, and math. Just as reading and writing are. Instead of creating a book report, create an interactive story with visualizations. Maybe work with other students in its production.

Even the most rudimentary programming skills enable us to better communicate with one another, to tell stories, to create our own games, and to better participate in the networked world we live in.

New tools like MIT’s Scratch are coming along to make much of this possible. Check it out.

Related:

Bret Victor – Inventing on Principle from CUSEC on Vimeo.

Classics: “The Twelve Networking Truths” and “Fallacies of Distributed Computing”

Succinct and always worth a re-read: “RFC 1925: The Twelve Networking Truths” and “Fallacies of Distributed Computing”.

Go Philly! CyberCoders Reveals Top 10 Cities for Technology Jobs in 2012

MarketWatch: “CyberCoders Reveals Houston Beats out San Jose and Silicon Valley as The Leading City for Technology Jobs in 2012. Philadelphia is #3!!!

A retrospective on “No Silver Bullet” in Software Engineering

OOPSLA held an all-star panel (including Dave Thomas and Martin Fowler), earlier this year, on the must-read paper from Fred Brooks (included in the must-read book “Mythical Man-Month”) “No Silver Bullet — Essence and Accidents of Software Engineering”. Read the paper. Then read the panel’s transcript.

WikiWikiWeb: No Silver Bullet

A nice guide to using iTerm2, tmux, emacs, irssi on the Mac

Edouard Swiac posts a guide to “Hacking like a hacker on a Mac using iTerm2, tmux, emacs, irssi (and more).”. I’m using Solarized now in Emacs and Terminal and might come back to this to add a few more tweaks to my work environment.