The hobbyist programmer is dead! Long live the hobbyist programmer!
The personal cloud movement is bringing back the joy of programming for the fun of it: install and run web-based software available globally from any device for your personal use. Today, every web app is expected to scale to millions of users, include all unit and system tests, be localized, internationalized, secured, and monetized. For me, the PC revolution meant that it didn’t matter that the program was only in English, worked for files under a certain size, and crashed occasionally: I was the only user. When I got time, I would track down the bug and patch it in my free time. If I was using an open source program, I would casually watch the forums for patches or even contribute a patch myself. Pure joy: no pressure of deadlines, bosses or users. This blog is devoted to helping you achieve some joy again.
I programmed my first computer, an HP9815A calculator with a connected plotter (with multi-colored magic marker pens), around 1978 while in the 10th grade. It was love at first byte. I wrote a program to draw the tangent lines at given intervals of the derivatives of \(y = x^2\). I tweaked the formula by trying \(y = 3x^2\), \(y = x^2 + 4\), … and I could actually see the impact of the coefficients and other parameters on the formula’s plot. I was having difficulty in Calculus I visualizing the concept of a derivative and the computer brought the mathematics to life for me.
At my college interview, I told the counsellor that I wanted to major in journalism. My mother was shocked because she thought I would major in Computer Science (CS) and secure my future job prospects. I told her that I didn’t want to major in CS because it would become work and take all the fun out of programming. The counsellor put me down as an undecided major and signed me up for CS101. The classes were fun and I became a CS major in the second semester of my freshman year of college.
I was hooked on CS and eventually earned a PhD, but I never forgot the joy of programming for the fun of it. Part of the fun was creating programs for your own problems: an address book, todo list, calendar, etc. Although the PC, computer workstations, and laptops became more and more powerful (and forgiving of my suboptimal solutions), my programs were always chained to a particular device. I had to carry it around like the nerd-that-I-am, but inevitably the device would break, melt, or be stolen. The advent of mobile devices (phone, the Palm Pilot, etc.) didn’t help because such personal productivity programs were often proprietary, the platform SDK was not open source, changed drastically between new device releases and eventually became unsupported altogether.
The promise of ubiquitous computing is that you can access your data from any device connected to the web. All you need is a web application to act as the host server for your data. In the early Internet, this was an expensive proposition: purchasing physical hardware, leasing a connection, etc. Alternatively, running a server at home via your ISP was perilous and a home power failure brought you offline (or at least until your 2-4 hour UPC ran out of juice). Some ISPs disallow hosting at residential accounts.
The early promise of a web site for everyone is almost dead. We live in the mainframe 2.0 era of web computing because companies like Facebook, Google, Yahoo, etc. are vertical stovepipes of your data. They want to host your information, provide all aspects of personal and social computing for you and then monetize it for ad revenue. It is your data that is valuable as evidenced by the nearly daily reports of theft from these vast vertical vaults of your data. In colonial times, privacy had its roots in property rights. It is time to reclaim your property.
While much cheaper today, it still takes considerable skill and knowledge skill to purchase a server, a domain, SSL certificate and install it properly. Cloud computing platforms like Amazon, DigitalOcean, Heroku and many others have made it easier and cheaper. Even for the hobbyist, your server can be up almost 24/7 with automated backup support, but it will get easier, cheaper and more commodified in the next decade.
So where is the hobbyist, open source software for the personal cloud revolution? This blog is devoted to providing and demonstrated the power of 10 open source personal cloud applications over the next few months including:
- a personal address book
- a todo list
- an RSS reader
- a bookmarking app
- a photo gallery
- a calendar
- a blog
- a Pocket-like offline reader
- a family tree manager
- a personal finance app
All of these applications are open source, will be available on our github site, written in either Ruby-on-Rails or PHP, deployed on a DigitalOcean Dokku droplet for $10/month with a domain from NameCheap and optional wildcard cert from Comodo (available via NameCheap). The personal cloud apps can also be deployed on Heroku for free but with limited availability and restricted storage (I initially hosted all of these apps on Heroku’s free tier for my personal use until they limited their free tier in early 2015). I’ll also cover hosting your own email, but that will require a separate DigitalOcean Ubuntu 14.04 1GB droplet (currently at $10/month) using the marvelously simple Mail-in-a-Box system.
The hobbyist programmer is dead! Long live the hobbyist programmer!