Motorcycle Adventures and Free Software

Weblog: Archive

2007-01-01 - 2007-12-31

Helsinki to provide WiFi hotspots in public transportation

Posted on 2007-01-03 11:34:18 UTC to . 0 comments.

The City of Helsinki, despite some of its failings, is also doing some cool stuff. Examples include promotion of greener rail traffic, and increasing number of free WiFi hotspots.

So far these have been stationary, but now Helsinki City Transport is piloting WiFi in buses and trams. Helsingin Sanomat reports:

Some Helsinki buses and trams will deploy wireless internet access in January. Trams and buses providing access can be recognized by the WLAN signs at the doors.

...

According to Helsinki City Transport planning director Ville Lehmuskoski HCT is ready to increase wireless connectivity quickly in its vehicles if the pilot is successfull.

Great! Now the only question remaining is how to mark a moving hotspot in Plazes.

Sponsored links

save money using, phone card

Nokia's new N800 Linux Tablet

Posted on 2007-01-07 13:43:32 UTC to . 0 comments.

N800, the successor to Nokia's 770 Maemo-powered Linux internet tablet was apparently unleashed yesterday by CompUSA. While Nokia's site is still quiet on the new device, there are already unboxing pictures out there.

I've been using my 770 quite actively as a mobile internet terminal since I got it in February last year. While the software is occasionally buggy, it still beats lugging my MacBook around or trying to browse the web with my cellphone.

In addition to browsing I'm using the Jabber/Google Talk feature of the device quite often, and also sometimes watch movies on the go with it. There are other cool apps, too, and when my hard drive died and on the Death Monkey Rally, 770 was my only computer.

While the current uses make the device already quite useful, I'd love to use it as a Hitchhiker's Guide to the Galaxy, automatically finding Wikipedia information about things near me. When Maemo-Blog improves a bit, the device may also become an useful tool for maintaining a travel journal, especially since the application is able to communicate my coordinates to the blog.

As WiFi is becoming more ubiquitous there definitely is demand for small and portable internet access devices. The new device has more power and is reputedly more stable, and so sounds like a worthy upgrade. In addition to buying a couple for the company, I'd love to get one for Piotras in order to get Midgard libraries ported there.

Resource bookings with Midgard

Posted on 2007-01-09 16:02:36 UTC to . 0 comments.

Resource booking component net.nemein.reservations has been finally converted to MidCOM 2.6 technology. The component allows users to browse available resources, their reservation calendar and make new bookings.

Browsing resources

Default usage scenario for the component was meeting room bookings, but the component has been designed so that adding other types of resources like cars or cabins is just a matter of editing a datamanager2 schema.

Resource's reservation calendar

I haven't released the package yet as I want to first wait for test results from a couple of customers. Tomorrow we will pilot the component for airplane reservations at the aviation club.

Booking a new resource

Midgard replication service starts to shape up

Posted on 2007-01-17 12:13:53 UTC to . 0 comments.

Midgard has had replication capability since late 1999. First replication was handled with the Repligard command-line tool. Then in 2005 we got the Java-based Exorcist tool that was able to do cross-CMS replication. But both of them suffered from being slightly external of the normal Midgard environment.

With Midgard 1.8.1 there is now an integrated Midgard Replicator system that provides replication API on both C and PHP levels.

To support that we've now been working on a midcom.helper.replicator library that handles the issues of solving what to replicate, where and how. The library has been made with a modular toolbox philosophy where each replication pipeline is stored as a "subscription" that defines what exporter, transporter and importer should be used.

Some example cases here:

  • Staging/live: the subscription is configured to use an exporter that checks for object approval before exporting, and a transporter that directly sends the data to the live server via HTTP

  • Automatic backups: you can create a replication subscription that will send all database changes as XML packages to your Gmail account for free off-site backup

  • Collaboration on specific items: we could define a "wiki collaboration" exporter that you could use to exchange wiki pages between other project parters

Now the export and transport ends are mostly done and we're today focusing on integrating the importers with the MidCOM DBA layer to get the benefit of watchers, ACLs and other checks in the import end.

I'll update this post with more details as we go.

Random thought: Midgard vs. Drupal communities

Looking at Ohloh statistics, Midgard has had 38 contributors since 2001 when we switched repositories, while Drupal has had 589 contributors. With this huge disparity of numbers it is a bit difficult to understand how Midgard has 207 person years behind it, while Drupal only has had 113. Midgard also has a lot more code. I guess Midgard contributors just are more productive. Maybe this has something to do with the power that the framework gives us?

Getting started with Microformats

Posted on 2007-01-17 13:24:30 UTC to . 0 comments.

Microformats are a cool way of making web content machine-readable. Since the formats rely on classes, they also ensure the content has all the hooks needed for good CSS design.

Microformats can be understood by aggregators like edgeio and consumed with software like Firefox 3 and the Tails extension for Firefox 2. We have been introducing Microformats to all sites and applications we've produced since mid-2005.

However, I've noticed lots of customers and even web professionals are not really aware of Microformats yet. For them, here is a great introduction by Alex Faaborg:

Setting Adium status from a microsummary

Posted on 2007-01-19 16:55:18 UTC to . 0 comments.

Firefox 2 provides an useful feature called Microsummaries. Microsummaries enable users' bookmark labels to get automatically updated based on data on the site. This site provides my Plazes location and latest Twitter message as a microsummary:


Before this I've been using a script to populate my Plazes location to the Adium instant messaging status, but now I though the combination of position and status would be better here too. So I whipped up this quick AppleScript:

-- Bergie's blog summary updater
-- It reads the microsummary of a web page via Lynx and
-- then sets it as the Adium status line
-- Set the URL of your Microsummary page here
set summaryUrl to "http://bergie.iki.fi/status/microsummary/bergie"
set microSummary to do shell script "/opt/local/bin/lynx -width 500  -dump " & summaryUrl & "|iconv -f ISO-8859-1 -t UTF-8"
set locationSummary to findAndReplace("Henri Bergius, in ", "", microSummary)
tell application "Adium"
set my status message to locationSummary
end tell
on findAndReplace(tofind, toreplace, TheString)
set ditd to text item delimiters
set res to missing value
set text item delimiters to tofind
repeat with tis in text items of TheString
if res is missing value then
set res to tis
else
set res to res & toreplace & tis
end if
end repeat
set text item delimiters to ditd
return res
end findAndReplace

I set this to be run when I connect, and here are the results: 

Midgard developer meeting, winter 2007

Posted on 2007-01-21 00:11:35 UTC to . 0 comments.

This winter's Midgard meeting has been a bit different than the usual fare. Instead of running the session only in one place, the meeting already started last monday with work on the new replication framework and a dinner with Helsinki-based Midgardians. Then after the week spent on replication we packed our team to a Land Rover and drove to Linköping for the actual event.

Ferry trip was quite eventful, as usual, and so on friday most were quite tired and hung over. But even with that, discussion has been very interesting and there has also been quite a bit of code.



First topic discussed on friday was the new help system Anykey is building for Midgard with the sponsorship of the .se foundation. We will make the documentation files more closely tied to component handler IDs, and link the help menu to tagged searches on the Midgard site.

Easier Midgard installation was a big topic in this meeting. For it we collected the gripes different community members had about installation and discussed ways to make it better.



The two major solutions for that are to make binary packages of Midgard more available for different distributions, possibly through EPM. But the main area that needs rethinking and rewriting is making a smart PHP-based Midgard database and configuration setup tool to remove Datagard.

We also held a session on MidCOM development, helping attendees to get SVN checkouts running on their machines, showing how to quickly create a first component, helping with localization work and making some mass cleanups into the repository.



The MidCOM roadmap towards 3.0 was also clarified, including move to Midgard pages, deprecating PHP4, restructuring dynamic loads and making indexer a service provided by the DBA layer instead of handled by components themselves. MidCOM 2.7 targets will however remain as they were: the release will be basically 2.6 plus collector, replication and multilingual site management.

Looking for a junior PHP/Midgard consultant

Posted on 2007-01-23 14:02:55 UTC to . 0 comments.

Nemein delivers browser based free software solutions. Our clients include some of the leading advertisement agencies in Finland as well as major private and public companies. Nemein is looking for a junior consultant to join our Midgard deployment team.

Skills required:

  • Must be fluent in XHTML, CSS and PHP (4 is required, 5 a bonus)
  • Some CMS experience, particular systems don't really matter
  • Ajax, Microformats, RSS and Web Standards knowledge would be great
  • Ready to work with clients

Most of the client projects happen in the Helsinki capital region. Because of this, good command of the Finnish language is a requirement.

Contact me for more information.

Updated: I thought to add that we're also ready to discuss with potential senior consultant candidates, even though the primary need is now for a junior. :-)

Personalized street advertisements

Posted on 2007-01-30 14:33:40 UTC to . 0 comments.

mini_rfid_ads_small.jpg Maybe I'm a neo-luddite, but this sounds a bit scary:

The boards, which usually carry typical advertising, are programmed to identify approaching Mini drivers through a coded signal from a radio chip embedded in their key fob. The messages are personal, based on questionnaires that owners filled out.

This sounds like we are approaching the Minority Report world:

Everywhere that John Anderton (Tom Cruise) went, his eyes were being scanned for identification. I'm not talking just about restricted areas - he was scanned entering the Metro, driving home from work, and even walking into The Gap. The advertisements called him by name: "John Anderton, we have the ideal vacation for you!" and "John Anderton, wouldn't you like a pint of Guinness?" But not even a pint of Guinness would have soothed my nerves after hearing my name called out all day long. If you thought spam was annoying, you ain't seen nothing yet.

The Mini story via Pondering Primate.

In related news, gestures in the iPhone will of course bring Minority Report -style computing for us too. I wonder when Nokia's Maemo devices get that too.

Welcome to my new blog

Posted on 2007-01-30 20:40:59 UTC to . 0 comments.

This is the latest iteration of my home on the web. I've had a website since sometime in 1994, and under this same "iki" address since 2001. This latest design was actually made in spring 2006 after our US trip, but has been waiting in mothballs for the right moment.

My website has an important communicative and archiving role for me. It serves in:

  • Keeping my friends and family up-to-date on my whereabouts
  • Archiving my personal life (in twitters, photos, blogs and locations) for my own use
  • ...and finally, providing a channel for communicating things happening in the Midgard and OpenPsa spaces

New features

The site now runs on latest and greatest versions of both Midgard and MidCOM. This upgrade does bring some features, but not much. I had actually implemented most of the new things already as custom scripts for the previous site version, which of course made upgrading more difficult. Now things like positioning, categorization, commenting and moblogging are standard features in the distribution.

Still, being a developer, I could not launch a new version of the site without bringing some new features on the table. These include:

The film strip is used to display either pictures from the week a page was written, or 10 latest pictures

Film strip and pictures from Brazil

Positioning is now powered by real, mostly Plazes-powered coordinates and a real database of cities and airports. This brings with itself some Microformat and GeoRSS goodness, like live maps

Positions on the blog entries

My contact information is available as a machine-readable hCard on most pages

What Tails extension understands of my contact info

The contact information card also has a simple informal status message powered by Twitter

The contact card

Also, less visually:

  • The same Twitter status message and my current position are also available as a Microsummary for Firefox 2.x, which in turn updates my instant messaging status

  • I'm providing OpenID information on the site, enabling http://bergie.iki.fi/ to be my identity when logging into multiple services

All of this happens in the realization that my site is used less and less in the traditional way of browsing to it, and more and more by different content aggregators like RSS readers, Planet aggregators and Microformat readers.

The design

So, while the design is seen by fewer people than earlier, I wanted to switch to a lighter design from the previous very black layout. While the great majority of my readers access the content using the RSS feeds, the white background should still make the site more accessible to the rest.

The supporting colors of the site are natural hues taken from the scenery of the Colorado River canyon. This should fit well with the numbers of travel pictures I'm publishing.

There is also my picture on the pages. I realised that it is actually nice to see who the author is, and so switched away from the anonymous picture of Caucasus Mountains into a picture of the Grand Canyon with me in it.

The old design:

The old, black design

The new design:

The new, earthy design

Midgard template

I'm maintaining the Midgard template for this site in the company SVN repository. I can however make a PEAR package of it available for those interested.

Performance

Unfortunately I'm still being hosted for free on Torben's old server that is soon to be decommissioned. This means that the site runs really, really slowly, and because it is a chroot environment I can't even do caching via Squid.

This part will probably improve when I move the site to FTC's Midgard hosting facilities. I'm also considering other options, like a cheap virtual server from Louhi.net.

Quick and dirty MidCOM caching with Cache_Lite

Posted on 2007-01-31 16:09:23 UTC to . 0 comments.

If you want to cache your MidCOM site, but are on a chrooted environment and so can't run Squid, one option is to use the Cache_Lite PEAR package. To do this, you must have access to the page elements used on your site.

Place something like the following to the <(code-init-before-midcom)> element:

    <?php
    // QuickNDirty output caching
    $GLOBALS['cache_enable'] = true;
    if (   array_key_exists('PHPSESSID', $_COOKIE)
        || $_MIDGARD['user']
        || count($_POST) > 0)
    {
        // Don't cache requests where a POST is made or where we have an authenticated used
        $GLOBALS['cache_enable'] = false;
    }
    if (in_array('api', $_MIDGARD['argv']))
    {
        // Don't cache net.nehmer.blog remote API calls
        $GLOBALS['cache_enable'] = false;
    }
    if (   $_MIDGARD['argc'] > 0
        && substr($_MIDGARD['argv'][0], 0, 7) == 'midcom-')
    {
        // Don't cache the midcom-some-action URLs
        $GLOBALS['cache_enable'] = false;
    }

    if ($GLOBALS['cache_enable'])
    {
        // Include the package
        require_once('Cache/Lite.php');

        // Set a few options
        $options = array
        (
            'cacheDir' => '/var/cache/midgard/www.example.net/',
            'lifeTime' => 1800
        );

        // Generate the unique cache ID
        $cache_id = md5($_MIDGARD['uri'] . ':' . serialize($_GET));

        // Create a Cache_Lite object
        $GLOBALS['cache'] = new Cache_Lite($options);

        // Test if thereis a valide cache for this id
        if ($data = $GLOBALS['cache']->get($cache_id)) 
        {
            echo $data;
            exit();
        }

        ob_start();
    }
    ?>

And edit the <(code-finish)> element to contain the following:

    <?php 
    $_MIDCOM->finish(); 

    if ($GLOBALS['cache_enable'])
    {
        $data = ob_get_contents();
        $GLOBALS['cache']->save($data);
        ob_end_flush();
    }
    ?>

Cache_Lite can be used for caching all regular content pages, but not attachments due to the way attachment serving is implemented in MidCOM.

Contact management and Microformats

Posted on 2007-02-01 16:45:30 UTC to . 0 comments.

I've blogged earlier on how OpenPsa 2 can utilize information pulled from the websites of organizations and persons entered into the system.

Today I added support for populating Microformatted contact information pulled using the nice hKit library. To use this feature simply create or edit a company and add their website URL:

Openpsa-Contacts-Enter-Organization

OpenPsa will check on the background whether the site contains hCards, and populate any information gained to the contact entry.

For example, Bang & Bonsomer provides their address as a hCard in their site footer:

Bangbonsomer-Hcard-Footer

OpenPsa finds this information and adds it to the entry:

Openpsa-Contacts-Organization-Details

Couldn't be much easier. Now if only more sites provided hCards...

Technorati Tags: ,

Meet Nabaztag, our new general manager

Posted on 2007-02-02 09:44:34 UTC to . 0 comments.

Nemein has today acquired a new General Manager into the company. We are delighted to benefit from the experience and keen insights of the brand new Nabaztag. Here you can see it already settled in our office:

Nabaztag in our office

The idea with the WiFi bunny is to connect it as an ambient information display for our OpenPsa management suite. Some use cases we have so far envisioned include:

  • Displaying status of the support ticket queue via the belly lights
  • Alerting us of new tickets
  • Reporting the number of invoiceable hours reported at the end of the day
  • Alerting of calendar events happening at the office
  • Generally handling status messages based on our Plazes locations

Technologically this should be quite simple using OpenPsa's integrated notification framework and the PEAR Services_Nabaztag library.

I will report when we have some concrete results with this.

Technorati Tags: , ,

Iran and the possible march to war

Posted on 2007-02-03 09:52:20 UTC to . 0 comments.

Defense policies of Finland on whether we should join the NATO aside, I just hope I never will have to write a blog post like this:

Random scenes that come to my mind: the very brilliant people (who usually are very sensitive) will get hot and go to war voluntarily and get killed. Several others who are scared of war and the draft/conscription will hide (or get hidden by worrisome moms) at home and will not see the light of day for months. The borders will be closed. There will be refugess to countries like Afghanistan and Turkmenistan who used to send refugess the other way around, to Iran... The effects would be irreversible.

...

