Craig Andrews

I'm a Senior Software Engineer. I work on quite a few cool projects (I'm especially fond of Java, Web 2.0, and things that are new to me). I'm also very much a Free Software enthusiast.

XMPP/Jabber: candrews@integralblue.com

AIM: molecularcraig

Posts written by Craig Andrews

August 11

Shuttleworth on Project Management

Mark Shuttleworth, of Thawte fortune and Ubuntu fame, has some (IMHO) neat ideas on how to manage software development efforts that may be interesting to spend a few human processing cycles considering.

http://lwn.net/Articles/292031

Despite the article being written for Free Software and Linux, I think it’s incredibly relevant to all development efforts - read it as if he’s talking about Molecular projects, and not Linux distributions.

Here are two key paragraphs:

One of the key requirements that Shuttleworth sees is the need to “keep the trunk pristine”, by doing integration on the trunk and feature development on branches. Along with this is the need for more and better tests. While not necessarily believing in test-driven development, he certainly leans that way. In any case, all the tests should pass before committing to the trunk.

Many projects do not yet have an extensive test suite, but this needs to change. He quoted a Chinese proverb that “the best time to plant a tree is 20 years ago, the second best time is today”. He mentioned that he is working on a robot that controls the trunk of a development tree. Developers will request it to merge from a branch, so the robot merges the branch and runs all the tests. If the tests pass, it commits, otherwise it gets kicked back to the developer.

This approach sounds pretty good to me.

July 28

Distributed services - the past, present, and future of the Internet

The Internet started as a distributed network - ARPANET. Its protocol, TCP/IP, was designed so that hosts anyone could communicate without relying on a central authority, and if any one host went down, it didn’t affect the other others’ ability to work. Gradually, as ARPANET evolved into the Internet, that distributed architecture became more important. Today, the Internet is pretty much everywhere, from nanny cams, to laptops, pda’s, servers, data centers, and telephones. And that redundancy and distribution is critical for the whole thing to work.

Great… so I’ve just wasted a paragraph telling you what you already know, right? The interesting part is that business doesn’t like distributed services, and has been trying since the beginning to stop them. For example, the World Wide Web is distributed. Anyone can set up a web server, and then anyone else can view pages on it. I can set up a web server on my PC and someone in China can take a look around. No reliance on Google, or Microsoft, or anyone else. But then, how do businesses such as Google and Microsoft make you rely on them, so they can charge you for their services, or force you to view advertisements, so they make money?

We have this constant struggle of the technology pushing towards decentralization, and the business interests pushing towards centralization. Let’s take Amazon S3 as an example. S3 is a very cool distributed computing technology. The basic idea is that one can write software specifically against S3’s API and then upload it to S3, and the service will dynamically provide more or less resources depending upon the site’s specific needs at any given time. If the site is hit by digg or slashdot - that’s fine, S3 will allocate more processing power. When the surge ends, the power is scaled back, and the payer of the S3 bill saves money.

So far so good, right? But now there is a situation where a vast number of sites have a single point of failure. They also have no portability to other providers. What if S3 goes down? All the sites relying on it go down. What if S3 raises their prices? The sites can’t change providers; they have no choice but to pay.

S3 is relatively new, so the technologists haven’t yet come up with a complete alternative, but some are in the works. But, consider Twitter. Twitter is a microblogging service that allows one to write 140 characters of one’s thoughts. It’s tremendously popular, having over a million users worldwide. But what if Twitter became unreliable? What if they stopped introducing new features, or broke existing capabilities? What if their terms of service weren’t to your liking? The answer to all these questions used to be “deal with it” or switch to another site just like Twitter, that inevitably evolved the same problems. Twitter isn’t distributed - you can’t just make your own Twitter and still communicate via your new site with your friends on Twitter (like how an GMail user can email a Molecular address), nor can you contribute the Twitter software. Your complaints fall on deaf ears.

It took a while, but the technologists responded with Identi.ca. Identi.ca lets anyone download the software the site runs (called laconi.ca), make changes, and run their own server. If identi.ca becomes unstable, the owner starts behaving badly, or anything else disagreeable happens - the users can simply leave. Their data comes with them, and they can still communicate with others on the OpenMicoBlogging network. Imagine that… if you don’t like the service, you can leave.

There are many examples of services changing from locked down to distributed, too. Instant messaging is one: there used to be many many protocols and clients people had to run, such as AIM, Y!, MSN, etc. Then XMPP (aka Jabber) came along. With XMPP, one provider going down only affects those users and not the whole network. For example, when AIM has trouble, every single user of AIM has trouble. When GTalk goes down, I only lose communication with those people on GTalk, I can still talk to my friends on other XMPP servers (for example, when the aol.com email server goes down, it doesn’t affect my ability to send email to gmail.com users from my Molecular address). The damage is limited, and people have choice. Those users of GTalk, who are now seriously annoyed with the service for going down, leave to another XMPP service, and they can still talk to all their friends, just the same.

