December 31, 2011

Ludum Dares have some nice side effects

For instance, you get to watch Notch create a 2.5D dungeon crawler in just two days time!


Update: Here are links to recordings of the full livestream. The very first part starts here.

December 29, 2011

Stop weird machines

Related gotcha which takes some time to get your head around: code is data and data is code.

December 23, 2011

In space...

...no one can hear you scream.


As a fan of Alien, I'm looking forward to (what looks like) this new installment by Ridley Scott. Fun fact: the Alien franchise is as old as I am. =)

December 09, 2011

Java EE bad. Cobol great!

Quotes from Ars, on a study of bad coding practices in applications:
Java-EE applications [...] had the most problems on average, while Cobol and SAP's ABAP had the fewest.
So Cobol code is of higher quality than Java-EE.
Java EE's technical debt was pegged at $5.42 per line of code while Cobol impressed with a score of $1.26.
Cobol code is also cheaper to maintain.
Java was not the worst in terms of security, as .NET posted the worst security score and Cobol the best.
And more secure...

Time to brush up on our Cobol skills people! :-)

December 03, 2011

Make Install: AXR

This is a project I would like to see succeed: AXR, "The web done right". The following description comes from the site:
AXR stands for Arbitrary XML Rendering. Its aim is to provide a better alternative to HTML+CSS. It uses XML for the content and HSS for the design and simple behavior of the interface. HSS is a language based on CSS, but offers many more advanced features, such as object orientation, rule nesting, expressions, references to other objects, modularization (code reuse), etc.
It's still in its infancy, being mostly about getting a spec out. There is a prototype, but I dislike its license: GPL. This will kill adoption by commercial browsers.

Also, it would be nice if this was set up as a library for use in many different kinds of applications; not just browsers.  Something like this would be really cool for creating rich content applications.

Anyway, go take a look, and tell me what you think.

November 29, 2011

Playing the new Zelda

Damn you Krowland for putting the idea into my head! :-)

Impressions so far:
  • Love the graphic style, though the new Link has something of a baby face. All the other characters are visually more interesting.
  • Love the controls for fighting. First time I see the Wiimote Plus being used to such good effect.
  • Hate the camera at times. Why can't it stay fixed behind your character ? I'm constantly realligning it.
  • Feels too much like a game for kids. The old Zelda game (which, for me, is A Link to the Past) may not have been as technically advanced, but at least it got you right into the action without making you feel like a child. I never had to go pick up kittens in the old game.
  • That blue avatar the Godess sent keeps bugging me too much. At one time I couldn't take three steps before she had to come back to report some new piece of information she thinks is so important. This game gives you too much information and too many notices.
  • I'm also not sure about degrading shields. I want to play the game and enjoy a good story; not be doing inventory management all the time.
But I'll still keep playing. :-)

November 17, 2011

Devoxx11 thoughts

So I've been watching some more Devoxx talks on the Parleys live stream. Quick capture of my mood after seeing them: bored and disappointed. If you're a fanboy, don't read on. Though I do have some added and somewhat unrelated thoughts which follow.

The Android keynote didn't really say anything other than that you should be developing for mobile right now. The useful remarks were few and far between. As far as a keynote goes, this one didn't cut it.
Then the guys on the Cloud stuff. These barely scratched the surface of any of their three different topics. Why they couldn't work together to make one coherent presentation on platforms in the cloud I'll never know. One thing to remember though: forget about standardisation of platforms for the near future.

The JMS 2.0 talk basically showed that the next release should be called JMS 1.2 instead. For a 2.0 they should have some more guts to cut the cruft and try something better. Why can't we just send arbitraty (ok, Serializable) objects through JMS ? Why not take a look at the Actor programming model for sending and receiving messages between components ? In fact, a good actor model would totally negate the need for JMS.

Honestly, the JMS 2.0 talk was still the best one, but only because I grabbed on to two thoughts while I was listening to it. I'll try to describe them as best I can here.

First: annotations are being abused in Java. For one thing we are using them instead of interfaces. "You want to be a FooListener ? Just annotate some method with @Foo." No more FooListener interface. That's not a good thing, in my opinion, as you lose static type checking for one (the compiler won't complain if you don't annotate with @Foo). It also means you can only have one such method per class. Now, you might say that was true before as well, but there, at least, you had the option to use anonymous inner classes to overcome this limitation. The real solution would have been closures or first class methods, but we won't get these before Java 8. And at that time we will probably have to retrofit this best practice for callbacks and listeners once again...