It may be so sad for observers, but it will be hell for us random free software developers who will not be able to leave the country once the Iranian government declares a state of war (even if it's only one simple rocket from Israel, with no US involvement).

And unfortunately, it may be that the clock is ticking.

Regaining my wings

Posted on 2007-02-03 17:25:39 UTC to . 0 comments.

After flight

Because of time constraints I have not been flying as much as I should. However, if I want to keep my license current that has to change.

The first step in regaining my wings was taken last weekend, flying to Turku with Tigert in an amazingly clear winter weather.

Preview of Midgard's new on-site template editor

Posted on 2007-02-05 17:40:04 UTC to . 0 comments.

Midgard has a very powerful page templating system, and this has been noted in CMS Watch kudos lists several times.

With power there also usually comes some learning curve, and Midgard certainly has not been an exception to that rule with its concepts like inheritance, dynamic loads, substyles and other things. With MidCOM 2.7 we seek to lower the learning curve and make the system more approachable to the regular web developer by moving template editing to the on-site administration interface. Here's a quick preview on what we have been doing.

Style template customization starts with editing a folder and setting a custom layout template for it:

Midcom-Styleeditor-Create-Substyle

After this the layout template will appear in the toolbar:

Midcom-Styleeditor-Edit-Template-Menu

When user clicks it, the system analyzes which folders use the layout template, and what components those folders use, and then presents a list of them.

Components can even provide a nice explanation of how their elements are used by providing an on-site help file named "style":

Midcom-Styleeditor-Element-List

In addition to the per-component listings there is also a list of all elements, including global style elements like <(style-init)>:

Midcom-Styleeditor-Element-List-All

When user clicks an element, its default value coming either from component or through style inheritance is shown as reference, and the local instance can be easily modified:

Midcom-Styleeditor-Edit-Element

This system obviously still needs quite a lot of CSS and UI love, but it is already now quite functional. If you're interested in it, grab a copy of SVN version of MidCOM and give it a spin. And be sure to let me know what you think :-)

Technorati Tags: , ,

Compact homes of the future

Posted on 2007-02-05 21:19:56 UTC to . 0 comments.

Now that advertisements recognize you, flying cars are coming, and a Bond movie mostly uses off-the-shelf technology, we can say the future is really here.

Fittingly, the apartments of future are coming too, and they seem to be small and disposable:

The micro compact home [m-ch] is a lightweight compact dwelling for one or two people. Its compact dimensions of 2.6m cube adapt it to a variety of sites and circumstances, and its functioning spaces of sleeping, working / dining, cooking and hygiene make it suitable for everyday use.

Microcompacthome-Smart

While if taken to extremes, we could have quite a mobile dystopia, the compact and movable homes definitely have an appeal. Smaller spaces seem to be the only way to prevent stuff from accumulating when living in the western society. And as experiences are much more valuable than stuff, this is bad.

Makes me think, especially as I have to find a new apartment by the end of July anyway.

More pictures of the Micro Compact Home on Gizmodo.

Technorati Tags: , ,

Instant messaging, VoIP and standards

Posted on 2007-02-06 15:42:30 UTC to . 0 comments.

The fact that our VoIP provider has a proprietary closed network has bothered me for a while. In their N800 review, Spicy Gadget Roll put it well:

The two instant messengers found in the N800 are Jabber and Google Talk. Both instant messengers are built on open standards, which I whole-heartedly believe in. There’s a lot of confusion as to why these open standards are even relevant. I’d like to clear this confusion up by spending some time on the subject. Think about this for a moment, a Hotmail user can send an e-mail to a Gmail user, a Cingular customer can call a T-Mobile customer, but we can only send instant messages to people within our IM network? Something is awfully wrong with this picture.

IM federation is a great start for fixing the situation. Next we need a proper, open and standardized VoIP solution. There are some contenders for that position, including OpenWengo, Gizmo Project and Google Talk / Jingle. From my point of view all of these come still short, though, as none seem to provide decent video-capable clients for both Mac and Maemo.

Technorati Tags: ,

Midgard and Flickr

Posted on 2007-02-07 19:30:54 UTC to . 0 comments.

While my site is publishing a lot of photos, I'm using Flickr as my central photo storage location. The reason for this is simple:

There are dozens of tools that can upload to Flickr easily, including FlickrExport for iPhoto and Nokia Lifeblog, but very few tools that could do the same for Midgard. By centralizing to Flickr I make my life a lot easier, but also lock myself to a proprietary service.

Luckily Flickr has a quite comprehensive API for photo management. By using the nice phpFlickr library I am able to synchronize the photos uploaded to Flickr to my blog. The result is that I can upload photos more easily, and both Flickr users and my blog readers can see them. Here are the first photos imported:

Photostream-Flickr-Import-Latest

The way this works is that I've subscribed my org.routamc.photostream installation to my Flickr account. By default it checks every hour whether there are new photos, but I can also do a manual synchronization:

Photostream-Flickr-Import-Raw

This functionality is available in MidCOM SVN trunk.

In related news, thanks to the Plazes raffle last year, I now have two more years of Flickr pro account available. And Plazes seems to be doing well all around.

Technorati Tags: , ,

We, the web

Posted on 2007-02-07 22:51:34 UTC to . 0 comments.

Here is a very nice, if a bit hype-oriented overview of the Web 2.0 phenomenon:

Via Lessig

Technorati Tags: , , , , ,

Plazes on the N800

Posted on 2007-02-08 22:43:44 UTC to . 0 comments.

Intergalactic hitchhikers get another treat: We have updated the older Maemo Plazer to work with the new Plazer API and the Maemo 3.0 that is on N800. We also integrated it more closely with the UI:

Maemoplazer-Initial2

This means that N800 users can now easily position their devices using the vast database of WiFi access points the Plazes network has. And if they stumble on a new one, a web browser window is opened to form where they can enter the network devices to add the new AP to the database.

After we get this properly packaged and integrated with the Maemo connection manager, the next point is to start thinking what to do with the position data. Some ideas:

  • Automatically setting system clock to correct timezone
  • Opening Maemo Mapper in user's present location
  • Opening Maemo Stars in user's present location
  • Setting instant messaging status based on location preferences (the "I don't want my clients to call when I'm at home" scenario)
  • Populating a "Wikipedia pages near you" feed to RSS reader and Maemo Mapper POI database

It would be great to get more people to work on this. We have opened a Maemo Plazer garage project for it. It is written in Python and uses D-Bus for its communications with the rest of the Maemo environment, so working with it should be fairly easy. Making it act as a GeoClue backend would be a cool step for example.

Ferenc has promised to package Maemo Plazer next weekend. Before that, you can grab the sources from SVN and install it manually to your device. If you place the maemoplazer.desktop file to the /usr/share/applications/hildon/ directory there will even be a clickable icon in the "Extras" folder to start the application with.

Technorati Tags: , ,

This bunny talks Midgard

Posted on 2007-02-09 17:12:16 UTC to . 0 comments.

When this bunny joined our company, I wrote that the plan was to make our CRM system talk to the Nabaztag. Today the first step was taken by making a Nabaztag notifier plugin for the org.openpsa.notifications library.

After this I was able to tell my test OpenPsa system to forward all wiki page update notifications to the bunny:

Nabaztag-Notification-Preferences

When I edited a wiki page, I got these nice protoGrowl messages:

Nabaztag-Notification-Sent

A bit later, the bunny wiggled its ears, flashed a few lights and started telling in a cheery female voice: "Wiki page "Wikilinki" has been edited by Henri Bergius in wiki..."

office-nabaztag.jpg

Quite cool!

Technorati Tags: ,

OSCMS Summit: Manage your personal information space with Midgard

Posted on 2007-02-12 09:10:15 UTC to . 0 comments.

Open Source Content Management System Summit 2007 will be held in Sunnyvale, CA on March 22nd and 23rd. I've proposed the following session:

Manage your personal information space with Midgard

Social web services like Flickr and del.icio.us provide new ways to work and share data with others. However, they also mean that your data is spread around dozens of services, companies and servers.

Midgard can be set up to act as your personal information hub, synchronizing your content with the various Web 2.0 services and displaying them in your own style as a mashup. This means your content can also be secure in a server you control.

You can connect the data from different services together and enrich it with data produced with Midgard's own components. Consider for example having the following play nicely together:

  • Blog entries coming from an external blog service or Midgard itself
  • Bookmarks coming from del.icio.us
  • Photos coming from Flickr
  • Videos coming from Youtube
  • Status messages coming from Twitter
  • ...all connected with geolocation data coming from Plazes and shared via RSS feeds and Microformats

In this session we look at how such a personal information space can be set up with Midgard, and how new functionalities or data connections can be developed for it.

This is somewhat related to the Feeds, Synchronization and the Free Software Desktop session we held with Tigert in GUADEC last year.

If you're interested in the idea, please go and vote for the session. While I'm using Midgard's connectivity features as an example, the base ideas are actually quite generic and could be implemented with any CMS.

Technorati Tags: , , , , , , ,

Maemo Plazer released

Posted on 2007-02-12 12:32:45 UTC to . 0 comments.

Thanks to help from Ferenc, Maemo Plazer, the Plazes client for the Nokia N800 Internet Tablet is now available:

Maemoplazer-Downloads-Site

This is the first time a desktop (well, handheld, really) application I've contributed to has been released. It is definitely a cool first step into the Maemo world.

There are of course lots of development ideas we have for the application. We're considering if it could become a more generic WiFi utility by combining it with the GNOME WiFI autologin applet, and also planning to make it a GeoClue backend so that other geo-aware Maemo applications can use Plazes position information.

If you have an N800 please install the app and try it out! Bugs can be reported to our Garage tracker.

Please note that this does not run in the SDK since some required command-line utilities are missing from there.

Technorati Tags: ,

For a collaborative MWS

Posted on 2007-02-12 14:55:54 UTC to . 0 comments.

MWS, for those who don't remember it, was a Midgard Weekly Summary. It was published every week from mid-1999 to sometime in 2001, first by me and later by Ken Pooley from the Sewanee University.

While MWS sometimes led to slightly premature announcements, it also provided an easy way to keep on track with the Midgard project. And now that the march towards Midgard2 is really on and things happen at a quick pace, it might be time to revive the old Weekly Summaries.

The plan for now:

Inspiration for reviving the summaries came from Quim Gil's Maemo Selecta! update.

Technorati Tags:

Short clip from Haidong Gumdo practice

Posted on 2007-02-18 20:27:15 UTC to . 0 comments.

We were practicing some basic Haidong Gumdo techniques with Jose today, and decided to try the video features of my N90. Here's a quick clip of me doing the fourth basic technique:

If Jose approves them, I'll post more videos of him doing various techniques later.

Updated 2007-02-20: Haidong Gumdo now has a Finnish Wikipedia entry too.

Updated 2007-02-26: We finally uploaded more HDGD videos yesterday.

Midgard Weekly Summary #67: February 23rd 2007

Posted on 2007-02-23 12:03:20 UTC to . 0 comments.

Midgard Weekly Summaries resurrected

Welcome to the first issue of the resurrected Midgard Weekly Summaries! The 66 issues released before this were edited by Henri Bergius and Ken Pooley between 1999 and 2002, after which MWS went on hiatus.

The new MWS editions are edited collaboratively to make the editing burden easier. To suggest stories here bookmark them with del.icio.us tag "midgardweeklysummary". Screenshots may also be suggested by tagging them with "midgardweeklysummary" on Flickr.

Happenings this week

  • New community server. Midgard's old project server which has been hosted by Nehmer.net has started to get old, and in response a new server has been bought for the project. Midgard's project site should go live on the new server some time during the weekend. The new server is sponsored by Nemein, Anykey and Ware.it.

  • Hungarian translations for Midgard. András Lévai has started translating Midgard's user interfaces to the Hungarian language. Currently core components are 28% translated and other components 21% translated.

  • Maemo Blog compatible with Midgard. Maemo Blog is a mobile blogging application for Nokia's internet tablets. Maemo Blog's developer Santtu Lakkala has tested compatibility with Midgard. When completed, Maemo Blog will be an advanced travel blogging tool in the sense that it can communicate the user's geographical location to Midgard with the MetaWeblog API calls.

  • Flickr photo import. Midgard's photo management component is now able to import user's photos from the Flickr photo sharing service. This enables easy moblogging by using tools like Nokia Lifeblog to post pictures on Flickr and then having Midgard automatically import them from there.

  • Vote Midgard for the 2007 Open Source CMS summit. Henri Bergius has proposed session Manage your personal information space with Midgard to the conference. The event will be held on March 22nd and 23rd in Sunnyvale, California. If you're interested in hearing how Midgard integrates with the various social web services out there, go and vote for the proposal.

About Midgard

Midgard CMS is an Open Source Content Management System built on top of the Linux, Apache, MySQL and PHP (LAMP) platform. It provides a reliable, powerful and internationalized set of tools for building web sites and networked applications.

Midgard utilizes PHP as the web scripting language and provides integration interfaces on Java and C layers. Midgard's unique architecture enables it to provide services like single sign-on and replication. With these capabilities and the integrated full-text search system, Midgard is an excellent match for information-rich web sites and intranets.

Places to see Midgard in Action:

Blogging on my N800

Posted on 2007-02-26 18:40:43 UTC to . 0 comments.

I'm posting this with the Maemo Blog application. We had a lunch with Santtu who wrote it, and I tried to demo how it doesn't work with my blog. And suddenly it did! Reverse demo effect ;-)

The N800 is integrating more and more with my digital life - I listen to podcasts on it while commuting, it automatically positions me on Plazes when I pass familiar WiFi hotspots, I am almost as available on Jabber as on SMS, and my 3G provider must love me...

Midgard and geotagging via email

Posted on 2007-02-28 18:23:45 UTC to . 0 comments.

Midgard is becoming smarter about tags. Now it not only supports tagging any objects and making tags contextual, but also machine tags:

You know those funky tags like cell:cellid=197216005, geo:tool=GMiF and even camel:size=medium you see around the place? Well yeah, we've been watching them very closely too, and by "we've" I mean a few of us here in the office that care very much about these things, Aaron probably more than most of us.

The first application for machine tags is geotagging. We were discussing the problem of geotagging entries by email with Andrew Turner and trying to come up with a solution that would work in both Midgard and GeoPress. The decision was to support the Flickr email-based tagging format.

This means that to geotag a blog entry, just include the following to the end of email body:

tags: geo:long=24.9419260025024 geo:lat=60.1587851399795

Tools like Flickr email import, Geopress and Midgard will be able to parse this information and position your blog entry accordingly, on both site and GeoRSS feeds.

Of course, the same format can be used for regular tagging:

tags: waterpipe n800 canola sabrage

Machine tags as a record extension

Now that machine tags are in, pulling information from them is quite easy. Here's an example using the camel:size=medium tag from Dan Catt's post:

<?php
// Load a camel photo
$photo = new org_routamc_photostream_photo_dba('GUID');

// Load camel-related data from the tags
$data = net_nemein_tag_handler::get_object_machine_tags_in_context($photo, 'camel');

// Show the data
echo "{$photo->title} is a {$data['size']} sized camel.";
?>

As is visible from this example, machine tags can be used in a bit similar way as parameters are used in the Midgard world. The advantage machine tags have however is that they are compatible with any system that supports tagging.

Updated: There is even a wiki for formalizing machine tagging conventions.

GeoClue and Maemo Plazer

Posted on 2007-03-02 01:03:12 UTC to . 0 comments.

We had another Maemo hacking night here at the office. The plan was to write a proper UI for the Maemo Plazer, and integrate it with the GeoClue framework. Both of these were partially completed, but will need more thought and testing. Here's a quick snapshot of the new UI:

Maemoplazer-Ui-Initial

GeoClue is also now partially supported. Maemo Plazer registers itself as a backend and does things like raise the current_position_changed signal when Plaze changes. Unfortunately however the GeoClue position API would require some methods to return multiple values, and I haven't figured out how to do this with dbus-python. If a Python hacker wants to take a look, the code is in SVN.

In addition to the Maemo Plazer hacking done by Rambo and me, Jerry was doing some RoadWarrior work .

Technorati Tags: , , ,

Midgard Weekly Summary #68: March 2nd 2007

Posted on 2007-03-02 14:04:44 UTC to . 0 comments.

Happenings this week

About Midgard

Midgard CMS is an Open Source Content Management System built on top of the Linux, Apache, MySQL and PHP (LAMP) platform. It provides a reliable, powerful and internationalized set of tools for building web sites and networked applications.

Midgard utilizes PHP as the web scripting language and provides integration interfaces on Java and C layers. Midgard's unique architecture enables it to provide services like single sign-on and replication. With these capabilities and the integrated full-text search system, Midgard is an excellent match for information-rich web sites and intranets.

Places to see Midgard in Action:

About MWS

Midgard Weekly Summaries is a newsletter for keeping up with the happenings in the Midgard community.

The new MWS editions are edited collaboratively to make the editing burden easier. To suggest stories here bookmark them with del.icio.us tag "midgardweeklysummary". Screenshots may also be suggested by tagging them with "midgardweeklysummary" on Flickr.

WiFi autologins with Devicescape

Posted on 2007-03-05 22:37:36 UTC to . 0 comments.

I have blogged earlier of our plans to add WiFi autologin support to MaemoPlazer. However, I found out that there is already an autologin applet for the N800: Devicescape

Devicescape says its Agent now supports WISPr (Wireless Internet Service Provider Roaming), a new login protocol standardized by a subcommittee of the Wi-Fi Alliance aimed at enabling faster logins and roaming support. Some networks supported by the Agent -- including AT&T WiFi, FON, and T-Mobile -- will switch to WISPr logins as of Friday, Mar. 2, according to the Devicescape. Therefore, users are encouraged to upgrade as soon as possible, to ensure continuous service.

While I'm not entirely happy about giving my passwords to an external service, I tried Devicescape on my N800 and it worked as advertised: As soon as I connected to my home FON network it performed the web-based login, letting me use the internet without any manual intervention.

Autoconnection to FON with DeviceScape on N800

FON and Sonera HomeRun, two of the three WiFi networks requiring web login that I use frequently are supported by Devicescape. Now if they could add support for the free City of Helsinki WiFi...

Midgard Weekly Summary #69: March 8th 2007

Posted on 2007-03-08 14:27:28 UTC to . 0 comments.

This week's MWS is a bit thin because of time constraints. This means some interesting things like MidCOM's new style editor will be left to MWS #70.

Happenings this week

About Midgard

Midgard CMS is an Open Source Content Management System built on top of the Linux, Apache, MySQL and PHP (LAMP) platform. It provides a reliable, powerful and internationalized set of tools for building web sites and networked applications.

Midgard utilizes PHP as the web scripting language and provides integration interfaces on Java and C layers. Midgard's unique architecture enables it to provide services like single sign-on and replication. With these capabilities and the integrated full-text search system, Midgard is an excellent match for information-rich web sites and intranets.

Places to see Midgard in Action:

About MWS

Midgard Weekly Summaries is a newsletter for keeping up with the happenings in the Midgard community.

The new MWS editions are edited collaboratively to make the editing burden easier. To suggest stories here bookmark them with del.icio.us tag "midgardweeklysummary". Screenshots may also be suggested by tagging them with "midgardweeklysummary" on Flickr.

