2008

2007

What Has Driven Women Out of Computer Science?

▁ nov 18 2008

The New York Times has an article on the decline of female computer science undergraduates. I found that a bit funny, since I spent the day at a course on plug-in development for a content management system, and out of a total of 8 participants, 3 were female. Not a bad percentage at all, compared to when I worked at Opera, where there were just a handful of women working in the Engineering department.

All in all, I find that the IT consulting companies in Norway seem to have plenty of women… It might just be a coincidence that I’ve met so many, though. I don’t doubt that the IT industry is still dominated by men.

. o .

Python 3 Patterns & Idioms moves to Bitbucket.org

▁ nov 11 2008

Bruce Eckel writes:

“Based on Yarko’s suggestion, experimented with BitBucket and the Mercurial DVCS and immediately ended up moving the project there. Hard to put my finger on why, but everything seems significantly smoother and easier. The BitBucket site also responds much faster.

Eckel is the author of numrous software development books, and is now working on a book called Python 3 Patterns & Idioms, which is being created using an open-source development process, and is licensed under a Creative Commons Attribution-Share Alike 3.0 license.

I’ve written about bitbucket.org previously, and it’s great to see it getting more users and some decen projects.

. o .

9 top tech flops of 2008

▁ nov 10 2008

CNN has a list of the 9 top tech flops of 2008, with the T-Mobile G1 as the first flop.

There’s probably no denying that the Google phone has its issues, and it is far away from being the huge success the Apple iPhone has been, but with it’s open platform and development environment it was probably never meant to be a new iPhone.

The Google phone with its Android platform is like the iPhone a newer form of mobile phone, where the user interface and experience has changed from being … well … phone-based to something more. For too long has mobile phones just been mobile phones, while they clearly can benefit from doing more, considering how much we use them.

Sure, efforts have been made, with JME and other APIs, but it has taken companies not traditionally in the phone business to do something more with the phone, and do it better than what has previously been done. It’s hardly perfect yet, I know, but it’s a good start.

Perhaps the Google phone is just looked upon as a flop because it was perceived as being something it wasn’t intended to be. From what I read, it would have been obvious to anyone that it wasn’t a new iPhone.

. o .

Programming Clojure beta book now available

▁ nov 10 2008

Perhaps old news for some, but the beta of Programming Clojure is now available.

One of the arguments people use against Common Lisp is the lack of libraries - wether or not that is true is a different discussion, but with Clojure you can use a modern Lisp dialect with a modern platform that has an abundance of high-quality libraries.

You might not like Java, but if you’ve ever programmed for the JVM recently, you’ll probably be aware of the effort that has gone into not only the JVM, but the libraries and the platform as a whole.

. o .

Dragonfly vs. Firebug

▁ nov 02 2008

Earlier this year, Opera announced Dragonfly, a developer tool to compete with Firebug, the popular web development extension for Firefox.

Since I have been working more on front-end development lately, I’ve been testing both Firebug and Dragonfly. Opera is my browser of choice, so I really want to use Dragonfly… However, it turns out that it’s not that great, even though they want it to be. A tagline I’ve seen used, is that Dragonfly is “like Firebug, evolved”. Well that certainly sounds good! Incidentally, the tag line for Firebug is “web development evolved”.

After trying Dragonfly a bit on and off for a while, and recently reading a bit more about it, the new project lead for the project spotted my whining on Twitter last week, and asked me for feedback. Giving constructive feedback can be difficult, but I pointed out a few things, and I’ll summarize it here for your pleasure.

While I’m sure Dragonfly has many nice features (such as remote debugging, which is pretty nice if you’re doing web development for a special device), the user interface seems clunky and unintuitive. This is perhaps somewhat vague, and I did mention some specifics on Twitter. In general I found Dragonfly more difficult to navigate and work with than Firebug.

As a small and somewhat silly example, take a look at the following screenshots:

gmail-default-fb.jpg
gmail-default-df.jpg

The first shows Firebug, the second is Dragonfly. Both have been opened on Gmail, and are shown in their default state. Firebug shows the DOM and the CSS, while Dragonfly shows … Well … Scripts? Why is about:blank in the script list? To find the DOM in Dragonfly, I actually have to click the DOM tab on top, and then a DOM tab on bottom again.

I’m sure some of the things I find irritating about Dragonfly will go away as I get used to it, but I can’t shake the feeling that the developers are focusing on features instead of usability. The good thing however, is that this is most likely something they will use extensively themselves, as they do a lot of in-house web application development at Opera, so hopefully they will over time refactor the user interface. Or perhaps not. Who knows.

. o .

Call me teacher

▁ oct 11 2008

This week I gave a two-day course for system administrators, on how our system works, and things they need to know to be able to administrate it in deployment. A few weeks ago, doing something like this would have been far outside my comfort zone, but the only way to grow is to step outside it and challenge yourself… So this time it went a lot easier, and I quite enjoyed it, although it is very exhausting.

At work you can always take a break and surf the web for a few minutes, but when giving a course you always have to be on, so to speak. Something that can relieve this, is if you give the course participants assignments to do - then you can sit back and relax a bit, but only until they need your help, of course. ;)