Second thing I caught on to is that they're trying to make the JMS API nicer to use. Basically they want something which is easier to read/write than by making use of the different pieces offered by the API; do more in less lines of code. What they really want here is some kind of DSL, but as Java doesn't let you do that they will play with the API instead. What I realized is that they're trading off the quality/structure of their API in order to gain expressivity. I mean, the API is simple, and it doesn't take much to send a message through JMS. It's just that you have to do some boilerplating and juggling of objects. What is interesting is that in more flexible languages such as Groovy you can have the best of both worlds: a high-quality API and great expressiveness. These languages break the artificial bond you have in Java, where expressiveness is tied entirely to the API. I find this another great example of why DSLs make sense and why languages should support them.

Java was once revolutionary because it was doing bytecode and garbage collection. This was unheard of; in mainstream languages at least (*cough* Lisp *cough*). Now people looking at Groovy and similar languages are starting to see what expressiveness and DSLs can bring (*cough* Lisp *cough*). Either Java will have to get on board (which I don't see it doing in a timely manner), or it will become the next Cobol...

Well, if you have been watching Devoxx too, let me know what you guys think. Maybe all the cool stuff was shown in other sessions. :-)

November 16, 2011

Java Swing is dead

Quote from Mark Reinhold on Devoxx: "Oracle will no longer be investing in Swing". Instead the real work will go into JavaFX.

My interpretation: Oracle seems hell bent on forcing their Flash alternative on us. For that they're willing to sacrifice one of the best parts of the Java standard libraries. So far JavaFX has been a dud, and my suggestion would be to switch to SWT instead for developping desktop apps.

Ah well...

[UPDATE] Other valid Swing alternative: Apache Pivot.

November 04, 2011

Good deal

The Humble Bundle is worth whatever money you want to spend on it; but don't be cheap. You get some really interesting games and are helping out Child's Play and the EFF.

October 13, 2011

Platformer

Google+ is a prime example of our complete failure to understand platforms from the very highest levels of executive leadership (hi Larry, Sergey, Eric, Vic, howdy howdy) down to the very lowest leaf workers (hey yo). We all don't get it. The Golden Rule of platforms is that you Eat Your Own Dogfood. The Google+ platform is a pathetic afterthought. We had no API at all at launch, and last I checked, we had one measly API call. One of the team members marched in and told me about it when they launched, and I asked: "So is it the Stalker API?" She got all glum and said "Yeah." I mean, I was joking, but no... the only API call we offer is to get someone's stream. So I guess the joke was on me.
Read Steve Yegge's full post here.

October 11, 2011

Make Install: Hazelcast

Hazelcast is a pretty interesting Java library. It basically offers distributed versions of classic Java collection types: Queue, Set, List and Map. That is, you can have, for instance, one instance of a map shared across different Java applications, and all will see that map in the same way. So if one app adds some values, they become immediately visible to all others. In addition, applications can be added and removed dynamically, and your map should stay perfectly intact and synchronized. There is a really instructive screencast which brings home the point much better than I can describe it here.

As an added bonus, the main developer, Talip Ozturk, maintains a Hazelcast related blog where you can find some technical details on the implementation.

October 06, 2011

RIP Steve Jobs

So long, and thanks for all the Apples.

Update: Everybody is sharing Steve Jobs stories, so I'll add two of my own. First is the first computer I ever saw. I was eight or so, and my dad had bought an Apple II clone. I wrote my first Apple Basic programs on it, and it was probably a life-changer.

The second is more relevant to the theme of this blog: Steve Jobs switching the core of Mac OS X from PowerPC to Intel. This was a pretty much unheard of strategy. Any software developer has to tip his/her hat to that. Not only because he managed to get it done, but the way in which he got it done. He made it look like the easiest thing ever. "Just pick the right checkbox (PPC or Intel) when you build your project. That's it. Boom. It just works." Yeah.

The world is a much less interesting place now that Steve Jobs has left it.

September 30, 2011

Groovy Graphs

As a software developer you're probably no stranger to SQL databases. There's every chance you even had to take seriously boring courses on database normalisations, and all forms of joins. In fact, I even taught some very basic SQL to biology and bio-engineer students (sincere apologies to them :).

