it’s what-is-it ePolio?

Dedicated to Stargate SG-1, rest in peace. Yes dammit, I’m one of those raving lunatics.

The whole ePortfolio feature for it’s learning is a pretty sweet idea. The problem, of course, is the transformation of this idea to something people can actually use. This is the fundamental problem of all software development. Converting this perfect abstraction that only ever existed in your mind into something that works in the real world is no small feat. Not surprisingly it often doesn’t workout quite like you imagined. At least not on the first try (hint: prototyping does wonders). The problem is that you think you know all the details that are essential for this idea to be converted into a more solid form. Well you don’t, because if you did then you would most likely have implemented it already.

Let me borrow a few words from our mutual friend, Joel Spolsky, to elaborate:

“You can only see at a high-resolution in a fairly small area, and even that has a big fat blind spot right exactly in the middle, but you still walk around thinking you have a ultra-high resolution panoramic view of everything. Why? Because your eyes move really fast, and, under ordinary circumstances, they are happy to jump instantly to wherever you need them to jump to. And your mind provides this really complete abstraction, providing you with the illusion of complete vision when all you really have is a very small area of high res vision, a large area of extremely low-res vision, and the ability to page-fault-in anything you want to see—so quickly that you walk around all day thinking you have the whole picture projected internally in a little theatre in your brain.


One of the unfortunate side effects is that your mind gets into a bad habit of overestimating how clearly it understands things. It always thinks it has The Big Picture even when it doesn’t.

This is a particularly dangerous trap when it comes to software development. You get some big picture idea in your head for what you want to do, and it all seems so crystal clear that it doesn’t even seem like you need to design anything. You can just dive in and start implementing your vision.”

Don’t think you know how to implement it before you’ve done it at least once. Then you can throw the prototype away and do it better. Because now you know that the intricate class hierarchy you designed was just to damn backwards and the API your application exposed was way too inconsistent. Designing it first doesn’t hurt either.

The reason I mention this is of course because I’m a little disappointed with the implementation of the ePortfolio.

  • The Java editor will often mess things up when you try to do fancy things like inserting quotes, code snippets, bulleted lists or possibly other formatting changes. Luckily it’s possible to edit the underlying HTML to correct these things, but not all people are well versed enough in HTML to do that.
  • There is also an issue with other skins than the original in most browsers, at least IE, Firefox and Opera.
    • Text in bulleted list suddenly becomes much bigger than regular text (funky font tags automatically insert by the editor).
    • Depending on the skin certain components of the design will appear to hide other parts of the layout.
  • You can’t change the page title so you’re stuck with “it’s learning ePortfolio” which is not very helpful when your trying to identify the correct page in the taskbar or on a search engine.
  • Badly formatted RSS feeds that doesn’t play well with most, if not all, RSS readers.
    • it’s learning claims to be the copyright holder of all content published in the blog with the current copyright tag.
    • The link tag only contains an URL relative to
    • Doesn’t specify your name as the author of the feed items.
  • Unable to set it to only display the latest post on the “front page”. The lower bound of the “Show at most entries” setting is 2, which is the same limit placed on the “Show at most days”.
  • No easy way to navigate between the next and previous posts and no overview of posts (list of post titles).
  • Security concerns.

Yes, I definitely need to start looking for other ways to do this blog thingy. WordPress looks like a promising alternative.

Just remember, when someone tells you they know exactly how they are going to go about implement something, say nothing and slowly step backwards until you are clear of the danger. It may save your life! What you don’t know, can and will hurt you, and it happens to do so at the moment it will hurt the most. Murphy 101.

And: “It’s the thought that counts”.

What does that mean? How do you expect to quantify the value of a thought?

No, let’s not.

NOTE: This post has been imported from my old it’s learning ePortfolio blog.

General Algorithm Library (GAL)

I have published code for some general algorithms implemented in Java. Most of this work was done as part of the Algorithm and Complexity Theory (MID170) course at the University of Stavanger. The general algorithms umbrella covers most algorithms, but with a slight emphasis on flexibility and performance.

The first revision contains:

  • Dijkstra’s shortest path algorithm
  • Kruskal’s MST algorithm (incomplete)
  • Stable in-place quicksort
  • Union find for locating the k-th smallest key (not complete at all)
  • Sequence union for merging two sorted sequences into a set

You can grab a copy of the first release at the end of this post or you may fetch the smoking fresh, bleeding edge, bug ridden, latest revision directly from the Subversion (SVN) repository by the magic of the command line client:

svn checkout svn:// trunk

If you prefer a GUI client I recommend TortoiseSVN (Windows), RapidSVN (Windows, Linux, Mac) and Subversive (Eclipse plugin). You may also browse the latest and greatest code from the online FishEye repository viewer which provides a more developer oriented overview.

I welcome improvements that makes the algorithms more efficient or generally easier to use as long as the changes are relatively comprehensible. Hopefully more comprehensible than it currently is.

NOTE: This post has been imported from my old it’s learning ePortfolio project blog.

RSA and public-key cryptography

Here you can download the report (Norwegian) and the implementation (C# source code) of the RSA encryption algorithm Jens Otto Hatlevold and I did. It was done in 2006 for a project in the computer security course at the University of Stavanger. You can view the source code repository online with FishEye.

For the latest source code revision, point your SVN client to the following URL: svn://

NOTE: This post has been imported from my old it’s learning ePortfolio project blog.