If you want to work on your non-technical skills, then I can recommend giving a course or speaking in front of crowds in general. Challenging, and quite different from the standard work routine.

. o .

IE6 strikes back

▁ sep 30 2008

It was a dark and stormy night, and one of the web developers looked up from the screen. «There’s something wrong with the Javascript on this page in IE6… I think it’s getElementsByClassName!» As the second web developer quickly did a Google search, he already knew the answer - that the other developer was right, and that he accidentally had used a function from HTML5 not supported in IE6.

This riveting story was taken from real life, and happened to me tonight. Working overtime. On a project long overdue. Kind of not the time you want to find out things like that. Yes, you can blame me for not testing in IE6, and you’re right to do it, but in my mind I was using a perfectly normal Javascript function. Oh well.

In this instance we solved it by finding the right elements with jQuery, $('.classname'), and it works even in IE6. The reason I didn’t do it like this in the first place, is that this is my first project where we use jQuery at all, and we didn’t have such fancy things back in the old days when I first started programming Javascript.

When programming Javascript, the code has a tendency to seem very brittle - like it’ll break horribly by the slightest typo. The somewhat cryptic error messages (“object expected”, anyone) in browsers is probably at fault here, and the write-browse-debug loop feels awkward compared to other programming environments.

Firebug has helped, but there’s still room for improvement. I feel I have to think and write more about this when I get the chance.

Edit: It was actually IE7, not IE6.

0 comments — category: javascript
. o .

JavaZone 2008

▁ sep 18 2008

This week I’ve been at JavaZone 2008 (pix), the largest software development conference in Scandinavia. Two days of mostly good talks, and even some social interaction.

I was manning our booth most of the time, but I did catch a couple of talks - one about Usemon, a monitoring and analysis system for software with demands for response time and high availability, and one about making enterprise software without relational databases.

Usemon looks interesting, I will definetly check out that for debugging and troubleshooting things at work. Most performance and analysis tools analyze everything, making it fairly expensive to use in terms of processing power and it can also be difficult to find what you’re looking for. Usemon tries only to instrument the interesting classes (i.e. not java.lang.String), and also has mechanisms to drop information if the server is overloaded. It has a client running on the system that needs to be analyzed, and sends data via UDP to a central server.

The talk about enterprise software without relational databases was by a guy who works doing software for large financial institutions, where they struggle with huge XML schemas and documents, and where ORMs work poorly because the models are so huge and interconnected. His newly founded company is making a common API for storing hierarchical data - which will be a part of Spring - and a proprietary store implementing this API. Fascinating to get some insight into some of the challenges in making software for financial institutions, where even milliseconds can be the difference between a few million dollars won or lost.

Look forward to going next year, it’s a great event.

. o .

Bug tracking woes

▁ aug 30 2008

Yesterday I asked my first question at beta.stackoverflow.com, the new developer community put together by Jeff Atwood and Joel Spolsky. The question was: how do you enforce or maintain the quality of the bug reports in your bug tracker.

A common problem is low quality bug reports, perhaps one-liners, PEBKACs, or bugs that don’t contain enough information to reproduce. I’ve seen emails from developers go out complaining about this and how difficult it is to navigate around in the bug tracker because of this, and it seems it’s a common problem.

The root cause might be a lack of understanding of the development process by the bug reporters, or perhaps just laziness, but all bug trackers seem to eventually contain a large degree of low-quality bugs.

At one project I worked on, which to be honest wasn’t huge, we grew tired of all the weird bugs in our tracker, and had what we called a bug deathmatch - we bought lots of candy, booked a meeting room for an hour and a half (which is the time limit for productive meetings), gathered the entire team (which in this case was 4 developers and one QA engineer) and went through as many bugs as we could, either marking them invalid or assigning them to a developer. After we did this over three Fridays, we were done with all of the bugs.

I was a little skeptical at first, but it actually went really well, and we got rid of all of the low quality bugs. If you’re going to try to duplicate this though, you’ll need a quick thinking person to hold the meeting and make decisions. The problem is that if you spend too much time discussing a bug report, the team will grow tired, and you’ll spend too much time on this. The concept is to efficiently judge bugs based on the information in the bug report and the collective intelligence of the team. It’s important to keep the pace up when going through the bugs, if necessary marking them to be analyzed further by a developer, just to get it out of the way and move on to the next bug.

It worked really well, but I’ve only tried this once, and my feeling is that it depends a lot of the team.

As for the question on stackoverflow - someone has yet to answer anything groundbreaking, but I’ll let you know.

. o .

Doing stuff is hard, and it's boring as well

▁ aug 11 2008

If you haven’t read anything by Ted Dziuba yet, go do it now. For a while he ran a blog called Uncov, where he covered Web 2.0 ideas and startups with humor and sarcasm that was razor sharp. Then he started his own Web 2.0 company that isn’t all that, but his writing is still good (he’s got his own column at The Register).

In his latest essay in his column, titled Hadoop: When grownups do open source, he writes about the differences between people that get things done and those who dabble in the programming language fad of the week. The essay is worth reading, and he is dead on.

The essence of the essay is this: shit is hard. Or things, if you like. Writing a fully functional system for distributed processing and storage (like Hadoop) is complicated and takes a lot of intelligence and effort. And you don’t choose the tool that is popular this week to do it, you choose something with wide industry like Java.