What's more interesting is that the last decade or so has seen the rise of a NoSQL movement which is trying out alternative database schemes. They trade of some of the ACID properties in order to gain greater scalability, greater performance, etc. You might have heard of Google's BigTable, for instance, which is like a giant distributed dictionary (or HashMap, for the Java crowd).

One category of NoSQL database which interests me is graph databases. These focus more on the relationships between entities, and efficient matching of these. This could be useful if you wanted to, for instance, query complex syntax trees to do program analysis. Or maybe in a genealogy application where your users want to do complex queries on their family ancestry.

So I have been playing a little with one such graph database, which is Neo4J. It's open source, Java based, and has a very simple API. It integrates Lucene for indexing and quick retrieval of nodes, and has support for doing quite complex graph traversals. If there's a feature I'm missing it's one of graph matching, where you could give it an example graph and let it find matching instances in the full one.

Neo4J gets even better when you add in a bit of Groovy. If you check the design guide this is how Neo4J recommends you to implement your business classes in Java:

public class Student {
    private final Node node;
    
    public Student(Node node) { this.node = node; }

    public void setName(String name) {
        node.setProperty("name", name);
    }

    public String getName() {
        return (String) node.getProperty("name");
    }

    // And so on for other properties...
}

That's a lot of boilerplating going on for those properties. Groovy metaprogramming the rescue!

ExpandoMetaClass.enableGlobally()
PropertyContainer.metaClass.getProperty = {name ->
    delegate.getProperty(name)}
PropertyContainer.metaClass.setProperty = {name, val ->
    delegate.setProperty(name, val)}

(I found this here, btw.) With those three lines you can now do:

def node = db.createNode()
node.name = 'John Doe'

So no more need for special business classes. You can now use nodes directly and read/write properties on them as if they were plain old objects. With a bit more Groovy magic you could even set this up so that assigning one node to a property of another node creates a relationship between those nodes instead. And Groovy guru's might even map GPath expressions to graph traversals. And then you're creating and navigating graph databases as easily as you do object graphs.

Now that's cool.

September 29, 2011

Make Install: Diaspora

We all love to hate our Facebooks and Google plusses, but here is something which puts you firmly in control of your own data: Diaspora. It's an open source peer-to-peer social network. If you wanted to, you could host your own data on your own server, and it would still integrate seamlessly into the overall network. You can even move your data around different hosts as needed.

Amazing to see this come together. Especially if you consider this started out as the work of four enthousiastic developers (Daniel Grippi, Maxwell Salzberg, Raphael Sofaer, Ilya Zhitomirskiy) over the course of one summer. And it's all built in Ruby on Rails.

For the software developer geeks, there is also a blog which is presenting some of the design that went into Diaspora. Here, for instance, is a discussion of how the different users get connected in this peer-to-peer setup.

September 20, 2011

Java^H^H^H^H Groovy

I have had the opportunity to work with Groovy over the last few weeks, and I though I would share my main conclusion: it is vastly better than Java. Killer features ? Yeah, a few:
It's actually quite embarrasing that Groovy manages to deliver in a few years what Java failed to bring to the table in much much longer. What have been the greatest changes to the Java language in the last few versions ? Generics ? Better iterator integration ? Yeah, not much worth mentioning.

I also learned how much I got stuck in the Java view of programming. It actually took some time to readjust to some of the Groovy features. The advantages of closures, for instance, are many. But it required conscious effort to apply them when I started in Groovy. So here's the biggest reason every Java developer should be playing with Groovy: because it can make you a better programmer with better reflexes.

September 07, 2011

Make Install: Dandelion

Pretty impressive work by Ragnaroek: Dandelion is an Eclipse plugin for doing Lisp development. Apparently it comes with support for SBCL and CLISP.
Haven't tried this yet, but I definitely could have used this when I worked on my 3D engine in Lisp. Remember that one ? Good ol' times. :-)

August 26, 2011

BlueSG on Sourceforge

Victor asked if I would share the code to BlueSG. So I did. You can now find it on sourceforge, BSD licensed as usual.

There is next to no documentation, but there are several examples in the sandbox packages to get an idea of how to use it. If you do use it, please let me know so I can brag about it. ;-) And if you've got some improvements you're willing to share, I'd be very interested.

Have fun!

August 25, 2011

Visual Complexity

