A Different Kind of Tourism

If a person were to walk from downtown Mountain View (in so far as Mountain View has a town to be down of) to the Computer History Museum, and then kept going, they might find themselves wandering into Shoreline Business Park. This is where you would find the silicon in this part of the valley.

Of course, there isn’t actually a lot of touristing to do in your average industrial park. We’re in Silicon Valley here, though, surely there must be something to see? Well… there are signs for reasonably exciting tech companies, with logos and everything… for example:


Here’s a fun one. 23 and Me is either a very cool company, or an utterly terrifying one, depending on your point of view. The basic idea is that you send them some of your spit (and some money). They use this to do some basic DNA profiling and tell you about your genetic predisposition towards certain diseases, your genetic predisposition to certain drugs, and a limited amount regarding your actual genetic ancestry. This all comes wrapped up in a neat web interface which updates as new discoveries are made. I’m generally of the the view that this is pretty cool.

Further in we find even more companies, at least one of which you might have even heard of:


LinkedIn is basically a professional version Facebook. Sort of a fancy online business card holder, networking centre, recruitment system and industry conference all rolled into one. As such, it allows you to show your respectable side to your business contacts, whilst still being able to display that photo set proving that you can get your entire fist in your mouth to your friends. It can be quite useful, but more on that in a moment. I had no idea who the other companies on the sign are, and have not, as yet, felt too much of a need to enlighten myself.

There is, of course, another tech company with a fairly large presence in this business park, but I can’t for the life of me remember their name. Oh, wait, yes. I remember:


When in doubt, follow the street signs. While I’m sure it is helpful to have signs pointing to stuff (other examples in this estate include “movies” and “amphitheatre”) hanging above the road, making them indistinguishable from street signs is bloody confusing, in my opinion.

Google is, of course, the whole reason I’m in this town, and in fact in this country for these two weeks. For the record, I was recruited via LinkedIn, so it definitely does have it’s uses. One of the reasons for this wander was to get a general idea of the lay of the land surrounding the Googleplex. My overall opinion: it’s big. Luckily, the Google bikes were very much in evidence:


Often being found looking slightly forlorn in the strangest places. I’m fairly sure the local teens play a bit of cat and mouse with security guards and joyride around the park on them at weekends. This one was close to one of the volleyball courts:


There actually is a reasonable amount to see, wandering around the campus. Google really does live up to a lot of its hype. One of the more famous landmarks of the campus was actually bloody difficult to find, though. It took a serious amount of detective work, comparing photos from the web to views from Google Maps, but I finally tracked down the “Android Lawn”:





As it turned out, if I’d just stood up and looked over my right shoulder from the place I was performing all of this furious Googling, I probably would have just spotted the damn thing. Such is life. Strangely enough, I was feeling a little hungry at this point, so I headed home.

Finally, it is important to note that while all of this touristing around is fun, and Google is a fuzzy and well meaning company, you should never forget that these are serious guys, doing a serious job. One most always strive to live up to the standard set by those who come before you, and always act in a professional and responsible manner when surrounded by such a high caliber of people.

Seriousness. Responsibility. Decorum.


That is all.


Web Frameworks, Desktop Application and My Newly Melted Brain

Let’s get the preliminaries out of the way: Hello, long time no see, how have you been? Etc…

So, whilst writing up my PhD (experiments finally finished!) and working three days a week (going fully full time at the end of September!) I have a fair bit on my plate at the moment. So obviously I’ve also started cooking up a side project…

I don’t want to talk too much about what it actually is (mostly because I don’t know how “open” I want it to be yet), but it’s definitely going to require a web service. It might also require a fully fledged website (lets call this the spotify model), or it might just use a desktop application which connects to the service when it needs to (lets call this the iTunes model). Then again it might have both, with the desktop application providing some extra functionality which is hard to do over the web or in the browser. I think there’s also scope for a mobile application, so lets throw iPhone and (what the hell) Android into the pot as well.

I had a bit of a poke around with some web development frameworks first, since this is probably the bit I know least about.

One of the first solutions I came across was Django, which is based on the python language. It looks good, through I have some issues with its handling of “one to many” relationships. Python is a language I have limited experience with, but it gets a lot of love, and people are putting a lot of work into into making it better. It also has good integration with native libraries. So that’s nice. It’s also named after Monty Python, which only raises my opinion of it.

I’ll essentially skip over TurboGears and Web2Py, two other python based frameworks I did some reading about. Django seems like the best choice out the python based frameworks I’ve looked at.

Soon afterwards I discovered Grails which is based on the very cool groovy dynamic language. Groovy, as well as being fun to say, is implemented directly on top of Java, by far the language I’m most comfortable with. The are a lot of existing Java libraries, and groovy has perfect integration with them. Groovy and grails have some serious weight behind them, also.

One framework I hadn’t really considered was Ruby on Rails, which is in many ways the daddy here. This is mostly because I dismissed Ruby as a language out of hand. It looks mental. For reasons I’ll come to in a minute, I’ve re-evaluated this desision, and will be having a good long look at it. On the one hand it’s been around a good long while, so has had the oportunity to become more refined. On the other hand, it was the first of its kind, which means it might also be stuck with some bad early design desicions. It’s the original, this might not make it the best. I don’t know yet.

In order to build this… thing, I’ll need data representation, I’ll need algorithms for processing this data, and I’ll need ways of displaying it. I’d rather not have to deal with multiple implementations in different languages, particularly with the algorithms.


If I want to make desktop applications, python is a possibility. It has good bindings to GTK and QT for linux, and Cocoa for OSX (there’s probably also something which will work on windows, and at some point I’ll probably have to care about this). Java will work anywhere, but it’s quite difficult to make a desktop application with Java which won’t look like crap. My priority in this area is going to be OSX, and Java does not measure up here. I had not considered Ruby, until I came across MacRuby, which is a very interesting idea. It’s not a bridge or a set of bindings, you see, it sits right on top of the objective-c runtime. All of a sudden, Ruby and Rails are a contender.

In the mobile space, things get shitty. iPhone requires objective-c, Android requires Java. Bugger.

So here’s where I am: I think groovy is a better language than python (and probably ruby), and I think grails is a better framework than django (I’ll get back to you regarding rails)… but I’m not sure I want Java hanging around my neck when it comes to building a desktop application. I might also need some serious grunt in the algorithm stakes, and I’m not sure I want to do that in a scripting language. Yes, I need to be able to implement it quickly, but I also need it to run quickly. I’m not sure I want to do that in either C or C++. Java would be good for this (and yes, it’s plenty fast). Objective-c is an option I haven’t discounted.

The search continues… any thoughts?