While I was reading the essay, I was reminded how Paul Graham writes in his book, Hackers & Painters, that there’s money in boring stuff because not many people want to work on it. So if you’re looking for a business idea that will survive, perhaps you should think of a boring and complicated project… The latter being optional, only include it if you’re smart. ;)

If your idead is boring, then you’ll get a head start since people won’t make the effort of doing the same thing until they see there’s money in it … enough money to make up for it being boring. And then if it’s complicated you’ll have a wider head start, since you have gained more domain knowledge. Too bad if they’re smarter than you, though - and someone always is.

. o .

XHTML Basic 1.1 finalized, no one seems to care

▁ aug 02 2008

The XHTML Basic 1.1 recommendation was published by the World Wide Web Consortium (W3C) on Tuesday this week, but no one seems to care. I was a little puzzled, so I tried to find out why…

It turns out that XHTML Basic is a document type that has the minimal set of modules (as per the modularization of XHTML), in addition to a few other basic things. It is “designed for Web clients that do not support the full set of XHTML features; for example, Web clients such as mobile phones, PDAs, pagers, and settop boxes.” Wait, what?

Is this the 90s? Don’t users expect the full web experience on their mobile phone or settop box? Granted, it might be a problem putting a browser on a pager (anyone still use that?), but why bother? Sure, I guess creating a fully compliant browser can be difficult, but there is one company that has made one that is installed on such different devices as the Nintendo Wii and barcode scanners.

There really is no excuse to give users of mobile phones or settop boxes a subpar browsing experience, and any specification that supports that myth makes me sad…

. o .

Not very cuil

▁ jul 28 2008

I don’t know why Cuil is pronounced “cool”, but I might not have to worry too much about it, considering the new search engine doesn’t work at all at the moment.

You’d think ex-Googlers would have some ideas of how to make a service scale, but today they’ve alternated between being totally unavailable and having a “we’ll be back soon” page. Not a very good launch, it seems. Sure, getting lots of traffic is good, but they can’t be getting more traffic then what they should be able to handle, and they’re still most likely far away from getting the amount of traffic Google gets on a good day.

Still, I did manage to give it a spin, and it wasn’t horrible. Instead of showing the results in a vertical list, it shows the results in a grid. Going away from the old format is a gamble, and no one has succeeded with that yet. With more than $30 million in the bank, they should have some money to spend on experimentation, though.

The name leaves something to be desired, but coming up with company names isn’t easy, I suppose…

Oh, and one other thing. If Cuil does become popular, how will it be verbed? You can Google something, but can you Cuil it? “I cuiled for it, but couldn’t find anything.”

. o .

Mobile browsing

▁ jul 28 2008

Years ago, a Norwegian columnist wrote how the Internet was just a passing fad. It’s easy to look back on that now and laugh at it, but predicting the future is difficult, and if you get it wrong you’ll be laughed at. This is why I’ll try to be a bit careful with my statements here. ;)

A friend of mine asked me recently what the point of browsing on your mobile phone really is. It’s a good question. Web browsing on mobile phones is getting a lot of attention these days, mostly brought on by the rise of the iPhone, which makes the browsing experience on a phone much more enjoyable than on many others. Opera Software is having success with their Opera Mobile 9.5 beta, which is a great product (now all they need is an equally great phone to run it on).

So, what is the point of web browsing on your mobile phone? After all, many or most people are usually nearby a computer, either at home or at work. And the rest of the time you’re on the go, perhaps driving a car. Sure, you could be taking the subway, in which case browsing is something you’d just do to pass the time.

So really, what is the point of web browsing on mobile phones? Unless some killer application is made (which may happen, of course) and critical mass is reached, mobile browsing may be doomed to be something that is just done once in a while. After all, there is a limit to how much browsing you need to do when you’re on the go. Isn’t there? There’s nothing wrong with this, of course, but the killer app is still missing for it to take of completely.

Perhaps casual browsing is the point, though. With high quality browsers on our phones, with us at all times, the Internet will truly be ubiquitous.

It will definitely be interesting to keep an eye out on the usage patterns for mobile browsing in the coming years.

. o .

A bucket for your bits

▁ jul 19 2008

A friend of mine, Jesper Noehr, just announced Bitbucket.org (which he’s done together with Eirik Stavem, who did the user interface design and QA work). It’s a site that provides free hosting for Mercurial projects. If you didn’t know it already, Mercurial is a distributed version control system, and it’s pretty neat.

If you need somewhere to hosts your projects, go check it out, it’s a pretty nice site, and you won’t be disappointed.

. o .

ORM, schmorm

▁ jun 17 2008

Here is a blog post by someone who dislikes ORMs. I guess you know what I have in store now … A HORRIBLE RANT!

Actually not. In some ways I agree with him, and in some ways I disagree with him. You could call it a more nuanced view, perhaps? I don’t agree with much of what he writes, though. Let’s get that out of the way first. I agree with him that ORMs may introduce overhead and that it certainly is possible to write clean and efficient code that doesn’t use an ORM if you know how the database works.

