Sep 07

ActiveRecord Migrations: Not just for Rails projects

Tech 4 Comments »

Pairing today, I saw someone go through the following process:

  • Went to play with some SQL as we prototype a new feature
  • Say ’screw it’ and jump in to use migrations to change the schema as it was easier to do so that grok the SQL in this case

This again showed me how ActiveRecord migrations are so useful, that I would be very tempted to use them for a non-Rails project at this point.

That isn’t that far fetched. I can not think of a Java project in recent years that didn’t have a bit of Ruby (or Groovy, or …) in there as helper scripts at the very least. There are no “Java projects”. You always have many languages involved (SQL, shell scripts, HTML, XML, …) in a project. As you do useful things in your projects you often generalize them into libraries that you use on future projects.

ActiveRecord migrations could easily fit into this world. Versioning, and managing the versions of database schema, and data, can often be a pain in the arse. Migrations does the job in style, and is useful standalone.

Of course, you could role up some Java solutions, but it is hard to come up with a DSL quite as nice, and migrations will get better and better. There are still rough edges that we run into. When sucking out an existing schema with enumerations a field with varchar(0) was created. Not too helpful, and yet another look into how good Rails is for green-fields, but it still takes a bit more work for legacy. This is normal though.

Sep 07

Sun finally backs another language

Tech 59 Comments »

I am truly glad to see that Sun is backing JRuby, enough to hire the two main guys.

I have been asking Sun to do this for quite awhile now, and it is great that Tim Bray was able to push it though.

It is such an obvious move.


  • Sun gets two engineers
  • Java can hope to be the platform rather than the language
  • Ruby is slow (in comparison). Ruby on the JVM can be fast, and can offer us great tools.
  • The only investment is in a couple of guys!!!!


  • You have to pay a couple of guys + other resources
  • Some can moan that you are distracted

I remember being at a Microsoft event a few years ago, and a bunch of their engineers were chatting a lot about dynamic languages on their platform, and things that they could do to make it easier for us to implement. Then their hired Jim.

It is also great to see Thomas Enebo being part of this. I worked with Thomas back when I was in college, and he is a fantastic guy.

Good luck to you Thomas, and likewise to you Charles.

I look forward to powering JRuby on Rails in the future (and maybe light up the Ruby movement to move on a bit faster too).

Sep 06

Bad Defaults: Showing time in iCal

Tech No Comments »

I started to see the following in one of my ical calendars:

“* 5pm Do Something Cool @ 5pm”

Hmm, why the double timing? Well, it turned out that the owner of the shared calendar also used iCal, and hadn’t changed the DEFAULT setting on whether to show the time in month view.


Not having a time was a pain, so she started to add the time into the title.

This is where the default should be the other way around. And I have already went on about the darn month view being evil too :)

Sep 05

IronPython makes 1.0

Tech 321 Comments »

Congrats to Jim on the 1.0 release of IronPython.

It is great for both the .NET and Python communities to have this beast out in the wild in a form that more people will check out now it is officially 1.0 (insert joke about MSFT 1.0 products ;).

I look forward to seeing a 1.0 release of Ruby on the CLR too :)

Sep 05

GrahamLand? A new constitution

Personal 2 Comments »

Graham Glass has bravely started to blog about his consitution.

It is a brave thing to do, as it tells everyone a LOT about him. A lot more than a post on your cat, or your coding style/preferences.

He has a lot of good ideas, and seems basically libertarian.

In a perfect world his ideas could really work, but I think that there is a flaw.

His government would only be in control of a few things (defense, policing, etc) and a bulk of the money would come in via free markets.

One item talks about Charity, and how it is better than welfare.

If we relied on people giving, there is a chance that we all step up to the plate and the world is good.

My problem though is that this puts HUGE power into the rich (not that this isn’t true in the current world) and those with money to give (although I know that people with little money statistically give a lot more money than those with more money).

Those with money can choose the charities that they give too, and we will see even more lobbying for charities. Many groups of people will get nothing, and will be in real dire straits.

With education being in the private market, surely the rich will have the best schools (not saying this isn’t the case now).

I would rather strive for a country that was willing to pitch in for the better of the entire society. Talk to people in Denmark (include many other countries) and most do not complain about their “high taxes” but are PROUD of the services available, and how they treat their people as whole.

One of the major issues is that you do not choose your parents. This doesn’t just affect direct implications (how good your parents are at parenting) but it also puts you into an initial social class. This means that many start way behind the eight ball and have to work that much harder to get out.

Graham does have some interesting ideas here, and I agree with a lot of the social ideas (marriage, religion, etc) but feel there is more to discuss on some of the other social ideas.

Graham is a successful entrepreneur already, and when he sells Education 2.0, maybe he can buy an island and put this constitution to a test via the republic of Grahamland :)

Sep 04

horseRadish: new open source compiler

Tech 154 Comments »

I am shortly going to open source a new compiler that builds on Wasabi, called horseRadish.

In fact, one of the targets is Wasabi code, but it can also output LISP, 8086 instructions, and Spectrum BASIC.

I think this will cover the masses.

I am hoping that I can throw the code up on Google Code and a mass of charging folks will come to improve on this, fixing bugs for me while we add new killer features.