Visual Complexity has a nice collection of visualisation of software-related topics. This includes one of my favourites: the Linux Kernel Graphing Project by Rusty Russel.

This is kind of the inverse of what I showed with X-Ray so far. It's basically all static info, including some extra developer knowledge (to define the rings). You don't see any of the dynamics. But it is still a compelling picture.

August 24, 2011

Make Install: Tethical

So the Make Install category continues with, yes, another Final Fantasy game remake. This time it's Tethical which tries to create a Final Fantasy Tactics clone, but with multiplayer goodness.

I checked out the code briefly (Yay for Python!), and it's actually surprisingly easy to get something like this going.


PS. If you're into Let's Plays I can also recommend the Final Fantasy Tactics co-op by GetDaved and Snapwave.

August 20, 2011

X-Ray: Firefox loading Ars Technica

(Still looking for a good name for this project...; X-Ray will have to do for now. I'm open to suggestions though.)

Take 2 of my software visualisation experment. (See here for take 1.) This time I managed to get some static info into the picture as well: the module in which the called method resides. I therefore decided to switch the visualisation to a treemap. Each rectangle represents one module, and is assigned one colour/hue. Sizes are relative to the number of methods which were used in that module.

The colour's saturation is a reflection of the number of times that method was called. So the less washed out a colour looks the more that method has been used.

I also experimented with plotting method exits but threw it out in the end for two reasons. One is that I couldn't get reliable data on all exits (about 10% went missing). The second is that it didn't make any notable difference to the visualisation anyway.

August 19, 2011

CorridorDigital

More amazing videos (Team Fortress and Minecraft live action!), including making-of's, on their YouTube channel.

August 13, 2011

Thirty seconds of Ars Technica

I've been working on a little experiment the last few evenings and I wanted to share the result with you guys. Here it is:

What you see here is 30 seconds of me browsing Ars Technica on Firefox. Doesn't look familiar ? That's probably because this is a behind-the-scenes video.

Every square represents one method/function/procedure being called by Firefox while browsing the web. When you see it light up you've just witnessed a call. The brightness will then fade, unless it gets called again. In addition the colour gives an indication of the overall number of times the method was called. It starts out reddish, moves past green and blue and ends up at pink (the colours are what they are; I didn't really choose them, or I would not have gone with pink ;).

When you see this through to the end, this is what you get:

This time brightness is an indicator of the overall number of times the method was called. As you can see there are slightly over 3300 methods which were used, and close to one million calls in the thirty seconds timeframe. And as you can tell from the amount of red and relative darkness, most of those didn't have much to contribute (*).

Why go through all this trouble ? Well, I've been wondering how to visualize the static and dynamic structure of software, so that people can get some idea of the complexity behind the tools they use. The above was a very basic look at some of the dynamics while browsing the web. It looks cool (to me :), and you get to see some nice patterns if you slow it down somewhat more than you see in the video. But I think that with some extra presentation of the static structure this could be improved quite a bit.

That, however, is for another day.


(*) This isn't necessarily true. I'm only lighting up the entry of a method, not the exit. It is quite possible that a lot of the lesser used methods were running quite a bit longer than the others. That's another thing I'd like to see handled somehow in the visualisation.

August 09, 2011

Make install: Q-Gears

Here is one of the craziest remake projects I have seen: the Q-Gears Final Fantasy Engine. Yup, this guy is creating his own Final Fantasy VII engine. This includes reverse-engineering the data-formats (for the models, backgrounds, scripts,...) so that it can run the game as defined on the original discs.

There is a sourceforge project page which seems somewhat unmaintained. But you can also check the developer's journal for more up to date info and screenshots. Finally, if you really want to get into this you can also check the Qhimm.com forums.

August 07, 2011

"Knowledge is silver. Outlook is gold. IQ is a lead weight."

Great talk here by one of the pioneers of computer science, Alan Kay. If you're involved in building software in any way I really suggest you watch it. There are a few minor tangents, and a lot of food for thought.

August 02, 2011

ThunderCats are on the move

But why did they have to turn Lion-O into this juvenile ?

Check out the original trailer for comparison (sorry, no embedding allowed). At least he had some manes back then. You could feel the roar. The new one probably does little more than purr.

Well, maybe the story will be better this time. Though the battle scenes in the trailer are straight copies from the Lord of the Rings movies...

August 01, 2011