Ok, so my perhaps my view isn’t that balanced, because he writes things about preferring procedural code and using triggers. What is this, the 80s? Triggers may be efficient, but they tie the application too much to the database implementation and creates problems if you want to change the database implementation (and I live in a world where that happens). Also, it makes it harder to debug and develop, with more steps that are needed in order do deploy code that has changed.

And as for the rest… Well, I like objects, he doesn’t - not much more to say about that. But as your code grows you will basically end up writing an ORM yourself, although perhaps tied to that particular application. And then you start making changes and you may find out it’s too rigid, because you can’t reuse your code. Or you start a new project and have to create yet another application-specific “ORM”. After a while you get tired, and realize that bright people have spent a lot of time on writing ORMs, and they even have caching now! Yes, it’s true… I know, it’s amazing (that’s sarcasm, in case you didn’t notice).

Some ORMs have quite nice caching, and you can select numerous fetching strategies for retrieving objects, which can limit amount of SQL statements executed. Speaking of SQL statements, his comment about hearing of “popular CMS systems and web frameworks that will make dozens of database calls to refresh a single page” is probably true, but is it due to ORMs or lazy/incompetent programmers? You’d be amazed (or perhaps you wouldn’t) about the amount of crappy code people are guilty of writing (myself included, I’m not embarrassed about that).

In the end though, ORMs are about convenience and ease of programming substantial applications, then performance. I don’t think anyone is trying to hide that fact. For me, and many others, the benefit of using a more abstract model is more efficient (brain-wise) than using the old school style, as he recommends. I much prefer writing something like:

@Entity
public class Person {
    Integer id = null;
    String name = null;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    public Integer getId() { return id; }
    pubic void setId(Integer id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
}

… and then instantiating that class and storing/retrieving objects, than starting to write a database schema to define my model.

As for the performance problems he rants about, there are solutions to improve that. Perhaps he should get acquainted with a modern ORM.

. o .

Unit testing: Don't use HSQLDB

▁ jun 16 2008

As previously mentioned, I recently changed jobs, and that meant going from Perl/Python and back to Java. Things certainly have changed in four years, and it seems that most of it is for the better. I’ve been putting a lot of effort into unit testing lately, and it’s working out great. There’s multiple people working on the project I’m on at the moment, and unit tests make sure things are working properly before others start using my code, which is a persistence layer written using Hibernate annotations (which are great, by the way). Or so I thought…

To make it easier to run the unit tests, it was quite convenient to use HSQLDB, a relational database engine written in Java. The benefit of using it with unit tests, is that it can exist entirely in memory, and there is basically no need for configuration. Quite handy, since this means that we don’t need to set up a database for our continuous integration server, which runs the tests automatically on every commit.

I was coding along minding my own business, when I suddenly got a complaint that this or that didn’t work properly. That was pretty strange, since the tests were green across the board, so I changed to another database, and guess what? FAIL! Not all of the tests failed, of course. The failed tests seemed to be related to constraints that were ignored, and data types that were handled a bit differently. Mainly it seemed to be because HSQLDB was too lightweight. The other database I tested with was MySQL, by the way (which is not what we’re deploying on, I’ll have to test with that later on).

If you search for unit testing and hsqldb on Google, you’ll find several articles recommending this combination. Personally, I don’t see the point if it doesn’t give you an environment closer to the real world. I honestly don’t know why anyone would use HSQLDB for this purpose, unless they’re writing a really simple application, or actually deploying to HSQLDB.

You may wonder why I’m not testing with the database server we’re deploying on… Well, I’m not too familiar with it, and at Enonic we have a history of making our applications work across multiple application servers and databases. That, by the way, still takes effort despite the fact that we’re using database abstraction layers.

. o .

Hackz

▁ jun 15 2008

Picture 3.pngInspired by Esteban’s post about hacking his camera, I wanted to see if there was anything available for my camera, the Fujifilm Finepix F50. Of course, I went to google and searched for “fujifilm finepix hacks”.

However, I was a little surprised, when Google asked if perhaps I meant “fujifilm finepix hackz”! Come on! Isn’t the suggestions meant to help with spelling mistakes? Or perhaps the world has progressed to the point where we the lines between correct and incorrect spelling are fading? I, for one, find my self using semi-correct spellingz spelling frequently when writing in English in IM, but I try to spell right when writing other text.

I’m old, though. How will younger generations influence spelling, and how will it be when they grow up? With the introduction of paved roads and motorized vehicles, the cross contamination of different cultures became easier, with television and satellites even more so. Now, with the Internet, the cultures are converging even more. Just think about the Internet memes like Star Wars kid or LOLCATS that are not only a part of the culture that they originated in, but also in many other cultures across the world.

We live in interesting times, and we’re just starting to see how the Internet will forever change our cultures across the world.

(Ok, that last line was a bit lolz, but I couldn’t help it.)

. o .

While I was out...

▁ jun 14 2008

I recently started a new job, and I’ve been pretty busy with that, which is why I haven’t blogged much lately. Not only that, but last week I went on vacation to get a little R&R. The world hasn’t been standing still while I was, though, and there’s a couple of things that are worth writing about…

Opera 9.5

The company that just doesn’t want to give up - even though they’ve been making browsers since the early days and still just have less than 2% market share - Opera Software, released version 9.5 this week. Having used the 9.5 beta for a while now, I’ve been used to all the new features for a while… All, except the new skin. Johan Borg, Consumer Engineering VP, revealed the new skin a little over two weeks ago. So far I like it, but as long as it’s not intrusive and simple, I don’t really care … The web pages is what takes up most of the screen anyway.

The feature list is worth a look. My favourites are Speed Dial and Opera Link, the latter mostly because I managed the department that is responsible for the server side part of it (Hi Anton, Esteban and Kay!). Speed Dial is a good example of a very simple feature, that gives a lot of value. I’m definetly hooked.

Mac OS X Snow Leopard

Not exactly sure when they did it, but Apple has released some details about the next release of OS X, Snow Leopard. They don’t list a lot of new and revolutionary improvements, but there seems to be focus on reducing footprint and improving support for 64-bit and multicore CPUs.

Great news for Microsoft Exchange users, though … This release will include out-of-the-box support in Mail, iCal and Addressbook for Microsoft Exchange 2007! Finally we can get rid of Entourage. I’m sure this is all greek to people who don’t use OS X in the Enterprise, but to us who do this is awesome.

Snow Leopard is set to be released in about a year (!), so I’m sure they’ll get time to add more features. Let’s hope it’s better received than Vista.

I’m sure a lot more stuff has happened, but that’s what I have so far after a few minutes of catching up on my feeds. ;)

