May 2008
[ geir ] 21:02, Saturday, 31 May 2008

Why is there a penalty for stealing money, but there's no penalty for stealing/wasting time?

I can never get time back. I can always make another $20.

[ geir ] 07:23, Friday, 30 May 2008

This post is a RFP - "Request for People".

I've been meaning to announce that I've joined a new startup, 10gen. I'll write more about the change later. The upshot of 10gen should be well explained on the site (and if not, let me know so I can fix it), but in brief, we're developing a "platform" for what is very loosely called "cloud computing". I say "loosely", because the term encompasses a very broad range of technology and services, from basic grid computing to AWS to AppEngine to SalesForce to EngineYard to ... I'm working with some very smart and accomplished people (ignore the guy at the bottom of the page) and I'm lucky - we appear to all share the same views on code, agility, process, technology, product, etc.

What we're building is ambitious - an application server and a database that are designed for infinite scalability. In addition, we're building developer tooling, application libraries, and management infrastructure to help people develop, debug and deploy applications to said scalable application platform. A similar example is Google's AppEngine - it's an app server with a kind of database to which you can write applications, and those apps will run across the Google's resource grid. The 10gen platform is an app server with an object database (keep reading :), and this platform will run across a variety of resource grids - you can run it on Amazon's AWS, across standard managed hosting providers like Rackspace etc (even multiple ones, for geo and vendor diversity), or even run on your internal computing resources.

A key feature of our platform is that we're multi-language. We're focused on Javascript and Ruby at the moment for writing applications, but we have no religious or political convictions here - we're interested in supporting languages that people want to work on. (We are also dedicated to making such languages and related frameworks run fast.) The constraint is that we think that to get internet scalability, standard programming models have to change a little - you can't just toss a LAMP stack or Java EE server onto AWS and expect infinite scalability. While the benefits of AWS are clear - zero capex for infrastructure, dynamic resource availability, reduced operations personnel costs - you still have whatever scalability limitations you started with in your LAMP stack or Java EE server. Don't get me wrong - this isn't a ding on LAMP, EE, or AWS but just a recognition of the challenges we're all facing with our standard tools.

On the database side, yes Virginia, it's an object database. When I first heard this, I had what I imagine is the standard reaction by people that have only used RDBMSs - "huh?". But after playing with it, and thinking about the problem space, I'm convinced that this kind of database architecture is not only nice, but required. Clearly Google and Amazon think so too as their data stores are either object stores or tuple stores. Sure, you can run a RDBMS on at Amazon, but that's just as scalable as your current config. It's clear that an ODBMS isn't going to be the right database for all applications, but I think that what we have is very "fit for purpose", and the RDBMS isn't the right database for all applications either. (Think of how much time we all spend as programmers trying to deal with the RDBMS in a sane way via JPA, Hibernate, iBatis, JDO, Linq, ActiveRecord, ActiveTable, Django, SQLAlchemy, Storm, DataMapper, DataXtend, etc)

Anyway, we're looking for really good people to join the team. We're focused on hiring in our New York office on 20th Street in what is colloquially known as "Silicon Alley", but I'll consider other arrangements. We have some really big and interesting problems to solve, and we need people of all experience levels and backgrounds. The app server is written in Java, and the database in C++. There are all sorts of scalability, grid and management issues to solve. Our application libraries and frameworks are written in Java, Javascript and Ruby. We want to build tooling for Eclipse. We're going to be open sourcing major parts of our codebase. I need core appserver and db engineers, application library and framework engineers, Ruby and Ruby on Rails engineers, Eclipse plugin engineers, QA engineers, QA technicians, technical writers, community leaders and managers, developer relationship managers, etc. The list goes one. I could formally list the job specs, but I think that if you've read this far, our time would be better spent talking. Just drop me a mail at geir at 10gen dot com. If you have my phone number, call me.

