Open source developers must examine the past to invent the future

Ritchie Thompson

Ritchie Thompson

Dennis Ritchie (standing) and Ken Thompson with a PDP-11, circa 1972
(Source: Dennis Ritchie homepage)

Years ago, I was shocked to discover a young developer friend had never heard of BEA, JBoss, or app servers at all. Growing up with virtual machines and distributed systems, he couldn’t be bothered to look back 10 years to understand how we reached this “cloudy” present. But understanding the basics of our computing past helps us appreciate our present.

Similarly, many developers are so immersed in open source that they have no conception of how we got here or what made it possible. In overlooking this past, they may misunderstand how best to invent the future, as articles from open-source luminaries Eric Raymond and Tim O’Reilly indicate.

Learning from UNIX

As Raymond posits, UNIX was important not so much because of its invention of the first non-assembler language — but rather, by “creat[ing] the modern idea of software systems that are cleanly layered and built from replaceable parts, and of re-targetable development tools.”

Otherwise stated, the UNIX hackers gave us the concept of modular source code, the principle upon which Linux, the web, and so much that we take for granted today is built.

Presented with a choice between open software or modular systems, the latter takes clear precedence. After all, in the early days of computing, “Not only was portability across architectures a near-impossible dream, you often couldn’t port between instances of the same machine without serious effort.” Software was hard-coded to the hardware on which it was intended to run. UNIX changed all that:

“Without the UNIX-spawned framework of concepts and technologies, having source code simply didn’t help very much. This is hard for younger hackers to realize, because they have no experience of the software world before retargetable compilers and code portability became relatively common.”

This isn’t really a matter of history, however. It introduces a fundamental principle for building successful ecosystems.

The architecture of open

As Tim O’Reilly comments, “The reason open source culture grew from Unix was not political, it was architectural.” In other words, rather than get caught up in a somewhat pointless declarations of rights, we should instead focus on more fruitful architectures of openness.

Speaking of one particular industry trend, O’Reilly goes on to argue:

“Will the Internet of Things be proprietary or open? It seems to me that the best way to ensure that the answer to that question is ‘open’ is not to wave banners saying ‘open data’ or to try to create open versions of successful proprietary products but to work assiduously to find ways in which open data and cooperating systems create more value than closed, proprietary data.”

This is absolutely correct. Too often we make a fetish of openness for openess’ sake. Open-source software is not interesting just because it’s open. It’s interesting because it’s portable, as Raymond said, or interoperable, as O’Reilly extends his argument.

In other words, it’s not the source that matters — it’s the ability of that source to move between systems that counts.

Opening up the future

This is why I’m bullish on Google long term. Yes, Android is open source — and yes, that sort of matters. But the real value of Google is how much of its software runs on others’ platforms.

Dismissing King Digital Entertainment (maker of the popular Candy Crush game) as a “one-hit wonder,” Michael Cusumano, a professor at the M.I.T. Sloan School of Management, argues that “Typically, companies will have…one big product, and…unless they manage to become the center of an ecosystem, over time they tend to weaken and disappear.”

To thrive, products must foster ecosystems around them.

By definition, a company or product can’t be the center of an ecosystem that it controls top-to-bottom. Ecosystems grow up around products and companies that foster third-party innovation that interoperates with a core. The company that must control everything is like early software development: heavily proprietary software hard-coded to a specific type of hardware, or even a specific computer.

Apple is like this in some ways: it likes to control the overall experience for consumers, from hardware to software to cloud services. But Apple has also opened up to a considerable degree, fostering a vibrant developer platform on its iOS devices.

Still, long term I’d bet on Google, because Google doesn’t hard-code its software to perform solely or even to perform better on its own hardware/software platforms.

Those developers looking to build a successful product have much to learn from both Apple and Google, of course. But the key lesson is that which UNIX taught us so long ago: open-source code is nice, but portability of code is critical. Otherwise stated, those developers who foster open, permeable ecosystems that encourage modular design and interoperable systems have a far better chance of succeeding than those that insist upon end-to-end control.

Just ask the original UNIX hackers.



Brightbox Now Offering Ruby 2.1 Ubuntu Packages

Brightbox Now Offering Ruby 2.1 Ubuntu Packages

Brightbox Now Offering Ruby 2.1 Ubuntu Packages

As mentioned previously on, Ruby 2.1 was released on Christmas Day last year (2013). Less than a month from that event, cloud hosting provider Brightbox has made available Ubuntu packages for this new release.

The packages are currently available for Precise, Quantal, Raring and Saucy, and Lucid is reportedly on the way. These packages should bring increased performance, thanks to improvements to Ruby 2.1 in general, but also due to a Brightbox-specific patch to a bug in rubygems 2.2.0.

How to apt-get Those Packages

If you want to grab these Ruby 2.1 packages for your own Ubuntu machine, just add Brightbox’s launchpad package repository and install the ruby2.1 package:
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.1

ruby2.1 -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux-gnu]

Installing Gems in Mac OS X Mavericks

Installing Gems in Mac OS X MavericksI decided to do some work with a GitHub Pages page today. What’s more, I chose to do some work with Jekyll, since it’s supported by Pages. I was having a terrible getting Jekyll installed on my MacBook Pro, so I decided I’d publish this quick post to help out anyone else who might be having the same problem. [Read more...]


Ruby 2.1.0 is released

As per tradition, the newest MRI Ruby release (2.1.0) came out on Christmas Day. The new release has been met with praise of its performance increases thanks to the new RGenGC generational garbage collector and improved method caching.