Read more »

. o .

Opera Mini: State of the Mobile Web

▁ may 20 2008

As a former Opera employee, I naturally follow what they’re doing very closely. Today they released what they call State of the Mobile Web: First Quarter, 2008. It’s good to see them releasing this information, and I hope it will put some more focus on Opera Mini, which really is a very neat web browser.

As for the stats, there are a couple of highlights.

WAP is crap

Not only does it rhyme, it’s true as well. Back in the mobile web stone age, someone thought it would be a good idea to create a whole separate Internet for mobile phones - and so the Wireless Application Protocol was borne. I’m really bringing the hate here, which is probably uncalled for, because back then there really wasn’t any browsers that could render web pages they way they were meant to be. I think perhaps there was Opera for the Nokia Communicator, but that was a high-end device.

It wasn’t really until Opera Mini was released, that you had a good browser for mobile phones, and even with that you didn’t get proper web pages - it used small-screen rendering (and still does by default for smaller screens). If I’m not mistaken, full screen rendering didn’t come until late last year … I might be wrong though.

But it’s nevertheless good to say that people now have a good browser available for viewing normal web pages, without shelling out for an iPhone or high-end smartphone.

Social is okal

Uhm… Ok, that didn’t make any sense, I don’t know what “okal” means - let’s make it a new word meaning “popular”. As you can clearly see from the stats, social networking sites are popular on the phone, just as on the desktop, I would assume.

The phone itself is a social device - you call your friends and send messages to them - so perhaps it’s only natural that we use the browser for social networking, since that’s what we’re used to. Or perhaps it’s just a way to feed our addiction to social networks… I’m leaning towards the latter, although the former is a nicer thought.

Having a good browser is a good first step, but there’s still a barrier between the web and the phone, since the browser runs in it’s own little sandbox and has difficulties being completely integrated with the phones features. There’s ways around this on most phones, but when you’re in a J2ME sandbox it’s a little more difficult, unfortunately. I hope this will change soon.

The era of mobile content

One comment Jon writes in the report, is that “there should be no difference in the information that is available to you whether you use the fastest computer or a refurbished mobile phone”. While I agree that web pages should generally be available on phones, his statement is formulated in a way that makes it seem like one shouldn’t make content adapted for mobile phones. This might just be a misinterpretation, though.

I think absolutely there’s room for making information available in different ways, depending on what kind of device you’re using. Are users accessing the same website on different devices looking for the same thing? Imaging someone accessing the website of an insurance company - if you’re using a desktop browser you might be looking around for good deals on insurance, while if you’re using a phone you might be standing on the side of the road with a broken car looking for someone to call.

This example is kind of silly, but I think it serves its purpose and illustrates my point. The good thing is of course that you no longer have to create WML pages to reach your mobile audience, you can just do small and subtle changes to your layout to make it easier for them to reach the information they need. The articles on dev.opera.com might be a good start for learning more about this.

I look forward to seeing more reports from Opera, and hope they’ll include even more information and statistics.

. o .

Opera for the OLPC

▁ may 10 2008

While the OLPC XO-1 is an extremely neat machine, it’s no speed monster. The activity I use the most is the Browse activity, which is based on the Gecko engine, used by Firefox and others.

Apologies for opening up a can of worms here, but the OLPC version of Opera is really superior to the Browse activity. Not only is it a lot faster (and can load pages the Browse activity had problems with), it has tabs and is easier to configure - which might make it less suitable for children, but certainly a lot more usable for grownup children like myself.

It can even be configured to be usable in handheld mode, making the OLPC w/Opera the ultimate handheld device for lounging about in sun surfing your favourite web pages.

Unfortunately, the Opera version available for the OLPC is 9.12, and there’s been a lot of changes since then. However, several Opera employees recently got themselves OLPCs, so I expect that to change very soon.

. o .

One Laptop Per Geek

▁ may 07 2008

