Friday, June 26, 2009

From cheap to free

It's really amazing how the world of software development has evolved. The proliferation of platforms is incredible. I'm glad I started my career in the stages before open source changed everything, because it is nice to appreciate the differences.

A few months back I started a project with a friend. I got an account for hosting the application from a company named slicehost for $20 per month. I set up a source control repository on a service called github for $7 per month.

$27 per month total cost for developing and hosting a service is pretty darn cheap.

This past week, we ported the application so that it could run on Google App Engine (GAE), which is a web application hosting platform from Google. The cost until you get to some pretty fair amount of usage is $0. Beyond that it's pay-as-you-go with limits that you can set, so you set your budget.

At the same time, we decided to change the source control from using a tool named 'git' to a tool named 'mercurial' and in the process moving from github to bitbucket.org. At bitbucket.org, the level of functionality we need right now is also $0.

What's even better is that in both cases the price not only goes to $0, but the services improve. In the case of GAE you get an infrastructure that is operationally scalable. In the case of bitbucket.org, mercurial is easier to use than git.

What a world.

Thursday, June 25, 2009

Monday morning tech quarterbacking

I was having a discussion with a friend yesterday where part of it veered into those ideas that we, as developers, might kick ourselves for not having seen coming and developing a solution for ourselves.

Of course, hindsight is 20/20, so in a few years we'll be kicking ourselves about the ideas being developed now that we could have been doing too.

Here are some of the ones that I think about.

I feel like I should have put 2 and 2 together and realized how big IM would be. Back in junior high school in '86/'87 when I had a Leading Edge IBM clone running DOS and a 1200 baud modem, I was dialing into the school system's PDP/11 network and chatting on a program called 'dialog'. A few years later in high school we had a VAX cluster and a VT220/240 in every class room, and everyone's favorite thing to do was get on and use a program called 'talk'.

In the late 90's I grabbed an internet domain for personal use with the intent it would be to update periodically with recent happenings in my life or just things I wanted to write about. Uh, blogging.

Again in the late 90's, after New Oak was acquired and people started to leave, I tried to put together a web site where each person had a page that had information about where they were and their recent contact information that I would manually maintain. It was also common back then for tech folks to maintain "alumni mailing lists" for people that had left a company. LinkedIn anyone?

A problem I've bumped into a number of times over the years is sharing files online. Essentially wanting to get large files to another person, and not wanting to email the file. Since I have a domain and hosting I generally FTP it up and give the person a link to FTP it down. Yesterday I came across a company, drop.io, where the founders had that problem too and decided to build a solution for it so everyone could easily have the solution too.

Now, I'm not saying that it should be me with the successful companies around these ideas. But at some level I feel like it wasn't *such* a stretch to see that a general solution could be developed to a problem that I was personally coming across or a desire that was obviously there. So I feel that maybe I should have at least had a go at it.

Which leads to the present. Lots of ideas, and hard to know which one to pursue. I'm sure I must be encountering things that I do manually that could be done better as a general solution. But will I see them before they are in the rear view mirror?

Wednesday, June 17, 2009

Ads need change

I've been thinking about ads the last couple months.

It's no secret that most publishers are straining under the system of relying on ad revenue. Newspapers being the canonical example.

There's also big problems with ads that they have become background clutter that we mainly want to ignore (and a growing number of people actively block).

So - ads need to change if they are going to become more effective and less annoying. Actually, they already are, but there has to be lots more change to come.

I've seen it said elsewhere, and agree, that there needs to be less ads. The more ads there are, the less effective they become.

I really think that ads can be useful. When they are done right, an ad is just making you aware of a product (or brand) that you might be interested in.

Targeting, of course, is already and will continue to make a huge difference. The better job the ad system does of showing me the types of ads that I want to see, the better chance I'll be happy with it. No secret that this is Google's success given that they show you ads based on what you're searching for; the search is essentially telling Google pretty explicitly what you are interested in (they have to do *some* guessing of course).

I think also that ad units need to change. They simultaneously have to be less intrusive up front, but also need to be more engaging and interactive. Over time, ads may move away from what we think of as ads today. The reality is that an ad is just sponsored content delivered alongside other content that interests you (with the hope that the sponsored content will also interest you).

One innovation I think is lacking so far, and potentially disruptive, is thinking about ads as first class objects. Giving the user the ability to manage *when* they interact with an ad, and do things like share, is an interesting dynamic. While targeting provides and answer to the "what" and maybe "where" of displaying an ad, giving the user more control could bring in the crucial "when" to the equation.

Thursday, June 11, 2009

Sunday drives and technology

I was thinking recently about how much of technology is still in a novelty phase. By which I mean that it gets attention and traction because it is new and piques our interest. Twitter is probably a good and most hyped current example of that.

My thought was that maybe this was like back at a time in the US when cars were a novelty and people went for rides just because they could. Then commuting became so much an everyday part of life that the car isn't as much of a toy anymore. I guess it is the canonical "crossing the chasm" thing.

It reminds me of the commercial back in my childhood when the microwave was still a novelty that had the family sitting around watching the food turn in the microwave as it was cooked. We obviously just set the time and hit start and walk away now-a-days.

The reason I'm thinking about this is because in thinking of new ideas for technology, I want to keep in mind the difference between something that will survive the novelty phase and something that won't.

It's also just interesting to ponder what life will look like in 10 years when some of today's novelties become the fabric of our everyday lives.

Wednesday, June 10, 2009

A little history

Most recently I've spent the last year exploring some technologies and business ideas. This has led me on a journey that so far has gone through OBD-II car technology, smartphone development (Android), PHP, Facebook API, Firefox addons, Javascript, and most recently Python (django and Pinax).

My career started on the embedded side, on custom firmware developed for i960 on a custom FDDI board. In the meantime I've worked from assembly on up to Javascript.

In 1996 I was on the founding development team of New Oak Communications (acquired by Bay, then Nortel), where we developed an enterprise VPN platform. I was part of the team there that defined the C++ object-oriented core architecture of the product. My focus was on PPP and the related tunneling protocols of the day. I ported legacy PPP code to a C++ based O-O implementation, and wrote O-O C++ implementations of L2F, PPTP, and L2TP. I became an expert in L2TP at the time, and wrote a book on that protocol (happily all good reviews at Amazon here). L2TP has since evolved, and I haven't kept up with it.

In 2000 I was on the founding team of WaveSmith Networks (acquired by CIENA), where we developed a carrier ATM and Frame-Relay switch (later MPLS and more). We had a co-architect arrangement there, and I defined and developed quite a bit of the C++ based infrastructure on the embedded side and some of the common equipment subsystems. I later moved over to help out the network management group and my move up the stack began. I became the EMS architect and team lead, and oversaw the major overhaul of the monolithic EMS java application into a J2EE based solution.

In 2005 I was on the founding team of BlueNote Networks as the software architect, where we developed an enterprise VoIP software platform. In addition to definition of the overall architecture, I moved back in to C++ development to code large parts of the software infrastructure for the product. I also worked on some of the management platform in Java, and led the development of SOAP based web services in the product (implemented in Java using xfire (since renamed CXF)).

Along the way I've worked on several communication protocols deeply: SIP, SOAP, MPLS, FR, ATM, L2TP, L2F, PPTP, PPP, Ethernet switching, FDDI.

And several languages: Assembly (i960 & i386), C, C++, Java, PHP, Javascript, Python.

And of course lots of other random technologies that come up along the way.