Maemo Mapper, OpenStreetMap and Wikipedia

Posted on 2007-03-19 13:41:45 UTC to . 0 comments.

Maemo Mapper is a map browsing and GPS navigation application for the Nokia Internet Tablets. So far this useful application has been in the legal grey area by relying on providers like Google Maps and Microsoft Virtual Earth for its map tiles. This probably violates their terms of service and may cause problems later on.

This is why I'm very happy to see that Maemo Mapper can now be used with OpenStreetMap tiles. OpenStreetMap is a volunteer project for creating truly free street maps and other geographic data.

Currently there is quite acceptable OpenStreetMap data available for most major European cities, but the areas in between are still mostly "Here be dragons" territory. But since OpenStreetMap is an open project, we all can help. Now OpenStreetMaps look like the following in Maemo Mapper:

Maemomapper-Openstreetmap-Mapnik

To use these yourself add a new Map Repository with URL Format http://tile.openstreetmap.org/%0d/%d/%d.png. Hopefully this will become the default map source later on. (Updated: OpenStreetMap is now the default map source, starting from Maemo Mapper 1.4.3 release. Great work, Gnuite!)

Points-of-Interest from Wikipedia pages

Maemo Mapper has a useful feature called "Points of Interest" that can be used for marking and navigating to spots on the map.

To add touristic capabilities to this feature I created a quick Python script for populating the POI database with Positioned Wikipedia pages near you. It uses GeoClue for determining where the user is located, and then pulls nearby pages using the Geonames web service. If you want to try it, read my Internet Tablet Talk post.

Maemomapper-Wikipedia-Poi-Detail

Another step closer to the real-world Hitchhiker's Guide to the Galaxy...

Updated 14:33: Switched the OpenStreetMap tile source from Osmarender to Mapnik since the maps look nicer this way. I think it is also appropriate to note that OpenStreetMap can already produce better maps for some places than Google Maps does.

Technorati Tags: , , , , ,

Maemo in Google Summer of Code

Posted on 2007-03-21 14:05:51 UTC to . 0 comments.

Maemo, the development platform for Nokia's Internet Tablets is one of the organizations participating in Google Summer of Code 2007. SoC is a program that offers student developers stipends to write code for various open source projects.

I'm one of the mentors for Maemo projects. Students can apply for the program until March 26th. If you want to work on Maemo (and especially positioning-related) applications, add your idea to the wiki ASAP!

Midgard and the Finnish parliamentary election

Posted on 2007-03-23 10:18:06 UTC to . 0 comments.

Finnish parliamentary election of 2007 was last Sunday. Unfortunately my candidate, Mikko Rauhala from the Liberal party and of Electronic Frontier Finland fame didn't make it.

In any case, Midgard powered the web campaigns of at least two candidates: Rapper Pikku G (h07.fi) didn't quite make it, but skier Juha Mieto (juhamieto.fi) won in the Vaasa constituency with a landslide.

Midgard-Pikkug-2007Midgard-Juhamieto-2007

Midgard provides a very good base for such campaign sites. A campaign blog can easily be updated on the road using the email features found in any smartphone, photos and calendar events are easy to maintain, and everything serves machine readable RSS and microformats. The direct marketing system also makes it possible to keep in touch with campaign activists using email newsletters and SMS.

Technorati Tags: , , ,

Midgard Weekly Summary #70: March 23rd 2007

Posted on 2007-03-23 13:26:27 UTC to . 0 comments.

I'm back from the arctic hunting trip. One week away from even the cell phone network felt really good and the aurora borealis were simply gorgeous. Now it is time to again catch up with happenings in the Midgard community...

Happenings this week

About Midgard

Midgard CMS is an Open Source Content Management System built on top of the Linux, Apache, MySQL and PHP (LAMP) platform. It provides a reliable, powerful and internationalized set of tools for building web sites and networked applications.

Midgard utilizes PHP as the web scripting language and provides integration interfaces on Java and C layers. Midgard's unique architecture enables it to provide services like single sign-on and replication. With these capabilities and the integrated full-text search system, Midgard is an excellent match for information-rich web sites and intranets.

Places to see Midgard in Action:

About MWS

Midgard Weekly Summaries is a newsletter for keeping up with the happenings in the Midgard community.

The new MWS editions are edited collaboratively to make the editing burden easier. To suggest stories here bookmark them with del.icio.us tag "midgardweeklysummary". Screenshots may also be suggested by tagging them with "midgardweeklysummary" on Flickr.

Maemo camera app and an OS 2007 update

Posted on 2007-03-23 13:50:54 UTC to . 0 comments.

Via #maemo I heard that there is a Nokia-made camera application for the N800. Here's a quick first picture from the office:

Maemocamera 38 36 13-230307

Quality is crappy, as is to be expected with such a simple camera. I've scaled the picture down from 640x480.

In other news, the long-promised IT OS 2007 upgrade seems to be slowly leaking out... Might be worthwhile to check out the N800 download page.

Technorati Tags:

Bunch of Midgard tutorials appearing

Posted on 2007-03-27 18:54:14 UTC to . 0 comments.

Arttu Manninen upgraded his blog to MidCOM 2.6 and is now on a blogging frenzy together with his padawan Jaakko Tepponen. Lots of good snippets of information about Midgard usage are appearing...

Arttu:

Jaakko:

In the other news, after our hunting trip spring just came suddenly in Helsinki. Last few days have been sunny, snow-less and very warm. Makes me desperately hope to have a working motorcycle...

First look at Rhapsody for N800

Posted on 2007-03-27 19:50:13 UTC to . 0 comments.

Rhapsody, the music subscription service from Real Networks is now available for Nokia's N800 Internet Tablet. While so far the music library Kerttu and I have accumulated has been perfectly enough for me, I decided to give Rhapsody a shot.

Installation on N800 was not very easy as the download link provided in Nokia's Tableteer site didn't work. However, I was able to find the direct download URL and so install the application. This will hopefully be fixed by Nokia soon.

In any case, when installed Rhapsody populates an icon to the Maemo menu (by default to "Favorites" but this can be changed). Clicking it launches the application in full-screen state, a bit like Canola:

Rhapsody-N800

When launched, I was asked whether I already had a Rhapsody account, or whether I wanted to try a 30 day trial. I opted for the trial since I don't know if Rhapsody will be useful for me or not.

The application is split into three panels, two of which fit into screen at same time. The left-most is the music searching and browsing view that uses a kind of tree system for displaying different selections. The middle panel is the current playlist, and the right-most panel displays currently playing song. The panels can be navigated using the big "Now playing" and "Library" buttons between them.

Music could be searched by artist, album or track. On a quick search I noticed the song selection to be wide but very US-centric. However, as a pleasant point for anybody using the thumb keyboard, the search seemed quite good at catching typos and providing "did you mean... ?" results.

Clicking a search result takes you to the artist's "folder" where you have options like All albums, Top tracks and Samples. Unfortunately these don't necessarily contain any results. It would be a lot nicer if options that don't lead anywhere were greyed out for example. This is especially problematic as the UI seems to be a bit unresponsive at places.

Clicking a song adds it to the playlist, which may be arranged using the arrow buttons in the bottom of the screen. The client for Nokia seems to support only streaming, which mostly works quite well but was breaking a bit in my tests.

Based on these quick tests, I don't think I'm ready to pay the 10$ or 15$ per month for the service. Rhapsody contains a lot of music, but most of it is not very relevant for me. And being able to play the music only when I have a good internet connection is not that appealing either. But we'll have to see.

Updated: I kind of understand why such proprietary content distribution system has to be closed source, but it should be a Canola backend instead of providing its own, slightly weird UI. Hopefully open content alternatives appear sometime soon...

Technorati Tags: , ,

How successful is N800?

Posted on 2007-03-29 09:42:42 UTC to . 0 comments.

As a Maemo application developer, I of course wonder how many N800 or 770 internet tablets are out there. Nokia hasn't released any figures as far as I know, but looking at Amazon's Computers & PC Hardware top sellers, it seems that at least N800 is selling well. Today it was on sixth place, behind some different MacBook and Toshiba Satellite iterations:

Amazon-Top-Computer-Sellers-20070329

Advertisements for N800 also seem to be popping up quite frequently both online and in magazines, so it seems Nokia is really pushing this product. However, I have yet to see somebody outside our small geek circle using the device in public.

Updated 2007-04-02: During the weekend I saw somebody browsing the web with a N800 in the Night Visions film festival, this being the first time I see somebody I don't know just using the device in public.

Internet Tablet talk had some speculation on this last fall.

Technorati Tags: ,

Midgard - managing free software project as a joint venture

Posted on 2007-03-29 12:14:26 UTC to . 0 comments.

I just held my presentation about how the Midgard community works in the Norwegian Open Source in Business conference. Here are the slides:

After some discussions with Aaron Seigo from the KDE project, there seem to be a lot of commonality in how the two projects are run, though Midgard obviously in a smaller scale.

Later today I will also run a Midgard workshop here since the eZ Publish guys cancelled.

The old offline vs. online debate

Posted on 2007-04-02 18:37:34 UTC to . 0 comments.

The rise of web applications like Gmail and Basecamp is bringing the good old offline vs. online debate again into picture.

Quite a few developers are now working on various offline-enabled Ajax toolkits, but 37signals, a prominent developer in the scene is saying offline doesn't matter:

The idea of offline web applications is getting an undue amount of attention. Which is bizarre when you look at how availability of connectivity is ever increasing. EVDO cards, city-wide wifis, iPhones, Blackberry’s. There are so many ways to get online these days that the excitement for offline is truly puzzling. Until you consider the one place that is still largely an island of missing connectivity: The plane!

But planes are not a very common hang-out spot for most people. The two major groups of people who are on a plane often enough to care and have an interest in web applications are traveling salesmen and techies who go to too many conferences.

As some commenter already noted in that blog post, this is all good and well until you try to work abroad and get charged exorbitant roaming charges, or do work anywhere outside the western world. It is also sometimes nice to purposefully go to some remote location where one can work without any of the interruptions and procrastination excuses a working internet connection automatically brings.

These situations are why I still think the idea of offline applications is a good one, as long as making them doesn't unnecessarily complicate application development. Doing it on the Ajax layer is one option.

Another option is synchronization, like popularized in the Lotus Notes replication feature. With synchronization, the application always uses a local data repository, and a separate tool keeps moving data back and forth with a central server whenever user has a connection available (or specifically requests it).

There is a standardized synchronization protocol available: Open Mobile Alliance's Data Synchronization (OMA DS), which was formerly known as SyncML. However, implementing it is fairly difficult without a SyncML toolkit like Funambol. Because of this, other protocols like IMAP or WebDAV are also sometimes used.

Midgard's approach to synchronized setups is to provide strong data import and export capabilities on the framework level and then allow the actual replication tools to be written on application level. The current implementation includes data synchronization via HTTP and email implemented in PHP. Something like OpenSync, Conduit or Funambol would probably make sense later, especially if Midgard starts to become more of a replicated persistent storage system for desktop applications as I predicted in my presentation in Kristiansand.

Offline data access is especially important for mobile devices, which is why I find it very inconvenient that most applications for Nokia's N800 tablet assume an always-connected model. For example, Canola doesn't cache podcasts locally, Rhapsody music is only available when online. Similarly, there still isn't a proper offline RSS reading capability. I was using Maemo Mapper for navigation when driving to the Utsjoki hunting trip, and quite often map downloads failed because GPRS/3G connection broke somewhere in the countryside.

So, in my view offline capability is still very important for any application that is useful when traveling. Internet access may be quite well available inside cities, but still in countryside or in tunnels connection can be really bad. If development tools like Midgard make building offline functionality into apps easier this will hopefully become more common.

Midgard Weekly Summary #71: April 5th 2007

Posted on 2007-04-05 16:08:09 UTC to . 0 comments.

  • Midgard developer meeting on June 1st - 3rd. The next Midgard developer meeting will be held in Helsinki University of Technology campus. Both developers and users are most welcome to join the event! There have been some thoughts of combining it with a Midgard seminar during friday the 1st.

  • MidCOM style editor preview. Arttu Manninen has posted information on the new MidCOM style editor. The style editor helps MidCOM site builders to customize output templates of the system to their needs. The editor is available in the MidCOM 2.7 branch

  • Midgard 1.8.3 preview out. Piotr Pokora has published a preview of the upcoming 1.8.3 release into the developer downloads section. The new release fixes some command-line PHP usage issues and adds features to the replication interface

  • Lots of other things are also happening. Recent commits have included things like user-provided rating support for any Midgard object, new replication services and initial Mono bindings. Some of these will be featured in the next MWS issue. Keep the suggestions coming!

About Midgard

Midgard CMS is an Open Source Content Management System built on top of the Linux, Apache, MySQL and PHP (LAMP) platform. It provides a reliable, powerful and internationalized set of tools for building web sites and networked applications.

Midgard utilizes PHP as the web scripting language and provides integration interfaces on Java and C layers. Midgard's unique architecture enables it to provide services like single sign-on and replication. With these capabilities and the integrated full-text search system, Midgard is an excellent match for information-rich web sites and intranets.

Places to see Midgard in Action:

About MWS

Midgard Weekly Summaries is a newsletter for keeping up with the happenings in the Midgard community.

The new MWS editions are edited collaboratively to make the editing burden easier. To suggest stories here bookmark them with del.icio.us tag "midgardweeklysummary". Screenshots may also be suggested by tagging them with "midgardweeklysummary" on Flickr.

Royal Enfield: Built Like a Gun

Posted on 2007-04-05 16:28:13 UTC to . 0 comments.

My Triumph Legend TT, which has been a trusty companion on various adventures, had an engine failure last summer. As a result, I've been without a working motorcycle for almost a year.

This week finally things changed, and I bought a brand new Indian-built Royal Enfield Bullet. I've been drooling after this simple and beautiful bike for years, but have been hesitant. Finally last summer's Death Monkey rally with the 50cc mopeds convinced me that motorcycle adventures can be enjoyable also on a less powerful bike.

220 kilometers later, I can say I'm already very happy about the purchase. While the Enfield isn't really a bike for quick dashes through Germany on the Autobahn, it compensates by happily thumping along on an enjoyable pace on the country road. And it is gorgeous too:

Enfield-On-Kaivopuisto-Shore

The durability of the bike remains to be seen. Based on various trip reports, it seems the bike breaks often but is easy to fix, which should suit my traveling style and locations quite well.

Update: For those wondering about the fate of my trusty Triumph, it is now being fixed and will be ridden by Juha.

Technorati Tags: , ,

Jaiku: personal presence aggregator

Posted on 2007-04-10 07:58:55 UTC to . 0 comments.

This morning I've been exploring the Jaiku service. Jaiku is a combination of a social web service and a mobile phone application that takes the personal status and presence ideas of Twitter quite a bit further. The idea is to combine data from various services to provide a presence feed that can be shared with friends and colleagues.

Personal-Presence-Aggregation-JaikuPersonal-Presence-Aggregation-Midgard

Marko Ahtisaari writes:

For me Jaiku is about:
  1. Silent sociality - checking up on what my friends are up to when convenient, and posting my own state knowing that I won't be disturbing others (unless they have explicitly asked to be alerted).
  2. Small-group sociality - Jaiku is not about celebrity. I'm interested in sharing state with a small group I'm nearly always in contact with, what Mimi Ito has called full-time intimate community.
  3. Mobile sociality - Jaiku was designed with the mobile "living phonebook" interface in mind. SMS alerts crowding the inbox of one of the few working personal and functional communication channels is not my idea of improving communication. I use the SMS-in posting to Jaiku when I'm using my Nokia 8800 and with my N70 I use the Jaiku phonebook.
  4. Background sociality - Jaiku allows me to integrate other online identities and feeds (including delicious, flickr and any RSS) into my single jaiku presence feed. This is done in a way that doesn't confuse these background posts with my explicit state messages.

My website is already doing much of that, combining my blog posts, Twitter status messages, Plazes locations and Flickr pictures to a central place. However, not everybody can set up a Midgard site for personal information management, and so a web service is definitely useful.

In addition to regular presence and feed aggregation, Jaiku does a lot of innovative things. The mobile phone application uses Bluetooth personal area network to display information about nearby users, and apparently can also use the phone's calendar to set status automatically. This is very smart use of context, and something I hope mobile applications would start doing more.

Jaiku can utilize geographical location of users, but I'd love to see integration with the Plazes network and/or pulling of the location information from my GeoRSS feed. Jaiku already is smart enough to pull my social network from Google Talk contacts, so there is hope that they will be smart enough to also reuse existing position information.

Twitter is a bit ahead in the 3rd party tools game, but now that Jaiku finally has an API I expect more tools to appear. I think I'm switching.

Technorati Tags: , ,

European Haidong Gumdo championships in Zürich mid-June

Posted on 2007-04-10 14:36:55 UTC to . 0 comments.

European Haidong Gumdo association is arranging the first European championships of Haidong Gumdo in Zürich, Switzerland on June 15th - 17th.

We will attend with 5-7 persons. I'm participating in the geombup (basic forms) and paper cutting competitions in the color belt series.

Hdgd-Eu-Championships-Poster-Small

The current plan is to ride to Zürich with my new Enfield, and then enjoy the alps for a week or two afterwards.

In related news, there are some nice new videos from our Haidong Gumdo club: paper cutting, swordfighting display and full HDGD demonstration.

Technorati Tags: , ,

More work on Midgard's replication service

Posted on 2007-04-11 12:29:22 UTC to . 0 comments.

Midgard's new replication service has been under work since January. Now the work is finally starting to bear fruit, as we're doing the first tests with real production data.

This week lots of functionality has been added to the system, including scheduled replication runs (for scheduled publication) and a nice debug view for seeing the replication status of an object:

Midcom-Replicator-Debug-Log

This view should make it easier to figure out what replication actions have been undertaken with the object. In the example above, the object was imported twice from an external source (probably two edits), and then also exported twice for a replication queue. The queue however has not yet been processed and so the object is still not fully replicated to the external service.