Last year, Håkon Wium Lie (CTO at Opera Software and inventor of CSS) offered to order OLPCs for interested Opera employees. For those of you who don’t know, Opera is headquartered in Oslo, Norway (yes, Europe…), and I believe they didn’t (still don’t?) have the “give one, get one” program available outside of the United States.

In any case, it took a while for them to be shipped, but he finally got them, and handed them out today! Price per laptop, including shipping (100 OLPCs do actually weigh a bit), came to 2000 Norwegian kroner ($393 or €255.9).

We booted them up, played around with the mesh networking - things worked really well, but it is a little slow. I did expect that, though. First impressions are good, it’s a neat little device. I can’t wait to lounge in the parks of Oslo, reading feeds and surfing around on the Internet. The screen worked really well in the sun.

It came with a charged battery, which was really great … Most devices do not, and you have to wait for it to charge before you can use it. Not with the OLPC - just insert the battery and boot up.

More pictures.

6 comments — categories: olpc, opera
. o .

Opera Dragonfly

▁ may 07 2008

Well, it’s about time … Yesterday, Opera released an alpha version of Opera Dragonfly, their new developer tools.

I haven’t tested it much yet, but it looks promising. It is written in Javascript (those crazy Operans and their lust for web technologies ;)), and supposedly BSD licensed, although there’s no reference to the license in the source files.

The source is not available as a packaged download, you can just go to https://dragonfly.opera.com/app/, view the source and download the necessary components. To change where Opera downloads the developer tools, just go to opera:config, and change the Developer Tools URL. It’s just a web page with some special permissions, iirc.

This is only an alpha, but it’ll be interesting to see what comes out of it as it evolves.

. o .

Magic Innovation

▁ may 04 2008

Yet another thing I saw at proggit: Jason Kester writes about how using too much magic in your software is bad, i.e. frameworks that abstract much of the dirty details and make software development easier.

Now, wether you use tons of framework or still write all your SQL yourself is your choice, but this got me thinking about something I read somewhere recently - shortage of new hires in the job market can cause innovation. I’m sure you didn’t see that one coming, so let me explain.

The core of this idea is simple - there is still lots of work to be done, even if (or perhaps especially if) it’s difficult to find new employees. Thus, innovation comes out of necessity: if the workload doesn’t diminish, and you can’t find new employees, you’ll have to innovate to make work more efficient, as to increase the work each employee can do. Apparently, this happened in Sweden around the time Ericsson was built up. Is this what is happening in software development now? I don’t know.

What I do know is that software development is here to stay, and there will probably be a lot more of it in the future. Without “magic” we’ll still be writing our own SQL statements for every single little query 10 years from now, and that’s just not efficient work.

No magic? I say more magic.

. o .

Scaling Your Foot

▁ may 03 2008

There was recently a link on proggit that caught my attention: I’m Going To Scale My Foot Up Your Ass, by Ted Dziuba. In his post, he complains about too much talk about scalability in popular news sources for software developers these days.

The core of his argumentation is the fact that most developers most likely develop applications that are not going to be used by millions. And he is right, of course. Perhaps there is too much focus on scalability and parallel processing - not that many developers need it to build the next website for their clients.

But it’s interesting. Instead of discussing which templating language is best, discussions about scalability trigger the engineer’s heart, and tickles the brain. Did we start in this industry to be mindless consulting drones?

Let’s continue discussing it, and perhaps - just perhaps - sometime in the future when we’re all working on Internet scale applications, we’ll know what to do.

. o .

On quitters and quitting

▁ apr 30 2008

New Job

Last Friday was my last day at Opera Software. Alex Papadimoulis is spot on when he writes that quitting is like an “awkward, uncomfortable break-up”. Handing in that letter of resignation isn’t easy…

After that, you’ll have to tell your co-workers about it, which isn’t easy either. “You’re leaving? Why?!” Well, this time it was just a matter of wanting to do something else.

Once that’s done, working the last three months is a breeze. “Wait a minute there, sir” you say in shock. “Three months?!” Yes, that’s the standard resignation period here in Norway, and if I’m not mistaken it’s not uncommon in other countries either.

I’m going back to Enonic, who produces a content management system, written in Java. That, of course, labeled me as a “Java man” straight away. Some people don’t seem to get the concept of being a generalist. It’s a fairly small company (~20 people), and I know several of the people working there, so I look forward to it.

Skilled vs. Unskilled

Something else that Papadimoulis mentions in his post, is that skilled employees are prone to quit more often than unskilled. This may or may not imply that skilled people do not stay long in a single company, but in my experience that is not the case. I’ve seen plenty of highly skilled people stay within a company for a long time.

The company I’m leaving, Opera Software, has many highly skilled employees, that have been there for a long time. Perhaps that’s because of the nature of the company, though … There’s not a lot of browser factories out there (and certainly not in Norway).

The company I’m going back to, Enonic, still has several skilled people that have been there while I had my sabbatical at Opera.

Quitting - You can’t avoid it

One of the first things I learned as a manager, was that people will quit, and there’s not a whole lot you can do about it. Thanks Jesper, you were my first. (Dis)Honorable mention to Ole Kasper, who quit the day before my xmas vacation, a not so nice xmas present. It’s always sad when employees quit, but the first times were especially tough.

