Thursday, May 23, 2013

Linux on the desktop

A common topic of discussion among geeks used to be when Linux would be successful. The tagline was "Year 2000 is the year of Linux on the Desktop". And then it was 2001, and then 2002. Seems like the year never came. Looking at the usage of operating systems, it seems that Linux has never become popular. Desktop operating system trends do suggest that Linux has gone nowhere. People are still using Windows and Mac OS.  Applications are still not written for Linux.

On the other hand: Linux is everywhere.  It is on phones and tablets. It is inside popular ebook readers.  It is on all 10 of the top 10 supercomputers. It is on routers, even cheap home routers. Your desktop might run something else, but there is a good chance there is a device in your home that runs Linux.  And you didn't even know it.

What's the point of this post?  This is not an academic discussion about operating system proliferation. There is a deeper point. Linux is everywhere because of what it enables.

Linux enables experimentation.

Linux allows a random nobody to try out something interesting to them. It might be the most crazy idea ever. But if it works, others might benefit. Everyone might benefit. Let's look at a few examples which might make this idea more concrete.

  1. A $500 router, for $50: DD-WRT is a Linux firmware for routers. It allowed you to take a cheap home wireless router and add features that made it comparable to an expensive commercial router. Now, router vendors pride themselves on whether DD-WRT runs on their router: it spurs sales.
    DD-WRT made it possible to extend the life of your router: updates are frequent and security issues are fixed. While hardware vendors focus on the next version, the "community" ensures that their devices work as well as new.
  2. Linux in your pocket: Knoppix is software designed to boot up any computer, and make it usable without writing anything to the hard disk. It started out as a boot-up CD. You popped the CD in the drive, and booted up the computer with it. You could use Linux, experiment with it, browse the web, listen to music, write some programs. All your changes were local, and lost when you powered down. Now you can write Knoppix on a thumb drive and take it with you everywhere. You can borrow a friend's computer without reading their documents. You can recover a machine where the hard drive has failed. You can try out Linux and see what you think. You can evaluate a laptop at the store.
    Knoppix is possible because it is possible for anyone to modify linux to suit their purpose. Commercial vendors have no interest in giving you a permissive license to their operating system. It hurts their revenue stream. There is no such limitation with Linux. 
  3. The educational computer: If you aren't aware of it yet, computers are now cheap enough to be disposable. Here is the poster-child, the Raspberry PI. It is a full computer that sells for $35. You connect a monitor and a keyboard/mouse and a power supply. It can boot up into Linux and allow you to use a windowing environment. It started out as an educational project, a current generation replacement to the BBC micro. A computer small and cheap enough that every child could have one and could play with. A computer to spark the imagination of the next generation.
    The raspberry PI is possible because the software is free. We used to talk about how the reduced price of computing threatens proprietary operating systems. Who will pay $100 for an operating system license when the computer itself costs $300? Well, now the computer is worth $35. Not only is it absurd to pay 3x for the software, the software itself will not support such a limited computer.  The Raspberry PI is one of the first, but there are many others in this space: BeagleBoard, PandaBoard, ... With the easy availability of mobile chipsets that integrate graphics, computing and RAM, this space is about to get a lot more exciting...
  4. Facebook makes your computer faster:  Everyone improves Linux, even companies. Facebook engineers improved the performance of hard-disks by using small, cheap Solid State Disks (SSDs). Solid state disks are more expensive than traditional (magnetic, spinning platter) disks. Instead of buying an expensive  256Gb SSD, how awesome would it be if you could buy a cheaper 16Gb SSD, and you got performance similar to the bigger disk? Since Facebook owns large datacenters and wants to improve the performance of its computers at minimal cost, their engineers wrote a Linux kernel module to do something similar. It isn't in the main Linux kernel yet, but it will get there. And this obscure kernel module will improve the performance of your computer.
Constant experimentation allows for incremental improvement.  New products emerge, and encourage creativity in others.

While it isn't in your desktop computer, chances are that Linux is on your desktop already.
Image courtesy: South Dade Linux Users Group

Wednesday, May 22, 2013


Before I had a child, graduate school was the toughest thing I had ever done. After having a child, graduate school seems trivial.

Parenting is hard. It is relentless: you cannot take a break for a month to recharge. Sometimes, you can't even break for an hour. You have to stay engaged, it takes a lot of energy. Children have vast reserves of curiosity and energy, and they spend all their time exploring and learning. As parents, we have to give them the resources to explore, to engage with the world, and learn as much as they can before they enter it. Small mistakes must be corrected early before they become big ones. And yet, they must be corrected with a gentle voice, with love and with persuasion. All with a child who cannot fully understand you.

And everything gets harder when there are new teeth coming, or when the child falls ill.

The big lesson from parenting is there are few absolutes. There are many styles of parenting, and every child is different. From techniques on sleep-training to meal-time, to potty-training: there is a huge variety of opinion. It helps to see it as just that: opinion. While many people will try to sell their technique as the one true way, realize that their tricks might not work for you. And your trick might not work for them.  If you don't neglect your child, you are probably doing it right. I am not a perfect parent. Nobody is. Everyone starts out being judgmental of parents of poorly behaved children. And then they have kids of their own. Suddenly, others' monsters seem like real angels compared to your own.  The circle is complete...

Parenting tests a relationship like none other. It finds out just how much you love your spouse and how well you resolve conflicts. It is normal to have a conflict every hour. Good parenting requires resolving every issue right away, and giving your child the tools to resolve such a conflict.

While it is difficult, it is the most rewarding experience I have ever had. Every once in a while, your child will do something purely magical. The other day, my son ran up to me yelling, "Kiss Papa", "Kiss Papa", and warmly kissed me on the cheek. Then he ran away, pursuing his next game. Small experiences like these make parenting memorable. Yes, you are sleepless, unwashed and frequently grouchy. But one warm smile from your child, and all the tired nights are worthwhile.

Tuesday, May 21, 2013

Google IO 2013

I attended Google IO this year. It was an amazing experience. I met a friend I hadn't been in touch with for a decade! I met some old friends from UC Santa Barbara and Google.  This is Google IO, so I met a lot of new developers who have excellent Android applications.  The momentum behind Android was breathtaking: development is now mature, developers had very specific questions and they had a great idea of what users wanted.

Scott Kennedy and I gave a talk about the Android application development best practices, using Gmail and Email as an example. The talk was well received, with engaging questions afterwards in the Android booth, and laughs during the talk.

I was struck by how much work is involved in a Google IO talk. Veteran speakers agreed that preparing a Google IO talk takes a lot of time, even for them. Scott and I must have rehearsed the talk well over a dozen times. A few people from my team saw one of the early rehearsals and mentioned that the talk had become a lot better over time. Now that we work so well together, Scott and I are wondering if we should do another talk next year.