Friday, November 29, 2013

Code Complete

If debugging is the process of removing software bugs, then programming must be the process of putting them in. - Edsger Dijkstra

I've basically achieved code complete with Episode.Next. It's a feeling of joy that it's all working, but also I'm not quite sure what to do next. What an interesting sign that I got the entire basic app to work in 1-2 days, and then spend the next 3-4 months making performance improvement after performance improvement to it. I have on performance improvement left I could do: change the synching code to use web workers. It's so smooth and fast now, I'm not sure there is any point.

The single best thing I did in the architecture was to abandon doing everything directly in the browser and move a chunk of processing up to Google App Engine. It let me do a ton of optimizations to TheTVDB API that turned into super-fast optimizations. What did I do?

  • Stripped out all the XML meta-data I didn't use.
  • Allow APIs that would strip out other unneeded elements dynamically. If I was just trying to find a new episode, they were no reason to return the XML for all the episodes that I had already watched.
  • Updated all the browser caching of images to cache for 1-year
  • MemCache everything!

I've been surprised just how easy everything was to do. Using Spring MVC and the latest version of Java, everything was trivial. Need to make a JSON API? Just add Jackson in the build. Need to minimize the Javascript? Just add YUI Compression. Need to MemCache? Just add a few lines of JCache code into a Spring Singleton. Everything I wanted to do was just one StackExchange answer away. I was amazed.

Friday, November 15, 2013

The Sound of Silence

In the middle of the afternoon yesterday I sat back and realized my office was quiet. Sure, Mrs.Chaos and Mini-Chaos were out running errands, but far more important was the fact that old ChaosServer had been retired and now my office has a MacBook Air (with SSD) and a MacBook Pro (with SSD) and nothing was spinning. All the fans were powered down and while I was happy typing up email for work and ChaosServer was streaming music - there were no fans running. Just a blissful silence.

Tuesday, November 12, 2013

Post With no Pronounceable Acronym

There’s actually a pretty strong benefit to [having podcasts] requiring a lot of effort: fewer bad shows get made. - Marco Arment

When someone you consider smart says something dumb, you start to second guess everything they say. Marco made an offhand comment about being glad that it was hard to create podcasts because it meant there were fewer bad podcasts. The reality is that when you make it hard to share stories, than people who are really good at telling stories you want to hear, but aren’t technically save, can’t share them.

In the world of computer sciences, there was a project to create a purposefully complex and impossible to use programming language. It’s called INTERCAL which stands for Programming Language Without Pronounceable Acronym (for obvious reasons). The joke idea was - if programming was easy, than dumb people would do it. So if you made programming really really hard, than only the smartest people would be capable of doing it and therefore you would have only the best programs! This was proven true, as all good modern apps are written in INTERCAL. Wait. None are. What we’ve really learned is that people who have great ideas and people who have a the ability to write complex computer programs are not necessarily the same people. So if you want apps based on great ideas than being able to build them with simple programming means more great apps, not fewer. To be fair, it also means more tip calculator apps.

So it is with creating Podcasts. Does anyone imagine that Ira Glass could make his own podcast? No! He has often said he doesn’t even understand what “bandwidth” is and why his podcast needs it. No one should be surprised that being able to create amazing programming that is extremely interesting to listen to does not necessarily overlap with being able to use GarageBand or whatever program Windows people use.

Technology is best when it gets out of the way not when it creates an obstacle. It’s better when it’s magic. That’s why we are all Apple fan boys. Ultimately it all falls under Sturgeon’s Law - 90% of everything is terrible. That means that 10% of everything is not. If you increase the amount of “everything” you therefor increase the amount of stuff that isn’t terrible. So mom, go plug in your microphone, spin up GarageBand and start making podcasts. I’ll subscribe.