There are certain steps you can take, to try to keep an employee, but usually people have already made up their minds about leaving. That doesn’t mean you shouldn’t try, of course.

Throwing money at them can help, but there are problems with this solution. 1) There’s a limit as to how high you can go, 2) if the employee has applied for another job they can probably outbid you, and 3) the core motivation of employees is usually not money.

Again, as Papadimoulis writes, let’s not ignore the elephant in the room: the easiest way to earn more money is to apply for another job. It’s the nature of the game, really … Companies who are looking for new employees have to outbid their competitors. Not many people want to take a cut in pay at their new job, although it can happen - it’s just not common (I’ve seen highly skilled employees do this to get more interesting and challenging work).

Money is only one part of this equation, though. It has to be high enough, for some definition of high, and then the other factors come into play - is the work interesting, what are the other benefits, and so on.

Conclusion

The conclusion is … ah … well. I’ve run out of steam, unfortunately. But let’s just say that employee retention is a complicated affair, and that it shouldn’t come as a surprise to you that skilled employees, that you have been dependent on, quit. Treat them well, and it might not happen, but don’t bet on it.

. o .

Blueprint - The CSS Framework

▁ apr 15 2008

Knowing how to lay things out on a webpage can be difficult. With table-based layouts it was easier, but for a while now it’s been considered more correct to use CSS for layout, unless you have tabular data, of course. Personally I’ve never quite gotten the hang of how to do it in a good and consistent manner.

Enter Blueprint, which I’m using for this blog.

Read more »

. o .

Goodbye Wordpress, Hello ... ?

▁ apr 15 2008

You might notice that I’ve gotten rid of Wordpress. What I’m using now instead is something Jesper Noehr started, and I’ve modified a little bit. I hope the transition will be as painless as possible.

Read more »

. o .

Google Calendar Spam

▁ apr 07 2008

The first time it happend, I was surprised. I told myself it must have been a fluke and that Google would fix it. Then it happened again: a few minutes ago I got an SMS on my phone…

Reminder: FROM YOUR SISTER /GET BACK TO ME FAST!!

Indeed, there was an appointment in my calendar. Not surprisingly, my sister’s name isn’t Mrs. Joyce. If spammers really have a way into Google Calendar, this is pretty bad… Do we need spam filtering on our calendar appointments now?

For some reason I can’t find a setting for limiting SMS reminders to only work where I explicitly add it, I don’t really want spammers to spam my calendar and my phone.

I’ve gotten used to spam in mail, but this is unsettling.

. o .

Editors vs. IDEs

▁ mar 30 2008

Do you have a car? If so, then you know how convenient it is vs. not having a car. I had a car once - it was wonderful. It wasn’t very big, but it got me around, and going places was so much more convenient.

Now I live without a car, and it’s not a big deal. Whenever I have to go places and bring more than I can comfortably carry, I remember back to how it was when I had a car. Sometimes I play around with the idea of getting a new car, until I remember how expensive it is, and how I almost wouldn’t use it at all.

Read more »

. o .

Pirates vs. Ninjas - The Origin

▁ mar 17 2008

Long time, no blog post. I’ve been extremely busy lately…

So, I’m sitting here at home, relaxing and watching Shogun when it dawns on me. This must be the origin of pirates vs. ninjas! This 1980s classic, features Richard Chamberlain as a shipwrecked pirate in feudal Japan, where he struggles to survive and understand the Japanese culture. He even has to fight off a ninja, who is sent to assassinate him.

Shogun also features Toshiro Mifune, who had a lengthy partnership with famed director Akira Kurosawa, starring in such movies as Seven Samurai, Rashomon, The Hidden Fortress and Yojimbo, among others. Having seen several movies he’s in, I’m kind of embarassed I didn’t recognize him, but I guess that’s just a testament to his acting skills.

Thanks to Jesper for pointing me to Shogun, it’s awesome.

. o .

The John McCarthy Argument

▁ feb 28 2008

On Haskell vs. Common Lisp:

> Which one has more oomph?
Can Haskell manipulate code as data?

This argument is also (un)commonly known as the John McCarthy argument. McCarthy is the inventor of Lisp, and argues that since neither Python nor Ruby can do this, then they are not even where Lisp was some ~50 years ago.

Of course, that is not really a requirement to make a language useful, but still … it’s nice to have something to kill any Python vs. Ruby vs. Common Lisp discussions.

. o .

Project Euler

▁ feb 27 2008

Tired of writing code that moves data back and forth between web pages? Why not try Project Euler?

Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.

So far I’ve solved 4 out of 183 problems, and I’m just getting started. Our brains need exercise, and this is seems like a great way to get it.

The site also has forums that are unlocked when you solve a problem, and various statistics on users and programming languages.

Good luck!

. o .

Norway: The littlest country that could

▁ feb 16 2008

Introduction

Norway. If you have heard about it, it is probably because of oil, whaling or the high ranking on the Human Development Index, where Norway was on the top for six consecutive years. Despite having a population of less than 5 million, which is less people than other countries have in prison, it is the worlds third largest exporter of oil.

Being located in northern Europe, it is a somewhat cold place to live, and during winter it has some periods with little sun. It has a long, rugged coastline, and is also famous for its beautiful fjords. The terrain is rocky and mountainous, making transportation a challenge in some areas, and the airplane routes between the largest cities are among the ten largest in Europe.