Stephen Fry on Free Software

Have a look at the following endorsement by Stephen Fry for GNU/Linux software.

Now, I'm a fan of Stephen Fry; he's one of the most interesting people walking the earth at this moment. But there is something about the message in this video which bothers me: science is open and free and so software should also be.

First of, people assume science is open and free, when it is not; at least not entirely. IEEE, ACM, all the big journals in computer science don't offer published papers for free. If you want to access this supposedly free knowledge you'll have to pay. Knowledge comes at a price, it seems. Now there are some authors which help out the issue somewhat by publishing drafts of their papers on their website. This, however, is entirely the author's choice. You either get lucky or you don't (and mostly you don't).

Second, software isn't science, nor is it knowledge. Software is a product. When someone builds a product it should be their choice whether or not they charge money for their work. Why is it ok for a contractor to charge for building a house, but not for Apple to charge for building Mac OS X ? (*) That's not to say that I feel that Apple can start telling us what to do with our own copies of Mac OS X (**), same as a contractor can't tell us what to do with our own house.

Some of my software I have given away for free, other software is what I make a living with. I think the same is true for most developers (***), and I don't see anything wrong with that. And, given his love for Apple products, I don't think that Stephen Fry does either.

Now the science behind software should be open and free, and it isn't. And that is what I feel more of us should really care about.


(*) Be glad Apple isn't charging us the full cost of building Mac OS X. Most people won't make enough money in their life to cover that.

(**) This is why I have a love/hate relationship with iPods/iPhones/iPads, and why I have switched to an Android smartphone.

(***) Then there are the lucky ones who get to build free and open software and get paid while doing so. I don't see that working for all software though...

July 31, 2011

Make Install: R5 Engine

Hobby 3D engines are a dime a dozen these days. I've gone down that road myself, and I can say that it's good programming practice. The R5 Engine is a bit special, though, for several reasons. One, the excellent blog covering its development. Two, that it's made to run on Windows, Mac and (recently) Linux. Three, that it's being used to create a game on top of it. And finally, that all this is the work of one man who I suspect does not sleep at all. :-)

And yes, it's open source. Check the blog for more info.

July 26, 2011

Make Install: Dwarf Fortress

Dwarf Fortress is arguably one of the most hardcore examples of hobby software out there. For those who don't know it: think of Minecraft (Note: this kind of puts the world in reverse; Dwarf Fortress has been around for much longer than Minecraft, and quite likely has taken its inspiration from there.) but without the fancy graphics and with the most extreme form of generative gameplay you could imagine. It features a randomly generated world which includes lots of different creatures, races and biomes, and which even works out a few thousand years of history.

