Today's comic is available as a poster.
Today's comic is available as a poster.
Android has finally arrived. The comparisons to the iPhone are everywhere, and rightly so, as this is going to be a very interesting show down between Google + Open and Apple + one of the best design teams in the world. I tend to place my best on Open, but if anyone can compete against it, it's the people that convinced the world that devices with non replaceable batteries are good investments.
It's also interesting that the dramatic challenge in getting everyone excited by mobile wasn't really a bump up in technology. 90% of what the iPhone can do today would be doable on your random flip phone from verizon, except the carriers block you from doing it. Carriers:
A good instance of this is the fact that I've got google maps on my Sprint flip phone. Google wrote the app, and it does all the close searching for things like the iPhone does. It can't tell me where I am, because sprint blocked the gps. But, when it comes to finding a restraunt in a strange city, it works quite well.
What Apple and Google have really been working on is getting the carriers out of the way so that mobile devices can really become a more primary platform for consumers. They basically forced AT&T, T-Mobile, and hopefully soon Sprint, to break down their walls against letting consumers really do things on the mobile networks. This is exciting. I'm eagerly hoping that Sprint (who is part of the Android alliance) puts an Android phone out by the end of the year, because I'm going to snap it up immediately. I've already got the Android SDK installed, and am going to start puttering around with applications that I'd love to be on my phone.
And you should read it every day, as it's been this awesome for weeks.
...because I've seen this a couple of places now, and more people should realize that cutting taxes on > 90% of americans is being called raising taxes by the media.
...because expanded offshore drilling isn't going to do anything except destroy the rest of our fishing industry.
Above is one of the many cool visualizations already in many-eyes (direct link here for rss readers that don't display it), a social visualization site from IBM. I'd heard a little bit about the site but after today's session at MIT thought it was time to check it out further. It's a little slower than I like, but pretty neat regardless. Plus, the Pork / Capita numbers are pretty telling.
I've been thinking about a lot of things in terms of debt recently, and the world looks a bit different if you do that. Debt is borrowing against the future, be that in time, money, energy, health, etc. Debt is what you get when you take short cuts, as you are borrowing from the future.
When your debt is money, it's somewhat easy to understand. You take money from the future you which you have to pay back at some point. It's a little harder to understand in areas that aren't money.
If you create a new piece of code you are creating both value and debt. Debt is created by taking shortcuts, as the software will need to be reworked to reasonably extend it in the future. You take a short cut now to pay for it later, with interest. Every future feature will take longer until you pay back your debt. Refactoring is really all about paying down debt in a responsible way in software.
Most of the time the right approach is to pay off your debt. The other option is bankruptcy (which we are seeing a lot of this week in the financial world). Software bankruptcy is throwing the whole thing out and starting from scratch.
When I started thinking about software development in terms of debt in the last few weeks, lots of things started to make a lot more sense. Shortcuts are debt. Inconsistent interfaces are debt. Inconsistent coding style is debt. Bad or wrong abstractions are debt. Missing documentation is debt. Confusing APIs are debt. If you want a project to move forward more productively you need to eliminate some of your debt, as it's what slows people down (green field code is easy, brownfield is hard).
I'd love to hear about other concepts of debt, and what debt looks like in other media besides software. Please post comments if you are so inclined.
Push finally came to shove, and I've now entered the 21st century by making Thunderbird my email client (I actually tried Evolution for a day, but after 20 crashes gave up. But that's a different story.) Previously I was using mutt. There were a bunch of reasons to do this, though the biggest one for me was getting to turn off a box at home that was my IRC proxy, gateway to my home network, and ssh point for reading my email in mutt. That should save us at least a few hundred watts.
The New Configuration - Server Side
I've moved to using dovecot as my imap server. This has the advantage of being able to handle a home directory full of mboxes nicely (which courier could not). This means I can keep my perl based dynamic mail filtering working on the server until I manage to rewrite it as a thunderbird extension. I was using IMAPS before just as a secure POP, but now I'm actually taking full advantage of having imap remote folders.
My IRC proxy moved to my linode, which was probably a better place for it to be anyway. I even bothered to package it as a ppa for ubuntu, which means you can easily install as well.
Lastly, my gateway box is now a kvm guest running on my big home media / backup server. I was quite impressed by how nice virt-manager made the system install and setup from an ubuntu 8.04 iso. I had to do a little manual effort to configure bridge networking correctly, and deal with conflicting dnsmasq instances, but after that all was good.
The New Configuration - Client Side
I've now got thunderbird setup for 3 IMAP accounts (dague.net, gmail, and work), plus news groups (all work ones). This gives me a really nice consolodated view of my email. I was pretty impressed by how well thunderbird handles the 4 identies, and routes outbound correctly quite nicely. For dague.net and gmail email is filtered server side, I've client side filters for work because it's sieve, and I really don't want to learn another filtering specification language.
On top of that I've got a ton of extensions. I found that thunderbird out of the box was ok, but I lost a lot of mutt functionality. After a hunt through the extensions I got most, if not all of that back. For the record here are the extensions I currently have installed:
But it could be better...
Thunderbird is now very useful to me, but I have found ways in which I could make the whole thing better. Mutt keys was a quick dive into making my own thunderbird extension that was nothing much more than key bindings (based on the now unmaintained mouseless extension). It's rough, but it let me figure out some of the basic structure of writing thunderbird extensions.
As I figure out more, I'm sure I'll post it here. I have definitely found that developing thunderbird extensions is pretty tall grass, as very few folks have really written down much on it. I'm going to try to be a good citizen and stick stuff in the mozilla wiki as I figure it out.