Skip to main content


Showing posts from March, 2011

Books: Coders at Work

I just finished reading Coders at Work: Based on nearly eighty hours of conversations with fifteen all-time great programmers and computer scientists, the Q&A interviews in Coders at Work provide a multifaceted view into how great programmers learn to program, how they practice their craft, and what they think about the future of programming. In short, I really enjoyed this book. It was relaxing, stimulating, humbling, and enabling all at the same time. One thing that really stood out was that programmers used to be able to understand systems extremely deeply because they could fit the whole thing in their heads. In contrast, it simply boggles my mind to think of how many lines of code are involved in showing Google Maps to me (think of my laptop, all the routers, Google's servers, the JavaScript, the server-side code, etc.). If you're up for some light technical reading, this book is highly recommended.

The Zen of Testing

Tests that use a style you disagree with are better than no tests at all. Tests that catch more errors are better than tests that catch fewer errors. Getting more done with less effort is better than getting less done with more effort. Tests that are readable are better than tests that are unreadable. Tests that are easy to update are better than tests that are hard to update. Tests that fail when appropriate are better than tests that fail when inappropriate. Tests that test the stuff you care about are better than tests that test stuff you don't care about. Tests that take little effort and catch a lot are better than tests that take a lot of effort and catch little.

Python: Behavioral Driven Development for Telephone Applications Using Lettuce, Flask, and Twilio

I'm going to be giving a talk tomorrow night at BayPiggies called "Behavioral Driven Development for Telephone Applications Using Lettuce, Flask, and Twilio". Here's the description: Behavioral driven development is a style of programming popular in the Ruby world using tools such as Cucumber and Webrat. In this talk, I'll show how the same tricks can be used in Python too, using a library called Lettuce. I'll also show off Flask which is a new micro web framework. Last of all, I'll cover Twilio which is an API that makes it easy to build telephone-based applications using web technologies. I'm going to be showing code samples from my demo application PyTeladventure . If you can't make it to the talk, you might way to have a peek at the code.

Hardware: Fixed a Dell Inspiron 1545

My buddy Adam Ulvi loaned me a laptop since I didn't have one. (My last day at Twilio was last Thursday.) He had a Dell Inspiron 1545 lying around, and he was nice enough to mail it to me. The only catch was that there was some breakage around the display near the hinge. Apparently, this is extremely common, so I decided to try to fix it. I bought a replacement part from . The part I bought was the display cover, and it came with replacement hinges. It cost about $50. I went to Dell's site to find the service manual. It was actually a fairly involved repair, but I managed to get it done. My only regret was that I didn't buy a replacement part for the piece of plastic that frames the front side of the screen. I didn't notice that it was broken too, so I had to make due with some carefully applied electrical tape. Fortunate, it doesn't look as ghetto as it sounds. Anyway, the repair went really well. The laptop looks pretty much brand

Linux: lubuntu

I decided to give lubuntu a try: lubuntu is a faster, more lightweight and energy saving variant of Ubuntu using LXDE, the Lightweight X11 Desktop Environment. If you already have Ubuntu installed, trying lubuntu is really easy; just run "sudo apt-get install lubuntu-desktop". In summary, it's very pretty, super fast, and crazy small. In fact, its memory usage was almost laughable considering I was running it on a 4GB MacBook Pro. I think my total memory usage was something in the 200-300MB range. The downside is that there are a lot of things that I've grown accustomed to in Ubuntu that I can't live without. Ubuntu has a GUI to swap the capslock key with the control key, and it has a GUI to tweak my touchpad and power management settings. There are probably ways to configure these things by hand under lubuntu, but I've grown mildly impatient in my old age ;) The biggest challenge for me was that lubuntu doesn't know about encrypted home director

Linux: Awesome is Awesome!

I decided to give Awesome a try. Awesome is a tiling window manager like xmonad. I've been using it for about a month, and I like it a lot. It integrates with GNOME much better than dwm. Most users of dwm don't use GNOME, but I do. Its default settings are a lot nicer than xmonad's. When I use xmonad, I spend all my time futzing with my .xmonad.hs, but I haven't had to tweak Awesome at all the whole time I've used it. For instance, Awesome comes with a ton of layouts built in. Getting gvim to work perfectly under xmonad required some tweaking, and I couldn't figure out how to get it to work perfectly under dwm. I know that this is gvim's fault because it doesn't follow the exact size prescribed by the window manager, so the bottom part of the screen gets messed up. I'm sure most dwm users don't use gvim--they probably run vim in a terminal. It worked perfectly under Awesome. Getting NetBeans to work well took even more work, and

Personal: Should I Leave LinkedIn?

I got email from LinkedIn: Give your productivity a boost - for free! Exclusive offer: Try LinkedIn Premium free for 1 month* Dear Shannon -jj, Find and manage high quality contacts with LinkedIn Premium. Get started today and get 1 month free!. LinkedIn Premium helps you be great at what you do, with tools such as: • InMail: Contact anyone on LinkedIn without an introduction - response guaranteed!** • Expanded Profile Views: See expanded profiles of everyone on LinkedIn, even people outside of your network • Who's Viewed My Profile: Get the inside scoop on how you're viewed professionally by accessing the complete list You'll also get a lot more including up to 700 profiles per search. Your exclusive offer expires soon so get started today! This means that LinkedIn is going to be making money off of spammy recruiters at my expense. That is really a violation of my trust. Am I wrong? I'm seriously thinking about deleting my account.

Humor: Donald Knuth Jokes

At the age of two, Donald Knuth implemented Conway's Game of Life on Babbage's difference engine which was pretty impressive since Conway hadn't been born yet...neither had Babbage. The next version of TeX will be self hosting...and will run on bare metal. Skynet is actually an out of control TeX macro. Knuth can store all integers between 0 and 127 in 4 bits. Knuth invented binary. Chuck Norris is actually an android that Donald Knuth created. He was funded by DARPA. Knuth once wrote, "Email is a wonderful thing for people whose role in life is to be on top of things. But not for me; my role is to be on the bottom of things." He succeeded. Knuth started to dabble in botany in his backyard. He gave it up, though, when all his trees ended up with squareroots. Knuth is the last highlander. Knuth created the Antikythera device when he was a young lad vacationing in Greece. When Knuth wants to speed up an algorithm, he doesn't code in assembly--he c