If the above screenshot looks like a random bit of ASCII art you are easily forgiven. Dwarf Fortress is not an easy game to learn (try this two and a half hour tutorial on Youtube if you're curious), but it does offer some deep gameplay. Probably the most well-known example of that was recorded in the Boatmurdered stories. Even if you don't intend to play the game, those stories are well worth the read.

Perhaps the most amazing thing is that the main developer of Dwarf Fortress, Tarn Adams, makes his living from his work on the game even though the game is a free download. Tarn has such a loyal following of gamers that they simply donate money so that he can keep expanding Dwarf Fortress. In return for their support they also get a hand-drawn rendering of any scene from the game they want. Don't believe it ? Here's a recent interview with Tarn by the NYTimes, which includes some of these drawings.

I can only conclude that working on Dwarf Fortress takes dedication and a little madness. But you have to admire the result.


This is a first try for a Make Install post. Feel free to give pointers to help improve this category; and if you have ideas for a future post then don't hesitate to let me know.

July 25, 2011

Make Install

One of my frequent online reads is the Make blog. It's full of creative people, often making incredible stuff. Still, I feel that the Make editors are missing out on an entire category of Makers: software makers.

Now, there is some software to be seen on the Make blog, but it's always software as an artifact to make some cool hardware projects. What I would like to see is some articles where the software artifact is the project. I know there are a lot of hobby programmers out there, so why not put some of the spotlight on them too ?

Rather than wait for someone else to do this for me, I figured I could just add this to my own blog. I'm going to categorize these articles under the 'make install' tag for easy lookup later on. I'll try to add content regularly myself, but suggestions from readers are very welcome!

This will be something of an experiment, so let's see where we get.

July 20, 2011

25 years after the very first PC virus

This is a TED talk by Mikko Hypponen showing some of the viruses from 25 years ago, as well as the sinister malware which is now moving around the net. Well worth watching, if only to get an idea of the muscle which is moving this new wave of threats.

July 18, 2011

Maddening

Realm of the Mad God, that is. It has no real story, is just a bunch of mindless grinding, has killed my characters due to laggy connections, and is fun as hell to play. Really, I'm already worried about the time I'll be wasting on this one. But I just want to get into another God battle (I somehow made it into one, but didn't survive untill the end).

Here are some tips for new players: fight in groups for shared XP (less work to level up this way); your numeric pad acts as hotkeys for your items; teleport saves on travel time; and having to play this with a trackpad on a laptop is not ideal. :-)

Note: I didn't feel like trying this game until I remembered that DanC from Lost Garden worked on it. You may have seen me refer to his site in previous posts. There are some more articles on his blog which explore the design space around games like RotMG; good reading.

July 12, 2011

Hibernate vs. Active Record

The following is a bit of an opinion piece on the relative merits of Hibernate vs. Active Record. Before I start, here are the cliffnotes on both: Hibernate lets you focus on the code and takes care of the database, Active Record lets you focus on the database and takes care of the code.

I have been lucky to get to build up some real world experience with Hibernate. I've also played around with Active Record in some Rails apps. Up until a few weeks ago I would have said that the approach either takes is mostly one of technological preference. And to some extent that's true. You can do pretty much whichever you want with either.

Yet I have come to think that Active Record has got it right, and Hibernate doesn't. Here are my two reasons.

Flexibility.

In Hibernate the database is generated from the code. All data enters the database as instances of the model classes. If, however, you want to map something else to/from the database you are always stuck with having to go through objects (or code SQL statements manually, which is basically bypassing Hibernate altogether). This is not necessarily the most efficient solution.

In Active Record the model is just a view on the database. There's nothing keeping you from mapping the database to another model, and so you can conceivably store and fetch your data in any format you want, without having to instantiate the model. So if you want to populate your database based on data in an XML format and later retrieve your data in some form of CSV, you can.

Note/Caveat: I don't know if the Active Record implementation in Rails supports this, or if there are extensions which allow this. But I don't see why it couldn't be done.

Broken promise.

Hibernate kind of lets you believe in a fairytale when you start using it, and it's one that's especially appealing to programmers: that it will take care of the database for you. Just set up the connection parameters and you're off. The problem is that this promise breaks as soon as you want to store more than some of your mother's recipies. Getting the database right is a crucial part of real software systems. So in the end you'll be working on fixing your database and updating the annotations in your code to match.

With Active Record, however, the database is the central entity and you can work on getting it right. From there it generates the code, and you're mostly left with fixing some broken methods if your changes are incompatible. To me that's a much more attractive road to walk.

Just to be clear

I don't think that Hibernate is bad. It's not. It gives you a lot of power to get your applications going. I have used it before and I'll use it again. But I do feel that when it comes down to it it's actually Active Record which has the edge.

July 11, 2011

Koopa 1000+

The Koopa download counter has gone past 1000!

We're not stopping there, of course. I just updated the code with another contribution from Peter Tang. And I'm also thinking about how to add support for parsing conditions (which is proving trickier than I expected).

July 08, 2011

Journey

This looks like a game I won't mind playing:

Great, now I'm thinking about buying a Playstation 3 again...

June 27, 2011

Epic win

Look what I managed to build; in 30 degree (Celcius) weather; on my own; with no help from anyone. (I'might be overstressing something here, but I have my reasons. :)

PS. I'm pooped.

May 24, 2011

Koopa 1up

I only just bragged about the first official contribution to Koopa, and here already is a second one. Thanks to Peter Tang Koopa now understands more of:

  • EXEC SQL statements
  • EXEC CICS statements

Thanks!

PS. Here's a teaser from Peter on what he's doing with Koopa:

We are able to run koopa against 20,000 Cobol programs plus another 20,000 copybooks within 4 hours. We have also adapted pig latin (from http://pig.apache.org) to include User Defined Functions to extract xml fragments from the results generated by Koopa on a Hadoop cluster for other correlation analysis.

It might be just me, but I find this extremely cool. To paraphrase a well-known slashdot quote: can you imagine a Hadoop cluster of Koopa ? :-)

May 19, 2011

Koopa 1up

Koopa got its first contribution today! Thanks to Adrián Noguero Mucientes' generosity we can now enjoy support for the following Cobol features:

  • CONFIGURATION section
  • INPUT-OUTPUT section
  • LOCAL-STORAGE section
  • RETURNING phrase on the procedure division
  • SET statement
  • INITIALIZE statement
  • DISPLAY statement
  • INSPECT statement
  • COMPUTE statement

I guess Koopa now officialy lives up to the open-source spirit. :-)

May 13, 2011

Me? I Work!

Mike Rowe's testimony before the U.S. Senate Committee on Commerce, Science and Transportation. For those who don't like to read, here's a similar speech Mike made at TED:

And if you've never watched an episode of Dirty Jobs go and switch your TV to the Discovery Channel now!

April 19, 2011

Powermonger

This guy is spending his free time working on a remake of Powermonger. Check out his latest teaser:

Amazing what an Ogre can do for your project.

If you like this project then go over there and tell him. Getting motivated is over half the effort of making something like this!

April 11, 2011

Id

Here's a really good series on the history of Id.

For the techies, I can also recommend going through Michael Abrash's Ramblings in Realtime. It gives a lot of nice details on the tech as it was being developed by Carmack for the Quake series.

April 10, 2011

Rails great; Jira bad

So I've been spending the past week and a half or so working on a new app: a web-based sprint board. Weapon of choice: Ruby on Rails (of course).

It's all interactive AJAXy goodness, with some CSS 3 styling (drop shadows anyone ?). And Rails makes it really easy. I've been using the newest edition (version 3), and I really enjoyed working with it. It tries its hardest not to get in the way, which I love. There is a bit of a learning curve, though, as it requires knowledge of the basic patterns and idioms on which it is based. But the online documentation is, for the most part, excellent. I can also recommend the newest 'Agile Web Development with Rails' book, especially if you're a beginner.

I was planning to give my sprint board a bit of a killer feature (in my eyes): Jira integration. I figured this would be real easy, making use of the JIRA4R Ruby client. This is basically a Ruby front for the SOAP interface which JIRA exposes. And there's the downer: as easy as Rails tries to make life for a developer, that's how hard the JIRA SOAP interface makes your life again.

Only the most basic of information is easily available. But if you want to know, for instance, the remaining time estimate on an issue, you can forget it. I don't see a way to do this with the SOAP service they set up. Same thing for updating a status; how do you even do that ? And why can I get the custom field values but not their names (administrative privileges required) ?

When you google for solutions, here's what people come up with: submit forms programmatically and parse the resulting HTML... Really, when you force developers into these kinds of patterns you have failed.

So: Rails great; JIRA ('s SOAP interface) bad.

April 09, 2011

Access main computer file

This site has a collection of caps from movies featuring computer interfaces. See if you can guess this one, coming from an old favourite of mine...

Handyman

Just to prove that I'm not just handy with software, look at these freshly installed bike lifts:

And please, no bets on how soon it'll all come down again. :-)

March 16, 2011

Back to school

Some of you may already know Khan Academy, but for those who don't here are the cliffnotes. Khan Academy is basically a collection of YouTube videos which help you learn algebra, geometry, physics,... It was originally made as a teaching aid by Salman Khan for his cousins, but it has grown into something quite a bit bigger.

I'm currently going through the chemistry course, and it's really enjoyable. So if you feel like learning something new, or maybe just taking a refresher course, Khan Academy is there for you.

March 07, 2011

NoteSlate

This seemingly simple product readily answers one of my main gripes with the iPad: where's the pen ? Love the eInk technology as well, which should be much more energy friendly.

(Picture originally from the NoteSlate website.)

If they can really get this to work then I want one badly ! Guys, can you please get this out in time for my birthday (early June) ? Thanks! ;-)

March 06, 2011

Linguistics

A good friend of mine has started a new and interesting blog. It's full of Haskell and natural language processing geekiness. What more could you want ? :-)

February 13, 2011

Analog game design

This design by Richard Flanagan was an exercise in digital game design in the real world. Looks fun and doesn't seem too hard to build. Could be a nice family project when the kids are a bit older.

Hyrule High School

January 16, 2011

Latest project

We're calling this one "Tristan".

The main algorithm goes something like: while(true) { eat(); sleep(); }.