Notes on: Dreaming in Code
February 5, 2019
When I read a book I have the habit of highlighting certain passages I find interesting or useful. After I finish the book I’ll type up those passages and put them into a note on my phone. I’ll keep them to comb through every so often so that I remember what that certain book was about. That’s what these are. So if I ever end up lending you a book, these are the sections that I’ve highlighted in that book. Enjoy!
When you buy a typical commercial program – or “shrink-wrapped software” – you receive a file that runs on your computer anytime you need it. This file is a “binary” or “machine-executable” file: It contains machine-level code, impenetrably dense sequences of zeros and ones that is unreadable by most humans beings and even most programmers.
Software companies sell a binary file because that’s what you need in order to use their product; but they also like it because it protects their secrets.
When two Stanford grad students started up Yahoo! In 1994, the name was a smart-alecky acronym for Yet Another Hierarchical Officious Oracle.
I know this problem. I’ve been here before. I can work with this.
To build a hypertext repository that programmers could use to share their software patterns on the Web. A decade later he told the story of how the first wiki came into existence. – I figured, OK I’m running this repository, send me your patterns in a text file and I’ll run a little script, and I’ll turn them into HTML [the language in which Web pages are coded]. I made simple rules, like a blank line means a new paragraph, and stuff like that. And I was amazed at how people who sent me files couldn’t follow even those simple rules. I was three pattern documents into this thing, and getting pretty tired of it already. So I made a form for submitting documents. But people would submit a document and then pester Cunningham to make changes in the page after it was posted. So he added at button at the bottom of every page that simply read “Edit this page.” You didn’t need a password. Anyone could press it and start editing. Cunningham added one twist: If your page included words written with capital letters inside them – a style now known as CamelCase – the software would look up those words in a database. If a page already existed by that name, the words would automatically be linked to the page. If not, it would create a stub, an empty template for a page, waiting for someone to fill it in
When millions of people use a piece of software like Windows, sooner or later someone will end up making every possible un-likely choice that the software allows. Programmers call these edge cases and they are often where bugs hide.
To judge wether a development organization has its act together – “CMM without the headaches.” The Joel Test asks the following dozen questions:
- Do you use source control?
- Can you make a build in one step?
- Do you make daily builds?
- Do you have a bug database?
- Do you fix bugs before writing new code?
- Do you have an up-to-date schedule?
- Do you have a spec?
- Do programmers have quiet working conditions?
- Do you use the best tools money can buy?
- Do you have testers?
- Do new candidates write code during their interview?
- Do you do hallway usability testing?
Constraints are key to building a great product, Fried said.”They’re what makes creativity happen. If someone said you have all the money in world to build whatever you want, it would probably never be released. Give me a month!”
@joekotlan on Twitter