This is an exhilarating, terrifying space with exhilarating, terrifying problems to solve, and we have an opportunity to make a real impact. Life is too short to be bored :)

[ geir ] 19:28, Thursday, 29 May 2008

From a ZDNet article on Rails :

Divorce long running queries. Ruby on Rails typically serves one request at a time and that’s a detriment if there are long running queries that block other incoming requests, said Zygmuntowicz. The workaround is that you have to set up a queuing mechanism so your database isn’t overloaded.

Serving one request at a time is a detriment. Period.

One simple mechanism for queueing requests would be SMTP - have the Rails framework send request data via SMTP and then fetch the next request when the (!) thread is free. I'd recommend IMAP for that - better chance of not losing requests when the server crashes. Other benefits include being able to use Mail.app or Thunderbird in your ops center to gauge real time load - just check the size of your inbox. You could also ditch Google Analytics or Omniture and use something like MarkMail for traffic analytics. You could also let people mail your website directly - save them from having to fire up Firefox.

[ geir ] 22:16, Tuesday, 27 May 2008

...takes 8 hours 30 minutes to get from Boston to New York?

  1. A horse
  2. A very fast catamaran
  3. Amtrak regional service with 2 breakdowns
  4. A MD-88 when operated by Delta Shuttle
[ geir ] 14:48, Tuesday, 27 May 2008

I'm looking for help setting up a new business based on some novel ideas by Michael Arrington : offering ads on TechCrunch content at half the price of TechCrunch.

I'm guessing he won't mind - it will support his conference and T-shirt business.

[ geir ] 14:16, Sunday, 25 May 2008

I'm using git quite a lot these days, and really like it. It's branch management is just beautiful.

However, I want to lock branches once released. We announce to the team whenever we release something, but people make mistakes and accidentally add things to released branches.

Linus mentioned adding a very practical solution - letting me mark a branch as "readonly" in the .git/config file - but I don't think that really works I'd want to protect it in our central repository.

Could I just do something like make gitroot/thing/.git/refs/heads/version read-only? Anyone have any "best known method" for this?

[ geir ] 14:02, Sunday, 25 May 2008

It takes a confident man to fly an Elmo.

20080524_flyingelmo.JPG

(Taken w/ Elmo tethered to one hand, iPhone in the other)

[ geir ] 10:00, Sunday, 18 May 2008

Erm. Why are the membership documents for ECMA in .doc format?

[ geir ] 08:48, Friday, 16 May 2008

Doug Lea pointed out (in a closed forum, but knowing Doug, I don't think he'll be upset w/ me saying this in public) that there's widespread misconception in the industry about TCKs - that they are necessarily hard and difficult beasts to create. Example, from Frank at Artima :

But developing and maintaining a good TCK is a huge task, and one few open-source projects are accustomed to.