The replication queues are managed in a user interface on the MidCOM site itself. Site administrator can set up multiple replication pipelines including archival or emailing of backups and HTTP-based replication to remote hosts:

Midcom-Replicator-Manage-List

Updated 2007-04-12: Replication seems to work quite fine, but we're still running tests with it. Those who want to play with it will benefit from the setup instructions draft.

Technorati Tags: , ,

Midgard Weekly Summary #72: April 13th 2007

Posted on 2007-04-13 12:14:54 UTC to . 0 comments.

Today is the Accident Prevention Day in Finland.

About Midgard

Midgard CMS is an Open Source Content Management System built on top of the Linux, Apache, MySQL and PHP (LAMP) platform. It provides a reliable, powerful and internationalized set of tools for building web sites and networked applications.

Midgard utilizes PHP as the web scripting language and provides integration interfaces on Java and C layers. Midgard's unique architecture enables it to provide services like single sign-on and replication. With these capabilities and the integrated full-text search system, Midgard is an excellent match for information-rich web sites and intranets.

Places to see Midgard in Action:

About MWS

Midgard Weekly Summaries is a newsletter for keeping up with the happenings in the Midgard community.

The new MWS editions are edited collaboratively to make the editing burden easier. To suggest stories here bookmark them with del.icio.us tag "midgardweeklysummary". Screenshots may also be suggested by tagging them with "midgardweeklysummary" on Flickr.

Maemo Downloads is again open for business

Posted on 2007-04-16 11:25:56 UTC to . 0 comments.

Maemo Downloads, the application catalog for Nokia internet tablets is again open for business.

Maemo-Application-Catalog-Front-Page

For some time users have not been able to authenticate to the service with their Garage accounts to add or update applications, but this has been fixed now. The problem was incorrectly configured access controls in the Garage postgres database. So, please go ahead and update any apps that have been changed in the meanwhile!

In addition to fixing the authentication we have also added support for rating and commenting applications. For example, see the Maemo Mapper entry:

Maemo-App-Catalog-Ratings-Detail2

The ratings differ from some other rating systems in the sense that every rating is accompanied by a comment and the name of the person who rated the app. To rate applications, log in to the catalog.

In near future we will start using rating as a sorting (and possibly filtering) criteria on the site.

Technorati Tags: , ,

Why Jaiku beats Twitter

Posted on 2007-04-17 07:36:27 UTC to . 0 comments.

Since Midgard is now able to import my Jaiku presence information, I've finally switched to it completely from Twitter. Since the discussion about the merits of these two different services are being discussed actively, I though I should give some of my reasons:

  • Jaiku cleanly separates comments from presence, keeping it clear what is your current status, and what a discussion is about

  • Jaiku is able to import external presence-related data like my blog entries, Flickr photos, Youtube videos and Plazes tracks as they come online, but also these are separated from the actual presence updates (or tweets, if you prefer the term)

  • Jaiku is based here in Helsinki, Finland. This means it is so much easier for me to meet them if I for example want to discuss some integration ideas in the future

  • Jaiku makes it much easier to invite my contacts to the network. Instead of requiring me to hunt email addresses, I can just log into Google Talk via Jaiku's site and automatically invite all my buddies

  • Jaiku gets more than just the web. I love the idea of adding presence information to my mobile phone's phonebook. This way I can check that I won't be disturbing people before calling them, and opt for sending an unobtrusive SMS instead

  • The mobile phone app gets contextual information as well, apparently marking me as busy based on my calendar reservations. I wish it updated my location from Plazes as well, though

  • And finally, Jaiku is slightly prettier

The areas Twitter wins in, on the other hand, are:

For me, the advantages Jaiku gives are clearly bigger than the ones Twitter has. This means that the status data on my site now comes from there, and people wanting to keep in touch are more than welcome to add me as their Jaiku contact.

Updates to the Midgard roadmap

Posted on 2007-04-23 13:51:56 UTC to . 0 comments.

There has been discussion on some changes to the near future roadmap of Midgard and MidCOM. Here are the proposed changes in nutshell:

Flight visualization with Google Earth

Posted on 2007-04-23 20:09:29 UTC to . 0 comments.

This is probably old news to many, but Google Earth is a very nice tool for visualizing flight track logs. I went yesterday to the Helsinki-Malmi airport, intending to go to the traffic circuit for some landing practice with the club's "moped Cessna". Instead, through the magic of the old airport, my plan was changed into flying another plane for maintenance to Joensuu, 500 kilometers away.

I had bought a BGT-11 GPS data logger mainly for OpenStreetMap surveying usage, and this proved to be a nice trip to really test it. I placed the device on top of the plane's dashboard and just left it logging the whole trip. Later I converted the logs via GPSBabel to a format suitable for Google Earth. Here Google Earth is showing me take off from Malmi runway 36 and turn towards the DEGER reporting point:

Googleearth-Takeoff-Efhf

Approach from Liperi and landing at Joensuu runway 28:

Googleearth-Landing-Efjo

Since Google Earth can also place photos I took on the flight to the map and "play" the flight, the GPS logs become a very nice way to tell trip stories. I will definitely keep taking the logger with me on future trips. There even is a solar charger to keep it running.

The flight was very nice also without the techie aspect. Weather was clear and beautiful and the flight over the lake district with the sun hanging already low, gilding the numerous lakes was memorable. Here is the Joensuu airport at sunset:

Efjo Sunset

Technorati Tags: , ,

In case somebody practices Kendo...

Posted on 2007-04-26 19:22:15 UTC to . 0 comments.

I'm selling my old bogu (kendo armor) on Huuto.net:

Kendo-Bogu-For-Sale

It has been gathering dust for last couple of years, and now it looks like I won't be making a kendo comeback because I'm quite taken with Haidong Gumdo. Besides, it is better to de-clutter since I'm moving soon.

I originally bought the bogu back in 1999 when I was practicing Kendo in Helsinki University Kendo Club.

Technorati Tags: ,

Midgard Weekly Summary #73: April 27th 2007

Posted on 2007-04-27 14:53:40 UTC to . 0 comments.

This week has been busy with Midgard-related releases. The MidCOM 2.8 and Midgard 1.8.3 combo is very enticing, as it enables trying out the new replication system.

About Midgard

Midgard CMS is an Open Source Content Management System built on top of the Linux, Apache, MySQL and PHP (LAMP) platform. It provides a reliable, powerful and internationalized set of tools for building web sites and networked applications.

Midgard utilizes PHP as the web scripting language and provides integration interfaces on Java and C layers. Midgard's unique architecture enables it to provide services like single sign-on and replication. With these capabilities and the integrated full-text search system, Midgard is an excellent match for information-rich web sites and intranets.

Places to see Midgard in Action:

About MWS

Midgard Weekly Summaries is a newsletter for keeping up with the happenings in the Midgard community.

The new MWS editions are edited collaboratively to make the editing burden easier. To suggest stories here bookmark them with del.icio.us tag "midgardweeklysummary". Screenshots may also be suggested by tagging them with "midgardweeklysummary" on Flickr.

Conferences this summer

Posted on 2007-04-27 18:40:14 UTC to . 0 comments.

This summer I will be at these events:

Between these, some GeoRSS aggregation initiatives and the GeoClue for Maemo Google SoC project that I mentor, the summer will be quite geographically oriented. Which sounds like fun :-)

Solution to slowness of my site coming

Posted on 2007-05-05 09:44:34 UTC to . 0 comments.

I'm really sorry for the state my site has been in for the last month or so. The server I'm hosted on is really starting to decay.

As good news, I will be testing a new virtual server from Kotisivut.com next week, and will hopefully be able to move there soon. I'll be sharing the new Midgard server with at least kaktus.cc

Two new Midgard sites: Maemo and Mupe

Posted on 2007-05-05 12:23:27 UTC to . 0 comments.

We helped to launch two interesting new Midgard-powered sites yesterday.

Maemo-New-Site

Maemo is the Linux software platform for Nokia's Internet Tablets. The new site includes many interesting functionalities like an application catalog, blog aggregator and a wiki. User accounts are integrated with Maemo's Gforge installation.

Mupe-New-Site

Mupe is a platform for building games and other connected applications for mobile phones. The site includes a wiki, discussion forum, application catalog with ratings and user account registrations.

Both sites will hopefully serve as good resources for their user and developer communities.

Technorati Tags: , , ,

Building a new admin interface for Midgard

Posted on 2007-05-06 10:16:50 UTC to . 0 comments.

We had a 19-hour hacking session last Friday with Arttu, Rambo and Jerry to build new "general Midgard admin UI" targeted at replacing Aegir and Spider Admin with something that follows both MgdSchema and MidCOM DBA rules and APIs, and so is compatible with Midgard 2.

Now it can:

  • Browse trees of any (properly configured) MgdSchema objects
  • View and edit any MgdSchema object with an autogenerated "semi-smart" DM2 schema
  • Manage linked fields between various types using Universal Chooser (search-based selection)
  • Delete objects (without tree awareness so far)
  • Create new objects under existing objects (not yet root-level objects)
  • Manage metadata and parameters

Asgard-Edit-Style-Element-1

You could see this as a continuation with Tarjei's Aegir2 ideas, but with three significant differences:

  • Now Midgard provides much better information via the reflector APIs for building trees and schemas
  • Asgard is a single component instead of bunch of components to keep installation easy
  • The user interface has been designed to degrade gracefully for text-based browsers

There is still much work to do, but I think generally it can already be used to replace Spider to some degree. To try it out you need to install 1.8.4 from the developer tarballs, install MidCOM from SVN and then go to http://www.example.net/__mfa/asgard/object/edit/GUID/

If our plans succeed, Asgard will be the default administrative interface in Midgard 1.9 series.

Technorati Tags: , , ,

Midgard Weekly Summary #74: May 11th 2007

Posted on 2007-05-11 12:30:42 UTC to . 0 comments.

  • Asgard reborn. Work has started to build a new administrative interface for Midgard. Asgard is completely powered by Midgard's new reflection APIs and automatically supports managing all MgdSchema objects installed on a server

  • Midgard on Maemo. Piotr Pokora has successfully ported Midgard 2 to the Maemo platform used for Nokia's Internet Tablets. This will open way for building mobile and replicated Midgard applications

  • Midgard Python bindings on their way. Python bindings will eventually help making easy desktop applications that use Midgard as their data store

  • Midgard developer meeting on June 1st - 3rd. The next Midgard developer meeting will be held in Otaniemi, Finland. There is still room for some interested Midgard users and developers

About Midgard

Midgard CMS is an Open Source Content Management System built on top of the Linux, Apache, MySQL and PHP (LAMP) platform. It provides a reliable, powerful and internationalized set of tools for building web sites and networked applications.

Midgard utilizes PHP as the web scripting language and provides integration interfaces on Java and C layers. Midgard's unique architecture enables it to provide services like single sign-on and replication. With these capabilities and the integrated full-text search system, Midgard is an excellent match for information-rich web sites and intranets.

Places to see Midgard in Action:

About MWS

Midgard Weekly Summaries is a newsletter for keeping up with the happenings in the Midgard community.

The new MWS editions are edited collaboratively to make the editing burden easier. To suggest stories here bookmark them with del.icio.us tag "midgardweeklysummary".

Welcome to the new server

Posted on 2007-05-23 13:52:38 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

My blog is now running on a Kotisivut.com virtual Debian box. It should provide much faster response times and better stability for my blog than the older solution. I will be sharing the server with Arttu from kaktus.cc.

Switching to a new server environment also brings the possibility to run PHP5 instead of PHP4, and use a Squid cache front-end. Squid is useful as the virtual server itself is quite slow.

Old setup:

Apache/1.3.34 (Debian) Midgard/1.8.2 mod_gzip/1.3.26.1a PHP/4.4.4-8 mod_ssl/2.8.25 OpenSSL/0.9.8c

New setup:

Apache/2.2.3 (Debian) PHP/5.2.0-8+etch4 Midgard/1.8.3

Thanks to Torben for hosting me for the past couple of years!

Time to pack

Posted on 2007-05-25 18:08:48 UTC in 60° 9.528 N 24° 56.556 E Helsinki, FI to . 0 comments.

It is time to move and I'm packing my things. I loved the "little family" we ran for a while, the view we had over the roofs of Helsinki, and living in close proximity of some of my friends that enabled shared sauna evenings.

However, the Five Corners apartment was part of a relationship, and together with it, it must go. I really wonder where all the stuff has come from, though.

Packing Five Corners Away

The new apartment seems very promising: a spacious bachelor pad in the Töölö district near some nice cafés and sushi bars, and of course the beach.

New Museokatu Apartment

I'm renting the apartment furnished, so this part of the move will be reasonably easy. More difficult will be consolidating Kerttu's stuff from Five Corners and her Turku place to Malminkartano.

Technorati Tags: , , ,

Diners Club going Social Web?

Posted on 2007-05-29 09:27:03 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

I recently logged in to the Diners Club extranet to check the credit card balance after our trip to Provence, and noticed a new feature there. They had picked some restaurant bills from my credit card statement and asked for me to rate them in a very typical Web 2.0 fashion:

Dinersclub-Ratings-Extranet

It will be interesting to see what they will start doing with the ratings. Netflix-style recommendations of restaurants people with similar tastes like would actually be quite useful.

A question however is whether just silently providing this rating feature on their site is enough for getting people to rate restaurants. Maybe they could query for ratings in their newsletter a bit like Netflix also does.

In any case, making a mashup of the ratings from Diners Club and location and opening times information from eat.fi would make a perfect "where to go for lunch?" solution.

Technorati Tags: , , , ,

Midgard uses Trac now

Posted on 2007-06-02 16:33:40 UTC in 60° 11.178 N 24° 49.956 E 6km NW of Helsinki, FI to . 0 comments.

We've just switched Midgard and MidCOM to use the Trac project infrastructure. Seems very nice, especially as it uses Midgard site accounts for authentication.

Browse it in http://trac.midgard-project.org/

Making public transport easier through open data

Posted on 2007-06-05 14:25:00 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Public transport is efficient, cheap and quite green, which is why I've been very happy about new services hitting Helsinki Public Transport, like WiFi connectivity, and of the fact that nowadays it is possibly to wait for Espooi buses comfortably inside and underground. However, having used public transport in dozens of cities and countries, I'd say the biggest hindrance to adoption is the difficulty of making connections between transport options.

In the Helsinki area we have the excellent YTV route planner:

Ytv-Route-Planner

The issue with this route planner is that it only covers the four cities that are part of the YTV alliance. If I want to leave from my home, go to the city of Tampere, and to a specific location there I'd need to use three different journey planners: first the YTV planner to get to the station, then the VR train schedule finder for a correct train, and finally use whatever journey planner is available for Tampere, if any. And all of these have different user interfaces and different usage logic.

This kind of long-distance journey planning is something car navigation software has been good at for a long time. If I want to drive from Stockholm to an address in Milan, I just enter the end points and the navigation software calculates me a proper route. Sometimes the results can be funny but generally this approach works for drivers, especially to ones with GPS navigators.

Curitiba-Public-Transport-System

Google Transit is trying to fulfill the need for a common public transport route planner that would work between different cities and countries, but so far very few places are in it. This is probably mainly a political issue, as Google's format should be reasonably easy to support for any city transport system that is reasonably computerized or reliable.

While providing the data to Google would be a great first step for a centralized route planning system, I'd like to advocate for governments to take a step further: provide the data in an open format to some public entity. For example Geonames or Internet Archive could work as the central public transport data repository usable by any software developer.

Helsinki-Koff-Pub-Tram

This would enable competition between journey planners, innovative user interface development, and bringing the data to mobile devices like phones or internet tablets.

I believe Finland, with its reasonably good public transport system, should take initiative in this. If the nation-wide public transport route information was available to software developers, an enormous amount of competence in this would arise and be ready to enter international markets when other countries follow suit in opening their data. In addition to national software economy, this would also boost tourism by making the country easier to travel in.

Updated 20:05Z: I was informed on #maemo that such centralized route planner has recently been released for Finland: matka.fi allows Reittiopas-like routing with public transport in the whole country. The database doesn't seem to be fully complete, yet, and so sometimes it suggests quite long walks or taking a cab. But a good start, definitely:

Matkafi-Route-Planner

Technorati Tags: , ,

When a holiday gets "interesting"

Posted on 2007-07-04 22:19:10 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

My holiday motorcycle trip of this summer was an interesting one, in the Chinese sense. The plan was to first ride to Switzerland to attend the first Haidong Gumdo European Championships, and then continue from there together with Juha to Montenegro. As it happens, Juha never got his motorcycle working, and my trip was filled with various adventures and misfortune, but also with friendly people and beautiful scenery.

I left Helsinki on June 9th, heading south following the Via Baltica. My first stop was to Lodz to meet Piotras, the Midgard core guy. From there I followed the nice, curvy country roads of Poland to see Natka and her new country-house near Jelenia Gora.

In Pokrzywnik

Unfortunately I lost the sense of what bike I was riding, resulting to a tumble in a dark, tight corner. So, the next day was spent repairing the bike and getting my arm x-rayed.

From Silesia my trip took me to Czech Republic, and I stopped for the night in the city of Karlovy Vary, destined to be the site of the worst adventure of the trip. I went out for dinner, after which I ran into a local girl who invited me to join her for a drink. Soon we were joined by another local woman. After some chat with them, and a couple of drinks, I suddenly lost consciousness.

The next thing I realized was that I woke up in hospital, filled with plugs and pipes, cell phone and Nokia 770 stolen and with no idea of what had happened. Apparently my drink had been spiked. I was struck with paranoia and just wanted out and away. The staff didn't speak English, but after some attempts I was able to convince them in a combination of German and Russian to let me leave. Once out, I took off towards the border as quickly as I could.

In Switzerland I was able to get a new cell phone, and got a rather unpleasant call from my credit card company: the thieves had withdrawn 9,900 EUR (about 13,500 USD) from my card, and the company wanted the money back. I'm still wondering what to do about this, as insurance doesn't protect from it.

Hdgd Championships Swiss Sworddancing