Other notable changes include

  • refinements #8481 #8571
  • syntax changes
    • Rational/Complex Literal #8430
    • def’s return value #3753
  • Bignum
  • String#scrub #8414
  • Socket.getifaddrs #8368
  • RDoc 4.1.0 and RubyGems 2.2.0
  • “literal”.freeze is now optimized #9042
  • add Exception#cause #8257
  • update libraries like BigDecimal, JSON, NKF, Rake, RubyGems, and RDoc
  • remove curses #8584

For more info click here to check out the official announcement.


Apple’s announcement that their newest Mac OS would be available free of charge came as a shock to all as they single-handedly possibly put an end to the era of paid operating systems. There are several theories behind this news, but to discover really why OS X Mavericks is free, we must turn to our friends over at JoyOfTech.

Why OS X Mavericks is Free

Geek Pin-Up Jessica Nigri

Geek Pin-Up Jessica Nigri

Though I prefer to write about Ruby on Rails and other geekery, this is the Pin-Up Geek after all, so whose pin-up is better to feature than cosplay geek Jessica Nigri?

Jessica was recently featured as the “Chivette of the Week” over at Click here for more.


Trendiest Software Technologies: Ruby Ranks 15th

Trendiest Software Technologies

Sometimes code monkeys like us can get so involved in their own systems that they lose all sight of anything or anybody else outside of their niche. But it can be interesting to see what guys in other camps are doing (and how big they’re getting). Enter Google’s list of Trendiest Software Technologies.

Trendiest Software TechnologiesGoogle Trends

Google (an online search engine — perhaps you’ve heard of it) doesn’t just serve search results. It also analyzes search data to identify patterns and trends. It seems that the primary goal of this analysis is to allow Google to provide better (i.e. more relevant) search results, but they also use it to create interesting public-facing products like “Google Trends.”

In addition to providing just the top 10 trendiest searches overall, Google also breaks this information down into categories. This allows you to see, for example, the top 20 sports, reality shows, athletes, or DJs (Skrillex, we love you).

And of course, Google also lists the trendiest software technologies.

Trendiest Software Technologies

Of the top five most popular technologies, four of them (SQL, HTML, Java, and JavaScript) have been in the top ten for over 114 months (probably the time that Google started this program). The #5 spot CSS has only been in the top 10 for 101 months.

In this list of 20, Ruby comes in at #15, beating out ASP.NET, HTML5, R, Perl, and LaTex, respectively.

Ruby on Rails doesn’t make the list at all.

Click here to check out the full chart and details.


Practically all the software in the world is either broken or very difficult to use.

Ruby on Rails Tutorial: Learn Web Development with Rails
by Michael Hartl


Upcoming Trip to Louisville

Summer is upon us and it’s time for some of us to take a vacation. For me that means a brief trip to Louisville, Kentucky.

I’ve been to Louisville several times, but there are a few new spots that I’d like to visit this trip. For those of you who’ve never been, here are some things to check out if you ever get the chance.

Tourist Attractions in Louisville

Louisville isn’t a huge city (it’s 27th in the country by population), but at over half a million people, it isn’t too small either. And in a city of this size, there are plenty of attractions to see.

Downtown Louisville

In addition to being a bustling business district, downtown Louisville is very welcoming to tourists. These are just some of the museums in the area:

  • Frazier History Museum
  • Glassworks
  • Louisville Slugger Museum & Factory (they’ll give you a free miniature baseball bat if you take a tour)
  • Kentucky Science Center
  • Kentucky Museum of Art and Craft
  • 21c Museum and Hotel
  • The Muhammad Ali Center
  • The Kentucky Center for the Performing Arts

And if you’re a coffee drinker (like any respectable geek is), be sure to check out the new Sunergos Espresso bar on 5th Street while you’re downtown.

Churchill Downs

When most people think of Louisville, the Kentucky Derby comes to mind. Of course it’s held in the beautiful Churchill Downs. Unfortunately I’m going to be a few months late for the Derby, but there are other horse races held there as well.

Louisville Restaurants

In addition to the other tourist attractions, Louisville hosts a ton of delicious restaurants. In fact, it was recently named one of the “foodiest cities” in America.

I’ve been to a lot of Louisville’s restaurants on previous trips, but this time I’m looking forward to trying out a new pub/beer bar — Four Pegs Beer Lounge. Supposedly they have a delicious chicken waffle sandwich that I’m dying to try.

Future Geekiness

I’ll be gone for a few days, but when I return expect some more posts about Ruby on Rails and some other recent projects.


Getting Started with Rails

In much of my previous work, I’ve talked about Ruby on Rails, but it occurs to me that perhaps some of you may not be very familiar with Rails or how to get started.

Good news for you: it’s very easy to get into.

What is Ruby on Rails?

Called “Rails” for short, it is a framework for building web applications. It’s based on the programming language Ruby, but you don’t have to learn Ruby first. Lots of folks just jump straight into Rails.

It’s open source, so it’s free to acquire, free to use, and free to modify. The source code is “open,” so if you care to know you can peek under the hood to see what’s going on.

Like a lot of other web coding tools, Rails uses the Model-View-Controller (MVC) approach to development. In short, the model is your data, the view is how it is presented, and the controller is what brings the two together into an attractive front-end.

What Can You Do with Rails?

Pretty much any web app could be built with Rails: anything from a blogging CMS to a social network to an ecommerce site.

How to Get Started with Ruby on Rails

Getting started with Ruby on Rails is relatively simple. If you don’t already have the development software installed on your computer, the fastest, easiest way to get it is with the RailsInstaller.

Once you have the tools you need, the next step is to learn how to use them. The official Rails website has tons of guides and tutorials to show you the ropes. There are also paid courses on sites like Treehouse.

In summary, it’s relatively quick and easy to get started with Ruby on Rails, even if you’re starting from scratch.