I think that Eclipse has 30k+ tests. Apache Harmony has a massive pile. GNU Classpath has something like 20k. There are tons in Apache Commons. Clearly it can be done. A TCK is really just a thorough (and if you've used them, not always so thorough) pile of unit tests :)

[ geir ] 08:13, Friday, 16 May 2008

The Reg is reporting that Hans Muller left Sun for Adobe. Unfortunate, given Sun's apparent move of going "all in" in this area with the Java FX strategery. (Hey, it was the main subject of the JavaOne opening keynote two years running...)

While I'm confident that Sun still has enough remaining technical chops to deliver the core technology - some of the smartest people I know work there, and work on this - I think that Sun needs to modify it's DNA and get people that not only understand how to market to the development and design community, but also create tooling for designers as Adobe (clearly) and Microsoft (to some degree) - the two companies that Sun has decided to take on, head on - have at least a decade head start on them. Hint I - this will require investing heavily now, rather than trying to limp by on the cheap. Hint II - another walled-garden OSS community ain't gonna cut it because the best OSS tooling are tools that developers built for themselves. (Eclipse, NetBeans (sorta), gcc, ant, etc...). Designers don't build these kinds of tools for themselves.

This reminds me - given the sheer number and quality of Java engineering defections (I've lost track of the world-class rockstars that are just at Google, let alone Azul, etc)... I worry about the effect this will have on Sun's ability to deliver the next rev of Java SE...

[ geir ] 07:22, Thursday, 15 May 2008

This amazingly off-the-mark article appeared in The Register yesterday. Dalibor just joined Sun and surely is still getting his bearings and has never participated in the JCP and it's possible he was misquoted by Gavin. As a friend of Dalibor, I've suggested to him that he should get it corrected. As the Apache Software Foundation representative to the JCP EC, I sent the following to the Sun EC reps and chair of the PMO trying to figure out what Sun is up to here :

Patrick, Danny, Calinel :

Given that fact that the statements contained in

    http://www.regdeveloper.co.uk/2008/05/14/jcp_individual_representation/

are given by a Sun employee identifying himself in his job role, can I assume that Sun is interested in taking this discussion public? I think that is a really healthy approach. I think there is confusion about the basic facts and I think clarification will be useful for the community as a whole.

I think I'll wait to see what Sun's intention is here before addressing some of the problems in the article. After all, it could be a just a huge misunderstanding. Why do I care? Because openness, transparency and the equitable "rule of law" is inherent in the ASF's struggle in securing an equitable Java SE TCK license from Sun.

Hopefully Sun will allow me to publish their answer. Not being able to would be supportive of "A culture favoring closed-door meetings" :)

[ geir ] 07:11, Wednesday, 14 May 2008

Just got an update to version "286u-7" via Cydia. Basically, this is a nice terminal for the iPhone that lets me do usual shell things, and the packages that come via Cydia make it very powerful. Full apt, for example. ssh, svn. (I can setup a tunnel to an internal JIRA server at 10gen so that I can use my iPhone browser...)

The UI is half-screen of keyboard, and half-screen of terminal window. What's interesting is seeing how they are learning how to leverage the touch features of the screen. A terminal using the iPhone kbd is a little challenging, especially w/ the small screen for those of us where glasses are required more and more :) so finding ways of incorporating graphics and touch will make this tool all the more useful.

They are using single-finger touch to bring up a neat "grid" menu, short and long single finger swipe, and two finger swipe. I'm still figuring it out, but what I know is nice. For example, short swipes up and down gets you the up/down command history in the shell, just like an up/down arrow would. Short swipe up to the "northeast" is a ctrl-c, to the "southwest" is tab. "west" is backspace, and "east" is space. Two-finger swipe up ("north") is the conf page, down is hide/show keyboard, "west" and "east" flip between the multiple terminal sessions. When you touch and hold, a square "menu" of buttons comes up, and sliding to them either does the function (e.g. "clear"), or changes the "menu" to a set of variants. For example, sliding to the "ls" button - which is darker to indicate that there are options there - switches the rest of the squares to variants : "ls -a", "ls -al", "ls -s" etc.

The results are pretty nice - if you have experience working in a shell, you can go pretty fast. I've only used it for a few things so far - ssh-ing into a server at work, or setting up a tunnel so that I can control a Hudson instance running inside our firewall. The iPhone is an incredibly powerful little computer, and having a good command line makes it more so. I wonder when Android will run on it? :)

[ geir ] 07:18, Tuesday, 13 May 2008

From an article on TSS :

"Most successful open source projects are using GPL," Mårten Mickos, former CEO at MySQL and now of Sun.

While "most" is debatable, I think it's interesting that it successful OSS projects either don't use the GPL, or don't just use the GPL alone, but have to modify it in some way to get around the enforcement of Freedom(SM) in GPL so people can use the project.

OpenJDK has the Classpath Exception along with the strict requirement of having Sun have complete copyright (so they can relicense to something commercially useful), MySQL also does the complete copyright thing (how else could they be worth $1B) plus several exceptions including one which I think of as The "We want to use Apache's APR, and we can for our commercial licensees because the Apace License doesn't restrict what we can do, but it's a big problem for those taking MySQL under the GPL" Exception, which I interpret as saying the FSF's opinion on license compatibility should be ignored when it gets in the way. Linux supposedly has some sort of exception for modules (I can't find it), and of course the standard unix library under linux is offered under the LGPL.