The Haidong Gumdo championships themselves were a well organized and nice event. While my personal performance was hindered by the aftereffects of the drugging and lack of practice on the trip, Team Finland brought home two medals and we had a lot of good time meeting Haidong Gumdo practitioners from other countries. The Night of the Sword gala contained some of the most amazing swordsmanship I've ever seen, although the video doesn't do it full justice.

After the competition I stayed at Michi's place, chatting about various things and getting some encouragement to continue the trip despite the catastrophic drink-spiking incident that had left me without credit cards and feeling physically very weak. At this point it became apparent Juha wouldn't be able to join me, so I switched Montenegro for riding back home via Hungary and Romania.

The next two days were pleasant riding in the Alps. Old towns and castles, mountains and curving passes.

18062007075.jpg

But after visiting the Neuschwanstein castle, misfortune again caught up with me, this time in form of an engine failure. A valve seat had became loose, making piston and exhaust valve collide. This obviously required new parts, leaving me looking for Enfield shops in Bavaria. With the help of my "ground staff", I got the bike towed to Iwan-Bikes, the Enfield dealer near Munich. They had the parts needed, but not the time so we made the deal that I would disassemble the cylinder head, and they would change the parts and put the bike back together. Two days after the engine failure I was back on the road, riding in Austria.

After rainy and a bit cold Austria, entering sunny Hungary was a pleasure. I stayed with Ferenc's family at the lake Balaton, enjoying swimming, local cuisine and home-grown wine.

Bergie Resting At Lake Balaton-1

Romania showed itself to be quite a contrast to the Hungarian plain. Coming from a hot, flat land, I was suddenly again riding in mountains. A fascinating country where almost half of the traffic consisted of horse carriages. In the border town of Suceava I felt a bit torn: whether to head home, or make a detour through Moldova and Transnistria to Odessa. Following the old guideline of "A pig who doesn’t fly is just an ordinary pig", the decision was easy. But again fate took part in the game.

I was riding in the borderlands between Romania and Moldova when the engine decided to stop again. Luckily a border patrol was close and helped me to get the bike towed to nearest city, which in this case happened to be Iasi. After a night in one-star hotel I limped the bike to nearest car repair shop. They didn't understand much about bikes there, but the shop's owner was very friendly and helpful. Some phone calls were made, and soon I was in a motorcycle repair shop explaining the problem.

26062007134.jpg

The guys started working on the bike immediately, and after couple hours said I could ride. I thanked them, packed the bike and headed west through the city. But in two kilometers the engine failed again, and I limped back to the garage. A new repair attempt was made, more successfully this time, but as it was already late the guys invited me to stay with them and to go to a gathering of local bikers.

I spent the night drinking and chatting with the group, and in the morning left with the bike towards Ukraine, the rest of the trip going without incident. I visited Lviv, a city I had seen the last time during the Orange Revolution, and then crossed to the Polish side of the border.

Riding To Sunset In Ukraine

Riding in Poland already felt almost like home, and soon I was back on the familiar Via Baltica, taking me through Lithuania, Latvia and Estonia to the port of Tallinn, and on a ferry to home. At this point getting back felt really welcome, as can be imagined.

More photos can be found in my Flickr gallery.

Technorati Tags: , , , , , ,

Making Midgard Wiki easier

Posted on 2007-07-09 14:10:02 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Since Maemo.org started using the Midgard wiki component there has been discussion on whether it is feature-complete or easy enough to use. Main complaints have been about the "latest changes" view not supporting sub-wikis and missing Markdown documentation.

Latest updates are now shown in a way quite similar to MoinMoin:

Wiki-Latest-Updates

Markdown should be easier to edit with the toolbar:

Wiki-Markdown-Toolbar

Markdown syntax reference is available by clicking the help icon in the top-right corner of the toolbar:

Wiki-Markdown-Cheatsheet

The Markdown toolbar is based on Control.TextArea and is available to any datamanager2 field using the "markdown" widget type. Similarly, the "Change message" field is a regular text field of type "rcsmessage" that will update the revision control service.

Updated 15:24: Since preview was also a popular request I've added that too:

Wiki-Preview

Note: this has been tagged to appear also on Planet Maemo since the changes discussed here were requested by them.

Technorati Tags: , , ,

Midgard and international URL transliteration

Posted on 2007-07-10 13:42:06 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Midgard has been an early supporter of internationalization in open source CMSs, adding UTF-8 support already in 1999. Today I however got an innocent request:

One thing to be considered is i18n and Unicode support, since the community wiki is the perfect place to host translated docs.

I was quite confident that things would work out OK, but knew that the Wiki component had had only minimal internationalization testing and so could have had issues. So I went and created some pages in Russian, Georgian and Arabic. So far so good:

Wiki-Russian

All Wiki functionality worked as you would expect. Wiki links, Markdown formatting, backlinks, even version comparisons:

Wiki-Arabic-Diff-1

One issue remained, however: MidCOM has functionality for generating nice, readable URL names from object titles. This functionality depended on the PECL translit extension which, in our tests, proved to be troublesome with some languages.

After a bit of googling we ran into the PHP UTF-8 project, and more specifically to its utf8_to_ascii tool that is a PHP port of the Perl Unidecode package. This library was small enough to be bundled into MidCOM itself, removing the dependency of an additional PHP extension, and seemed to cope with various languages much better.

The results were not perfect, of course, but at least West European and Scandinavian languages, Russian, Polish, Greek, Maori and Amharic worked perfectly. Arabic, Hebrew, Chinese, Korean, Thai and Viet produced results that were possibly correct. Japanese (hiragana and katagana), Devanagari and Georgian did not work at all. A good start nevertheless. Here are some tests:

Utf8-Transliteration-Tests

Technorati Tags: , ,

Finnair's excellent SMS check-in service

Posted on 2007-07-13 11:21:58 UTC in 53° 28.734 N 2° 14.249 W Salford, GB to . 0 comments.

This is probably old news to most, but since I usually fly SAS my flight yesterday to Manchester for the State of the Map and GUADEC conferences was the first time I ran into Finnair's check-in SMS service.

I was sitting in a meeting about three hours before the flight and suddenly got a message to my cell phone:

FINNAIR check-in: AY937 Helsinki-Manchester 17.07.2007 departure 16:00 seat 15A window. Confirm by replying A.

Since this seemed like a useful service I replied, and immediately got a confirmation for the seat.

Finnair Embraer

At the airport I then dropped my bag to a luggage drop point, and just walked to the gate. No boarding passes or any other papers beside my passport were needed. And few hours later I was in central Manchester, looking for a hotel.

This is a very good way of providing an SMS service. The usual way these services work is that the user has to remember a number and an obscure syntax for typing the request. On Finnair's service this is not required as the SMS service is initiated from the service provider's end and user is clearly told what to do if they want to continue. Opting out is done by just ignoring the message.

And since probably most recipients of the message will find it useful, it doesn't get considered SMS spam.

Technorati Tags: , , ,

Notes from the State of the Map conference

Posted on 2007-07-15 15:35:39 UTC in 53° 28.776 N 2° 14.929 W Salford, GB to . 0 comments.

State of the Map, the OpenStreetMap conference was held this weekend in Manchester University, with about 100 attendees.

Manchester Humanities Lime Grove

OpenStreetMap is a project to create open content digital maps of the world. Most map data is currently closed and controlled by various organizations under copyright, making it unavailable or prohibitively expensive for open source or experimentative use. An open map can be used anywhere and kept up-to-date with the changing landscape quite easily.

In addition to creating street maps, OpenStreetMap, being a noncommercial entity can also map things that most commercial navigation companies are not interested in: many OSM contributors are focusing on mapping cycle or hiking routes and waterways. Free-maps is a site that even provides a hiking-oriented rendering of the OSM data overlaid with SRTM contours and elevation data from NASA. Something similar would be easy to do for motorcyclists, highlighting scenic areas and twisties.

Creating the map

What surprised me about OSM is how well the project is actually progressing. In the three years the project has been running, the number of contributors has risen on the same scale as Wikipedia in its first years. Here are some status reports of various countries:

  • United Kingdom is now at estimated 50% completeness, and the project has the target of finishing the country by mid-2008
  • Spain has been starting a bit slowly, but IGN, the national mapping agency recently announced support for the project which should bring the country to completeness quite soon
  • The Netherlands was boosted greatly by a Digital Pioneers grant to buy GPS units and arrange mapping parties, and now the main cities are quite complete. In addition, AND has donated complete map data for the country which will be imported to OSM soon
  • Bolivia has no national mapping agency and so is considering to use OSM as the authoritative map source used for elections

Openstreetmap-Amsterdam-20070715

Finland, unfortunately, is in a very early stage. Some of central Helsinki, and some main roads there, but most of the country is still Here be dragons territory. More publicity and some support could however boost this quickly. As an example, The Netherlands was still in the same stage four months ago.

OSM on mobile devices

We held a speech together with Andrew Turner of High Earth Orbit about GeoClue and position-aware services on mobile Linux devices. Linux devices like N800 and Neo1973 are available now, and GPSs are appearing more and more mobile devices.

But what is largely missing is position-aware services for them. Of course, most of them can browse maps with tile-based tools like Maemo Mapper. But where things will get interesting is when the publicly-available geodata and the position of the device are brought together to enrich various applications and services on the device.

The GeoClue project was started in order to make position information easily available for application authors. A simple D-BUS query, and the application can get the location of the device regardless of whether it comes from GPS, Plazes or some other service.

Geoclue-Architecture

KDE has also been working on some location-based tools and services for their desktop, built around the Marble map viewer. Hopefully we can share the efforts in the freedesktop community.

Route planning with OSM

In addition to being community-created and open, the OSM map data has one huge advantage towards using Google Maps and the like: it is vectors with proper metadata instead of just map tiles.

This means OSM data can be downloaded to a device and used for route planning. Gosmore is the first project that appeared to this space.

Routing with the data is reasonably easy by ditching data that is not relevant to routing (like buildings), and then running through the street network with either Dijkstra or A* algorithm, giving "distance penalties" for road segments depending on their type and speed limit.

A project in Norway had improved on this by implementing the concept of evaluations of road segments by special interest groups. For example, wheelchair users could evaluate roads on their suitability for travel by wheelchair, and then future routes of all wheelchair users would take these into account.

Maemo Surveyor

With current surveying tools and editors creating OpenStreetMaps is quite slow, especially for new contributors. An estimate was made that per each urban community of 1000 inhabitants, an hour of surveying and hour of tagging would be needed.

This statistic brought some discussion of having better tools for map-making. Our take on that would be the idea of a Maemo Surveyor, a mobile application recording the GPS tracks and enabling the user to tag them with road types and provide either a typed name, a voice note or a photo of the road sign.

The application would keep this in the OSM XML format to enable things like live Mapnik rendering in the future and make it easy to upload the data directly to OSM.

Maemo-Surveyor-Sketch

Now the app is just in mockup format but I believe it should be quite easy to implement with Glade, Python and GeoClue.

After our talk I got some interesting comments and ideas for the Surveyor application. A research group in Norway is thinking about sharing the mapping work over a Bluetooth or WiFi network: "I'll look up street names, you write down speed limits".

Similarly, there was an archeologist who commented that using more accurate surveying GPSs, the same surveying application with a different set of pre-set tags could be very useful in mapping dig sites. The OSM format would even make it very easy to share and visualize maps of various sites.

I'm looking forward to getting hold of a copy of Glade to play with the ideas.

Completely unrelated, I learned that reversing the colors on MacBook screen with the Ctrl-Alt-Command-8 key combination can make the battery last a lot longer.

Updated 2007-07-16: Slides from our GeoClue talk are now available:

See also Mikel Maron's or Andrew Turner's conference notes and the conference group shot.

Maps in Midgard, abstracted

Posted on 2007-07-16 11:06:20 UTC in 52° 28.758 N 1° 54.224 W Birmingham, GB to . 0 comments.

We had some discussion about what features make CMS a GeoCMS with GeoPress and Drupal geo developers in State of the Map, and a list should be published soon. Based on our discussions I decided that Midgard should also make it easy to actually display positioned data on maps.

To make this happen, the Mapstraction javascript library was chosen. Mapstraction is nice in that with it site builders can use same API to display maps from OpenStreetMaps, Google Maps, Microsoft Virtual Earth or other providers.

During train ride from Manchester to Birmingham I made a quick PHP wrapper to make map display even easier.

Now to display an object on a map site builder only needs to do:

<?php
$map = new org_routamc_positioning_map('my_example_map');
$map->add_object($article);
$map->show();
?>

Multiple objects and arbitrary map points can also be shown:

// Add some positioned objects
$map->add_object($article);
$map->add_object($another_article);

// Add arbitrary marker
$marker = array
(
    'coordinates' => array
    (
        'latitude' => 52.4827,
        'longitude' => -1.89739,
    ),
    'title' => 'Bergie',
);
$map->add_marker($marker);

Grab it from SVN while it is hot!

GeoClue is appearing

Posted on 2007-07-20 21:03:22 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Last weekend and this week I've been off to State of the Map in Manchester and GUADEC in Birmingham to speak about the GeoClue project with Andrew Turner and Tuomas Kuosmanen.

GeoClue is a system for giving easy access to location information for applications over the D-BUS. Lots of people have shown interest in adding geographical awareness in their software, and I really think GeoClue is the right way to move forward, especially for mobile devices.

Geoclue-Large

Consider the following Python code to get current location:

# Access the D-BUS session bus
bus = dbus.SessionBus()

# Get an interface for the GeoClue master (which will talk to appropriate backend)
proxy_obj = bus.get_object('org.foinse_project.geoclue.position.master', '/org/foinse_project/geoclue/position/master')
geoclue_iface = dbus.Interface(proxy_obj, 'org.foinse_project.geoclue.position')

# Get the coordinates from the service
coordinates = geoclue_iface.current_position()

Caveat: the code might not work exactly like this, but instead may need a bit of tweaking. I'm sorry but I'm currently without an N800 to test on. C code in any case is as easy as:

gdouble lat, lon;
geoclue_position_init ();
geoclue_position_current_position (&lat, &lon);

Traditional methods to get location would require a lot more code and would be hardcoded to just one position source, like GPS. GeoClue can provide lots of different back-ends, including Plazes and HostIP in addition to the common gpsd.

While we were talking to application developers, Jussi Kukkonen, the Google Summer of Code student I mentor was also busy. He made a new GeoClue release, which is the first one to give the system a real UI. Good stuff!

Geoclue-Selecting-Backend2

Thanks to Jussi for the hard work, and to Andreas Nilsson for the GeoClue icon featured earlier in the post!

BTW, When I upgraded my blog to new layout and structure last January I left commenting out pretty much for the same reasons as what Joel Spolsky outlined in his post. People who really want to discuss my post will anyway either contact me by email or comment on Jaiku.

Technorati Tags: ,

Calculating news item relevance

Posted on 2007-07-25 12:38:54 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

I've started working on a new Social News section for maemo.org. The idea of this area is to provide a centralized view on what is happening at the moment in the maemo community.

Every day brings dozens of maemo-related posts via various channels, and keeping up-to-date with them requires a lot of time. The new social news section aims to fix this by providing a somewhat Digg-like news aggregator that will bring only the most interesting items to the top.

Interestingly, a new service called AideRSS went live today with quite much publicity. AideRSS is a new breed of RSS aggregator that uses various metrics to determine the relevancy of new items. This is what AideRSS says about most interesting stuff now on Planet Maemo:

Aiderss-Ranking-Planetmaemo

While I don't have access to their secret sauce, using a bit similar metrics I get quite similar results as well:

Org-Maemo-Socialnews-Ranking-Planetmaemo

The way the new org.maemo.socialnews score calculator works is that it looks for number of votes or links from various sources, gives them configurable weight, and then builds a relevancy value out of that. This seems to work quite well, although I guess I will end up tuning it quite a bit when we start syndicating larger amounts of data.

In any case, the next challenge is to combine the relevancy data of items and their tagging/categorization to build a newspaper-like page. Actually, feeding this data to a proper newspaper generator could make interesting results as well.

Technorati Tags: , , ,

Geoweb of the future

Posted on 2007-07-25 13:51:04 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Bruce Sterling is running a fictional geoblog Dispatches From the Hyperlocal Future on Wired. Much of it deals with the possibilities that the connection between GeoRSS, Microformats and neogeography with mobile devices will bring:

You see, the difference between the old-fashioned semantic Web and the new hyperlocal Web — that's hyper as in linked, and local as in location — is that the databases of the new Web are stuffed with geographic coordinates. Real positions. Real distances. So the bodyware I carry in my pockets and travel bag broadcasts its location to any device within earshot. (Of course, the RFID chips embedded in everything help the manufacturer get it out the door, but I programmed my own tags so I can't lose anything.) Roomware — that's houseware to you troglodytes who still live in houses — is the stuff that runs a hotel room. You know, the remotes that control temperature and unlock the liquor cabinet, plus the window overlay that displays the weather forecast and traffic conditions. Streetware is my mobile's navigator, plus social tags, ad filters, and all those black-and-white barcode blotches painted on walls like graffiti. Cityware is the next scale up. That's how the local government monitors traffic, chases down leaky water mains, and keeps tourists on the straight and narrow. Stateware, nationware, globalware — you get the idea.

Geopresence aggregation gets mentioned as well:

I'm dictating this entry — thank heaven for voice recognition — from the passenger seat of a Hyundai GPS-King careering along the Beltway. I downloaded a cool plug-in to block out the gas-food-lodging ads that hit my screen a quarter mile before each exit, so I'm free to concentrate. What do I care about lodging anyway? The best thing about being a top-tier geo blogger is that everyone knows where you are. When the buddy list tells folks you're in town, they ping to offer you dinner and invite you to sleep on the couch. They're my homies in a world where the entire planet is home. I love all you guys!

Much of the technology mentioned in the blog exists already today, but I guess it will be the blog's 2017 before the technologies are integrated and ubiquitous enough to really change our lives, cellphone-like.

Via Boing Boing.

Nicer code editing in Asgard