Microsoft Passport failed for the same reason. People didn’t want to rely on Microsoft alone for their ability to log in to disparate services. Instead, OpenID came along, which allows users to pick, and even change later, who their identity provider is. And now bigger players are supporting OpenID.

These distributed services provide a huge incentive for service providers to keep providing quality services, that are stable, work well, and continue improving. With the constant threat of users simply leaving, these services must always be on the look out for improvements, and they can’t simply add tons of advertisements, or paid registration, when looking for money.

In the short term, the Twitters and AIMs of the world will continue to have huge user bases. But over time, they can’t keep up with the freedom and higher quality of the distributed alternatives. Look around - is the centralized Prodigy still around? How’s Delphi doing? For that matter, isn’t the walled garden of AOL in trouble? Yet the World Wide Web and the email system keep going.

May 12

Resig’s Processing.js

John Resig (of jQuery fame) released processing.js on Thursday. If you haven’t checked it out, you should! It is really impressive. On the newest versions of some browsers, and on the next version of others, it’s possible to pretty much duplicate the capabilities of Flash, but entirely using markup and Javascript.

The real excitement comes as this could be a blow to Flash, Silverlight, and company. Christopher Blizzard makes the points why this is so exciting on his blog:

Just imagine for a second if those sites let people share and display neat little graphical widgets with source where people can try out different objects and learn from each other’s source code. Easy to drop in graphical interactive elements into other sites with the same transparency and zero-barrier to learning we’ve seen from the rest of the web. Think about how fast that stuff might spread on the web, how we might end up with people sharing and learning together and how much better the experience on the web might be in the end. That iterative process is one that needs starting points and what John has done is give us a great starting point.

I think this is where it gets interesting. You can only go so far when you build a project, then when it’s completed, forget it, and never share it. 99% of our projects are this way. But the kind of thing that processing represents is real Web 2.0 - truly collaborative, exciting stuff! Unlike Flash or Silverlight, others will read the code, use it, share it, and probably credit us - spreading not only Molecular’s image as forward thinkers and great developers, but also the image and brands of our clients. What would happen if, throughout the years of all the projects we had done, other developers we never met could grab our work, and combine it in ways we couldn’t imagine? What if we could do it to our projects? What if we could leverage the work of others more effectively?

April 20

CSS Color Shorthand not support in Adobe Flash

Flash doesn’t support CSS color shorthand - an obscure feature of CSS that I bet not many know about.

CSS color shorthand defines that whenever a both hex digits in a color component of a CSS color are the same, you can eliminate one digit to reduce the color definition from 6 digits (2 each for RGB) to three digits (1 for each of RGB).

For example, white is #FFFFFF. But it can also be written as #FFF. Blue is #0000FF, but can be shortened to #00F.

Every browser seems to support this, including those based on Gecko, Webkit, Opera, and KHTML, which is really cool - CSS compressors (such as YUI Compressor) take advantage of this neat trick to knock a little off the size of a css file.

However, Adobe Flash does not support CSS shorthand color defintions. I thought Flash was supposed to be CSS compliant, so this surprised me. For example, #FFF (which should be white) shows up as a blue in Flash. Interestingly, Adobe knows about CSS color shorthand, as they discuss it in this Dreamweaver article.

I’ve filed bug with Adobe (no public bugtracker?), Gnash, and swfdec.

April 5

Analyst Admits Open Source Will Quietly Take Over

“In a few years’ time, almost all businesses will use open source” says a recent Gartner report entitled, “The State of Open Source 2008.” The report continues with statements such as, “By 2012, more than 90 percent of enterprises will use open source in direct or embedded forms.” (I’m getting my data from ZDNet, as the report, despite reporting on open source software, is not openly available).

It seems that Gartner has realized what so many have realized already: That open source makes sense from a business perspective. The report, however, does miss some key features of “open source.”

The report uses the term “open source” and does not discuss Free Software or use that term (not all open source software is Free Software! This “little” difference can be very important!). For example, the Microsoft open source licenses are “open source” but notably not Free - as a business, being bound by the MS licenses could be a very bad thing, as they severely restriction modification, distribution, and attribution - things which are integral to the use of the software, especially in a business environment.

The reports has no mention of how the sharing of code and ideas benefits corporations beyond merely reducing licensing costs. It misses the whole point of the Free Software culture, that companies such as Red Hat, Drupal, Canonical, and IBM make their money and success on. For example, Red Hat makes money by having the community do a lot of work for it at a lesser cost, something the report misses. (more…)

Browse posts by month

Browse by author

We're hiring!

Come take a look at careers with Molecular