This year, two large and multinational companies acquired two software companies from this strange and cold country.

Read more »

. o .

Followup: Continuations in Common Lisp with cl-cont

▁ feb 04 2008

According to this comment on PRC, there are some problems with cl-cont. FWIW. YMMV. HTH. HAND.

. o .

Continuations in Common Lisp with cl-cont

▁ feb 03 2008

Continuations are getting some attention these days - there’s heated discussions about getting it into Java, there’s continuation-based web frameworks, and newly released Arc even includes such a library.

Perhaps I’m too old fashioned, but I don’t think continuation-based web frameworks are all that they’re cracked up to be, but I see that it’s a lot easier to do a lot of things with them than others. I see some issues with these that I’m not quite sure how to solve, and perhaps some other kinda of constructs could be better.

Read more »

. o .

Dude where’s my charset!

▁ jan 29 2008

In 2001, Paul Graham announced that he was working on a new LISP dialect called Arc, and today it was released for the public (although still unfinished). There’s plenty of languages to choose from, and only time will tell how successful Arc will be, but it will certainly get attention.

Read more »

. o .

Common Lisp and darcs

▁ jan 26 2008

darcs seems to be the RCS of choice for Common Lispers, for some reason. From my experience, if a package isn’t downloadable and ASDF-Installable from cliki.net, there is usually a darcs repository available. Unfortunately, ASDF-Install can’t install directly from a darcs repo.

Even more unfortunately, I wasn’t able to install darcs (or more specifically GHC) using MacPorts. However, there is a darcs client written in CL available, which works fine for getting code from darcs repositories. Typing (darcs:get-repo URL local-directory) fetches the latest version of the repository and puts it into the specified directory.

2007 seems to have been the year of the version control systems, in particular the distributed version control systems, such as Git, Mercurial, and Bazaar. Darcs seems not to have gotten as much attention, but seems to be an interesting use case for Haskell, in addition to Pugs (the Perl 6 compiler and interpreter).

It seems like only yesterday that we got Subversion, that was to save us from the horror of CVS. How did we ever manage without all these other version control systems?

. o .

Implementation of a blog in Common Lisp: Part 3

▁ jan 26 2008

Part 3 of the blog/webapp tutorial is now up. Enjoy! Comments and suggestions for improvements are welcome.

It took a while longer to write this part, since I’ve been more busy than usual. This part covers creating a new blog post (previously only editing has been implemented), outputting HTML, HTTP authentication, and finally packaging with ASDF.

This ends this three-part tutorial, and it’s been very interesting learning more about Common Lisp.

. o .

Colorize

▁ jan 26 2008

When writing Implementing a blog in Common Lisp: Part 1, I wanted something to colorize the code snippets to make the appearence a little fancier. Surprisingly enough I stumbled upon colorize, an application written in Common Lisp for colorizing Common Lisp, Scheme, Elisp, C, C++, or Java code.

Here is a small example:

(defun foo ()
  “This is a function.”
  (let ((a 10)
        (b 20)
)

    (+ a b)
)
)

It looks ok, and most importantly it will highlight the parenthesis when you hover the different parts of the source code. Try it! It supports Lisp, Scheme, elisp, C, C++ and Java.

. o .

Implementation of a blog in Common Lisp: Part 2

▁ jan 06 2008

Part 2 of the blog/webapp tutorial is up.

I’d like to point out that I’m learning most of how to do this as I go along, perhaps not the best way to write a tutorial, but I’m having fun, and perhaps someone can make use of it. In other words; feel free to suggest improvements.

Hunchentoot and Elephant is a great combination for creating web applications. Unfortunately, the current methods for querying the database in Elephant is limited, but the roadmap supposedly includes significant improvements of this.

Btw, the Elephant comes with an example of an implementation of a blog, using Hunchentoot and CL-WHO.

. o .

Implementation of a blog in Common Lisp: Part 1

▁ jan 04 2008

The last few weeks I’ve been playing around with Common Lisp. I’ve been doing that off and on (mostly off) for a few years now, never really getting the hang of it because I’ve been too easily distracted. This time I thought I’d give it another try, and to make it more practical I’ve given myself a little project so that I’m using what I’m learning for something concrete.

For this project I’ve been looking into various frameworks for web application development, and I’ve come up with a combination I think works ok. To help others on their way, I’ve decided to create a small tutorial on how to create a blog with Hunchentoot, html-template and Elephant. This is just to introduce the frameworks and show how easy it can be.

Part 1 shows how data can be stored persistently, and HTML pages generated and served to the user. Enjoy!

. o .

Language choice

▁ jan 02 2008

So many languages, so many choices.

Python

reduce( lambda sum, current: sum + current, [1, 2, 3] )

Common Lisp

(reduce #'+ '(1 2 3))

Ruby

[1, 2, 3].inject(0) { |sum, current| sum = sum + current }

Perl

map {$sum += $_;} (1,2,3);

Which one do you prefer?

Update: I changed the Common Lisp version from using lambda to using the + function instead, it’s a lot less verbose. Thanks to everyone who pointed that out. ;)

powered by