Posted on 2007-07-26 18:39:52 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Asgard is the new administrative interface being built for Midgard. The main objective is to get rid of the legacies of Aegir and SpiderAdmin by replacing them with a smart system that auto-generates admin UIs for all installed MgdSchema types. But small improvements also count, and so we decided to deploy CodePress for code editing:

Asgard-Codepress-Style-Editing

Syntax highlighting definitely makes life easier when editing site style with a browser. While we were at it, we also decided to guard against PHP parse errors, making it validation rule about it. Now the editing tool refuses to save until errors are fixed (needs localization message, though):

Asgard-Codepress-Parse-Error

Arttu also went and implemented CodePress for style attachments like CSS, Javascript and XML files:

Asgard-Styleeditor-Edit-Css

The Asgard user experience starts to be already quite nice, although the visual outlook could use love and some bugs still remain. I'm quite confident we can ship it as the default admin UI soon.

Technorati Tags: , , , ,

Next Midgard will be PHP5 only

Posted on 2007-07-31 07:56:18 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Support GoPHP5.org

It took us a while to get here, but Midgard is finally entering a release cycle which will drop support for PHP4. The reasons are quite clear: simplicity and speed.

The whole PHP4 end of life business has caused quite a bit of discussion in the PHP community. Especially Matt Mullenweg from WordPress has raised vocal opposition. Commenter Johan Delinger said well:

The problem of PHP 4 is its own success. Its so big of a success that it is hard to get people to the (sometimes incompatible) next generation versions. It is definitely the apps working with PHP 4 that drive people to use PHP 4, not PHP 4 itself. If crucial apps, like phpMyAdmin were developed for some other technology at their time, then that would become the de-facto everywhere installed programming environment to work with.

Why Midgard can choose

Midgard's situation differs quite a lot from most other PHP applications. Since much of Midgard works on Apache module and PHP extension space the users of the framework are not usually relying on hosting providers and their versions but instead run their own servers.

This makes us free to focus on the PHP version (and other dependencies) that work best with our framework. Midgard core developer Piotras has estimated that some Midgard functionalities like Query Builder will be substantially faster on PHP5.

An important point also is that the PHP part of Midgard is MidCOM, a quite large object-oriented component framework. While MidCOM has been possible to develop on PHP4, new OOP features in PHP5 will make the code much easier to develop and understand.

March to Midgard 2

Another reason for making the PHP5 switch now is that Midgard 2 is coming soon. I wanted to have a Midgard 1 series release requiring PHP5 before that just to play safe. Otherwise many users would find themselves trying to upgrade to PHP5 and Midgard2 at the same time, never knowing which one was causing a problem with their code.

On motorcycling

Posted on 2007-08-10 12:31:10 UTC in 60° 9.234 N 24° 52.782 E Helsinki, FI to . 0 comments.

My good friend Skoll recently wrote of the motorcycling life:

One of me favourite bands Manowar one sang "Riding horses made of steel". What kind of mental image does that provoke? Riding a Harley Davidson to sunset on an empty hightway, a beautiful young girl on your back seat? What a load of bullcrap! Motorcycling is about rain, it's about being soaking wet and freezing your ass off. It's about losing your friends in the traffic because you can see shit in the rain. It's about jams, about highways full of trucks and mobile homes and passing them being scared your ass off because there's no traction. It's about acheing shoulders, acheing back and numb ass. It's about water finally reaching your balls through your so called waterproof gear (yeah, I know, my pants are only water resistant). It's about waking at 6:30 am and driving 800 km.

Now, there have been times when the things above have been very true. But there have also been times when the biker's life has been closer to the initial mental image, including the nice ride to Porvoo yesterday.

Everybody is invited to make their own decisions on which view is more correct...

540763800_c5143baf1e_s.jpg 153040280_b6987a5e97_s.jpg 988753226_b542f68e3c_s.jpg 988695780_fb82586c9c_s.jpg 231697694_e0852ffdfe_s.jpg 987926197_73a7107500_s.jpg 231704621_0ad9e8bdb7_s.jpg

thumbnail_1026465122--helmetless-freedom thumbnail_IMG_4278 thumbnail_IMG_3175 thumbnail_1027727783--entering-the-dolomites thumbnail_1032208206--on-the-box-hill thumbnail_1028045618--bergie-on-the-col-d-san-bernardo

FTW!

Technorati Tags: ,

Maemo Social News launched

Posted on 2007-08-14 15:20:59 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Today has been a big day for maemo.org: not only was the Maemo Community Calendar released for beta testing, but we also launched the new Social News section on the site. Social news is an area where users can easily with one glance see all interesting things happening at the moment in the maemo world.

Maemo-Socialnews

We syndicate data from a lot of sources: official Nokia announcements, Garage project news, Tableteer, Flickr maemo group, YouTube maemo tag, Application Catalog updates, community blogs from Planet maemo and possibly in the future also ITT threads. However, Social News is not your ordinary aggregator. Instead of just showing everything in a single stream, we do some interesting relevancy calculation to determine what items are important at the moment and give those more prominence. Older and less prominent items slowly fall out of the news listing as time passes.

Relevancy-based display gives us a place where everybody can see the current topics. Social media is used for promoting items on the list. Here are some methods users can utilize the promote an item:

  • Comment it on the maemo.org site (applies only to Application Catalog and Announcements)
  • Add it to favorites on the site (by clicking the heart icon)
  • Digg it or comment it on digg
  • Blog about it and ensure the blog is listed by Technorati
  • Bookmark it on del.icio.us

The more work-intensive methods like commenting and blogging are given the greatest value.

In addition to the "current news highlights" list, we also keep track of all-time favorites (starting from about two weeks ago), which can be seen in the Best Of list:

Maemo-Socialnews-Bestof

Social News is currently being beta tested as we tune the relevancy algorithms. Feedback is obviously welcome.

Thanks to Lasse Larvanko and Andreas Nilsson for the design!

Updated 2007-08-17: Lasse has a very good write-up of the service in Finnish.

Technorati Tags: , , ,

Join the MidCOM Performance Sprint on August 30th

Posted on 2007-08-20 14:24:45 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

MidCOM is the PHP-level framework of Midgard CMS. With its nearly 500K lines of code, it every now and then is good to sit down and focus on performance optimization.

MidCOM has again gathered some heft, and so this year we have to do more:

Midcom-Performance-Sprint-Beforeafter

Lots of MidCOM code is still from the old Midgard 1.x API and PHP4 times. In MidCOM 3 we can build everything around modern Midgard API and PHP 5.2, which will make performance a lot easier. Some of the focus areas will be:

I have created bug #102 for keeping track of all performance-related commits originating from the sprint.

To make all of this happen, a group of Midgard hackers will gather on August 30th to Ingels in the Finnish countryside. Anybody interested is welcome to join us either on-site or over IRC. Obviously some PHP5 hacking skills will be required :-)

Everybody attending the sprint will get a cool Midgard t-shirt designed by Andreas Nilsson.

Technorati Tags: ,

Photos and "interestingness"

Posted on 2007-08-21 06:52:53 UTC in 60° 12.552 N 24° 56.778 E Helsinki, FI to . 0 comments.

I've been working on determining relevancy of news items recently. Something similar can be done to photos using the various metrics Flickr provides for interestingness, and not surprisingly, there is a service that enables you to do exactly this: Dopiaza's Flickr Set Manager.

I used the tool to generate a set of my most interesting pictures, but also a set of the least interesting. Usually a "top" list perpetuates the interestingness of the items, and I'm eager to find out whether the least interesting pictures are affected the same way.

Since my top photos are all geotagged, we can also see where my most interesting pictures come from:

Flickr-Top-Pictures-Map-20070818

Via Boing Boing.

Technorati Tags: , , ,

Speaking in FrOSCon PHP room

Posted on 2007-08-22 13:38:01 UTC in 60° 10.566 N 24° 55.338 E Helsinki, FI to . 0 comments.

FrOSCon 2007

This weekend I will be speaking in the PHP at Froscon track in FrOSCon conference in Sankt Augustin, Germany about managing your personal information space with Midgard:

Social web services like Flickr and del.icio.us provide new ways to work and share data with others. However, they also mean that your data is spread around dozens of services, companies and servers.

Midgard can be set up to act as your personal information hub, synchronizing your content with the various Web 2.0 services and displaying them in your own style as a mashup. This means your content can also be secure in a server you control.

You can connect the data from different services together and enrich it with data produced with Midgard's own components. Consider for example having the following play nicely together:

  • Blog entries coming from an external blog service or Midgard itself
  • Bookmarks coming from del.icio.us
  • Photos coming from Flickr
  • Videos coming from Youtube
  • Status messages coming from Twitter and Jaiku
  • ...all connected with geolocation data coming from Plazes and shared via RSS feeds and Microformats

In this session we look at how such a personal information space can be set up with Midgard, and how new functionalities or data connections can be developed for it.

While I'm using Midgard's Web 2.0 integration features as an example, many ideas should be of interest to developers of other CMSs as well.

Catch the talk at 15:15 this Saturday in the PHP room!

Technorati Tags: , , , , , ,

Introduction to Midgard's database abstraction system

Posted on 2007-08-26 15:18:43 UTC in 50° 46.848 N 7° 10.898 E Sankt Augustin, DE to . 0 comments.

I've noticed this is something I end up showing to people in every conference, and therefore probably makes sense to blog it.

Midgard abstracts database storage on C library level, and provides a set of classes and interfaces for accessing it on PHP extension level. PHP scripts cannot bypass the C-level abstraction and don't get information about the database connection or passwords being used. While this sacrifices some flexibility, it also helps a lot with consistency and security.

Defining database structure

Developers can define database structures to Midgard as MgdSchema files. Midgard ships with some pre-defined types like Articles and Persons, and others can be shipped in component packages.

MgdSchema files are XML:

<type name="org_routamc_statusmessage_message" table="org_routamc_statusmessage_message" parent="midgard_person" parentfield="person">
    <property name="id" type="integer" primaryfield="id"/>
    <property name="status" type="text" />
    <property name="person" link="midgard_person:id" reverse="no" type="integer" parentfield="person"/>
    <property name="source" type="string" />
    <property name="externalid" type="string" />
</type>

Actual MySQL database tables are generated from these files by the midgard-schema tool:

mysql> describe org_routamc_statusmessage_message;
+-------------------------+--------------+------+-----+---------------------+----------------+
| Field                   | Type         | Null | Key | Default             | Extra          |
+-------------------------+--------------+------+-----+---------------------+----------------+
| id                      | int(11)      | NO   | PRI | NULL                | auto_increment | 
| status                  | longtext     | NO   |     |                     |                | 
| externalid              | varchar(255) | NO   |     |                     |                | 
| source                  | varchar(255) | NO   |     |                     |                | 
| guid                    | varchar(80)  | NO   | MUL |                     |                | 
| sitegroup               | int(11)      | NO   | MUL |                     |                | 
| metadata_creator        | varchar(80)  | NO   |     |                     |                | 
| metadata_created        | datetime     | NO   |     | 0000-00-00 00:00:00 |                | 
| metadata_revisor        | varchar(80)  | NO   |     |                     |                | 
| metadata_revised        | datetime     | NO   |     | 0000-00-00 00:00:00 |                | 
| metadata_revision       | int(11)      | NO   |     | 0                   |                | 
| metadata_locker         | varchar(80)  | NO   |     |                     |                | 
| metadata_locked         | datetime     | NO   |     | 0000-00-00 00:00:00 |                | 
| metadata_approver       | varchar(80)  | NO   |     |                     |                | 
| metadata_approved       | datetime     | NO   |     | 0000-00-00 00:00:00 |                | 
| metadata_authors        | longtext     | NO   |     |                     |                | 
| metadata_owner          | varchar(80)  | NO   |     |                     |                | 
| metadata_schedule_start | datetime     | NO   |     | 0000-00-00 00:00:00 |                | 
| metadata_schedule_end   | datetime     | NO   |     | 0000-00-00 00:00:00 |                | 
| metadata_hidden         | tinyint(1)   | YES  |     | 0                   |                | 
| metadata_nav_noentry    | tinyint(1)   | YES  |     | 0                   |                | 
| metadata_size           | int(11)      | NO   |     | 0                   |                | 
| metadata_published      | datetime     | NO   |     | 0000-00-00 00:00:00 |                | 
| metadata_score          | int(11)      | NO   |     | 0                   |                | 
| metadata_imported       | datetime     | NO   |     | 0000-00-00 00:00:00 |                | 
| metadata_exported       | datetime     | NO   |     | 0000-00-00 00:00:00 |                | 
| metadata_deleted        | tinyint(1)   | YES  |     | 0                   |                | 
| person                  | int(11)      | NO   | MUL | 0                   |                | 
+-------------------------+--------------+------+-----+---------------------+----------------+
28 rows in set (0.03 sec)

As you can see, lots of metadata columns get added to the definition we made in XML. In addition to metadata, there is also a GUID field and a sitegroup field. Sitegroups are used for controlling access to content in different "virtual databases" in same Midgard instance.

Accessing storage in PHP

When Apache is started Midgard generates PHP classes for all installed MgdSchema types. The class provides the needed I/O functionality.

Here is some example code using the Article object that ships with Midgard. It is hopefully understandable by itself:

<?php
// Get empty article instance
$article = new midgard_article();

// Set some data into it
$article->title = 'Headline';
$article->content = '<p>This is my interesting article</p>';

// Store it in database
if (!$article->create())
{
    echo "Failed storing the article \"{$article->title}\", reason " . mgd_errstr();
    // Note: Midgard 2 raises exceptions in these situations
}

// Extend the object. This will be stored in the record_extension table
$article->set_parameter('domain', 'name', 'value');

// Switch language context, IDs point to midgard_language records
mgd_set_lang(58);

// Set translated data
$article->title = 'Otsikko';
$article->content = '<p>Tämä on mielenkiintoinen artikkelini</p>';

// Store it in database
if (!$article->update())
{
    echo "Failed updating the article \"{$article->title}\" in language {$_MIDGARD['lang']}, reason " . mgd_errstr();
    // Note: Midgard 2 raises exceptions in these situations
}

// Then get rid of the article translation of language 58 that we just made
$article->delete();

// Switch back to default language context
mgd_set_lang(0);

// Delete also the default article translation, therefore deleting the whole article
$article->delete();
?>

Making queries

Midgard provides two classes for making queries in the database: Query Builder and Collector. Both classes have same query features, but differ in that midgard_query_builder returns full MgdSchema objects and midgard_collector returns array of values requested by the user.

Here is a simple example:

<?php
// Query for full midgard_article objects
$qb = new midgard_query_builder('midgard_article');

// WHERE title LIKE 'Midgard sucks%'
$qb->add_constraint('title', 'LIKE', 'Midgard sucks%');

// ORDER BY metadata_published
$qb->set_order('metadata.published');

// Run the query, return matching articles
$articles = $qb->execute();

// Iterate through the article objects
foreach ($articles as $article)
{
    // These are full MgdSchema objects so we can do things with them
    $article->delete();
}
?>

More complex things like querying by linked information is also possible.

What about MidCOM DBA?

MidCOM adds an abstraction layer on top of the regular MgdSchema and query classes by extending them on PHP level. This is where lots of additional functionality happens:

  • ACL checks are done on every I/O step
  • Metadata datetime properties are translated to timestamps (in future DateTimes) for easier PHP usage
  • Content changes are versioned in RCS

To make MidCOM DBA aware of new MgdSchema types, a component has to define a midcom_dba_classes configuration file, and refer to it in the manifest:

array(
    'table' => 'org_routamc_statusmessage_message',
    'old_class_name' => null,
    'new_class_name' => 'org_routamc_statusmessage_message',
    'midcom_class_name' => 'org_routamc_statusmessage_message_dba'
),

When MidCOM refreshes its cache, it will create a new MidCOM DBA class __org_routamc_statusmessage_message_dba that will extend the org_routamc_statusmessage_message MgdSchema class.

If a component developer wants to add additional business logic to the object, he can then define his own org_routamc_statusmessage_message_dba class in the component that will extend the __org_routamc_statusmessage_message_dba class.

Midgard supports OpenID

Posted on 2007-08-28 12:44:43 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

OpenID Inspired by a talk in FrOSCon on Sunday, I went and implemented OpenID support into Midgard on the flight back. OpenID is a quite cool system for cross-site single sign-on and auto-registration. With OpenID your user identity is tied to a web address you control, for example http://bergie.iki.fi/. Every time I want to log in to an OpenID-enabled website, that site will ask my authentication status from my site and let me in. The way this works is the following:

I go to a page that requires authentication, or to MidCOM's login URL and I get a login form allowing me to either input a local username/password combination or my OpenID:

Midgard-Openid-Login-Initial-1

(yes, I know this screen still needs some CSS love)

If this is the first time I'm using OpenID for this particular site, or I haven't yet logged in to my OpenID provider, it will next ask me for confirmation:

Mylid-Login

(this step is skipped if I already have authorized login for the site and am logged in)

After this a MidCOM login session is generated for the OpenID identity and I'm logged in to the Midgard site. I even get a nice notice about this:

Midgard-Openid-Success-1

The OpenID implementation is now available in MidCOM SVN. It should be reasonably useful already now, but I will still make some improvements to it, including:

  • Adding the OpenID user to a group specified in component configuration
  • Using Simple Registration Extension together with Midgard's account registration schema to pull in more information about the OpenID user if available

It would also be nice to enable using Midgard as an OpenID provider, but for now URL delegation is needed.

Technorati Tags: , , , ,