So yes, there are a lot of successful open source projects under the GPL, but there are a few others (Apache Httpd (aka "the webserver running the inter-truck" [Apache License], Apache EverythingElse [Apache License], Eclipse [Eclipse Public License], Firefox [Mozilla Public License], etc) that seem to do ok despite their non-GPL handicap :)

Are there actually *any* major, successful open source / free software projects available under a pure GPL?

[ geir ] 09:36, Saturday, 10 May 2008

CT law says that kids must be in booster seats. Why are school buses exempt? The claim is that they are safest way kids travel. Maybe I'll sell our air-bag equipped, anti-lock brake equipped cars and get a truck frame, bolt on some bench seats, rivet some sheet metal on it, and paint it yellow.

[ geir ] 14:38, Wednesday, 7 May 2008

Last night, I was happy to accept the 2008 JCP Member of the Year award on behalf of the Apache Software Foundation. Congrats, all, and thanks to the JCP EC for the support.

As a bonus, Max said he'd ship it so I don't have to figure out how to explain it to the TSA peeps at SFO.

jcpmoy2007.jpg
[ geir ] 12:22, Tuesday, 6 May 2008

At J1, at the general session. No clue yet what the theme for the year is, despite Rich Green being halfway into his pitch. Currently watching an AMZN Kindle demo. Maybe they'll throw a few from the stage.

Nice evening last night. Dinner w/ Simon and Danese in North Beach. Found out that SF natives store their car keys in the trunk keyhole when at dinner. That wouldn't work in NYC. Hard to imagine why they bother locking them in the first place. Saw friends at OpenSolaris launch party (part 1) at Jillian's and then evening of debauchery w/ friends at HoS courtesy of RedMonk. Thanks guys, and apologies again for my tardiness, James.

[ geir ] 07:24, Monday, 5 May 2008

Just got an update... cool.

[ geir ] 11:35, Saturday, 3 May 2008

The following is really boring - but I want it out there so that someone plagued by the same problem has an easier time figuring it out than I did.

Interesting problem on Leopard. I had been having problems in the last few days looking at PDFs on my laptop, but was so busy - and I have a big honkin' 8-core Mac at work - I didn't think much of it. Until this morning, when I was trying to look at the CommunityOne pdf and then upload photos from my camera into iPhoto...

Symptoms were Preview.app starting, but not opening anything. Same with jpegs - double click or "open file.jpg" from command line, and Preview.app opens or becomes active, but no windows open. In iPhoto, I'd connect the camera, it would do it's thing for a bit, and instead of showing me the low-res thumbs on the import screen, I just got little rectangles. When I did hit import, it opened a dialog and said that either the images were of an unknown format (.jpg) or the data was bad. I knew the apps were ok - I had created a new user and tried both - so it had to be something specific to my user. I snooped w/ opensnoop for a while, but wasn't looking for errors correctly. Anyway...

Problem? Well, it turns out that on Leopard (maybe earlier versions as well...) these apps use temp space in /var/folders/{2 char dir name}/{big ugly dir name}/.. so they need to write there. Somehow (I suspect via DiskUtil's fix permissions "utility" which I was using on wed trying to fix a MSFT Word problem) mine was owned by root, and thus as me, nothing worked. The solution was simply to sudo chown -R geir on the directory. Make sure you choose the right one - there is one for each user on the system, I think.

In retrospect, I might have gotten a hint faster if I had looked at the system.log, but that kind of "aha!" is always easier once you know everything :)

Also, there's a thread on this in Apple's forums.