Greg Stein got mugged :-(

Posted on 2007-08-28 14:05:59 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Michael Wechner and Greg SteinGreg Stein, of WebDAV, SVN and ASF fame, got violently mugged last Friday in Mountain View:

They gave Greg a black eye and a serious laceration to the head which required numerous stiches. Apparently, he was bleeding profusely when the ambulance came.

The doctors were worried about his head wound and he spent the entire night under observation and went through numerous CAT scans.

A few weeks prior, he broke one of his legs and had been on crutches when these guys decided to beat the hell out of him.

What did they get? One hundred dollars and a credit card.

Ouch.

When I got drugged and robbed in Czech Republic last June, I was quite down because of it for weeks. I'm sure getting mugged is even worse. So, to cheer him up, some people have started a PayPal fundraiser to send him on a holiday. Overflow will be donated to Apache Software Foundation.

I know Greg from the OSCOM circles, and it really sucks that this happened to him.

Technorati Tags: , , ,

Some notes from MidCOM performance workshop

Posted on 2007-08-30 19:47:11 UTC in 60° 8.868 N 24° 25.182 E Kirkkonummi, FI to . 0 comments.

Today we've been hacking in the woods as part of the MidCOM Performance Sprint. Together with yesterday's bug day this has resulted in quite a few commits.

While results obviously were not as dramatic as the last time due to better overall status of the code, we still scored about 20% reduction in database I/O and debug log lines dropping from over 700 to a more readable 103 per regular, fully debugged request. Memory usage should be much better now as well.

Jerry and bug-free Macbook Pro

Focus areas today were:

Thanks to everybody involved!

Creation mode for Midgard's chooser widget

Posted on 2007-09-11 14:24:46 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Midgard's datamanager2 form handling library has a very nice jQuery-powered chooser widget which enables search-based selections. This is often used in situations where the data set user is choosing from is large, as is often the case when selecting persons from a large organization for instance.

Today we added creation support for the chooser to deal with situations when no matches were found.

Here is a quick example of adding related event from calendar into a news item. The chooser for doing this appears as a search box:

Chooser-Related-Events

Typing a query does a live search which presents the results below. Items can be chosen either by clicking or with keyboard:

Chooser-Search

If the desired result was not found, clicking the "+" icon opens a window for creating a new event:

Chooser-Creation-Iframe

Once the event has been saved the window will close and the newly created item will be placed as a chosen item in the chooser:

Chooser-Related-Events-Created
(yes, we still need to fix start and end timestamp rendering here)

Creation mode support has been added only to net.nemein.calendar so far, but we will add it to other places as the need arises.

Enabling creation mode in a chooser is relatively simple. Just point the chooser to the appropriate creation URL in the datamanager schema:

'widget' => 'chooser',
'widget_config' => array
(
  'clever_class' => 'event',
  'creation_handler' => '/event_calendar/create/chooser/event',
), 

The UI model used here closely resembles how Yahoo's Upcoming handles addition of new event venues:

Upcoming-Add-New-Venue

Technorati Tags: ,

Position editing widget for Midgard

Posted on 2007-09-14 11:48:13 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Midgard has had quite cool GeoCMS features for a while now: any objects can be positioned and retrieved via position, and maps are easy to display anywhere. We also can use cool services like Plazes for automatically positioning new content created by users.

However, what has been lacking has been a way to easily edit the location of an item in the CMS. This has been now fixed by the new position widget we did with Jerry:

Position-Widget-Address

An easy way to position objects is to enter a civic location that will then be geocoded using either local city database, GeoNames or Yahoo! The civic location properties used are the same as in XEP-0080 specification and GeoClue.

To do this, enter an address and click the "refresh" icon in the corner, then wait a while:

Position-Widget-Address-Retrieve

Some details (like the postal code in above example) will appear if the geocoding service provides those (as happens with Yahoo!). You can then check the location by going to the Map tab:

Positioning-Widget-Map

The map is provided by Mapstraction, and so different providers like Google Maps, Yahoo! and OpenStreetMap can be used. If you want to correct or fine-tune the position, just click somewhere else on the map:

Positioning-Widget-Map-Edit

You can also edit the straight coordinates:

Positioning-Widget-Coordinates

Get it from SVN while it is hot!

Technorati Tags: , , ,

Hiking in the weekend

Posted on 2007-09-17 06:03:10 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

The "ruska season" has now started and so we decided to go hiking in the Evo area last weekend.

On Hakovuori

Pretty nice trip of walking in the woods and enjoying songs, pipe and whisky at fireside. We slept the first night in tent and the second in a laavu:

First bite

Weather was a bit rainy on Saturday, but with good gear this was not much of a problem. More pictures on Flickr.

Technorati Tags: , ,

Web CMSs: what does Midgard do?

Posted on 2007-09-17 10:30:59 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Column Two has an interesting post titled What does a web CMS do? with a table listing features that are integral to a web CMS, and what can be handled separately.

I thought to list how Midgard handles those:

Capability Midgard way of handling
Authoring and publishing web pages Yes, definitely
Multimedia content Midgard can manage images and video to a simple extent
Personalisation Easy to do via the API
Online forms Multiple handlers available, like email forms, event registration and incident reporting
Online calendar Yes, with quite comprehensive feature set
Blogs Built-in, with RSS in and out, geoblogging and commenting
Search Midgard uses the Lucene search tool
Collaboration tools OpenPsa can be used to some extent
Wikis Midgard provides a quite nice wiki
Web 2.0 functionality Depends on definition, we have OpenID, social networking (with some portability), voting and other related features
Mailing lists Midgard's discussion forum can act as mailing list front-end
E-commerce functionality Midgard has a product database and provides a simple shopping cart built-in
Corporate document/records management No, whole market of its own
Digital asset management (DAM) No, obtain separately
Usage statistics No, obtain separately

The fact that Midgard supports almost everything listed may sound like bloat, but we actually do this quite elegantly because of the component architecture that enables site builders to pick and use whatever pieces of functionality they need.

jQuery and CouchDB

Posted on 2007-09-23 11:52:11 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

CouchDB is a very interesting evolution in open source data storage: an ad-hoc document database with replication support. I heard the first time about CouchDB when Jan Lehnardt was presenting it in FrOSCon a month ago, and became immediately very interested.

The database is available for various different platforms, and provides a RESTful JSON API, which makes it very easy to access basically from any programming languages. To make things even simpler, access libraries have emerged for various languages like PHP and Ruby.

This weekend Jerry Jalava released a jQuery CouchDB access library. This is an important step for us as Midgard is already making the jQuery migration, and we are considering to use CouchDB for a project.

Couch-Hacking

So, why CouchDb? First of all, it is something new and interesting. And it is multiplatform and replicated, meaning that we should be able to get our data everywhere, from a web server to Mac desktop to an Internet Tablet. Besides regular database usage, some of the PHP code deployment ideas are also promising.

Technorati Tags: ,

Sometimes a thumbs down is needed

Posted on 2007-09-25 07:00:59 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Quim wrote earlier on why red hearts matter in maemo news. The red hearts are important as they bring important news items forward in the maemo social news aggregator. But sometimes there are also news items that are not at all relevant to the maemo community. To solve the problem with them we've now added a burying option:

Socialnews-Favbuttons

When you click the "Thumbs down" icon the item will enter a recalculation queue, and will soon disappear from the social news main page. It will of course remain in the news feed it came from, so everything for example coming from Planet maemo subscriptions will stay there.

The item will also be marked as buried for you:

Socialnews-Unfaved-1

Also related to the Social News service is that the best of maemo news highlights is now available for browsing. Go and check out the most popular items related to the project!

Technorati Tags: , ,

OpenStreetMap Helsinki is getting pretty good

Posted on 2007-10-01 15:39:38 UTC in 60° 10.794 N 24° 54.702 E Helsinki, FI to . 0 comments.

OpenStreetMap is a project for collaboratively creating open content digital maps of the world. It follows a Wikipedia-like model where interested contributors can go out with GPS receivers, and then turn those track logs into usable map content. And like Wikipedia, it is exploding in the amount of content and quality.

The last time I checked the status of Helsinki on OSM, it was already a bit promising but very initial. Now I went browsing again, and the map starts to look quite complete:

OpenStreetMap of Etu-Töölö, Helsinki

In some things the map is already more complete than competitors like Google Maps. On OSM, depending on the renderer used, the map also contains details like locations of parking lots, pharmacies, ATMs and post boxes. Many restaurants, pubs and cafés are also shown.

That actually shows a strength of the OpenStreetMap approach: people can add the detail they need. There have been projects where different renderer configurations have been used to focus the map on the needs of a special group: for example wheelchair users are very interested in information like how steep some hills are or whether a street is covered in cobblestones.

Showing information like that with a centralized big map provider like Google or Yahoo! would be difficult as it goes much further than just pushpins.

But still, there is much left to do:

In any case, I feel like the map is in a stage where it can be used for web purposes, and hopefully soon also for navigation software. It is a good time to learn the tools and start mapping!

Updated 2007-10-05: Just look at the level of detail here:

Osm-Kampinkeskus-20071005-Mapnik Google Maps doesn't even get close.

Technorati Tags: ,

New user management tool for Midgard

Posted on 2007-10-12 12:37:53 UTC in 60° 9.804 N 24° 44.016 E 7km S of Espoo, FI to . 0 comments.

In past there have been two types of user management tools for Midgard: the built-in ones that have supplied lists of users, and then custom-made ones. With former the problem has been that when you have thousands of users the HTML views become slow to load and near impossible to use.

To improve the out-of-the-box situation, a new user management tool was included to Asgard, the new admin UI. The default view is already search-based, enabling quick access to manage the users you need to:

Asgard-Usermanager-Search

The list view enables quick actions:

Asgard-Usermanager-Quickactions-1

The intention is to later devise a plugin architecture so more actions can be added. But for now account removals and addition of users to a group are supported:

Asgard-Usermanager-Quickactions-Addgroup

By clicking the user details can be edited. Changing passwords is also quite easy:

Asgard-Usermanager-Account

When viewing groups, user belonging to then are shown using a chooser widget which allows search-based additions of members. Person's groups are shown in the same way:

Asgard-Usermanager-User-Groups

The new user manager is currently available in both trunk and MidCOM 2.8 SVN, and after some testing will be packaged and released.

Technorati Tags: ,

Information is a key to sustainable transport

Posted on 2007-10-15 15:31:06 UTC in 60° 9.804 N 24° 44.016 E 7km S of Espoo, FI to . 0 comments.

I've written earlier how open data availability could promote public transportation. Openly available public transport schedule and route information would enable small businesses and other innovators to build new kinds of consumer route planning services. These new services in turn would help to make it easier to leave the car home and choose more sustainable transport options.

In addition to buses, trams and metros, bicycles are a very environment-friendly way of commuting. The City of Helsinki is starting to realize and promote this, both by adding new bicycle routes and by being part of the handy bicycle route planner:

Ytv-Kevytliikenne-Reittiopas

Again however the actual data for such route planning is behind closed doors and available only via a web interface. And since most GPS navigator producers are only interested in the car navigation market it is unlikely that someone will make bicycle-friendly options of them.

This is something where the OpenStreetMap project can come to help. OpenStreetMap is volunteer-built open digital map that is already quite good for Helsinki, and which can contain bicycle related data and be used for rendering bike-friendly views. The data can also be used for creating custom navigation applications.

It would be great if more people from the Helsinki cycle commuting area would join the OSM project and start contributing map data relevant for bicyclists!

That could be one of the components easing the transition from this:

Ekurvine Helsinki Traffic

To this:

Samipii Critical Mass

This post was written as part of the 2007 Blog Action Day. Now I will take the bus home :-)

Bloggers Unite - Blog Action Day

Note: the photos are CC-licensed images from Flickr users ekurvine and samipii.

Technorati Tags: , , ,

Midgard does the Tango

Posted on 2007-10-21 07:25:56 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

As initially instigated by Tuomas and later prepared by Joonas, Midgard has now switched to the Tango icons and colors. This helps to modernize the look-and-feel and make it more consistent across components.

Asgard looks quite nice with the new icons:

Asgard-Tango-Icons

The floating toolbar is also improved:

Midcom-Toolbar-Tango-1

For Midgard 1.9 we will try to do more visual updating of the toolbars together with Andreas.

Technorati Tags: , , ,

GeoNames ambassador to Finland

Posted on 2007-10-21 09:56:01 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Geonamesambassadors20071018GeoNames is a very cool repository of open content geographical information. From the site:

The GeoNames geographical database is available for download free of charge under a creative commons attribution license. It contains over eight million geographical names and consists of 6.5 million unique features whereof 2.2 million populated places and 1.8 million alternate names. All features are categorized into one out of nine feature classes and further subcategorized into one out of 645 feature codes.

To help spreading the word and communicating with local mapping agencies, GeoNames has now introduced a group of ambassadors who act as the local contacts of the project. As I've been using GeoNames data and web services heavily in Midgard's GeoCMS features, I'm more than happy to act as the local contact in Finland.

So, if you're already doing something interesting with Finnish GeoNames data, or have questions about using it, please drop me an email!

Technorati Tags: , , ,

Undeletion in Midgard

Posted on 2007-10-24 10:47:56 UTC in 60° 9.804 N 24° 44.016 E 7km S of Espoo, FI to . 0 comments.

A trash can feature for Midgard was discussed originally in the 2006 Komorniki Midgard developer meeting, and the APIs for it made their way into the 1.8.0 release. Yesterday I added trash can browsing and undeletion support into Asgard, the new administrative interface.

To use it, first delete a folder:

Folder-Delete-Toolbar

Currently we ask for confirmation, but now that undeletion works we're going to move to undo instead.

Folder-Delete-Confirm

Then, to undelete it we enter Asgard:

Enter-Asgard-Toolbar

And there to folders (topics), where we see that there are items in trash:

Asgard-Topic-Trash

Clicking the trash can reveals more details:

Asgard-Topic-Trash-List

Clicking undelete will undelete the folder and things under it, giving a set of informative status bubbles:

Asgard-Topic-Trash-Undelete-Status

Going back to the site we can see that the folder and articles under it are there, with even images retrieved from trash:

Midcom-Undeleted-Folder-Is-Back

Technorati Tags: , ,

Get your face on Planet Maemo

Posted on 2007-10-24 21:01:54 UTC in 60° 9.804 N 24° 44.016 E 7km S of Espoo, FI to . 0 comments.

The new Maemo developer device program opened the user profile system on maemo.org. With it, we can now use profile avatars as the hackergotchis on Planet Maemo:

Planet-Maemo-Hackergotchi

So, if your blog is syndicated there, go and upload an avatar for yourself! Easier than begging an administrator to add a hackergotchi...

Technorati Tags: ,

AAA - important milestone for Nemein

Posted on 2007-10-26 10:41:19 UTC in 60° 9.234 N 24° 52.782 E Helsinki, FI to . 0 comments.

We found out a while back that our company, Nemein now has AAA (the highest) credit rating. Quite an important milestone for a free software company started during the dot com bust!

The coveted Triple-A certificate arrived in mail this week:

Nemein-Aaa-Bergie-Joe

Technorati Tags: ,

Mapstraction supports OpenLayers now

Posted on 2007-10-29 20:11:25 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Mapstraction is a javascript library that abstracts the usage of the various web map systems out there. Using it you can display Google Maps, Microsoft Virtual Earth, Yahoo! and other maps with same javascript code. And now also OpenLayers, a free software map implementation.

OpenLayers is a very nice addition to the Mapstraction stack, as it can be displayed without need for any API codes or registration. With local OpenStreetMap tiles it could even be used on web servers that are not connected to the regular internet.

Some initial OpenLayers integration had been in Mapstraction for a while, but as I need to display OpenStreetMaps with it in a project I decided to finish the implementation together with Andrew Turner. It is not completely tested yet, but for example Midgard's positioning widget works quite nicely with it already:

Midgard-Position-Editing-Openlayers-Osm

Grab the code from SVN or take a look at an implementation example!

Technorati Tags: , ,

Midgard and HTML Purifier

Posted on 2007-10-30 15:29:47 UTC in 60° 11.148 N 24° 49.704 E 6km W of Helsinki, FI to . 0 comments.

Inspired by Kore Nordmann's post Why are you using BBcodes?, Midgard now has integrated support for the HTML Purifier library. From the HTML Purifier site:

HTML Purifier is a standards-compliant HTML filter library written in PHP. HTML Purifier will not only remove all malicious code (better known as XSS) with a thoroughly audited, secure yet permissive whitelist, it will also make sure your documents are standards compliant, something only achievable with a comprehensive knowledge of W3C's specifications.

This means that it will be reasonably easy to configure access lists of allowed HTML to be used when editing documents with the Datamanager2 library. The same rules will also apply to several tools using DM2 as library, including RSS-based news imports.

As Kore wrote, HTML Purifier makes it possible to use a regular HTML WYSIWYG editor for things like blog comments and forum posts while remaining sure that no abuse happens. With whitelists you can even allow certain cool things like embedding of YouTube videos to posts.

Technorati Tags: ,

Asgard welcome page just got useful

Posted on 2007-10-31 21:03:19 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Asgard is the new administrative interface for Midgard we've been working on for the 1.9 release. Today its welcome page just got a lot more useful as we added a way of listing recently modified objects of any type and performing mass actions on them:

Asgard-Welcome-Updated

While this is a good start there are some ideas on how to improve it:

  • Authenticated RSS feed with the same data
  • Mass action plugin API
  • Other data views than just time-based, including:
  • User-based (documents written by Jerry)
  • Permission-based (documents I can edit)
  • Status-based (deleted documents, documents about to expire)

Technorati Tags: ,

The World's Internet Tablet?

Posted on 2007-11-03 10:52:08 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

GigaOM has a very interesting article on the new N810 internet tablet, and how it will be relevant for the developing world:

Infonetics estimates that 47 percent of all mobile subscribers come from the Asia Pacific region, 36 percent from Europe, the Middle East and Africa, and only 9 percent from North America. Nokia alone will ship 400 million handsets this year, and most of those devices can surf the web. Geography, power consumption, and lack of wired infrastructure mean that much of the planet will see its first web page on a portable handset. Not only will Internet handsets be everywhere, they’ll be open.

Via Internet Tablet Talk. Probably would be a good time to brush up my WURFL skills...

Technorati Tags:

Midgard and the Law of Karma

Posted on 2007-11-04 20:16:48 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Karma: The total effect of a person's actions and conduct during the successive phases of his existence, regarded as determining his next incarnation. (wiktionary)

Many communities struggle with the question of how to recognize their most valuable members. This is true also for Nokia's maemo.org, the community for open source development on internet tablets. With the two latest device releases, Nokia has given hefty discounts to some members of the community, raising obvious questions on who should be entitled to such a developer device.

One part of answering that question (and managing the developer device program in general) was developing a CRM system for maemo.org including karma calculations based on community activity.

Karma is a complex concept which we decided to simplify a bit following the model we implemented for evaluating newsworthiness of incoming blog items in the Social News project:

  • count different contributions user has made
  • run those through a rating system (forum moderation, app catalog stars, social news favs, ...)
  • apply a contribution type modifier
  • add them up

...and we have karma:

Maemo-Karma-Quim

Technically the Karma system was implemented as a feature of Midgard's net.nehmer.account profile management component. Out-of-the-box it is able to calculate Karma from various items like forum posts and blog comments inside the Midgard database. To complement that it has a quite simple plug-in architecture for Karma calculations from other systems like GForge, SVN or Bugzilla.

It will be interesting to see how Karma builds up when we start pulling it from different pieces of the open source community infrastructure and external services like Ohloh.

Technorati Tags: , ,

Previewing Ajatus - the distributed CRM

Posted on 2007-11-14 22:13:26 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

While there is no public release yet, I though to give a heads-up on a project we're working on with Jerry: Ajatus is a distributed, or peer-to-peer CRM system built on top of CouchDb.

Ajatus-Note-Related

What makes Ajatus so special is the approach we're taking with it. Having with OpenPsa found the traditional, hierarchical CRM approach unworkable we wanted to solve the problem in a different way:

  • Local, rich AJAX client everybody can run on their laptop or internet tablet
  • Replication to allow sharing data with partners, customers and the employer
  • Simple base data types (note, event, contact, ...) that users can customize and extend
  • Possibility to build integration tools and plug-ins in almost any language (with CouchDb's restful JSON interface)
  • Speed

To help us stay on the right path we even wrote an Ajatus Manifesto to guide ourselves.

Currently the software already runs and does pretty much all the basic things needed. Once we get it into state where we can dogfood it (in interoperation with the company OpenPsa) we will make the first release. Until then, stay tuned, check the Git repository and join the talk!

Technorati Tags: , ,

CouchDb 0.7.0 is out

Posted on 2007-11-17 16:49:01 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Version 0.7.0 of CouchDb was released yesterday. CouchDb is a very interesting object database that powers our Ajatus CRM.

Main changes in 0.7.0 were:

  • JSON instead of XML
  • Javascript view engine
  • Easier build system
  • ...and a nice administrative UI

Couchdb-0 7-Admintool

With the new release Ajatus is a lot easier to set up as CouchDb can be installed straight from release packages.

Technorati Tags:

Amazon Kindle could be the library of the working nomad

Posted on 2007-11-19 17:58:21 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Amazon-Kindle

Amazon's e-book reader Kindle was launched today, and it looks quite interesting:

  • eInk display, so it is easy on the eyes and can be read even in sunlight
  • Long battery life
  • Amazon stores backups of books user has bought
  • Storage expandable with SD cards
  • Ability to send in your own files
  • Newspapers, magazines and blogs
  • Automatic updates and downloads via cell network, no need to tether to computer
  • Shame about the closed format, though

While the device is ugly it seems usable enough. Now the question remains whether the device will be feasible for use outside the US, as Amazon's Whispernet system is apparently tied to Sprint, a local operator there.

When I moved away from the Five Corners apartment I decided to de-clutter to support a more working nomadistic lifestyle. I digitized all my music so I was able to get rid of the CDs and gave my old furniture away and replaced it with rented ones.

But books are still an analog product. As no good e-book reader has emerged I've been stuck with a collection of big and heavy books that I have to move around. Only when I've run out of shelf space I've been reluctantly forced to give away or sell them. If the Kindle approach works, it could help me get rid of the dead tree editions and paper magazine subscriptions. But time will tell.

Of course, Kindle is not the only device in the market. My Nokia N800 tablet with FBReader could do much of the same stuff, but the screen isn't as nicely readable and the book and magazine collection supplied by Amazon just isn't available.

Updated 2007-11-20: Dive into Mark has very good points about the problems with Kindle's proprietary approach to e-books.

Technorati Tags: , , , , ,

MidCOM content cache rides again

Posted on 2007-11-21 21:00:02 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Vali likes the Content CacheMidgard is quite a huge framework, and so caching is needed to keep things efficient. To that effect, MidCOM 2.4 in 2005 added a major feature of caching generated pages until they needed reconstructing.

However, with the 2005 technology the caching system proved to be troublesome: Berkeley DB corruption, faulty invalidation mechanisms and other problems. When we started working on MidCOM 2.5 we decided to remove MidCOM's own content caching infrastructure in favor of using a Squid reverse proxy.

Squid is quite a nice piece of software, but it also mean adding quite a big dependency on top of our software stack, and so lots of smaller sites ran without it.

To remedy that problem we have now revived the content cache with more reliable storage back-ends and invalidation mechanisms. The new system follows some ESI conventions and produces quite nice performance gains.

It is already available in both MidCOM trunk and in latest 2.8 beta packages. To start using it, simply make the following configuration change:

$GLOBALS['midcom_config_local']['cache_module_content_uncached'] = false;

Thanks to Tero Heikkinen for pushing this through!

Technorati Tags: , ,

VectorMagic: convert bitmaps to vector online

Posted on 2007-11-22 07:11:17 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

VectorMagic from Stanford University Artificial Intelligence Laboratory is a pretty interesting tool. You upload a bitmap image, give a few parameters about it, and you get a vectorized version back.

Here is how it dealt with the Midgard 1.x logo (with a small set of colors):

Vectormagic-Midgard1

Via Boing Boing.

Technorati Tags: , ,

Is your Time Machine wireless?

Posted on 2007-11-22 19:49:41 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Time-Machine Like probably everybody else, I've been quite lazy taking backups. Through the Linus backup philosophy this hasn't been so bad: my code is in various repositories and my photos are on Flickr. But when a hard drive died on me last year, a bunch of small things were still lost.

Because of this I thought the Time Machine feature of OS X Leopard was quite cool. Until I found out that it would work only with external USB or FireWire disks, that is. I know that if I need to plug something in, I wouldn't do it.

So, my home OpenLink-powered NAS box to rescue! Making Time Machine talk to it required some tweaks, including enabling "unsupported volumes" in TIme Machine and installing Howl on the LinkStation.

The result is quite cool: while backups take a long time to make, they start automatically when I open the laptop at home. And the Howl setup also makes my N800 Media Player automatically find music from the LinkStation.

Technorati Tags: , ,

The returning Age of Sail

Posted on 2007-11-27 10:02:37 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

It seems that with the rising oil prices the Age of Sail is returning, even if in a modified format. SkySails is a system that enables freighters to tap into high-altitude winds with a power kite to reduce fuel consumption.

SkySail

Watch the video presentation for more information. Everything old is new again! Via Slashdot.

In sailing-related news, I posted some photos of the 2001 Heimlösa Rus reconstructed viking ship trip from Russia to Finland to Flickr.

Technorati Tags: , , ,

Onboard Internet

Posted on 2007-12-06 12:06:23 UTC in 59° 20.802 N 18° 4.326 E Stockholm, SE to . 0 comments.

Today Finland is celebrating 90th birthday of the Republic, and so it is appropriate to write about how things are better in Sweden, where I'm visiting the first Scandinavian Free Software Conference.

The example this time is computer usage in trains. While VR has only grudgingly added some power outlets to long distance trains, SJ's X2000 trains have them for every seat.

And even better, there is onboard internet with an updating map of the train's position:

Sj-Internet-Map

Unfortunately the train position is embedded in the map image and can't be read programmatically. It would make for a nice, specialized GeoClue position provider...

Technorati Tags: , , , ,

Yubikey - simple approach to authentication tokens

Posted on 2007-12-08 13:26:09 UTC in 57° 41.988 N 11° 57.132 E Göteborg, SE to . 0 comments.

Yubikey and a credit cardSimon Josefsson was giving a talk on OpenID in the Scandinavian Free Software Conference. OpenID is a lightweight single sign-on and auto-registration system for web applications. In concept it is quite similar to Shibboleth but easier to deploy.

Since OpenID can solve a lot of issues with registration to social web services, Midgard has been supporting it since last August. However, OpenID has one major security problem: as the cross-site redirections are controlled by the site user is visiting, OpenID has quite a high potential for phishing attacks. One way to reduce that risk is to use one-time passwords with OpenID instead of the usual username/passphrase combination.

Enter Yubikey

The problem with OTP is that disposable password lists are a lot of hassle. RSA's SecurID device has been one approach to solve that by having a simple device to generate the one-time passwords that user can then enter on their computer. But SecurIDs are expensive and manually typing the number sets is tedious.

Simon's company Yubico has approached the problem from a bit different direction: their Yubikey is a small, cheap USB dongle that the computer sees as a "keyboard". Insert the key, press the button, and the one-time password will be entered.

I was given a key and have been testing it a bit today to authenticate via my OpenID identity to various websites, and it really was as easy as advertised. Now my OpenID is secure.

Yubikey usage In addition to OpenID, Yubikey authentication is supported via RADIUS and PAM, and libraries are available for integrating it with other authentication systems.

Yubikey is not without problems, unfortunately. While authentication client libraries are open source, the actual authentication server is proprietary and operated by Yubico, a small start-up. If Yubico's network goes down, the whole authentication system becomes unusable.

I'd love to use Yubikeys for my company and several of my customers. Therefore, I really hope Yubico will be able to either release the server sources directly, or at least make a pledge to release them in case of going out of business. Only these options would make Yubikey a really viable secure authentication option.

Technorati Tags: , , ,

Site structure planning with WriteMaps

Posted on 2007-12-12 13:04:37 UTC in 60° 9.804 N 24° 44.016 E 7km S of Espoo, FI to . 0 comments.

WriteMaps.com is a handy web-based tool for planning website structures in a mind map -like format. The tool allows for storage and working on the designs in collaborative fashion.

Writemaps

I have been toying for quite a while with the idea that mind maps could be automatically converted to Midgard -compatible site structures, and the JSON format provided by WriteMaps seemed to support the idea.

So, to get your WriteMaps site structure to Midgard do the following:

  • Save your sitemap on the site
  • Click File -> Export local backup
  • Copy the JSON to a local file
  • Run php json_to_structure.php /path/to/my/sitemap.json > sitemap.inc
  • Copy the new structure under the config/templates directory of midgard.admin.wizards component
  • Create a new site using your WriteMaps-based structure

I'd love to make this a bit easier, but that would essentially require WriteMaps to provide an API we could hook to.

Get the json_to_structure.php file from Midgard SVN.

Via Ajaxian.

Technorati Tags: , , ,

Making Ajatus feel like a native app

Posted on 2007-12-13 20:47:15 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Ajatus, our new distributed CRM app is evolving very quickly. For example, this week we got form validation and auto-saving support, and there has been talk of supporting binary file attachments.

As we're nearing first release, the plan is to start dogfooding Ajatus quite soon. For me personally this has been cause of some concern, as Ajatus is quite browser-intensive and my Firefox 3 beta has proven to be crashy. So, a Web Worker Daily story on site-specific browsers came at a very good time: in a couple of minutes I had Fluid installed and was having a separate Ajatus window launchable straight from the OS X Dock.

Fast, nice, and separate from whatever I may be doing in my actual browsing sessions. I like it.

Initial Fluid setup
Setting up Ajatus in Fluid

Ajatus running as a Fluid app
Ajatus as a Mac desktop app!

Note: Mozilla Lab's Prism does the same with a more cross-platform, but I like Fluid for the WebKit speed and simplicity.

Technorati Tags: , , , ,

Knol - Google's publishing platform

Posted on 2007-12-18 10:33:56 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Quite a lot has been said about the Knol project announced recently by Google. While many see it as a direct Wikipedia competitor, there are quite significant differences:

  • Instead of collaborating on articles every author makes their own
  • Google promises to display article authorship prominently and to share profits from ads in an article
  • Articles written by individual authors compete with articles of others on the same subject

In software terms this all makes Knol sound like a shareware project in comparison to Wikipedia's open source model where many people collaborate to make good and neutral articles on a subject.

After a bit of thought I'm not sure if there is really need for something like Knol. Anybody can already start a blog or website specializing on a subject and monetize it with ads. And hosting in many situations is already free, so why place it in Google's Knol?

Yet, I have to admit there is something Snow Crashy in Knol that I like:

Stephenson's vision of the Library of Congress or simply the 'Library' bears a striking resemblance to Wikipedia. In the story, millions of users are constantly uploading fragments of information to a searchable database. Stephenson's concept of the Library differs notably from Wikipedia however, in that users must pay to download most information. Indeed the novel refers to several people, including Hiro Protagonist, who pursue a career in uploading information in the hopes that it will one day be of value.

Technorati Tags: knol, wikipedia

Embedding simple PHP scripts in Midgard

Posted on 2007-12-21 09:30:31 UTC in 60° 9.804 N 24° 44.016 E 7km S of Espoo, FI to . 0 comments.

MidCOM, the PHP framework for Midgard CMS has over hundred components for various purposes ranging from blogging to waste management statistics. But even with all of them it is sometimes useful to embed some custom PHP scripts to a site. The old method of doing this was using a custom style for a folder and including PHP files there, which was a bit awkward.

As Arttu mentioned, Asgard, Midgard's new administrative interface has been receiving a lot of love recently. This has mostly focused on centralizing features strewn across the MidCOM environment to a single interface: attachment handling, version control, component configuration, ...

Another change made yesterday was making the "nullcomponent", the fallback component used by MidCOM in case a folder doesn't have a component assigned more useful.

Now you can configure it to execute code stored in the folder:

Asgard-Libconfig-Nullcomponent

Then just edit the code:

Asgard-Edit-Topic-Code

And it will be executed in the folder:

Nullcomponent-Phpinfo

Technorati Tags: asgard, midcom, midgard

Putting Attention to Midgard

Posted on 2007-12-27 12:16:55 UTC in 60° 9.804 N 24° 44.016 E 7km S of Espoo, FI to . 0 comments.

Information overload is becoming a major issue, and more sophisticated solutions will be needed to tackle it. With Midgard we've already taken some steps into this space by creating tools for calculating newsworthiness of stories in order to present only relevant ones to a user.

After being able to calculate objective interestingness of various data items, the next phase is to make the filters more subjective, more personal. Attention profiling is a tool for this. There are already some attention-based services on the web that work quite well. For example, Amazon is able to make quite accurate book recommendations to me, and the concerts suggested by Last.fm have mostly been interesting. But so far this all has happened in closed silos.

APML is an emerging standard for syndicating attention profiling information between web services and applications. While not many services support it directly, there are some third-party tools for gathering the data from various sites.

Apml-Flow

There are many places in Midgard where attention profiling could be used to provide better service to users. My plan for APML support is following:

Generating attention data:

  • net.nemein.favorites: faving items generates positive attention for item's tags and categories, burying items generates negative attention for item's tags and categories
  • net.nehmer.blog: tags of blog entries created by user generate positive attention
  • net.nemein.bookmarks: tags of bookmarks generate positive attention

Using attention data:

  • org.maemo.socialnews: use attention as additional modifier when calculating what to show
  • org.routamc.photostream: create a new "most interesting" view of photos based on photo tags and user's attention

In order to make this all possible there should be an attention handling library that would provide easy APIs for attention calculations.

Technorati Tags: apml, attention, infoglut

Appliances are starting to take over

Posted on 2007-12-30 21:09:27 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

2054074159_1ebdf580a9_m.jpgNokia's Linux-based internet tablet was Amazon's best selling computer in 2007, and top 3 personal computer in holiday sales. Congratulations to the maemo team!

There was some discussion on Amazon's listings on Slashdot. As I've noted every year has recently been predicted as the one when Linux desktop takes over I thought this comment particularly insightful:

Now, the "Linux Desktop" fantasists can finally let it go. There will be no "year of the Linux desktop", just as there will be no "year of the Linux mainframe".

...

Pushing for a change in the desktop from Windows to Mac or Linux is, in 10 years, going to seem like striving to continue the VMS vs Unix wars on the VAX platform.

What 2008, 2009, and 2010 are going to be are the "years where appliances took over half the desktop functions" - you still want a big monitor and ergo keyboard to Photoshop, do development of web pages and code, and so on. But people sitting right at their desktop will whip out their paperback-sized appliance to do E-mail and chat, because that's where their communication apps live.

And, yes, those new appliances will mostly run Linux. What else?

As I've seen the nice, new N810 internet tablet take over more and more roles from my MacBook I can only agree.

Technorati Tags: maemo, linux

First beta of Ajatus available

Posted on 2007-12-31 14:58:34 UTC in 60° 9.858 N 24° 44.148 E 7km S of Espoo, FI to . 0 comments.

Barely made it in December, but first beta of Ajatus, the distributed CRM is now available. Enjoy!

Ajatus-On-20071231

Read the installation instructions to get started. Once CouchDb 0.7+ has proper installers available things will be much easier.

Now for champagne... Happy new year from the Nemein team!

Ajatus-0.5.0-Launch-Champagne

Technorati Tags: ajatus, couchdb

Calculating attention with Midgard

Posted on 2007-12-31 17:21:12 UTC in 60° 9.858 N 24° 44.148 E 7km S of Espoo, FI to . 0 comments.

APML Last week I was pondering how to add attention profiling support to the Midgard framework, and now it is there. Midgard is able to gather user's interests and attention from multiple sources:

What remains to be seen is how this will be used to make websites smarter and more useful to people. In any case, for the developer using attention profile information is now trivial:

// Load the attention profiling library
$_MIDCOM->load_library('net.nemein.attention');

// Instantiate attention calculator for current user's default attention profile
$calculator = new net_nemein_attention_calculator();

// Get attention score for an article
$score = $calculator->rate_object($article);

Attention score is a decimal number between 1 and -1, where 0 is "neutral attention".

Coming up: APML profiles for active maemo.org users.

Technorati Tags: apml, attention, midgard, php

Back