Motorcycle Adventures and Free Software

Weblog: Archive

2008-01-01 - 2008-12-31

TKK goes Midgard

Posted on 2008-01-03 12:40:09 UTC in 60° 10.050 N 24° 55.950 E Helsinki, FI to . 0 comments.

Helsinki University of Technology (TKK), the oldest university of technology in Finland launched their new site today:

TKK frontpage with Midgard

From the announcement:

The goal is for all TKK units to gradually adopt the new content management system. This would standardise the appearance of all TKK web pages as well as their style of presenting information.

The new TKK web pages utilise an open source content management system, Midgard CMS, provided by Nemein Oy, and their appearance has been designed by Activeark Oy. Adage Oy consulted TKK on user centered design of information architecture.

Quite a few interesting details on the site, like Shibboleth single sign-on and use of OpenStreetMap and Mapstraction as the official web map solution.

Update: It should be noted that TKK's Laboratory of Media Technology has been running Midgard since around 2000.

Technorati Tags: mapstraction, midgard, nemein, openstreetmap, sso

Sponsored links

Microsoft Certification Exams โนเกีย Nokia มือถือ Online Project Management save money using, phone card
Reviews มือถือ Mobile All Apps

Replicating Ajatus with your colleagues

Posted on 2008-01-03 19:55:53 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

I've mentioned before that Ajatus is a P2P CRM, but what does that mean? It means that Ajatus has been designed to be a personal tool for information management, but that is has also been designed to help you connect with anyone you need to work with.

The means to that is CouchDb's integrated replication feature. With it you can easily share your Ajatus data with anybody in the network, or just keep your laptop and desktop system in sync.

At the moment we only support full replication over HTTP, but the plan is to support replicating only data with specific tags (for example, only data related to a specific project), and to do it over XMPP.

As things are, here is how you set up Ajatus replication on a Mac OS X system:

First allow CouchDb to talk to the outside world (note: it is a good idea to keep the firewall up when not replicating!):

Beam-Accept-Connections-Leopard

Then access the CouchDb management console in http://localhost:5984/_utils/ and go to "Replication". Set up the replication paths there. The database you're interested in is "ajatus_db_content" (by default, see advanced setup):

Ajatus-Replication-Setup

Once you have entered the paths just click "Replicate" and wait a sec. Replication is one way, so remember to also replicate back from the other server!

When replication is done your Ajatus system should have data entered on multiple systems:

Ajatus-Multiple-Creators

My company is now dogfooding Ajatus. At the moment we use it in full peer-to-peer mode, but there are some plans to install a central server for security and backup purposes. I will post some notes on our experiences later this month.

In related news: CouchDb lead developer Damien Katz has been hired by IBM to work full-time on the database. This is great news for both CouchDb and Ajatus. Congratulations!

Technorati Tags: ajatus, couchdb, replication

The universal communicator

Posted on 2008-01-07 13:47:09 UTC in 60° 9.858 N 24° 44.148 E 7km S of Espoo, FI to . 0 comments.

And I'm not talking about vodka this time, but instead about the latest internet tablet from Nokia, the N810. I've now had the device for some weeks, and it has really started to replace the laptop in many situations.

The idea of an universal communicator is a mobile device that can be used to connect with various communication networks including telephone, instant messaging and social networks. After the latest Internet Communications Software Update, the N810 fits the description quite well:

And did I mention it looks really nice?

N810-Home-Screen

The latest software releases mean that I've been able to remove Adium and Skype from my MacBook, and Pidgin from the device, and just use the tablet's native communications tools. This means a lot fewer interruptions when I'm working and easy mobile access to all my instant messaging and email conversations.

Of course, things could be improved even further. Here are my wish list items for future software updates:

  • More consistent scrolling (preferably inertial and with thumb-friendly scrollbar) in different apps (#2564)
  • SMS support for the instant messaging application through the bluetooth-tethered mobile phone (#2725)
  • Ability to act as bluetooth headset for the tethered mobile phone (see ITT)
  • A2DP support for wireless stereo headsets (#667)
  • GeoClue so position-aware apps can also work indoors (when GPS is not available) (#2037)
  • ZeroConf support so Mac (and other) computers discoverable as ".local" become available (#73)
  • Video calls with Skype would make the device much more personal

Anyway, this is a big step from the OS2007 and N800 days!

Updated 2008-01-12: Added notes on MaemoPlazer and need for Skype cam calls.

Technorati Tags: jabber, jaiku, maemo, n810, skype, sip

New moderation UI in Midgard discussion forum

Posted on 2008-01-08 14:21:50 UTC in 60° 10.050 N 24° 55.950 E Helsinki, FI to . 0 comments.

Midgard's discussion forum component, net.nemein.discussion now has new moderation UI.

Regular users can mark posts as abuse (the message shown is a regular spam mail I found from my inbox):

Net Nemein Discussion Report Abuse

Moderators will get an email (or whatever medium they have selected for receiving notifications, including a Nabaztag WiFi bunny) and can see all messages marked as abuse in the moderation view:

Net Nemein Discussion Moderate

If they confirm the message as abuse or junk it will disappear from the site. If they confirm it as "not abuse" it will stay on site and the "report abuse" button will be removed from it. The full moderation history is kept with posts and displayed to moderators so they see if multiple people have marked something as abuse, for instance.

Technorati Tags: forum, midgard, moderation

On companies that are bigger than countries

Posted on 2008-01-09 21:06:17 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

This is mostly old news, but The Pirate's Dilemma - an excellent post on open innovation - highlighted it quite strongly: Roughly two-thirds the world’s 150 largest economies aren’t nations, but corporations.

Take a look at the top 187 of largest economic entities on Earth as measured by GDP. How many companies do you recognize?

United States; China; Japan; India; Germany; United Kingdom; France; Italy; Russia; Brazil; Korea, South; Canada; Mexico; Spain; Indonesia; Taiwan; Australia; Turkey; Iran; Argentina; Thailand; South Africa; Poland; Netherlands; Philippines; Pakistan; Saudi Arabia; Colombia; Ukraine; Exxon Mobil; Bangladesh; Belgium; Egypt; Wal-Mart Stores; Malaysia; Royal Dutch Shell; Sweden; Austria; BP; Vietnam; Algeria; Hong Kong; Switzerland; Greece; Czech Republic; Norway; Portugal; Chile; Denmark; Romania; General Motors; Chevron; Nigeria; DaimlerChrysler; Toyota Motor; Peru; Ford Motor; Ireland; Venezuela; Hungary; Finland; ConocoPhillips; Israel; General Electric; Total; Morocco; Kazakhstan; Singapore; ING Group; Citigroup; AXA; United Arab Emirates; Allianz; Volkswagen; Fortis; Crédit Agricole; American Intl. Group; New Zealand; Assicurazioni Generali; Siemens; Sinopec; Slovakia; Sudan; Nippon Telegraph & Telephone; Carrefour; Iraq; HSBC Holdings; Sri Lanka; ENI; Aviva; Intl. Business Machines; McKesson; Tunisia; Honda Motor; State Grid; Hewlett-Packard; BNP Paribas; PDVSA; UBS; Bank of America Corp.; Burma; Hitachi; China National Petroleum; Pemex; Nissan Motor; Berkshire Hathaway; Home Depot; Valero Energy; Belarus; J.P. Morgan Chase & Co.; Samsung Electronics; Matsushita Electric Industrial; Bulgaria; Deutsche Bank; HBOS; Verizon Communications; Syria; Libya; Cardinal Health; Puerto Rico; Prudential; Nestlé; Deutsche Telekom; Dominican Republic; Metro; Dexia Group; Credit Suisse; Ethiopia; Royal Bank of Scotland; Tesco; Peugeot; U.S. Postal Service; Altria Group; Zurich Financial Services; E.ON; Sony; Vodafone; Société Générale; Électricité De France; Nippon Life Insurance; Statoil; France Télécom ; LG; Guatemala; Kroger; Ecuador; Munich Re Group; Deutsche Post; Croatia; State Farm Insurance Cos; Ghana; Marathon Oil; Azerbaijan; BMW; Fiat; Hyundai Motor; Procter & Gamble; ABN AMRO Holding; Royal Ahold; Repsol YPF; Legal & General Group; Petrobrás; Toshiba; Dell; Lloyds TSB Group; ThyssenKrupp; Boeing; Uzbekistan; AmerisourceBergen; Lithuania; Santander Central Hispano Group; BASF; Costco Wholesale; Suez; Target; Morgan Stanley; Robert Bosch; Kuwait; Angola; Uganda; Renault; Costa Rica; Slovenia; Turkmenistan; Serbia; Congo, Democratic Republic of the; Cuba.

Coming next: Megacorporations. Somehow the concept brought back memories...

Updated 2008-01-12: Some dispute the way of comparing company turnover directly to country GDP, but also in their lists companies are pretty prominent. Via Gregor Rothfuss.

Technorati Tags: future, megacorp

In COSS steering group

Posted on 2008-01-11 11:22:21 UTC in 52° 31.308 N 13° 24.258 E Berlin, DE to . 0 comments.

COSSCOSS - the Finnish Centre for Open Source Solutions - is a national development agency for open source business ecosystem. COSS consists of 125 Finnish Open Source companies, several universities and public administration.

My company Nemein has been a COSS member for quite a while and benefited from the publicity and collaborative efforts in the organization. An important part of our work with COSS was the Digital Business Ecosystem project where we developed some P2P inter-company project management tools and did some evangelization work in various conferences.

So when the annual members' meeting came last December I thought it was time to give back a bit. I volunteered and was elected as the small business representative in the COSS steering group for the 2008-2009 term.

During the term I especially want to focus on enabling us small companies to work together more efficiently through networking. I also want to build some collaboration with Europe-wide organizations like Free Software Foundation Europe, which I'm a fellow of.

As my first COSS assignment I'm currently meeting representatives of other European Open Source business associations in Berlin. Stay tuned for more on that.

Technorati Tags: coss, freesoftware

PlazeCamp

Posted on 2008-01-12 20:59:38 UTC in 52° 31.410 N 13° 23.928 E Berlin, DE to . 0 comments.

I've spent today in the Plazes headquarters in Berlin attending the PlazeCamp developer event. Plazes is a social website that connects WiFi networks with geographical positioning and can be used for event coordination and as a location source for various services.

Plazecamp

In the event we third party developers got introduced to the new restful Plazes API and were able to showcase our Plazes-integrated apps. These included:

  • MaemoPlazer - the Plazes client for Nokia's internet tablets
  • Plazes OS X Dashboard widget
  • Mobile and Wii-optimized web UIs for Plazes
  • Symbian application for positioning via all visible WiFi base stations without connecting to them
  • Midgard's Plazes integration for automated geospatial metadata

In addition to the official program there has been some quite interesting talk about ubiquitous technology, Ajax, RFID and geoprivacy. It has been very refreshing to spend a day in code after two days of hammering down European open source business collaboration details.

2008-01-21: There is a quite good PlazeCamp wrap-up on Four Starters.

Technorati Tags: plazes, plazecamp

Sun acquires MySQL

Posted on 2008-01-16 19:47:45 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

MySQL, the world's most popular open source database has today been bought by Sun Microsystems. Congratulations to Monty and the rest of the team! Billion dollars, quite a deal in the free software space.

Sun-Mysql

Jonathan Schwartz writes:

This puts products like MySQL in an interesting position. They're a part of every web company's infrastructure, to be sure. And though many of the more traditional companies use MySQL (from auto companies to financial institutions to banks and retailers), many have been waiting for a Fortune 500 vendor willing to step up, to provide mission critical global support.

So what are we announcing today? That in addition to acquiring MySQL, Sun will be unveiling new global support offerings into the MySQL marketplace. We'll be investing in both the community, and the marketplace - to accelerate the industry's phase change away from proprietary technology to the new world of open web platforms.

MySQL has been the trusty storage back-end of our Midgard CMS for a decade now. To those worried about the acquisition, it should be noted that Midgard 2 is built on top of GNOME's libgda database abstraction library and can run also on top of Postgres and SQLite storage.

The first alpha of Midgard 2 libraries should be out soon so we can start porting MidCOM...

Technorati Tags: mysql, libgda, sun

The Cell phone is the Computer

Posted on 2008-01-19 18:18:51 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Driving In Lesotho A BBC article is reporting how cell phones have become ubiquitous in the developing world, and how they instead of "regular" computers will be the communications, learning and business platform in many of those regions.

If I had told you ten years ago that by the end of 2007 there would be an international network of wirelessly-connected computers throughout the developing world, you might well have said it wasn't possible.

...

But regardless of where the developer is located, I think it's time that we recognised that for the majority of the world's population, and for the foreseeable future, the cell phone is the computer, and it will be the portal to the internet, and the communications tool, and the schoolbook, and the vaccination record, and the family album, and many other things, just as soon as someone, somewhere, sits down and writes the software that allows these functions to be performed.

To make software in this space, simple, mobile technologies are the ones that matter. This means SMS-based information retrieval, mobile (or multi-platform using detectors like WURFL to morph the UI) web applications, inter-application communication techniques like XMPP, P2P architectures, and hopefully open platforms like GNOME Mobile and Android will be where the action is.

It is also important to get rid of the "you're never offline" mindset. We're talking about a world where network or power outages are frequent and data transfer fees can be high. So good offline access to data is mandatory, although constrained by the potentially small (but growing!) storage space of cell phones.

See my "Solving the logistics of Mamona" and "The World's Internet Tablet?" posts, and the Midgard positioning related to this.

Via Boing Boing Gadgets.

Technorati Tags: android, future, p2p, maemo, sms, xmpp

The Nemein team on a map

Posted on 2008-01-21 14:38:10 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

We're in the process of publishing the new corporate website today. While our web needs are actually quite simple, the site includes some nice features. As we're involved in GeoCMS development, one such feature is the active team map:

Nemein team on OpenStreetMap

The OpenStreetMap gets automatically updated as we move around. This doesn't however mean that we've GPS collared our employees, but instead that we're using the Plazes service to coordinate our comings and goings. Everybody runs a Plazer on either the Mac desktop or an Internet Tablet, and the position changes whenever we connect to a wireless network.

Other details on the site include showing the Skype availability status of everybody, and providing a "Planet Nemein" view of blogs by team members.

This all was reasonably simple to accomplish using a stock Midgard setup.


Technorati Tags:
nemein, openstreetmap, planet, plazes, nemein, skype

Nokia Internet Tablet N800 as Family's Portable Media Center

Posted on 2008-01-22 12:32:41 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Jyrki and Outi huddled around the Internet Tablet

This is a guest blog by Outi and Jyrki Wahlstedt. I loaned my N800 to them in late December and here they write about their experiences with the device.

Our Internet tablet is present almost imperceptibly in our life from dawn till dusk. It wakes us up in the morning, and tells news in the evening. It is small and stylish, and it mixes well with the environment.

Its utilities include e.g. a browser for surfing the net, Skype for phone calls, and several radios. Its smallness allows it to be enjoyed together, not separately as often happens with our personal computers. Several times a day we look at weather information, and TV programme guides. Also we use it in looking for dogs in need of home, this being the most important project at the moment.

Though its screen is small, the tablet can be used professionally e.g. to monitor large systems with nagios, as the problem components are discernible due to alert colors. This can be handy for remote control.

Skype phone is very easy to use, and we can use it as a speakerphone or with Bluetooth headset. Speakerphone is quite pleasant, as there is no audio feedback from speakers to microphone. Screen quality is good, which enables showing photos as slideshow.

The tablet is easy to use, though there are some difficulties that might be improved in its successor, N810. Screen lock is not very intuitive, the procedure is implemented like in cellphones. In using the screen keyboard it is extremely easy to press <ENTER> and so it is easy to write e.g. an erroneous URL.


Technorati Tags:
maemo, n800

Open Source companies of Europe, unite!

Posted on 2008-01-22 15:42:20 UTC in 60° 10.218 N 24° 56.214 E Helsinki, FI to . 0 comments.

EU_flag.jpg A week ago I spent some time in Berlin representing the Finnish Centre for Open Source Solutions (COSS). The event was about building a new pan-European network for Open Source companies.

The result of that meeting is the Open Business Organizations of Europe (OBOOE), which is focused on creating a voice for the thousands of Open Source SMEs which are a currently under-represented industry and a vital part of the European economy.

From the press release:

The Open Business Organisation of Europe (OBOOE) will unite regional associations of open source businesses. Henri Bergius, representative of the Finnish Centre for Open Source Solutions (COSS): "The current situation is that most of European OSS companies have more business cooperation with software companies from abroad than within Europe."

OBOOE aims to represent European OSS professionals in a joint voice and tap the full potential of the regional industries. Elmar Geese, representative of the German LIVE Linux Verband: "OBOOE will develop the open source market and industry by matchmaking, sharing of knowledge and business opportunities."

Alexandre Zapolsky representative of French federation of open source professionals (FNILL) says: "It is an historical day! With OBOOE we are going to build the Europe of open Source Software. We are going to pass from the time of speech to the time of action. It is very exciting!"

There is also an article in heise.de: Neues Netzwerk für Open-Source-Firmen in Europa (BabelFish translation).

Expect to hear more about OBOOE after FOSDEM. In the meanwhile, feel free to contact us.

Updated 2008-01-23: Some mentions in Finnish press: SWbusiness.fi, Digitoday, Tietokone and HighTech Forum

Technorati Tags: coss, freesoftware, europe

Black box voting comes to Finland

Posted on 2008-01-25 10:23:22 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

It is not who votes that counts

According to the Finnish Ministry of Justice, the new electronic voting system that will be used in next municipal elections is a proprietary system.

This means that Finland enters the era of Black Box Voting where the algorithms used for counting votes are secret and there is no paper trail.

Electronic Frontier Finland (Effi) writes:

"Companies may have business secrets, but democratic elections require transparency", says Effi board member Jyri Luostarinen. "How is it possible that the justice ministry buys an election system that has operations that can not be publicized for business reasons?"

The Finnish electronic voting system will be delivered by TietoEnator, a company which hasn't even gotten the parliamentary electronic voting panels used by 199 MPs to work reliably.

It is not too late to support or join Electronic Frontier Finland!

Image adapted from The Diebold Variations site. Diebold is a US vendor of proprietary, and often faulty elections machines.


Technorati Tags:
finland, politics, tietoenator, voting

Nokia to acquire Trolltech, makers of Qt

Posted on 2008-01-28 08:15:36 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Nokia has announced today that they're intending to acquire Trolltech, the Norwegian company behind the Qt cross-platform widget set and the Qtopia mobile platform.

Ari Jaaksi from Nokia writes:

Both GNOME and KDE are very interesting and active projects. Our strong participation in the Gnome community and the new access to KDE and Trolltech's technology puts us in an unique position to create even more interesting mobile devices, together with the open source communities.

Despite this and some collaborative efforts between the GNOME and KDE projects, the acquisition does cast the deeply GNOME-based maemo platform Nokia has been pushing so far into an interesting light.

In any case, good to see more movement in the mobile Linux space!

Updated 9:24Z: I would guess Nokia intends to use Qt to provide a transition path for developers from legacy Symbian environments to mobile Linux. Qt is already cross-platform and with strong support for independent developers, so it would fit this task quite well.


Technorati Tags:
maemo, nokia, trolltech, qt

Consolidating your online identity

Posted on 2008-02-05 14:43:37 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Mememememe

If you're using multiple social web services, you will also have multiple online identities. For creating a comprehensive online persona, consolidation between the various profiles would be useful.

To aid in this, and to enable social network portability, Google has started aggregating social networking data marked up in the XFN and rel=me microformats to build a comprehensive social graph.

Having a portable online identity and contact network would be very useful, as it would make signing up and using new web services much easier. Instead of having to invite all your friends multiple times, you would just point to some of your existing profiles and the service would gather your contacts and profile information from there.

To experiment with the concept I added my various online profiles into my home page, and gave the URL to Plaxo's Online Identity Consolidator. It was able to find quite a good set of profiles and connect them to me:

Plaxo-Online-Identities-Debug-1

It will be interesting to see how various websites will start utilizing Google's new services. I've joined the Data Portability action group in order to implement some of these things in Midgard CMS.

Updated 14:52Z: Very good write-up on Bokardo


Technorati Tags:
identity, xfn, xhtml

Some plans for MidCOM 3

Posted on 2008-02-05 15:44:26 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

MidCOM 3 request flow

MidCOM is the PHP framework used for building sites with Midgard CMS. Over years it has accumulated lots of components and features, and currently weights around half million lines of code. At the same time the design, while being well designed, suffers from having to work around lots of limitations in PHP4 and the old Midgard API.

In preparation for the Midgard Developer Meeting in Linköping, Sweden next week we have been having some discussions on where to go with a new MidCOM generation, and the consensus seems to be a rewrite, refactoring or porting only selected parts of old code.

As a teaser for that, I've attached an initial HTTP request handling flow chart of the planned MidCOM 3 architecture.

Some points of interest:

Together these should make MidCOM a much simpler framework to build with, and make Midgard again (thanks to its C core) one of the fastest CMSs out there, as opposed to being a rather large thing.

We will start a new fresh Git repository to build a proof-of-concept of the new MidCOM framework. After that developers are more than welcome to port components and play with the new system. Looking forward to discussing this in more detail next week!

In related news, it seems the Plone people are rethinking their platform as well.


Technorati Tags:
midcom, midgard, php, tal

Maemo and Midgard go well together

Posted on 2008-02-16 20:24:53 UTC in 58° 23.412 N 15° 39.336 E Linköping, SE to . 0 comments.

We're in Linköping, Sweden for the Midgard developer meeting, and I suddenly realised the Midgard community really likes Nokia's internet tablets. Not only does maemo.org run on Midgard (earlier this week "sideported" to MidCOM 2.8), but many Midgardians are also active Tableteers.

Midgard Tableteers in Linköping

So no wonder over the course of the meeting we saw the maemo application manager display an interesting message: libmidgard2.0 successfully installed.

Midgard 2.0 installed on N800 running OS2008

Expect some announcement about that soon. And about some other things, like MidCOM 3 as well. Initially it looks very promising.


Technorati Tags:
maemo, midgard

Conferences this spring

Posted on 2008-02-16 21:46:37 UTC in 58° 23.412 N 15° 39.336 E Linköping, SE to . 0 comments.

While last autumn was more quiet, this spring seems to have a number of events that I'm going to:

Looking forward to meeting many of you in these events! The July conferences of GUADEC in Istanbul and State of the Map in Limerick sound interesting as well.

It is possible to follow my movements through Dopplr:

Dopplr travel map


Technorati Tags:
ajatus, geoclue, obooe

Podcast on Nikola Tesla

Posted on 2008-02-20 17:09:58 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Nikola Tesla

Tank Riot from two weeks ago has a podcast on Nikola Tesla, a very interesting character behind many of the inventions that enabled the modern age, including AC electricity, radio, and possibly even more interesting things. From the Wikipedia page:

Tesla is best known for his many revolutionary contributions to the discipline of electricity and magnetism in the late 19th and early 20th century. Tesla's patents and theoretical work formed the basis of modern alternating current electric power (AC) systems, including the polyphase power distribution systems and the AC motor, with which he helped usher in the Second Industrial Revolution. Contemporary biographers of Tesla have deemed him "the man who invented the twentieth century" and "the patron saint of modern electricity."

2006 was the UNESCO Nikola Tesla Year. He appeared in that year's stage magician film The Prestige played by David Bowie.

Via Boing Boing.


Technorati Tags:
electricity, future, history, podcast, radio, tesla

Midgard developers in Linköping

Posted on 2008-02-20 17:55:38 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Last weekend a group of European Midgard developers gathered to Linköping, Sweden for the Midgard developer meeting of winter 2008. Over the last four years Linköping seems to have established itself as the place to hold the winter meeting, with summer meetings differing in place. In 2006 we went to Poznan, Poland and in 2007 to Otaniemi, Finland.

Midgard Developers in Linköping

The meeting was very productive, possibly partly due to the fact that "penkkari cruises" forced the Finnish crew to take a cargo ship over instead of a cruise ship.

Topics discussed over the weekend included:

Discussing midgard_collector joins

In addition to talk, the meeting was also quite full of action. MidCOM 2.8 went stable, and the foundation stones for a working MidCOM 3 were laid. And it is fast! Running the full framework with TAL templating included, but without any caching on a news folder containing over 700 unique items generates the ready page in about 0.01 seconds. Not bad!

Alexander Bokovoy discussing the cross-language MidCOM

MidCOM 3 is now being developed in a separate Git repository, and should be considered still very experimental. However, as soon as some metadata features, the toolbar and datamanager are in it should be OK to start porting components over.

Thanks to anykey and the SmallOne household for the hosting!


Technorati Tags:
midcom, midgard

Offline web applications: a technology trend of 2008

Posted on 2008-02-20 18:33:41 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

MIT Technology Review's 10 Emerging Technologies of 2008 report includes offline web applications as a rising trend. When developing Ajatus, our new P2P personal CRM the offline issue was often in our minds. We even wrote in the manifesto:

Ideas may come to you when you're sitting in a bus, boarding an airplane or visiting a hospital. For a CRM to work the data must be available and editable in any situation.

Having now dogfooded Ajatus for almost two months, I have to say this has been an important aspect. It is powerful to have all your customer and project data with you at all times, and still be able to use it via the familiar web UI.

Ajatus 0.6 running on Fluid SSB

Offline is useful. You can write your notes in every meeting, update them in train, report expenses as they incur. And most importantly, as long as your computer is running, the application is never down. And still, though replication your data will be safe with your peers or the corporate server.

This is aspect even more important when you start running the app on ultra-portable devices, or go outside the industrialized world.


Technorati Tags:
ajatus, offline, web, replication

XMPP publish/subscribe for Midgard and Ajatus replication

Posted on 2008-02-24 14:33:46 UTC in 50° 48.648 N 4° 22.907 E Brussels, BE to . 0 comments.

On the side of FOSDEM we went today to the XMPP devcon held here in Brussels. In there we started formulating our ideas of XMPP publish/subscribe (XEP-0060) based replication for both Midgard and Ajatus.

This post contains very early ideas, but we would be happy to get some feedback on them.

Basic idea

Each Midgard or Ajatus server runs a "synchronization daemon" which is connected to a XMPP server using some JID identity.

The sync daemon registers a set of pub/sub nodes corresponding to the content structure on the Midgard or Ajatus instance:

  • in Midgard: Sitegroups, MgdSchema types, paths (possibly a regexp), approval state
    • /midgard_article/all, /midgard_article/approved
  • in Ajatus: tags

The pub/sub nodes can be set up with some access control rules. For example, Ajatus tags would by default require "whitelist" authorization to subscribe.

When content is changed, the sync daemon gets notified about it (via D-Bus signals in Midgard, and via CouchDb external indexer API in Ajatus). The content object (and immediate children like parameters and file attachments) is serialized into the syndication format and sent onward as a XMPP "pub" leaf. If the object appears on multiple nodes (multiple Ajatus tags for instance), the "pub" leaf is sent to all of them.

XMPP server and the federated network will then handle notifying the subscribers of the nodes about the new leaf.

The subscribers will receive the leaf, and unserialize it to the Ajatus or Midgard database.

Communication between sync daemon and application

The sync daemon should exist as an entity separate from the actual user application. Communication between the sync daemon and Midgard or Ajatus should happen via the application database.

This means that XMPP pub/sub whitelists for Ajatus tags would be maintained in the ajatus_db (non-replicated) database, and the sync daemon would read them from there. The Jabber server credentials would also be stored in the same database.

Information about resources from jabber buddies

User's replication partners are stored as local contacts in the application database. In Ajatus this means "Contacts" and in Midgard "midgard_person" objects. Both storage models have optional JID field.

If JID is marked for a contact, the sync daemon should at startup (or at an interval) try to discover if the contact has pub/sub resources available.

Content transformation in replication stage

While mainly intended for Midgard-to-Midgard and Ajatus-to-Ajatus replication, the same mechanisms could work across different systems.

For this, the sync daemon on the subscribing end should support XSLT transformations before content is unserialized into the system. The XSLT transformation templates should be configurable per subscription.

Hermod / Hermóðr (Midgard replication)

  • "in Norse mythology, messenger of the gods. He was a son of the principal god, Odin, and his wife, Frigg. Known as Hermod the Swift, he was called upon by the other gods when they had a task requiring speed and urgency." - Encyclopedia Britannica
  • Written in Python
    • Using twisted framework or x60br XMPP library
    • using standard Midgard MgdSchema object serialize/unserialize methods
  • How to proof-of-concept before D-Bus? Some watcher in MidCOM? (watcher touches spool file)

PillowTalk (Ajatus and CouchDb replication)

  • Written on Erlang
  • Extendable through plugins
    • Content parsers (Midgard2Ajatus, Ajatus2Midgard)
    • Security
    • CDATA JSON block or convert to XML? (Decision of the content parser?)

Technorati Tags: ajatus, midgard, jabber, replication, synchronization, xmpp

Midgard 2.0 goes alpha

Posted on 2008-02-26 12:50:19 UTC in 60° 9.234 N 24° 52.782 E Helsinki, FI to . 0 comments.

This is a historical moment:

The first alpha of the Midgard 2.0 branch is targeted at web framework and desktop developers. This release does not consist of the CMS components, but instead targets at providing the development tools for building a modern web framework. Framework based not only on one tool, but which can connect multiple technologies and languages.

The version 3 of MidCOM web content management components for PHP5 are currently in the process of being ported to the Midgard 2.0 platform.

Good work, Piotras and the team!

On Finnish Internet censorship

Posted on 2008-03-04 16:50:58 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Since late 2006 Finland has been quietly enacting its own form of Internet censorship, a practice more typically connected with various oppressive regimes, and not with a democratic country.

The Finnish variation is a DNS blocking system ostensibly targeted at child porn. The system is however very dubiously implemented using secret block lists maintained by the police, and it blocks access to many sites that contain fully legal content. A well-known case is the police blocking access to the website of Matti Nikki, an anti-censorship activist.

There has been also discussion of expanding the system to block access to other internet resources, like gambling or file-sharing sites.

As is usual, this kind of faulty, and easy to circumvent system is the product of decision makers being ignorant of technology, even in the age of the information society. There was a demonstration today at the Finnish parliament house with about 500 attendees:

Internet censorship demonstration on March 4th, picture: Helsingin Sanomat

(picture source: Helsingin Sanomat)

To fight this, please support Electronic Frontier Finland (EFFi) and the efforts of MP Jyrki J. Kasvi.

Technorati Tags: finland, censorship

Yahoo! Fire Eagle knows where my phone moves

Posted on 2008-03-07 18:30:24 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

I've been a happy user of the Jaiku S60 client for a while now. It not only allows me to coordinate things with my friends on the move, but also positions my phone using cell IDs.

So far I've used the WiFi positioning based Plazes client for updating location on my site, but the thought of also using Jaiku has crossed my mind a few times, as it updates my location a lot more often (even if less accurately) than my N810 does.

To make things even more interesting, Yahoo! recently launched their Fire Eagle positioning service that can use multiple location sources, and distribute the data to multiple clients. This means that if I make my Midgard track Fire Eagle instead, I can easily combine both Plazes and Jaiku location data.

However, as for now Fire Eagle only provides a set of APIs, and no tools to work with the various services. So in order to get familiar with their API and to enable Jaiku location I whipped up a quick PHP script for keeping Fire Eagle updated on my location.

Now in my server's cron I have the line:

*/20 * * * *   /usr/bin/php /home/bergie/bin/jaiku2fireeagle.php bergie <fire eagle access key> <fire eagle access secret>

And this seems to give quite decent results:

Fire Eagle location from Jaiku

In this case my Jaiku location string was Etu-Töölö, Helsinki, Finland. I passed the neighborhood name through GeoNames search, and that mapped the Helsinki district of Etu-Töölö to coordinates to only some hundred meters from my home. Not bad!

Next up: make Fire Eagle a Midgard position source as well. Also, figure out how to tell Fire Eagle that even though I'm providing it coordinates I got from GeoNames, the position is only approximate and not exact.

Technorati Tags: geonames, jaiku, php, fireeagle

Weekend of Haedong Kumdo

Posted on 2008-03-12 14:26:50 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Grand Master Kim Jeong Seong of the United World Haedong Kumdo Federation visited Helsinki last weekend to hold a seminar on Korean traditional swordmanship.

Helsinki Haedong Kumdo seminar 2008 participants

The weekend was a very interesting combination of various sword forms, two sword sparring and cutting and control exercises. We also held examinations for various belt levels, where I attained 1st keub (red-black). Our instructors Jose and Mika reached the 2nd dan in the art.

Jose and Mika displaying Jedo Gumbup

Photos by me and Vilja are available online. Those interested in Haedong Kumdo can see more and try it in our next demonstration on March 17th in Ressu school in Helsinki. Here is a small teaser.

Technorati Tags: haedongkumdo, hdgd, swords

Some Midgard roadmapping

Posted on 2008-03-13 13:54:35 UTC in 60° 10.212 N 24° 56.004 E Helsinki, FI to . 0 comments.

Midgard2
There has been some discussion on how the different items in the Midgard roadmap fit together. Here is my company's view on how we see ourselves proceeding.

Baseline: Midgard 1.8, MidCOM 2.8 and PHP 5.2

At least in our company we're trying to consolidate all customers to these version numbers. MidCOM 2.8 is a very capable (if heavy) platform that we will be able to support for a long time. It is also important, as...

Next step: Midgard 1.9, MidCOM 2.9 and PHP 5.2

Having consolidated sites to MidCOM 2.8 and PHP 5.2, it will be very easy to migrate to Midgard 1.9 (PHP4 not supported). While Midgard API changes somewhat (Exceptions, Midgard_Connection) between 1.8 and 1.9, MidCOM 2.9 (currently called "trunk") is able to hide that from site builders.

Mid-term: Midgard 1.9, MidCOM 3.0 and PHP 5.2

The main reasons to switch from Midgard 1.8 to Midgard 1.9 are performance, new installer and the ability to run MidCOM 3 alongside MidCOM 2.8. While MidCOM 3 requires complete site rewrite from 2.8/2.9, this phase makes migrations and running sites with both versions on same server possible.

Long-term: Midgard 2.0, MidCOM 3.0 and PHP 6

Once a server has completely migrated from MidCOM 2.x sites onwards, it will be possible to make the final jump to the full new generation Midgard platform.

Technorati Tags: midcom, midgard, php

Semantic web is here: Yahoo! and microformats

Posted on 2008-03-14 08:57:34 UTC in 60° 10.458 N 24° 55.980 E Helsinki, FI to . 0 comments.

Microformats

Semantic web, the platform that could enable new businesses to rival the likes of Google has for a long time been a distant promise. Much of this has been because the standardization bodies have focused on too difficult and impractical technologies instead of building it on top of existing web implementations.

Microformats are a more pragmatic approach: by using simple naming and mark-up conventions the semantic information can easily be added into web pages that will then suddenly become readable by both humans and computers. Microformats have been around for a while now, but have so far remained quite exclusive to a small group of web geeks.

This is about to change, though: Yahoo! has announced that its search service will utilize Microformats to present much more useful results to end-users. And Google will likely follow. This means that suddenly search engines will understand about addresses of companies, product reviews, event scheduling and many other things, and will make these easily accessible to consumers.

At the same time, Firefox 3 is nearing release and will support Microformats directly, so extensions for doing it may not be necessary. With both browsers and search engines covered, Microformats should quickly become very easy to find and utilize.

So now our users and customers will start to reap benefits from the fact that we've been seeding Midgard CMS default templates and customer implementations with Microformats since summer 2005.

Technorati Tags: microformats, search

MidCOM 3 at a glance

Posted on 2008-03-18 12:21:18 UTC in 60° 9.762 N 24° 44.310 E 7km S of Espoo, FI to . 0 comments.

This document has been written as a quick Midgardized version of the nice "Django at a glance" tutorial, in order to explain how the new and upcoming MidCOM 3 framework works. In addition publishing this as a blog post, this document will be maintained in the MidCOM 3 version control tree.

MidCOM 3 has been designed to be an extensible and highly configurable CMS development environment. It provides several basic building blocks like toolbars, access controls and management of static content pages out-of-the-box.

MidCOM applications are built as "components" with Java-like namespacing. This means that a "news" component designed by company named Nemein could be called net_nemein_news. Components are run on a Midgard site by setting a folder of the site to use that component.

Design your model

MidCOM uses Midgard's MgdSchema object-relational mapping system for providing easy object-oriented API for database storage. Models are described using XML syntax, and Midgard then provides OOP APIs to them for C, PHP and Python languages.

Here is a simple example MdgSchema:

<?xml version="1.0" encoding="UTF-8"?>
<Schema xmlns="http://www.midgard-project.org/repligard/1.4">
  <type name="net_nemein_news_article" table="net_nemein_news_article">
    <property name="id" type="integer" primaryfield="id" />
    <property name="name" type="string"/> 
    <property name="title" type="string" multilang="yes" table="net_nemein_news_article_i" />
    <property name="content" type="longtext" multilang="yes" table="net_nemein_news_article_i" />
  </type>    
</Schema>

Other fields like author or publication date do not need to be defined in the MgdSchema as Midgard automatically extends all records with a set of metadata properties.

Install it

Place the MgdSchema XML file to /usr/share/midgard/schema, and then create the database tables based on it by running:

$ midgard-schema midgard

Where midgard is the name of your Midgard conf.d file that defines the database access parameters like database type and password.

Enjoy the free API

These steps are all you need to do to have new Midgard objects at your disposal. Now you can access and manipulate them using for example Python or PHP. With PHP, the API looks like this:

<?php
// Create a new person
$reporter = new midgard_person();
$reporter->firstname = 'John';
$reporter->lastname = 'Smith';

// Save it to the database
$reporter->create();

// Now it has an UUID
echo $reporter->guid;

// And it can be fetched from the database
$qb = midgard_person::new_query_builder();
print_r($qb->execute());
// This would print an array of midgard_person objects containing "John Smith"

// We have multiple ways to query objects
$qb->add_constraint('lastname', 'LIKE', 'Smi%');
print_r($qb->execute());

// Create a new article
$article = new net_nemein_news_article();
$article->title = 'MidCOM is cool';
$article->metadata->authors = $reporter->guid;
$article->create();

// Extend the article with new properties
$article->parameter('namespace', 'key', 'value');

// Localize the article to Finnish
mgd_set_lang('fi');
$article->title = 'MidCOM on ältsin magee';
$article->update();

// Delete the Finnish translation
$article->delete();

/// etc
?>

A dynamic admin interface

Midgard comes with Asgard, an automated administrative interface which provides a full editing tool to all our installed MgdSchemas. If your define a tree model for your storage, it will even provide a nice navigation tree for them. For example:

<?xml version="1.0" encoding="UTF-8"?>
<Schema xmlns="http://www.midgard-project.org/repligard/1.4">
  <type name="net_nemein_news_article" table="net_nemein_news_article" parent="midgard_topic">
    <property name="id" type="integer" primaryfield="id" />    
    <property name="name" type="string"/>
    <property name="title" type="string" multilang="yes" table="net_nemein_news_article_i" />
    <property name="content" type="longtext" multilang="yes" table="net_nemein_news_article_i" />
    <property name="topic" type="integer" link="midgard_topic:id" parentfield="topic"/>
  </type>    
</Schema>

After this the net_nemein_news_article objects would be stored under topics, and could be browsed in the topic tree hierarchy.

Asgard understands linked properties, datetime fields, and other MgdSchema field types and provides appropriate editing tools for them. For example, linked fields automatically become search-based choosers.

At this point you can already start entering content to your new application using the Asgard tool.

Design your URLs

A clean URL space is important in a modern web framework, and with Midgard clean URLs have been the norm even since the 90s.

In MidCOM your application URL space is set up as something called "routes". They are entered in YAML format to the component's configuration file, in this case net_nemein_news/configuration/defaults.yml. The routes follow the IETF URI template draft format.

For example, a route for displaying a particular article could be defined as:

show:
    controller: net_nemein_news_controllers_article
    action: show
    route: /{$name}/
    content_entry_point: nnn-show-article

In this case, the URL to a news article would be /foldername/articlename.

The routes define many things about what MidCOM should do with the request. First of all, they define which controller PHP class, and which action method in it will deal with the request. Additionally the route can define a template_entry_point or content_entry_point to choose which template files will be used for displaying the page. Other things like templating language and MIME type can also be defined in the configuration file.

Routes are stored in configuration file so that they can be easily overridden on per-site, or even per-folder basis. This means that migration from some other CMS system is quite easy as the site can be configured to retain the old URL formats.

Write your controllers

Each controller is responsible for doing one of two things: Populating a data array with content of the requested page, or raising an exception like midcom_exception_notfound.

The controller class in this case would be stored to net_nemein_news/controllers/article.php and could look like the following:

public function action_show($route_id, &$data, $args)
{
    $qb = net_nemein_news_article::new_query_builder();
    $qb->add_constraint('name', '=', $args['name']);        
    $articles = $qb->execute();        
    if (count($articles) == 0)
    {
        throw new midcom_exception_notfound("Article {$args['name']} not found.");
    }
    $data['article'] = $articles[0];
}

After the controller has produced the data it will then be passed to the MidCOM templating system according to the entry points defined for the route.

Design your templates

MidCOM uses the Template Abstraction Language (TAL) for its templating purposes. TAL is a very powerful templating system in the sense that it allows designers to build the site XML or XHTML templates and fill them with example data that will then be replaced with the real data when TAL is run.

In this case our template would be placed in net_nemein_news/templates/nnn-show-article.php. It could contain something like:

<div class="hentry">
    <h1 tal:content="net_nemein_news/article/title" class="entry-title">Headline</h1>

    <div tal:content="net_nemein_news/article/metadata/published" class="published">2007-08-01</div>

    <div tal:content="structure net_nemein_news/article/content" class="entry-content">
        Content
    </div>
</div>

The XHTML attributes in the tal namespace contain the rules used by TAL for replacing the example data with the real data from the controller. The data array of the controller is exposed to tal using the component name, in this case net_nemein_news.

The default template supplied by the component can be overridden by placing an element named nnn-show-article to either the site main style, or as an element of the current folder.

This is just the surface

This has been a very quick overview of the MidCOM framework. The third version framework is still very much evolving, but the earlier versions are already very rich with existing tools and features.

However, in near future MidCOM 3 will feature rich signal-based I/O event handling, Access Control Lists, caching and many other things useful to web developers.

Everybody interested in MidCOM 3 is welcome to install a Midgard 1.9 nightly, get a git checkout of MidCOM 3 and start playing.

GeoClue status update

Posted on 2008-03-19 15:16:22 UTC in 24° 39.894 N 60° 12.648 E 82km SW of Chābahār, IR to . 0 comments.

GeoClue
I sat down with GeoClue maintainer (and my former SoC student) Jussi Kukkonen to discuss how the project has been moving forward, and the situation is looking quite good. To those unfamiliar with GeoClue, here is a quick intro:

GeoClue is a modular geoinformation service built on top of the D-Bus messaging system. The goal of the GeoClue project is to make creating location-aware applications for mobile Linux devices as simple as possible.

Last summer with the Summer of Code we were able to make a first full implementation of GeoClue and release it for the maemo platform. There were also GeoClue sessions held in the State of the Map and GUADEC conferences.

However, as that implementation did not provide a master provider to abstract away the different position sources, it was still a bit cumbersome to develop GeoClue-powered applications. So when Jussi got hired by OpenedHand, a decision was made to change the API.

Now finally the API change work starts to be complete, and a new release of GeoClue should appear pretty soon. There are lots of ideas for location-aware applications floating around, and at least Mauku and Telepathy developers have expressed interest in using GeoClue in their apps.

If you're developing a mobile Linux application, GeoClue might be a good thing to take a look at. Location is a powerful piece of contextual information that can make your application more usable.

In the Age of Ajax, Java applets are obsolete

Posted on 2008-03-26 14:17:23 UTC in 60° 9.954 N 24° 56.544 E Helsinki, FI to . 0 comments.

Sampo Pankki, the bank that was formerly known as Postipankki, Leonia and just Sampo was recently bought by the Danish Danske Bank. As part of the merger they switched their IT systems to Danske Bank infrastructure in a huge EUR 200 million operation over the Easter. The switch had a lot of issues, causing website downtime, faulty account data and non-functioning credit cards.

However, the downtimes were not the only big issue with the switch: in the process Sampo also switched from a reputedly very functional HTML-based web banking interface into a Java Applet that is doing some quite dubious snooping on user's computer. And of course they didn't do much cross-browser testing. Here is what I see with Firefox 3 beta:

Sampo verkkopankki broken with Firefox 3

I remember when our former accounting software SaaS vendor Procountor did a switch from HTML to Java Applet. Suddenly a very fast and easy UI was changed to slow and unusable semi-desktop-ish application. Needless to say, my company dumped them immediately. Java Applets may have had advantages in 90s, but in the Age of Ajax they are mostly obsolete.

Update: Apparently the Sampo service also has a Cross-Site Scripting vulnerability. All this bungling makes me remain quite a happy Nordea customer.

Technorati Tags: ajax, java, security, sampopankki

Beyond Google Maps: Mapstraction is a good starting point

Posted on 2008-04-08 12:54:15 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Some shops on map
A List Apart 256 has a very interesting article on Taking Control of Your Maps, explaining how to provide richer and more customized web map solutions using tools like OpenLayers and Mapnik, and the free data provided by OpenStreetMap:

For the practical developer who wants to add geospatial information to a site or application, the Google Maps API has been an easy call.

But, perhaps no longer. As websites mature and the demand for geographic applications grow, the old mashup arrangement is starting to chafe. Mapping components are more and more vital, and so we demand greater control, expressiveness, and functionality from them.

Fortunately, as in many aspects of internet technology, an ecology of open source online mapping tools has emerged alongside the market leader. It is now possible to replicate Google Maps’ functionality with open source software and produce high-quality mapping applications tailored to our design goals. The question becomes, then, how?

While setting up your own map server might be a lot of effort, Mapstraction could provide a nice way to move beyond the "same old" Google Maps. With the same javascript you can experiment with different map providers like OpenStreetMap, Yahoo! and Microsoft.

Mapstraction comes bundled with Midgard's GeoCMS component, org.routamc.positioning. Switching map providers can be done in component configuration, and then displaying things on a map is very straightforward:

$map = new org_routamc_positioning_map('my_photo_map');
foreach ($photos as $photo)
{
    $map->add_object($photo);
}
$map->show(400, 200);

Technorati Tags: mapstraction, midcom, midgard, openlayers, openstreetmap, mapnik

Interprocess communications in Midgard: D-Bus comes to the web

Posted on 2008-04-08 13:11:37 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

In his recent blog post, Piotr Pokora showed how the the D-Bus API will work in Midgard 2. D-Bus is an interprocess communications system that is used heavily in modern Linux desktops like GNOME and KDE. With Midgard, the same system now becomes available for PHP and web applications:

midgard_python "service":
import dbus.mainloop.glib
import _midgard as midgard

def mbus_callback(object, arg):
        print "Hi! I am midgard_dbus from midgard-python. I got message:"
        print object.get_message()

mbus = midgard.dbus("/midgard_article")
mbus.connect("notified", mbus_callback, "foo")

mainloop = gobject.MainLoop()
mainloop.run()
midgard-php "client":
$message = "Greetings from midgard-php!(" . mgd_version() . ") PHP ver." . phpversion();
midgard_dbus::send("/midgard_article", $message);
I started php script which immidietialy[sic] ended, and on midgard-python service's terminal I got this message:
Hi! I am midgard_dbus from midgard-python. I got message:
Greetings from midgard-php! (2.0alpha0) PHP ver.5.2.5-3

This is a major milestone in our greater plan for the future of Midgard, and should be interesting to also other PHP and web application developers.

Good work, Piotras!

Technorati Tags: dbus, midgard, php, python

Zenburn colors for PHP editing in SubEthaEdit

Posted on 2008-04-09 12:58:01 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

In my company we're using the SubEthaEdit collaborative editor for our development work. It is nice to be able to share editing sessions when pair programming, or just showing a particular solution to a colleague.

Yesterday's del.icio.us popular alerted me to the Zenburn color scheme for programmers. It is a quite nice low-contrast color scheme developed by Jani Nurminen.

To try it out, I made a SubEthaEdit color scheme for using it with the PHP-HTML mode:

Zenburn in SubEthaEdit's PHP mode

The color scheme file is available for download. If others are interested in collaborating on this, the scheme is also in a GitHub repo.

Technorati Tags: osx, php, zenburn, subethaedit

Shell usage statistics

Posted on 2008-04-10 13:59:05 UTC in 60° 8.868 N 24° 25.182 E Kirkkonummi, FI to . 0 comments.

This meme seems to be running again:

Compass:~ bergie$ 
history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c | sort -nr |head -n 10
 209 git
  47 svn
  30 cd
  24 sudo
  24 phing
  18 ssh
  16 ls
  13 vi
  12 ~/ajatus_ssh_replicate
  12 scp

Interesting to see how the stats have changed in one and half years. Main changes are due to Ajatus replication, and git being used for MidCOM 3 development.

Technorati Tags: history, shell, unix

GitHub for MidCOM 3 developers

Posted on 2008-04-11 10:21:00 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Yesterday Arttu Manninen posted notes on how to use git for MidCOM 3 development. In addition to the repo.org.cz usage he described, the other way to work on the next generation PHP framework for Midgard is using the GitHub service.

Rails on the Run has quite good tutorial.

Technorati Tags: midcom, midgard, git, github

Numpty Physics and Fennec: the tablet is becoming more fun

Posted on 2008-04-11 19:54:41 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

I've been using my N810 as sort of an universal communicator for a while now, and for this it has generally served well. The only thing I really miss is Skype video calls.

But other than that, I haven't been using the tablet too much. In real-world usage I've found the browser way too unresponsive, and the RSS reader too limited. But now, thanks to two very promising projects the tablet is becoming fun again:

Fennec is the mobile version of the Firefox browser with heavy performance optimizations (install):

Fennec on N810

Numpty Physics is a maemo port of the awesome Crayon Physics puzzle game where you draw objects and play laws of physics to get a ball moving to the end of a track (download):

Numpty Physics explanatory track

Good stuff!

Technorati Tags: maemo, n810, fennec

GeoClue presentation in FISL 9.0

Posted on 2008-04-19 00:25:48 UTC in 30° 3.312 S 51° 11.334 W 5km S of Porto Alegre, BR to . 0 comments.

I'm currently in Porto Alegre, Brazil attending the 9th International Free Software Forum (FISL) - a huge conference with some seven thousand participants. My talk in the event will be about GeoClue, the geo-information framework designed for Linux-based mobile devices.

For those unable to be there or missing the 9am talk because of the parties tonight, the slides are now available online:

GeoClue is now nearing release, and so we will probably be present also in the GUADEC and Akademy conferences this summer.

Technorati Tags: geoclue, fisl

Midgard 2: Finally legacy-free

Posted on 2008-04-24 22:41:14 UTC in 23° 39.702 S 46° 36.672 W Diadema, BR to . 0 comments.

While watching Everaldo work on the upcoming Midgard C# bindings, I decided to try running Midgard 2 with lighttpd. After quite a lot of struggling to get latest SVN checkout to compile on my mac, and some playing with lighty rewrite rules, I was greeted with a working MidCOM 3 page:

MidCOM 3 running on Midgard 2 and lighttpd

So, after such a long time, Midgard 2 is finally a running system without any legacy dependencies, independent of HTTP server module or a specific database engine. Things will be even more interesting as we will really start using Python, PHP and mono bindings together using D-Bus.

Technorati Tags: dbus, midcom, midgard, mono, php, lighttpd, python

Headed out for a walk

Posted on 2008-05-02 10:00:26 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

I'm now headed to Santiago de Compostela via a Haedong Kumdo seminar in Sweden. This means that I will be spending most of May walking.

In the meanwhile, my progress can be followed via Jaiku or Plazes.

Walking towards Thabana Ntleanyana in Lesotho, 2004

Technorati Tags: pilgrimage, santiagodecompostela

SQL-level debugging with Midgard

Posted on 2008-05-28 12:12:54 UTC in 60° 9.858 N 24° 44.148 E 7km S of Espoo, FI to . 0 comments.

We're currently in the stage where two branches of Midgard: 1.9 and 2.0 are both in active development. Midgard 2 is the fully legacy-free next generation of Midgard, and 1.9 is a transitional release that provides both Midgard 2 and Midgard 1 APIs to ease migration.

The active development status means that bugs are bound to be found in them. For people living on the bleeding edge, it is good to know how to enable SQL-level debugging in case of issues.

Debugging with Midgard 1.x

To start debugging call the following before the troublesome API calls in your code:

mgd_debug_start();

And to end debugging after those API calls:

mgd_debug_stop();

The SQL logs will end up in the Apache error log file.

Debugging with Midgard 2

To start debugging call the following before the troublesome API calls in your code:

midgard_connection::set_debuglevel('debug');

And to end debugging after those API calls:

midgard_connection::set_debuglevel('warn');

The SQL logs will end up in the Midgard log file (as specified in Logfile directive of the unified configuration file).

The SQL logs look something like the following:

midgard-core (pid:8634):(debug):query = SELECT page.id AS midgard_collector_key FROM page, page_i WHERE page.up = 104 AND page.id=page_i.sid AND page_i.lang IN (0, 0) AND page.sitegroup IN (0, 1) AND page.metadata_deleted = 0 

Technorati Tags: midgard, sql

Firefox 3: soon

Posted on 2008-05-30 08:15:50 UTC in 60° 9.858 N 24° 44.148 E 7km S of Espoo, FI to . 0 comments.

I've been using various Firefox 3 test builds since winter for production and I have to say things look really good. Soon it will be released, and then there will be a Download Day with attempt for a Guinness World Record.

Go and pledge to join !

Firefox 3 Download Day

Technorati Tags: firefox

Midgard 2: more than just PHP, more than just CMS

Posted on 2008-06-02 09:30:55 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

As Midgard 2 is already in alpha stage, I though it would be good to update the architecture diagram to showcase the new Midgard structure. This includes multiple language bindings, MidCOM3, D-Bus interprocess communications and other things.

Midgard 2 architecture

With these changes Midgard 2 can function either as a full-fledged CMS, a PHP MVC framework, or a persistent storage framework for multiple different programming languages.

XMPP replication is also mentioned, but work on that will actually start later this month.

Technorati Tags: midcom, midgard, mono, php, mvc, python

iPhone, GeoClue and making mobile devices location-aware

Posted on 2008-06-06 11:52:55 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

iPhone location-awareness on Lifehacker
Lifehacker has an interesting story on how location-aware iPhone will change things:

There's a lot of speculation as to what we can expect from next week's iPhone announcements, but there's one thing you can be sure of: The iPhone's location-aware features will change your life. Whether that means pinpointing your location on a Google Map (which iPhones already do), tracking your friends when you go out, or giving you a heads-up on the best place to eat within a three-block radius, the location-aware future is bright.

The scenarios described in the story are very similar to what we've been discussing regarding GeoClue, the framework for making mobile Linux devices location-aware.

With iPhone pushing innovation it is very important that mobile Linux environments like GNOME Mobile, maemo and QTopia pick up the ball and start making location-aware solutions powered by more than just GPS. GeoClue can help there.

Technorati Tags: geoclue, iphone, maemo, qtopia

GNOME in decay?

Posted on 2008-06-09 12:03:19 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Andy Wingo is writing about how he feels the GNOME project is in a state of decadence:

The problem, as I see it, is that GNOME is in a state of decadence -- we largely achieved what we set out to achieve, insofar as it was possible. Now our hands are full with dealing with entropic decay. Take, for example, Evolution's random walk to improvement. In most releases it's better, in a few it's worse, but basically it still works fine, and has been that way since about 3 or 4 years ago.

It's like, welcome back to 1984's Macintosh plus interweb. We did it!

As sad as it makes me, I have to admit I've felt the same about the GNOME project. I've been a fan of the project since late 90s, and I'm sad to see the state of things, but... the KDE people seem to be quite determined in their progress, while in GNOME land people seem to be mostly in conservative maintenance mode. In last GUADEC it seemed that proposals of interesting new approaches or technologies were mostly either ignored or mocked, while there seemed to be no clear path forward for the desktop.

Back then at least the mobile land was promising, but there also various vendors are now going to the Qt side, bringing doubt to the future of the platform.

I really hope the GNOME project is able to regain its energy and sense of purpose. The next GUADEC would be an excellent place to discuss future directions. I will be there to talk about location-aware desktop, and possibly to discuss how we use various GNOME components on the server side with Midgard.

Via Alex Graveley.

Scrum in management of a small software consultancy

Posted on 2008-06-11 13:00:53 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Over the years we at Nemein have been experimenting with various ways of keeping our operations managed. Now with some personnel changes including Joe's departure it was a good time to change the way we work again.

I had some goals:

  • Keeping status of different projects up-to-date with more accuracy
  • Ensuring our sales and project management knows if some project is being blocked by missing materials
  • Enabling a more distributed, web working culture

We're a small company of less than 10 people, and as such most project management methods have not been very successful for us. In general they have been made for situations where same person or team keeps on working on a project for several months, whereas in our situation a person typically works on several projects every day.

I discussed this over some beers with Tero Heikkinen from Rohea, and he told me how they were implementing Scrum in their small company. While their number of different projects running at the same time is a bit smaller, their situation otherwise is quite similar: same technologies used, Ajatus for work tracking, etc.

We had a company sauna evening and I presented Tero's ideas there: we would partially implement the Scrum model, and keep tuning it to our needs. At the first phase this means:

  • Every morning we have an all-hands 15-20min meeting ("the daily Scrum") where everybody goes over what they have been doing the previous day, and what they were planning to do today. If they are being blocked by something missing: a software bug, missing information or other materials, this is also brought forward
  • Every project has a file in Google Docs where we keep the project status and task list (Backlog). This task list is updated based on what comes up in the morning meeting
  • Work hours are reported with Ajatus. Rohea also uses it for project burn-down charts, and once their add-on for that is finished we may do the same
  • Emilia, the project manager (or Scrum Master) is responsible for resolving possible impediments and maintaining the per-project status files

The approach we have taken should be quite pragmatic and low-tech. Instead of fancy project management software we use simple word processing for status data. And thanks to Google Docs the documents produced are accessible and editable from anywhere.

Similarly the actual meetings are quite easy to manage. The people who are at the office attend there, and others attend either via a Skype or mobile phone conference call, depending on network availability. We decided to have them at 10am so that everybody will be able to participate. Even if there is a Sprint or meeting scheduled for the same time, the short time needed for our all-hands meeting means it can be held over a "cigarette break".

Ajatus is the only more experimental piece of software in our puzzle. In our company, we use it for hour reporting, expense tracking and keeping meeting minutes. For these it works quite well, although more reporting tools are definitely needed. The alpha status of CouchDb, the database software powering Ajatus has bit us a few times by database corruption (caused by OSX-specific erlang bug) or simply difficult installation procedure, but these problems will hopefully improve over time.

We're now in the second week of this model, and at least the gut feel is that this has improved coordination inside the company. The next challenge then is to let the customer get involved in the process. This can mean just sharing the project status files, or even giving them access to actual meetings or the Ajatus data.

nüvi 880: First device to carry GeoClue?

Posted on 2008-06-13 10:17:11 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Garmin nüvi 880
GPS manufacturer Garmin has recently released the modified sources of their nüvi 880 and 5000 in-car navigators. Looking at the packages reveals that these devices are powered by GNOME Mobile and GeoClue, the toolkit for making mobile Linux applications location-aware:

On downloading and Inspecting the large (and nicely organized) 8xx source tarball (list of files here) its very apparent the device built upon a GNOME Mobile based stack (with X, Matchbox and GTK+ etc). Also interestingly it also contains GeoClue, PulseAudio and seemingly both Ogg Vorbis and Flac support.

Great to see GeoClue finally hitting devices!

Via ButterFeet and Jussi Kukkonen.

Quality of Life: Helsinki gets good score

Posted on 2008-06-16 19:30:53 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

The latest issue of Monocle just dropped in my mailbox. The cover story this time is quality of life in various global cities. Helsinki did quite well, being 5th on the list. Defects listed with the city included shops being closed on Sundays and low immigration levels. From my view the city is doing many things right, including increasing rail transport and transforming the old harbour areas into interesting new neighborhoods. The policy on airports sucks, though.

Helsinki South Harbour from Air

Some of my favourite European cities did quite well, too, with Zürich being 4th and Barcelona 15th. Istanbul however showed up 3rd on the "Winning Losers" list. With Istanbul complaints were around religious tensions and freedom of expression. I could add the often very long travel times between various parts of the city, though they're likely to get improved once the Marmaray tunnel is complete. However, I wouldn't mind living in any of these three cities some day. Maybe once our working model is more nomadistic...

Istanbul Eminönü at Night

Document locking hits MidCOM 2.8

Posted on 2008-06-17 07:13:57 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

Latest MidCOM 2.8 has a feature that has been resurrected from earlier in the series: document locking. The point of locking is to prevent accidental simultaneous editing of a document by multiple users.

When user starts editing a document via datamanager-powered form, the document will be marked as locked for that user. Other users accessing the document will see a notice:

MidCOM 2.8 lock notice

Unlocking permissions can be granted via the Asgard user manager.

Unlike the older and somewhat troublesome method, the new locking system uses regular Midgard metadata properties and has a clean API available.

Tampere is a candidate for GUADEC and aKademy 2009

Posted on 2008-06-17 12:58:21 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

GUADEC and aKademy will possibly be arranged together in 2009. As the events are looking for a venue, we at COSS (Centre for Open Source Solutions Finland) decided to apply to have the events in Tampere, Finland.

Tampere industrial area, photo by Mihriban Pehlivan

Tampere is an old industrial city situated between two lakes. It has quite good flight connections (including Ryanair) to Europe, and fast rail link to nearby Helsinki which is the big hub for Finnair. COSS is a seasoned conference organizer with good connections to local and country-level instances, and as venue we can have the University of Tampere campus.

See the proposal PDF.

Firefox 3 Download Day: 5 million and counting

Posted on 2008-06-18 08:28:18 UTC in 60° 9.840 N 24° 44.190 E 7km S of Espoo, FI to . 0 comments.

The Firefox 3 Download Day started yesterday at 18:16 UTC, and so there are still 10 hours remaining to download the browser. Originally the download day had 1.5 million download pledges, but it seems that since then the download count has by far exceeded the expectations of the Mozilla team: at moment the download counter shows over five million downloads. The Download Day has also been prominently featured in news worldwide.

Firefox 3 Download Day thank you certificate

Firefox 3 is a very nice upgrade to the popular browser. Go and get it!

Big Brother lives in Sweden?

Posted on 2008-06-18 21:49:52 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Swedish flag, photo by Tangaroa expedition
We thought the country of Big Brother might be China, or maybe UK. But looks like the Swedish are eager to get there first. Sweden passed a controversial wiretapping law:

Sweden on Wednesday adopted contentious legislation that will give officials sweeping powers to eavesdrop on all e-mail and telephone traffic that crosses the Nordic nation's borders.

...

"This is just as absurd as before. It contravenes article 12 of the U.N.'s declaration of human rights," said Per Strom from The New Welfare Foundation think tank. "It will still create a society characterized by self-censorship and anxiety."

Remember people, 1984 was meant to be a warning, not an instruction manual. Time to move the Midgard community servers out from that country?

Plazes goes Nokia

Posted on 2008-06-23 10:18:28 UTC in 60° 9.762 N 24° 44.310 E 7km S of Espoo, FI to . 0 comments.

Return trip from Istanbul according to Plazes
A more interesting piece of news today was that Nokia has acquired Plazes, the WiFi positioning company. I've been a Plazes user for quite a while and am using it as a position source for my website in addition to Fireeagle.

I hope the acquisition will increase Plazes' resources to develop and expand the service to new areas of mobile positioning. The Rails port of Plazes a year ago seemed to hurt their usage numbers quite badly, but the new directions they've been recently following have been promising.

Maybe a good time to start preparing a new release of MaemoPlazer, our Plazes client for Nokia's Linux platform?

Big Midgard release day

Posted on 2008-06-25 14:33:42 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Today has been an important day for the Midgard Project - development versions of both active Midgard branches were launched:

Midgard 1.9.0alpha1 "White Nights" released

Midgard 1.9 has been designed as a version easing the transition from Midgard 1.x to Midgard 2. To aid developers, the release includes both the classic Midgard APIs that are now deprecated, and the new schema-based Midgard 2 APIs. This means that the release can be used to run both Midgard 1 applications like the version 2.8 of the MidCOM component framework, and Midgard 2 applications like MidCOM 3.

Midgard 2.0.0alpha2 "Bonfire" released

The second alpha of the Midgard 2.0 branch is targeted at web framework and desktop developers. This release does not consist of the CMS components, but instead targets at providing the development tools for building a modern web framework. Framework based not only on one tool, but which can connect multiple technologies and languages.

Changes from alpha1: The Apache module is no longer supported. Support for D-BUS is built in. Many improvements were made in language bindings. The PHP module is now configurable with ini directives.

Especially the Python bindings for Midgard 2 are interesting. Next thing for me is to start playing with the D-Bus signals.

MidCOM 3 and built-in WebDAV

Posted on 2008-06-26 16:51:39 UTC in 60° 10.098 N 24° 55.452 E Helsinki, FI to . 0 comments.

There has been some discussion about the deployment model for the upcoming MidCOM 3 MVC framework for PHP and Midgard 2. My suggestion was to enable WebDAV on all MidCOM servers so content structures, configurations and templates could be moved between them with simple drag-and-drop.

This week we're having a MidCOM 3 coding sprint, and now we can already mount the MidCOM site, and with some clients also edit content. Locks also work transparently between WebDAV clients and the web editing interface.

WebDAV serving logic is implemented using PEAR's HTTP_WebDAV_Server.

Browsing a MidCOM3 site via WebDAV

More functionality will follow...

Midgard releases and marketing

Posted on 2008-07-01 10:26:38 UTC in 60° 9.834 N 24° 44.202 E 7km S of Espoo, FI to . 0 comments.

The Coccinella IM project published an interesting entry on potential marketing impact of synchronized software releases:

How can we copy the marketing successes of Apple and Microsoft to open-source? Some may suggest we need someone like Steve Jobs, whilst others would like to spend more money on launch events. They are both wrong! Trying to copy Steve Jobs or Microsoft's deep pockets is mission impossible. If Apple or Microsoft notices we are trying to catch up, they will simply improve their key strategic advantages and catching up will become even more challenging for us. What do we have to do then?

Community is in what we excel; our key strategic advantage. To repeat the marketing success of Apple and Microsoft we need to leverage the community. Massive synchronized releasing is the perfect tool to achieve this leverage. By synchronizing, release related marketing efforts of multiple communities are focused at the same moment and can leverage each other. The rhythm of so much projects doing their marketing efforts at the same moment will shake the Internet.

Synchronized, or timed and regular software releases are already being utilized for example by the Ubuntu distribution. This helps companies and individual end users to carefully plan their upgrade strategy. But in addition, it makes it easy for technology writers to write about the new releases. When plans and schedules are clear, articles will more likely appear.

With Midgard, the project is riddled with very varying release cycles. At the moment we're simultaneously working on major releases in two different generations of the platform, and on top of that actively maintaining and developing the stable 1.8/2.8 branch.

This has led to the situation where testing cycles can be excessively long. For example, MidCOM 2.8 was in beta for ten months, and has seen 13 minor updates since the stable release. Similarly, Midgard 1.8 is in its eight update. And documentation has a hard time staying up-to-date with all this.

This would already make keeping up with Midgard difficult, but the situation is exacerbated by the fact that Midgard can be so many different things:

Layers of Midgard

For some developers Midgard means the libmidgard object persistence and replication library, and its various language bindings. For some it is MidCOM, an MVC framework for PHP that can be used to build any kind of web services. For some it is a component specific for a task like event registrations management or direct marketing. And finally, for some it is a full end-user application suite like Midgard CMS or OpenPsa.

Midgard is a good tool. We have lots of great code and functionality, and a nice community to top that off. But for a regular end user of free software it is very difficult to understand the whole Midgard ecosystem, and where is sits with competition on the various layers. On CMS (or applications) layer we're competing with the likes of Drupal and Plone, on MVC framework layer with Ruby on Rails and Django, and so on.

So, how to move forward? Here are some ideas:

Differentiate the various layers, and their individual components more clearly marketing-wise. Instead of calling all of this Midgard we should introduce names for different collections. This is what we used to do with Aegir CMS in early 2000s with great results, and what has worked very well for the Mozilla project.

In this scenario Midgard would be the central community name, and probably the name of the persistence layer. The other tools would use their own marketing names. Also components would get rid of their too techy namespace-based names and use something more human readable in their marketing.

This also means redesigning the Midgard site to provide more visibility to the different parts. Something closer to the maemo application catalogue would be far better than our current component list.

Synchronize releases. This could mean digging up the time-based Midgard release process proposal from mothballs, or just ensuring that libmidgard, MidCOM, documentation and the important components all are developed in sync with each other. On wider scale this could also mean trying to keep the pace with releases of dependencies like PHP and libgda, or with important platforms like debian and RHEL.

This probably requires finding new resources and tools for testing and documentation. For example the unofficial Midgard wiki is often in better state than the official one, so why not merge them? Similarly, keeping downloadable virtual machine images available should make testing new Midgard releases a lot easier.

These of course are just ideas. In any case the transition to Midgard2 makes it possible for us to rethink a lot of these things.

Professional versus personal blogging

Posted on 2008-07-03 15:08:53 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

My blog is where I post mostly about things related to technology, while personal happenings are noted in my Jaiku lifestream. Wordle visualizes the differences quite well. Here is the professional blog:

Wordle of my latest blogs

And my Jaiku feed:

Wordle on my Jaikus

Post inspired by Carlos's maemo wordle.

GeoClue in GUADEC Istanbul

Posted on 2008-07-05 19:55:39 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

GUADEC: Meet, Plan, Party!
On Planet GNOME I can see lots of people have already arrived to Istanbul for next week's GUADEC conference. I'm also flying there on Tuesday. On Wednesday Jussi Kukkonen, Iain Holmes and I will be talking about location-aware applications with GeoClue and Gypsy at 3:30pm in X-Large.

In preparation for the talk, be sure to check out my GeoClue slides from FISL and the GeoClue project page. iPhone, Symbian and Google are all pushing for more geographically aware applications and web, and free software will need tools like GeoClue to keep up.

Another interesting thing in the conference will be that the location of next year's GUADEC and aKademy will be announced. I'm keeping my thumbs up for Tampere, Finland. You should too!

But whatever happens with the 2009 conferences, I will be happy to be in Istanbul. If you're there, contact me and let us have a beer in the shady corners of Beyoğlu...

Volkswagen's 1 liter car looks promising

Posted on 2008-07-05 20:52:07 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Volkswagen has released some information about their 1 liter per 100km car that will supposedly debut in 2010, and I have to say it looks cool:

Volkswagen 1 liter

It provides the combination of compactness and fuel economy that usually only motorcycles reach, and at the same time protects from the elements. As I've always loved the old Messerschmitt mini-cars it resembles I may be strongly tempted when it comes out.

At one liter, the mileage is even better than with my current extremely economical Royal Enfield...

Midgard2: Future in the clouds

Posted on 2008-07-06 18:41:23 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Cloud computing with Midgard2

There has been quite a lot of talk about cloud computing lately. When we had the previous MidCOM3 coding sprint we discussed over beer how Midgard2 could fit into the cloud. As replication has been a core Midgard feature since the early days, that was the obvious angle to start looking from.

The way I see Midgard2 in the cloud is the following:

  • There are clouds of specialized Midgard2 and MidCOM3 processing nodes that can easily be duplicated. This could be done by setting up an easy Midgard EC2 image for instance
  • The processing clouds could act as front-ends by themselves via round-robin DNS, or there could be front-end MidCOM servers that would call the processing nodes via MidCOM3 remote routing (feature that we've discussed but not implemented yet)
  • Each processing node would be completely independent and contain its own database
  • There would be a replication queue stored on permanent storage service like S3 that each processing node would replicate to and from
  • When a processing node would boot up, it would connect to the appropriate S3 bucket and populate itself with data

Implemented this way it would be easy to add or subtract Midgard servers as needed. Each of them would be autonomous from application developer's perspective, but data replication would ensure each node would stay in sync with others.

This would certainly be worth experimenting with. Only things needed would be easy EC2 images, queue handling with S3 buckets, and possibly remote routing support, though the latter wouldn't be needed for simpler services where each Midgard node could contain a copy of all data of the web service. For faster replication of data between nodes, D-Bus update notices could be passed through a message queue service.

New profile pages on maemo.org

Posted on 2008-07-07 13:15:32 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

maemo.org has been having user profile pages for a while, and now it was time to overhaul their visual design. Here is the new design:

Maemo.org profile page redesign

In addition to new visuals, the profile page also now displays automatically collected data like user's latest blogs and favourited news items, and allows entering of new data like IRC nickname and multiple email addresses.

The new profile page is now only available on the maemo.org internal testing server, but should be rolled out later today. In the meanwhile, I made a quick screencast of how it works. Shame favoriting doesn't work on the test server due to missing SSL setup, so the screencast ends in an error message ;-)

Notes from GUADEC Istanbul

Posted on 2008-07-10 14:23:15 UTC in 41° 2.508 N 29° 0.546 E 5km N of Istanbul, TR to . 0 comments.

GUADEC is held in Istanbul this year, and as has been the custom in 2006 and 2007, I again came there to discuss making the Linux desktop location aware.

Hagia Sophia from the ferry

This year I gave the "GeoClue and Gypsy - geo-information frameworks for mobile Linux desktops" talk together with Jussi Kukkonen and Iain Holmes.

Guadec 2008 GeoClue talk

With Linux devices hitting more and more pockets time was finally ripe for the talk, and hopefully soon we shall see GeoClue in places like the GNOME Panel Clock and Telepathy.

Slides are available from both Google Docs and Slideshare.

Other things to take out from this conference:

Guadec 2008 Cocktail Party

Latest information about where GUADEC and aKademy will be held in 2009 is that it is still open. Apparently KDE's vote ended in draw between Gran Canaria and Tampere, and now the boards of both foundations are considering the options.

Tonight we will go to a cruise on the Bosphorus...

Rumeli Hisari

At least we won the Ice Cream Deathmatch

Posted on 2008-07-13 18:51:19 UTC in 38° 16.002 N 39° 22.002 E 17km NW of Çermik, TR to . 0 comments.

While Tampere was lost, we won't return from GUADEC without any medals: I won the ice cream deathmatch held during the Collabora boat party on Bosphorus.

From Vincent Untz:

We of course had the Ice Cream Deathmatch. So, it seems people thought it was all about speed, while really it's all about enjoying :-) On the other hand, Henri Bergius (if I remember well) is just not a human since he ate everything so quickly. But, well, his bio mentions "Henri Bergius is a former Viking based in the Nordic country of Finland"...

Vincent, the whole point is that if you enter a competition, enter it to win. Regardless of whether that involves eating ice cream, racing crappy cars to the Arctic Ocean, or crossing Europe on 50cc "Monkey" mini-mopeds. If you're not the first, you're the last [1].

Some pictures from squidy.info:

Guadec 2008 Icecream Deathmatch: Eating

Guadec 2008 Icecream deathmatch: Winner

[1]: No, I wouldn't have watched that movie if it hadn't been semi-mandatory in-flight show when crossing the Atlantic on TAM.

Dataset: Pamplona's bull run

Posted on 2008-07-13 23:16:22 UTC in 40° 53.970 N 29° 10.350 E 22km SE of Istanbul, TR to . 0 comments.

Off the Map has posted an interesting dataset of the Pamplona San Fermin bull run:

In honor of the festival that kicked off this week, I thought that this was a great opportunity to show how Finder! can be a great trip planning tool. With the ability to download geographic datasets of your choice as well as create your own, you can use Finder! to make a custom and interactive map that displays everything you want to do and see on your trip.

I've run with the bulls three times: twice in 2001, and once during the Death Monkey excursion when I got hit by the bull in the arena, and so I found the dataset quite interesting.

Pamplona: bull throws a runner

OpenStreetMap's user-generated data wins when there are changes

Posted on 2008-07-25 11:47:23 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

I've blogged about OpenStreetMap, the user-generated open content map service, before. Having electronic map data freely available will enable completely new solutions for navigation and experiencing our surroundings.

Being user-generated, OpenStreetMap can cope with changing environment in a much better way than the proprietary offerings. For instance:

Suvilahti Roadwork on 2008-07-25

When walking to office today I noticed there was construction work ongoing to build a new driveway to the Suvilahti area. As this will make it a lot easier to find our office, I decided to add the new driveway to OpenStreetMap immediately. Web-viewable maps update with a slight delay, so the new road should be operational before they do so.

Here is a screencast on how it was done. Easy!

Hello Planet GNOME

Posted on 2008-07-25 15:30:25 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

Hi, all! My blog's desktop feed has recently been added to Planet GNOME, and so here is a quick introduction:

My name is Henri Bergius and I am a free software hacker focused on things like the Midgard framework and some location-aware applications for desktop and mobile. I work at Nemein, a small Finnish CMS consultancy building stuff on top of Midgard. I'm quite interested in emerging web standards like microformats, GeoRSS, attention profiling, and in building free maps.

I've been a fan of the GNOME project since the early beta days, and while I currently mostly work on Mac, I still keep following the project actively. I've a speaker in four GUADECs, starting with a presentation about Open Source CMS in Dublin, and followed with geo-focused presentations in Vilanova, Birmingham and Istanbul. As a member of COSS steering group, I was also one of the people behind the (unfortunately unsuccessful) Tampere GUADEC+aKademy bid.

Here is my new hackergotchi:

Bergie's Hackergotchi

And yes, I am a former viking who happens to like ice cream.

A List Apart Survey 2008 for people who make websites

Posted on 2008-07-29 10:24:07 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

A List Apart has a new survey for people involved in web business.

Remove the web, and billions in trade disappear. Websites enable people who can’t walk to run to the store. They bring knowledge and freedom of thought to places where such things are scarce; make every person with a connection a citizen of the world; and allow every citizen to be heard.

Yet nobody bothered to conduct a serious inquiry into the working conditions of people who make websites until A List Apart launched its first survey in 2007.

The results of the 2007 survey are online.

ALA Survey 2008

Some GUADEC Istanbul pictures

Posted on 2008-07-29 14:36:03 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

Earlier this month we went to GUADEC 2008 to give a talk on GeoClue and geo-information frameworks for mobile Linux desktops. Quite good fun, especially the Bosphorus cruise!

2707518501_65b3625291_s.jpg 2707523669_1d6d1521f0_s.jpg 2707534739_dc353a65a5_s.jpg 2708386318_7170c9ff0b_s.jpg 2707594275_e7037205a8_s.jpg

After the conference we continued vacationing in south Turkey, scootering to the ruins of Ephesus and taking a yacht cruise from Fethiye to Olympos.

2708476292_b72c8f07a7_s.jpg 2707723119_a7008dbdc1_s.jpg 2707819117_25cebba3ea_s.jpg 2707853167_48597be5e9_s.jpg 2708621916_18e17ebcef_s.jpg

More photos on Flickr.

Conferences this fall

Posted on 2008-07-30 09:38:37 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

Looks like 2008 is forming up to be a quite busy conference year, at least looking at my Dopplr page. Here are the events I'm speaking (or performing as is the case with Haedong Kumdo) in this fall:

In addition I might be going to LatinoWare, but that is still open.

Social networks: personal & professional

Posted on 2008-07-30 10:52:54 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

Beer And Pastel

It seems many people are struggling with how to classify different contacts in the social networking services you use: is your boss your "friend" on Orkut, and are your drinking buddies valid LinkedIn contacts?

To make things easy, let me introduce the beer rule:

  • User needs two social networking services. I use FaceBook to keep in touch with friends, and LinkedIn with business contacts
  • If you can contact somebody at any time and go for a beer: personal contact, ending up in FaceBook
  • If money is involved: professional contact, ending up in LinkedIn

Simple!

Midgard and synchronized releases

Posted on 2008-07-31 11:12:21 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

I've posted about new directions needed for Midgard's release coordination and marketing. After some discussion, I think it is time to vote and make decisions.

The proposal is to switch to synchronized releases. This would make development more predictable, marketing efforts clearer and more focused, and align us with the release synchronicity movement implemented in related projects like GNOME and Ubuntu.

Togetherness by BrianScott

Some concrete actions for this:

  • Clarify naming of different aspects of Midgard: Midgard Platform, Midgard MVC, Midgard CMS
  • Combine releases of Midgard and MidCOM into "generations" that are compatible with each other and are targeted to specific set of dependencies (libgda and PHP versions for instance)
  • Focus on names of the generations instead of individual version numbers: thor instead of 1.8 and 2.8, ragnaroek instead of 1.9 and 2.9 etc
  • Write down a fixed ragnaroek feature list ASAP and prepare for release during September
  • Schedule a Midgard developer meeting to October for discussion of ragnaroek+1 (former 2.0, vinland?) feature list
  • Switch to git and feature branches after ragnaroek is out
  • Introduce a concept of long-term supported (LTS) releases. Ragnaroek will be the first one

Please join the discussion.

Photo: Togetherness by BrianScott. CC license.

Quick review: Sennheiser PXC 300 noise-cancelling headphones

Posted on 2008-08-05 11:27:26 UTC in 51° 34.074 N 0° 6.564 W 8km N of London, GB to . 0 comments.

Sennheiser PXC 300 in-flight
As a frequent traveler, I've been long thinking about getting proper noise-cancelling headphones. Now, en-route to a Haedong Kumdo seminar in Ireland I managed to forget my usual headphones home, and so it was time to take the plunge.

Here is a quick review:

  • First impression: wow, quite a lot of cable to carry around. I got used to too good with the Bluetooth headphones which my iPhone 3G unfortunately doesn't support
  • The noise cancelling unit is a bit big, but clips into belt and runs on two AAA batteries
  • Sitting next to the engine, there is still quite a strong background hum, but still I'd estimate at least half of the noise is gone
  • If I push the headphones on my ears, most of the hum disappears too
  • I was amazed how loud planes are when I took the headphones off to buy lunch from the stewardess
  • The bag that came with the headphones is very handy, and includes adapter for plugging the headphones into in-flight entertainment systems

All in all, the headphones are bit pricey, but will increase comfort of regular air travel quite a lot.

Written while flying over snow-capped mountains of Norway on a SAS flight, listening to Mahler's 6th symphony.

Black belt

Posted on 2008-08-05 12:12:22 UTC in 51° 34.074 N 0° 6.564 W 8km N of London, GB to . 0 comments.

New Haedong Kumdo black belt
On Saturday I was in Ballina, Ireland, and a bit nervous: there was a Haedong Kumdo seminar in town, and I was scheduled to test for black belt. Behind this was years of different sword arts, like viking swordfighting, Iaido, Kendo, sabre fencing, and two years of quite intense Haedong Kumdo practice.

We tested together with two Swedes who already held black belt in the other federation. All three passed.

So what is Haedong Kumdo?

Haedong Kumdo is a Korean martial art based on the use of the Korean curved single edged sword. It is a modern system compiled from the ancient traditional sword techniques of Korea.

The movements are primarily circular and derive their power from centrifugal force of the body. Training develops strength, coordination, balance, focus, stamina, speed and flexibility.

Haedong in old Chinese language means Korea (Hae - sea or sun, Dong - east). Kumdo translates to way of life through the art of sword (kum - sword, do - way of life through martial art).

The Way of the Eastern Sword, Haedong Kumdo, is an exciting and dynamic martial art.

This important step done, the practice will intensify. Next I will need to focus on two-sword techniques and the Yedo series of forms. There will also be more cutting practice. In September we will go to Korea...

ETech 2009 CFP: Building the peer-to-peer business network

Posted on 2008-08-06 16:59:04 UTC in 51° 34.074 N 0° 6.564 W 8km N of London, GB to . 0 comments.

ETech 2009, the O'Reilly conference on emerging technologies now has a call for papers. Here is my proposal for the "Nomadism & Shedworking" track:

The recent direction of business applications has been centralization to web-based systems, easing deployment, upgrades and management of application security. However, at same time centralization provides new risks like the introduction of a single point of failure for application usage and in most cases inability to work offline.

At the same time, working culture has started so shift more towards networked individuals, or "web workers" forming ad-hoc coalitions to work on various projects. For them, centralized applications might not be desirable due to data ownership and infrastructure requirements.

Moving the applications from centralized web servers to a peer-to-peer network allows web workers to be in control of their own data, stay productive even in unstable connectivity situations, and collaborate easily with their colleagues in an ad-hoc way.

This talk outlines some ways to move forward in building peer-to-peer networked business applications. There are many open source frameworks targeting the problem, including replicated databases like CouchDb and Prophet, and application-oriented P2P networks like Swallow/DBE. These will be discussed together with some real-world examples of business applications built with them:

Ajatus - a "Personal CRM" built on top of CouchDb, a RESTful replicated object database
OpenPsa - project management system doing resourcing over the DBE P2P network
Simple Defects - a P2P bug tracking system built on top of the Prophet replicated database

The first phase of P2P business applications will likely be services operating in closed networks of users' social networking or instant messaging contacts. But the P2P model can also provide opportunities for wider networking, making it possible to find new project partners or collaborators anywhere in the world. This wider-ranging business network will introduce new challenges like security and reputation management. Some ideas related to this will also be discussed.

Other interesting projects in this sphere I did not mention are Telepathy Tubes and F2F. We have also had some ideas for how Midgard could do this...

ididwork.com: Simple workstreaming solution

Posted on 2008-08-07 12:24:18 UTC in 51° 34.074 N 0° 6.564 W 8km N of London, GB to . 0 comments.

ididwork.com reporting interface
ididwork.com, a simple workstreaming service has launched this week. Workstreaming means utilizing micro-blogging services to keep your colleagues aware of what you're doing. This helps with coordinating geographically dispersed teams of web workers.

As part of redesigning our processes, our company has been looking for a workstreaming solution. While private channels support in Jaiku would probably be the best option, we will now be testing ididwork.com for our needs.

Here is a quick overview of the first launched version of ididwork.com:

The good:

  • Simple, pleasant user interface
  • Tagging support (including machine tags), which means we can connect entries with Ajatus tags
  • Email reminders for managerial review of entries
  • Excel export of work reports

The bad:

  • Users can be either managers or employees, not both. Managers don't have work to report?
  • User's own log entries and log entries of colleagues are shown separately
  • User can only belong to one organization. No multiple teams or projects

The ugly:

  • No API
  • No RSS feeds
  • No XMPP support

Neutron Protocol: Separating UI from the CMS

Posted on 2008-08-09 09:26:58 UTC in 51° 4.206 N 4° 30.082 E Sint-Katelijne-Waver, BE to . 0 comments.

At the moment the prevailing wisdom is that each CMS should have its own user interface, and that user interface should be web-based. But there is also another way: separating the user interface from the CMS using a CMS-neutral protocol called Neutron.

According to Sir Tim Berners-Lee, the earliest web browser was also an editor. And the late 90s Netscape Communicator followed this ideal by including a HTML editor that could publish changes to pages using the HTTP PUT method. But then the idea of editing via the web browser transformed to clunky forms and Java applet -based WYSIWYG editors, brought about by the rise of content management systems.

The problems of the user interface being part of the web page were multiple: it cluttered the produced HTML, it was possible to break by layout changes, sometimes the login and editing options were hard to find. It also meant that each and every CMS would have a completely different user interface. A problem made especially difficult if you had to use multiple systems. For example:

If you are Quim Gil, working for Nokia's maemo.org, you're living in a world of many, many CMSs. The marketing and community parts of the website are run by Midgard, the documentation wiki by MediaWiki, your own blog by WordPress, and the list goes on. While in this kind of corporate setup it has been possible to mostly unify usernames and passwords, it still means each part of your work runs with different UIs, and different usage logic. Back in 2003, I named this syndrome Frankenstein CMS.

In addition to consistency and usability, offline editing has been a big issue with most CMSs. In typical situation, it simply doesn't exist, making copy-and-paste way of taking documents with you to edit on a laptop while traveling.

There have been several initiatives in solving these problems. A quite limited, but so far successful example is the Universal Edit Button specification, making rounds earlier this summer. The idea is that CMSs would include metadata on where the editing view of a particular page was in the page itself, and then browsers would display a button leading to it. The approach has been adopted by several big players, including Wikipedia, and we also made it a part of the new CMS that will be built on Midgard 2:

Universal Edit Button in MidCOM 3

Another, also somewhat limited example is the MetaWeblog API provided by most blogging platforms. It has enabled vendors to produce great offline blogging software like Ecto and MarsEdit that provide offline editing and work with almost any blogging system out there. As I write this, I'm using Ecto on my MacBook Air, and will later use it to publish this entry to my Midgard server. The Atom Publishing Protocol will likely be the successor of MetaWeblog, but appears to still keep the blog-only focus.

Back in the earlier days of OSCOM we had another initiative called Twingle. It was a XUL-based desktop CMS client that utilized WebDAV and some XML introspection files to edit and publish data on different CMSs. After a March 2003 OSCOM Sprint in Zurich we were able to demo the same client browsing and editing resources on three CMSs, including Zope and Midgard. Unfortunately, then CMS market became so hot that vendors were simply too busy to pick this up and the project died.

Luckily Michael Wechner, of OSCOM and Apache Lenya fame didn't let the idea die. He worked it onwards, naming the protocol used for conversation between the client and the server Neutron Publishing Protocol, a play on Atom. He also built a new client, Yulup, as a Firefox extension that could manage content on compatible servers.

Michael Wechner in Horgenberg

In summer 2007 I saw a demo of Yulup and discussed Neutron with Michi and was impressed. But was back then too depressed by the Czech episode and other personal issues to press on with the idea. Having watched another year of the directions the community is taking Midgard CMS to, and how clients view CMS deployments, I'm starting to think the time would be ripe for going full forward with Neutron.

In nutshell Neutron is a metadata layer that allows a CMS to specify the actions user can take, and the methods provided for those actions. The methods can either be full-blown WebDAV, or simpler GET-and-POST that more limited CMSs can support. Neutron also provides its own authentication mechanism, though I would gladly see that overtaken by a more secure and widely supported standard like OAuth.

Widely-supported Neutron would provide huge advantages: letting the developers of a CMS to focus on the actual management and presentation layers of the system, and allowing more innovation to happen in the client end due to combined efforts from multiple CMS projects. It would allow building of different content management interfaces for different audiences or usage scenarios. Simple editing and publishing clients that could run fully in browser's AJAX space for casual bloggers or wiki editors, workflow tools for gatekeepers of corporate publishing processes, and full-blown desktop content management tools for site editors. Other special cases like mobile content management could also be provided for.

So what is needed for this future to become reality? First of all, we need to make CMS developers aware of the possibility. Then we need a killer client that every CMS provider would want to support. And then we can expand the protocol, and build additional clients to cater for special needs.

The big question is how this will happen. Industry groups in CMS space are loose or non-existing, and so they lack the muscle to push any standards. Effort by single CMS vendor would probably stay partisan, as developers of different systems are quite suspicious or ignorant of each other. But maybe a combination of the two would work: industry group, such as OSCOM organizing some compatibility hacking events for the developer community, and a company dedicated at building a killer client application. It warrants serious consideration if Nemein should be that company.

This manifesto on transforming how CMSs are used was written in an Eurostar London-Brussels train, sipping Dourthe's Bordeaux white and listening to the Karelia cycle by Sibelius.

Some notes from aKademy 2008

Posted on 2008-08-10 13:19:04 UTC in 51° 4.206 N 4° 30.082 E Sint-Katelijne-Waver, BE to . 0 comments.

I'm currently in aKademy, the KDE conference, talking about adding the geographical context into the Linux desktop. GeoClue, our solution to this problem is built to be desktop-agnostic service, and therefore the same talk has been held in both GUADEC and aKademy.

Here are some notes from the conference:

  • There was quite a good amount of interest in GeoClue. Both Plasma and Marble teams were talking with me, and I also gave an interview for Linux-Magazin Online
  • Plasma is interesting tool for integrating widgets into the desktop. Being able to add widgets to the screensaver is also a great idea
  • Another interesting Plasma idea is offering user widgets that are relevant for the current location coming from GeoClue. This means that when you land in London, you could be offered an Underground route planner app
  • In general it seems the desktops are moving to a more service-oriented paradigm. With D-Bus your instant messaging functionality for instance can be part of any or all applications. This enables making much thinner and experimental applications that still integrate well with the desktop
  • Marble is cool! With it, Qt developers can integrate a map widget into any application, making geo-aware tools much more visual
  • openSUSE build service is about to get new features that will help generating virtual machine images
  • The beer evening in the Het Anker brewery was a lot of fun. Thanks, Nokia!
  • Speaking of Nokia, they are here really in force. They are the main event sponsor, and have a big bunch of people attending. Their acquisition of TrollTech has really changed the situation. Hopefully they'll do the right thing about GeoClue and Maemo

More stuff in my Jaiku notes. My GeoClue slides are also available.

Feature branches in Midgard development with git

Posted on 2008-08-11 16:15:52 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

The release synchronicity plan was accepted, and therefore Midgard will be switching from SVN to git, and the concept of feature branches.

With feature branches the idea is that each feature or bug fix is being developed in its own branch, and only landed to trunk (master in git terminology) when ready. This keeps the trunk clean and easy to test.

While the SVN migration will only happen in next developer meeting, you can already start using git for Midgard development thanks to git-svn. Once you have a working checkout, here is how you work with feature branches:

Ensure you have the latest stuff:

git svn rebase

Create a new branch:

git branch mynewfeature

Go to the new branch:

git checkout mynewfeature

Hack, add files, commit, test

Ensure the diff looks correct:

git diff master..HEAD

Go back to master:

git checkout master

Merge your feature branch:

git merge mynewfeature

Commit to SVN:

git svn dcommit

If you want to also work with other Midgard or MidCOM versions from SVN, check out the how to track multiple svn branches in git tutorial.

Georgia without Russian troops

Posted on 2008-08-11 21:13:28 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Just some pictures from happier days:

Taya and the Mtqvari river

View over Kakhetia

Georgian and Finnish Flags in the Parliament

Sincere wish: Georgia without Russian troops

Best wishes to my friends in Tbilisi in these hard times.

Why Finland is different

Posted on 2008-08-16 21:58:43 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

It is not only sauna, cold winters and Koskenkorva that sets us Finns apart, apparently:

Genetic map of Europe: Finns stand apart

The map also identifies the existence of two genetic barriers within Europe. One is between the Finns (light blue, upper right) and other Europeans. It arose because the Finnish population was at one time very small and then expanded, bearing the atypical genetics of its few founders.

New York Times: The Genetic Map of Europe (via Slashdot)

Micro-blogging as alternative corporate announcement channel

Posted on 2008-08-18 08:10:16 UTC in 60° 10.524 N 24° 55.146 E Helsinki, FI to . 0 comments.

Today our ISP is having major power failures, and therefore many of our web services are down. For situations like this, it is good to establish an alternative channel of communications, and for us that is the micro-blogging platform Jaiku:

http://jaiku.com/channel/Nemein

Jaiku's Nemein channel

If you are a Jaiku user, feel free to join the channel. Others can follow it via the RSS feed.

Finding out available MidCOM routes

Posted on 2008-08-20 14:26:43 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

MidCOM is a PHP MVC framework where you create a site by building a tree structure and assigning components for the various folders. Each component is its own PHP application that can handle all URL requests under that folder using a set of configured routes.

In addition to making normal requests to the various routes available, routes provided by other folders can be loaded dynamically anywhere on the site. This is useful for instance for loading five latest news items to front page.

To make life easier, I now added a new feature to midcom.admin.help, the online help component. Each folder will automatically list their documentation and available routes when you access their URL __ais/help:

midcom.admin.help routes list

To get this feature you only need to upgrade the help component:

# pear upgrade midcom/midcom_admin_help

Using Yahoo! Fire Eagle with Midgard

Posted on 2008-08-20 14:56:34 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

Yahoo! Fire Eagle, kind of "GeoClue for the Web" was released last week. It acts as a central hub collection position information from services like Plazes and Dopplr, and with a simple PHP script, Jaiku. Services needing user's location can then ask it from Fire Eagle instead of having to support all the services separately.

Midgard's positioning framework has been Fire Eagle compatible since March this year. Now that the service is open for a wider audience, I though it would be useful to tell how to activate it with your Midgard-powered site.

You need to authorize Midgard with your Fire Eagle account. To do this, go to:

http://www.example.net/midcom-exec-org.routamc.positioning/test-fireeagle.php

and follow the authorization instructions. This is due to Fire Eagle using the nice OAuth protocol.

Once this is done MidCOM cron will start tracking your Fire Eagle location. All objects you have created (photos, blogs, comments, etc) will then be automatically tagged with where you made them.

Yahoo! Fire Eagle

Some notes from FrOSCon 2008

Posted on 2008-08-23 13:44:27 UTC in 50° 46.776 N 7° 10.948 E Sankt Augustin, DE to . 0 comments.

I'm again in the FrOSCon conference in Sankt Augustin, having found the conference last time reasonably big, but relaxed. I will be giving my GeoClue talk again on Sunday (16:30 in HS5).

FrOSCon: Follow the white frog

Here are some notes from the conference:

Some interesting talks still left, including:

Unfortunately the Atom Publishing Protocol talk is only in German...

Part-time Istanbullu

Posted on 2008-08-26 13:46:55 UTC in 41° 0.588 N 28° 57.114 E Istanbul, TR to . 0 comments.

Leander's Tower by night

A thousand years ago, men from my lands traveled here in search of opportunities and adventure. Now, due to intercontinental relationships and working permits, I follow their footsteps.

While Istanbul didn't score perfectly in Monocle's Quality of Life index, I still find it a quite appealing place for a web worker. The lifestyle is more relaxed than in the north, WiFi-equipped cafes are everywhere, food is good, and the old city and Bosporus are absolutely beautiful.

Tophane mosque at night

Web working while running a consultancy in Helsinki is not the easiest thing to do, but with some new processes, and new tools I think we may be able to cope. The main thing is to learn using telepresence tools better than we do now.

At least the web working test run I did in London earlier this month felt very productive. Now the plan is to split my time between Helsinki and Istanbul, and of course the mandatory conference trips. This all will be challenging for regular project work, and so good web working tips will be appreciated!

Webworking in Miscafe, Besiktas

But in any case, my reasons for being in Istanbul go far beyond mere working environment and productivity...

Midgard to go Vala?

Posted on 2008-08-27 11:14:59 UTC in 41° 3.108 N 29° 1.578 E 6km N of Istanbul, TR to . 0 comments.

Midgard 2
Cross-posting this to Planet GNOME, as it is sure to be interesting to the community there, especially as Midgard is becoming much more than just CMS:

There is a project in works by me to rewrite Midgard’s core engine from plain C to Vala. Midgard 8.09’s code is taking huge use of GObject infrastructure and Vala is so good in expressing GObjects that actual development is much much easier.

It is not surprising that the project itself will be code-named ‘Váli’. It will include both streamlining of Midgard core and use of SpiderMonkey java script language embedded engine (courtesy of Mozilla project) to allow server-side extension of the core. Some might see these changes as an attempt to bring more web developers to Midgard’s Core but as this will anyway happen after Ragnaroek, I think its pure target is to simplify work for remaining gods on a new world for mere humans.

I think the Midgard Gathering in November shall be quite memorable, and not only because of the quantities of Polish vodka and sauna that will be present...

Some thoughts on green programming, PHP, Midgard and simplicity

Posted on 2008-08-29 11:44:58 UTC in 41° 3.108 N 29° 1.578 E 6km N of Istanbul, TR to . 0 comments.

Rasmus Lerdorf's excellent talk on PHP and simplicity in FrOSCon introduced me to concept of green programming. To quote the Green Programming blog:

Just like we should aspire to use renewable energy sources to help the health of the planet, we should also use reusable software elements to create robust, healthy code for our customers. Eco-friendly practices might be thought of as applicable to software devlopment. Just as we are concerned with the various biota and climate of the planet, we should be concerned with the over-all health of the software eco-system.

How does Midgard sit in with these ideas? Well, the current version of it does not. MidCOM 2 is a heavy, enterprise-oriented CMS framework that requires big machines, or even clusters to run.

But things are quite different in Midgard 2 land. We have rewritten the MidCOM framework from scratch, removing the need to have abstractions on top of abstractions to support the shift from classic Midgard APIs to the new ones, and from PHP4 to more object-oriented PHP versions. We have also focused on simplicity and adaptability, to make MidCOM an easier environment to work with for site developers.

While MidCOM3 is not due to be out before next March, Tero Heikkinen, an early adopter has been building some production sites with it already. And his experiences state that not only the performance is much better, but also it requires much less work from programmers.

I know Rasmus' argument is that frameworks are evil by requiring developers to adopt to their own concepts, and by introducing unnecessary overhead. But we should look beyond mere server-level productivity, and take programmer productivity into account. A framework makes things much easier for agile teams, enabling people with different competences to work in their isolated environments. Programmers can work on the code, and designers on the templates for instance.

While this makes the actual development and deployment process more efficient, how much performance is lost due to the framework?

Lies, damn lies and benchmarks

Like Rasmus, I used an APC-cached simple PHP "hello world" file as the baseline for my benchmarks. On my dog slow MacBook Air, the simple PHP file was able to serve 32.91 requests per second.

MidCOM3, when run on Midgard 8.09 with APC and memcached was able to serve 8.90 request per second, or in other words performed at 27% of the plain PHP file. Not too good, but considered that much SQL is run to serve a Midgard page, there are good explanations at this.

But compared to Drupal, which I did not install but instead calculated the performance based on the difference between my baseline (32.91 r/s) and Rasmus' (611.78 r/s), MidCOM3 was doing quite fine. Drupal would only be serving about 2.5 requests per second on my box. Zend Framework, again calculated from Rasmus' data would provide 6.5 request per second.

And this is not all. Piotr Pokora has done a stellar work with Midgard2, which will come out in spring numbered 9.03. With it, MidCOM's numbers were quite a lot better: 25.37 requests per second, or 77% of the simple PHP file's performance. This is actually faster than the same simple PHP file on my box without APC (24.84 r/s).

I believe the MidCOM3 performance story does not end here. Piotras has been doing experiments with caching Midgard's initial request data to reduce database queries, and MidCOM3 still misses the extensive caching infrastructure provided by MidCOM2. When these are in place, we may get pretty damn close to the plain PHP numbers.

So, with these numbers, I think we can say that Midgard2 will be quite a good framework for doing green programming while still retaining agile team efficiency.


Towards a greener future

This matters quite a lot, as then Midgard can be run with much smaller virtual machines consuming much less electricity to serve interesting information-rich applications.

When Ragnaroek gets out in end of September we will start focusing our efforts to the new platform that already is showing so much promise. A brighter, greener, more efficient future lies ahead!

Knol: a unit of knowledge

Posted on 2008-08-29 13:47:07 UTC in 41° 3.108 N 29° 1.578 E 6km N of Istanbul, TR to . 0 comments.

Google's Wikipedia competitor Knol launched a while back. It seeks to make writing informative entries more appealing to authors by offering a cut of advertisement revenue from the Knol pages. This can be a substantial thing as calculations say if Wikipedia had ads the revenue from them would be 42 million USD per year.

Having read Neal Stephenson's Snow Crash where the lead character Hiro, a fellow swordfighter and free hacker is making his living by collecting intel to upload onto the CIC library, the concept had some appeal. To test it, I created some pages:

Workstreaming
Workstreaming means collecting activities of geographically dispersed team members into a consistent news feed, enabling managers to track process and colleagues to stay up-to-date with the day-by-day happenings.

Developing P2P business applications
Moving business applications to the web has solved many issues like easier deployment and backups, but at same time introduced a single point of failure in the infrastructure. A group of open source frameworks seeks to solve the issue by helping developers to migrate their applications into resilient and scalable peer-to-peer networks.

Haedong Kumdo
Haedong Kumdo is a modern martial art based on ancient Korean sword techniques.

This should not detract from my open content activities, as the Knol pages are also Creative Commons-licensed.

MidCOM 3 and context injectors

Posted on 2008-09-02 14:50:16 UTC in 41° 3.108 N 29° 1.578 E 6km N of Istanbul, TR to . 0 comments.

Context-aware life coaching ad
I know, according to roadmap we all should be now focusing in hammering out bugs in Midgard 8.09, or as we call it, "Ragnaroek" instead of working on MidCOM 3. But Tero had a specific problem he needed to solve, and I wanted to ensure it was done right. And so I ended up adding support for context injectors into MidCOM 3.

What about contexts anyway?

Context in MidCOM is an object that contains all useful information related to the request at hand: arguments, URL, templating information. And the plan is to make it much more.

Context is the main way for controllers to find out about their environment, and for the templating system to decide which views to run and how. As we want to make the new MidCOM lean and efficient, we did not want to stick everything possible into the context. But in order to solve problems developers will need more stuff there. And so the idea of context injectors was born.

Context injectors are a new API components can use to add or modify information in the current context. The injectors will be run in two places:

  • Process injectors will be called before dispatcher loads the component and calls the controller
  • Template injectors will be called after controller has finished and before a template is collected and displayed

There are many things you can do there. Some immediate use cases are:

  • Geopositioning injector could add user's current location to the context so that a controller can fetch nearby data
  • Theming injector could switch the template entry point (in old Midgard term's the ROOT element) according to user's wishes
  • Mobile optimization injector could also switch the template entry point if user is accessing the site with an iPhone or OpenMoko


Using context injectors

The way this works is relatively simple. To create an injector, you create a component and create an injector class to it. Depending which injector you want to provide, you either implement a inject_process or inject_template public method there. The method will have full access to the current context (in $_MIDCOM->context) and can add or change things there. The just declare that you have the class in the component's manifest by adding a key process_injector or template_injector with value being the class name.

MidCOM will take care of loading the component in question in the right time, and of calling the injector method. This will all happen automatically once the component is installed.

If your controller or template uses context information that is not part of the default context data, then make sure to first check that the data is available via an isset(). This way your component will be able to work around missing context information if applicable to your scenario, or throw an error.

Written outside in the Platonik waterpipe cafe in Beşiktaş, Istanbul, while vine leaves above keep the air cool enough for working. The picture is from the Freds House blog.

Freedom Fry on GNU's 25th anniversary

Posted on 2008-09-07 16:57:34 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

The Free Software Foundation's GNU project turned 25 last week, and the English humorist Stephen Fry made a video to commemorate it:

Stephen Fry on 25 years of Free Software

Benjamin Mako Hill posted some thoughts on how the first generation of free software developers has grown:

Certainly, GNU has matured and accomplished wonderful things in last quarter-century. More importantly perhaps, it's produced wonderful progeny. It has spawned hundreds of thousands of free software projects, thousands of free or nearly-free operating systems, and an unbelievably vibrant global free and open source software community. Beyond the software realm, the free culture movement, most free licensing projects, and much of the access to knowledge movement can trace a connection back to GNU. We are living, and building, a new generation of the free software movement.

As computers are becoming more and more ubiquitous, and affect more and more every aspect of our lives, software freedom becomes a strong necessity. I personally have been involved with free software since late 90s. It gives me the operating system for our servers, our programming language, and our toolkit. It also gives me an amazing community to work and share ideas with. It is hard to imagine working in a world without them.

To support free software, write some code, use a free operating system, join the Fellowship, and celebrate the Software Freedom Day on September 20th!

Ragnaroek is coming

Posted on 2008-09-08 20:15:06 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

With beta2 out today, the new Midgard 8.09, or "Ragnaroek LTS" is finally coming. PHP4 has been dropped, many optimizations made, and now that Prototype has been dropped in favor of jQuery, I think we will finally be able to live with it as the Long Term Support release.

But before Ragnaroek is stable a lot of testing has to happen, as should polishing here and there. Piotras is fixing the site wizard, and I've been adding more information about the installed components.

Unlike eZComponents which are just libraries, components in Midgard are the building blocks of a website. Each of them is its own PHP application that the MidCOM MVC framework runs when a folder associated with that component is accessed. They all supply their own templates, localizations, and load whatever libraries needed.

Currently we have some 120 components in the MidCOM repository, and most of them have releases on the PEAR channel. The components range from simple things like a news listing to very specific applications like event registration or invoice processing.

One way to make components more visual was to add icons for them. MidCOM has had support for component icons for a while now, but they haven't really been used anywhere. So I made them used more widely:

Icons clarify component selection when creating a new folder:

MidCOM icons in component selector

Icons visualize how many components a developer has contributed to:

MidCOM icons in Ragnaroek credits screen

...and icons also make the localization tool more visual:

MidCOM icons in the Babel translation tool

Finding good icons for many of the components is quite difficult. We're working with Kalle Persson from the Tango project to create new ones as needed.

Where will desktop applications and web services meet?

Posted on 2008-09-09 21:38:56 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Midgard follows Ubuntu's synchronized release schedule, and releases packages for that platform, but otherwise we have little to do with the distribution. Still, I found the following in Mark Shuttleworth's Jaunty Jackalope announcement interesting:

Another goal is the the blurring of web services and desktop applications. "Is it a deer? Is it a bunny? Or is it a weblication - a desktop application that seamlessly integrates the web!" This hare has legs - and horns - and we'll be exploring it in much more detail for Jaunty.

This echos quite well with our plans to take Midgard much further than just the web. As Everaldo often reminds me, Midgard may soon become very interesting to developers of desktop and mobile applications. What we provide to them is:

And on top of all this, Midgard comes with a pretty efficient MVC framework for PHP. This means that the desktop applications can be coupled with a nice social web service, all built using same storage and replication mechanisms. Replicated, peer-to-peer applications could be a free software answer to the risk of cloud taking control of your data.

Meme time: picture right now

Posted on 2008-09-20 05:10:14 UTC in 35° 9.534 N 129° 3.840 E 7km NE of Pusan, KR to . 0 comments.

As seen on Planet GNOME:

Bergie in Saha Dojang

  1. Take a picture of yourself right now.
  2. Don’t change your clothes, don’t fix your hair…just take a picture.
  3. Post that picture with NO editing.
  4. Post these instructions with your picture.

My picture was taken with Photo Booth in the Saha Haedong Kumdo dojang in Busan, Korea after a bamboo cutting seminar. I'm here for the 2008 Haedong Kumdo Performance, not for any dan tests like Dave suggested ;-)

Spontaneous adventures: some autumn geohashing

Posted on 2008-09-27 19:26:46 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Land Geohash
Geohashing, as introduced by the awesome web comic xkcd, is an spontaneous adventure generator. The geohashing algorithm uses the current date and the day's Dow Jones Industrial Average to generate a new location for each region in the world. Geohashers then use various means to reach that location in search for fun and adventure.

As out there was beautiful autumn weather, and I needed to go somewhere to air my thoughts, I decided to hunt down today's geohash of the Helsinki region. To do so, I fired up the Geohashing iPhone application, and let it count me the coordinates. As it happens, the spot was in the end of a gravel forest road between Renko and Hämeenlinna.

iPhone calculates 108km to the hash

Calculating the route with iPhone's map software to be 108km, I put on some warmer clothes and jumped on my bike, heading leisurely north on smaller side roads. I had a lunch stop at Roosa, and then made my way to the destination.

Royal Enfield - the ultimate geohashing machine

The moose hunting season has just started and some gunshots could be heard in the woods. This worried me a bit, especially as the road's sign had some bullet holes, but the locals I passed on the gravel roads seemed friendly enough.

Bergie: a proud new geohasher

While Google Maps didn't show it, the spot was actually easier to reach, as it was just some ten meters from a small gravel road. I took the necessary picture proof, had a chocolate bar, and then headed back.

This was my first geohash. Definitely a fun way to experience your surroundings spiced up with some randomness!

Long-Term Support for Midgard: Ragnaroek is here!

Posted on 2008-10-13 15:03:12 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Midgard Ragnaroek

Midgard CMS switched to a synchronized release model this summer, and the first fruit of it is Midgard 8.09 Ragnaroek, a Long-Term Supported release launched last week:

Ragnaroek LTS is a Long Term Support version of Midgard for which bug fixes and minor feature improvements will be supplied by the Midgard community for several years. It is recommended that all Midgard users upgrade their installations to the Midgard 8.09 series for stability, performance and maintainance reasons. Upgrade from MidCOM 2.8 installations running with PHP5 has been made as seamless as possible.

The version is targeted to ease transition from web services using the deprecated Midgard 1.x APIs to the new Midgard2 architecture. Because of this, the release provides both API versions. This means that the release can be used to run both Midgard 1 applications like the version 2.9 of the MidCOM component framework, and Midgard2 applications like MidCOM3.

This is the easiest Midgard ever to install, thanks to the new datagard database and website setup tool. Binaries are available for many platforms thanks to openSUSE Build Service, making Midgard setup as simple as:

apt-get install midgard-data
datagard
<answer some questions>

And go to your newly created Midgard site, and start creating content. Sweet!

In his blog, Piotras explains more about the importance and long-term strategy related to Midgard 8.09.

Learn more about Midgard in FSCONS

Posted on 2008-10-14 06:29:55 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

FSCONS is the main Nordic conference on free software and free culture, held on October 24th - 26th in Gothenburg, Sweden. The schedule has lots of interesting stuff, including Wikipedia, Embedded Qt, OpenStreetMap and Jabber. But in addition, there will be two sessions on Midgard:

  • Midgard by Henri Bergius: I will be talking about this long-term open source CMS project and describe our technology strategy and the new synchronized development model. This stuff should be interesting not only to LAMP people, but also to GNOME developers, because as you might know, Midgard is not just CMS
  • Midgard Workshop by Tero Heikkinen: after you've learned more about the project, Tero's workshop will be an excellent opportunity to try it hands-on. Depending on attendance we will most likely focus on developer-oriented view at MidCOM3, the high-performance MVC framework that runs on top of Midgard2

In addition to us Finns, the Midgard guys from anykey will also most likely be there.

If you're interested in free software in the North, come to FSCONS. Irrespective where you side with your web technology choices, looking forward to discussing with you!

FSCONS 2008

Free software at work: OpenPsa2 is making a return

Posted on 2008-10-15 14:30:34 UTC in 60° 11.232 N 24° 58.236 E Helsinki, FI to . 0 comments.

In the recent OpenMind conference we were discussing how open source projects simply don't die as long as there is an interested user community: Even if the original company or individual who built the application stops working on it, somebody will always rise and start maintaining it.

Last few weeks have been a great example of this. Nemein is the company which originally built the OpenPsa2 suite of project management and CRM tools for consulting companies. In last two years there have been some shifts in strategy, and so we ceased working on the product.

OpenPsa2 under Midgard Ragnaroek

Luckily for our users, OpenPsa has been out under the GNU General Public License since 2004. This meant that while commercial development had stopped, they were able to step in and continue where we left off. It took a while, but during this fall Andreas Flack from Content Control started maintaining the software.

Now the effort is starting to bear fruit. Midgard world has recently settled into a new synchronized release model, and OpenPsa is swiftly catching up with the rest of the architecture. We expect that it may be released with the Ragnaroek 8.09.2 revision.

Good work, Andreas!

Flash is not the web

Posted on 2008-10-19 16:57:25 UTC in 41° 2.268 N 28° 55.620 E Istanbul, TR to . 0 comments.

Let me share a little piece of Internet happiness: When I got my iPhone, I wondered how could its web browser be so dramatically faster than the one on my N810. Could it be just that iPhone has faster processor, and uses WebKit instead of Mozilla? But at the same time, the state-of-the-art Firefox 3 on my MacBook Air was also feeling sluggish.

After giving this a little bit of thought, I decided, Flash must be the guilty party. Flash, as we know, is Adobe's proprietary framework for building multimedia-rich applications, and iPhone simply doesn't support it. Sometimes Flash is actually used for building interesting applications, but most usage online seems to be just fancy animated banners. So, I thought, there must be a smart way to get rid of Flash. And there is: With Firefox you can use the FlashBlock extension to excise all Flash content off the pages:

Arstechnica with Flashblock

With other browsers you could off course uninstall the Flash plug-in, but the problem is that sometimes there is Flash content you actually want to see. And in these cases FlashBlock works perfectly: each Flash area on a site is replaced with a box that you can activate at will. So before Flash is made obsolete by the recent advancements in HTML and Javascript, this option is the best of both worlds.

DeCSS, legal or illegal?

Posted on 2008-10-23 12:56:05 UTC in 40° 53.970 N 29° 10.350 E 22km SE of Istanbul, TR to . 0 comments.

While last year Finnish courts decided that breaking ineffective copy protection is legal, it seems this year the ruling has been reversed. Quick translation below:

Sihvo was sentenced into 30 day-fines. When deciding the judgement the court took into consideration that Sihvo had turned himself in to the police...

Again in this trial the key point was whether CSS copy protection that had been circumvented already in 1999 could be considered an "effective technological measure" as required by the law. The court decided that it could.

Guys, try to get it! Every time you make it difficult to move videos or music somebody has legally bought between devices they own by copy protection you play in the hands of the pirates. Illegally downloaded videos or music simply work better than bought ones!

DeCSS is a piece of free software initially published in 1999 that breaks the copy protection of DVDs. It makes it possible to watch your DVD films on Linux, or convert them to formats you can watch on mobile devices. Now that promoting DeCSS is supposedly illegal, it is a good time to download it, or amuse yourself with various ways to work around the ban.

Real-world example of a free software project handover

Posted on 2008-10-25 16:14:12 UTC in 57° 42.438 N 11° 56.280 E Göteborg, SE to . 0 comments.

I wrote earlier how a free software project never stops as long as there are people interested in it. Looking at Midgard's Ohloh analysis, I found a nice example:

Ohloh: MidCOM handover from Torben

Can you see a change when former MidCOM lead developer Torben withdrew from the project?

Midgard2 at FSCONS: Your data, everywhere

Posted on 2008-10-27 13:02:19 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

Last weekend we went to the Free Society Conference and Nordic Summit in Gothenburg to talk a bit about the new direction Midgard has been taking: making it a general replicated persistent storage library for multiple programming languages. The CMS itself is just an application using the library.

The basic idea is that the cloud is a trap that will move your data, and your applications beyond your control to proprietary data servers and web applications run by multinational corporations. If free software doesn't provide a compelling answer to that, we risk irrelevance.

A replicated, peer-to-peer system of synchronizing and sharing your data could be the answer. And Midgard2 is a framework providing just that. Bindings to different languages like PHP, Python and Mono, interprocess communications via D-Bus and XMPP, replication, and ability to run the same software from big server clusters to Nokia internet tablets should all help us get there.

Bergie in FSCONS: Midgard tackling the mobility challenge

In the conference we focused on outlining the big vision, and then ran a workshop where we showed some practical aspects of this. We set up Midgard2, and built a web application that allowed user to input a RSS feed address. This was stored to the database via midgard-php. Then a midgard-python process got notified about this via D-Bus, fetched the items and stored them to the database. The web front-end then displayed the articles. A clean example of interprocess communications.

Tero in FSCONS: Midgard 2 architecture

Peer-to-peer replication we demonstrated in Ville Sundell's XMPP workshop where we built a Python replication daemon monitoring for database changes via D-Bus and transmitting them via Jabber to other Midgard boxes. Quite promising! But still many things need to be written before we are in the "your data everywhere" utopia...

Oh, and for those wondering: Midgard2 is very much GNOME software, running on top of GLib, libgda, D-Bus and so forth.

LinkedIn Applications: automatic data into your resume

Posted on 2008-10-29 17:19:30 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

LinkedIn, the popular resume maintenance tool just got a little smarter: they added an applications catalogue that can make your profile there more dynamic. This is good as then potential business partners can find out more about myself from a single source, and I need to do less work to keep it up-to-date.

I immediately added three apps, displaying my latest conference presentations, upcoming trip plans and posts on my blog:

LinkedIn Applications on my profile

This is great as the applications already were part of my workflow. However, in general it is not a good idea to trust web apps to be the only place where you keep your things.

In my case, I'm using my Midgard-powered website as the backup where I automatically gather information I publish on other services like Jaiku or Flickr. This means that I can use the convenience and collaborative features of social web applications but still remain in control of my data. In the future I may move this to an even more replicated setup...

On Vikings and Free Software

Posted on 2008-10-29 17:45:49 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Harmaasudet, the living history group we started in mid-90s, and the reason why I originally got into software, recently migrated back into the Midgard platform.

Harmaasudet website

Their webmaster and Nemein alumnus Heikki asked me for some history of Midgard, and this is what I wrote:

Well, original Midgard was completely programmed in order to run the Grey Wolves site. We hacked it together with @jlz in Helsinki Capital of Culture offices in Etelaranta at night time.

Before Midgard, the site had run on a SGML pipelines -based publishing system we called SusiSGML, and member registry on some custom Perl stuff. Then we wanted more dynamic functionality, and Midgard was born. At first @jlz was intending to write it in Scheme, but then chose the C+PHP extension.

For administration, we wrote the “Midgard Admin” tool, traces of which can still be seen in SpiderAdmin.

Midgard was intended to be a one-off, but then as my employer Stonesoft clearly needed some system I deployed there. Then @jlz was hired to my team, and we decided to open source Midgard before any IPR issues would rise with our employer, which was after all a proprietary software vendor.

When the original Midgard-based Grey Wolves site launched in early 99, we had the great example of what things can be: Hiiden Hirven Hiihto photos and reportage were live only couple of hours after the event ended. And this was before we had digital cameras…

Jukka Zitting, the original Midgard lead developer also added some points:

Architecturally SusiSGML was pretty much like early versions of Apache Cocoon, only with SGML and DSSSL instead of XML and XSL. Had we been at it a few years later, Midgard might have been based on Cocoon. :-)

The Midgard project will turn 10 years old next May, and so it is great time to collect some odd bits and pieces of Midgard folklore.

Some talking points for the Midgard Gathering

Posted on 2008-10-31 16:51:21 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

Since the Midgard Gathering is next week, I thought it would be time to write down some conversation starters related to it.

Clear vision

One important thing we need to settle on is a clear vision for Midgard. It should be a vision everybody in the community can agree with, and a vision that will benefit the user base.

I believe that "your data, everywhere" is the right idea. We should target Midgard for the replicated world where your application data can be easily transferred between multiple devices, served on the web, and shared with your friends.

While some believe that soon you will "never be offline", I think that level of ubiquitous connectivity is either unattainable or at least very far off in the future. What we need instead is to be able to have our data with us, wherever we go.

Unique visual identity

What really sets Apple's products apart is the "fit and finish," the ultimate impression that results from thousands of tiny decisions that go into a product's development. Take Apple's pioneering work in injection molding. It's part science, part art, and plenty of trial and error. (Who Is Jonathan Ive?)

Design is often what differentiates winners from the mass. Apple's beautiful laptops and cell phones are a good example of how you can beat a crowded market by focusing on design and details.

While we should have distinctive visual elements to build our user interfaces from, I don't mean only that. By design I mean that we really need to think hard of what our users need, and design beautiful interfaces that make things easy for them.

On the visual end, the Midgard colors of grey, orange and brown should stand out quite well. We have excellent icons done in the Tango style, and many other design elements coming from Ilkka Martio's work on Midgard2 styling. These should be cornerstones of the new visual user interface. In '99 Midgard had a strong, distinctive visual identity. We need to rebuild that.

Content management

Content management: This is the everything that happens with a piece of content after its created and until it dies. This includes the permissions, workflows, versioning, check in/out, task management, reporting, archiving, administrative searching, language translation, and any other action involved in keeping this content relevant, current, effective, and general under control. (The Four Disciplines of Content Management)

Midgard's origins have been in web publishing, and through strong templating and component systems this is where we've been quite good at. But content management we haven't done that well. At least, if content management is taken to a wider meaning than just "making stuff editable and published on the web".

With the new Midgard we have the delightful opportunity to rethink this all. Thanks to our active consulting companies and the powerful MVC framework we shouldn't focus on actual components this time - they will appear for sure through various client projects. Instead, we should concentrate on the basic ideas of content management.

This means that we should think of how the content is actually edited and published, and how it lives on in a service. Handling and connecting of content fragments, managing inter-document linkage, and versioning are all important features. Similarly, we should make it easy to send documents to commenting and approval rounds, and to serve them in multiple variants.

An important piece for this would be making the notification service that in older Midgard existed as a separate component an integral part of the system. Any Midgard application should be able to store and show notifications for users. If this is utilized from core up, then workflow between different parties working on a site or a document will be much easier.

To ensure consistency between components, and that components are as easy to develop as possible, MidCOM should provide a good set of controller baseclasses for typical content management activities.

Replication everywhere

Before his retirement as Microsoft's chairman, Bill Gates suggested that a so-called pervasive desktop would be a focus of Windows 7, giving users a way to take all their data, desktop settings, bookmarks, and the like from one computer to another--presumably as long as all those computers were running Windows 7. (PC World)

Even though Midgard has supported replication since 2000, it has always been a bit of an extra feature. Most installations have still been on the server end, with the server acting as an isolated island.

Following our "your data, everywhere" vision, this must change. Replication tools must be shipped with every Midgard installation, be it on server, on desktop, or on a mobile device. And they must be integrated with the user interfaces. Anywhere you edit something, you should be able to share it with others, and see where that piece of content originally came from, and who it has been shared with.

When online, the sharing and synchronization must happen instantly. When offline, the changes to be replicated must be collected into a local spool, and then sent over when connectivity is available.

Separating content objects from internal objects

...load-bearing walls in content management — those things that require a content editor to call a developer to change them. Where do you draw the boundaries? (Load-Bearing Walls in Content Management)

Everything in Midgard is an MgdSchema object, be it permission, site template, user, or an article. This is good in the sense that it allows familiar programming interfaces to be used on every level of the system. But it also means that internal objects sometimes end up being used as content objects, causing confusion.

For instance, persons and groups are often used as on-site content. But they differ from other pieces of content on many levels, for instance because they have so many other objects connected to them through permissions and metadata. Because of this they work with different rules regarding to deletion and approval than others, which many users can find frustrating.

We should see to have stronger differentiation between content objects of different types to ensure smoother usage and replication.

Quality

Quality criterias - Portability: Easy to configure in new environments, Few OS and webserver dependencies, Few and documented version dependencies (language version, database version, external libraries), Able to survive environment updates (Quality in PHP Projects Beyond Unittests)

Like many other pieces of free software, Midgard has been riddled by quality issues. While our bugs haven't meant gaping security holes, changing APIs and memory leaks have caused many grey hairs to our users.

To improve quality in the Midgard software stack we have already taken some steps. The new synchronized release model ensures that Midgard and MidCOM play well together and that component developers can start using new interfaces and features more quickly. It also makes Midgard more predictable to users, helping them to plan their upgrades well ahead.

The openSUSE Build Service has also increased the quality of Midgard software. Now we can provide prebuilt binaries to most popular Linux distributions, making installing and upgrading Midgard easier. The new datagard tool makes setting up a Midgard site a single shell command, which is also an important step here. In the future we should aim also for the virtualized systems by using tools like SUSE Studio.

Quality and backwards compatibility of commits is also important, as are coding standards in a major project like this. To that end, our new VCS Tyrant should be able to help our contributors in their work. Similarly, the newly-revitalized issue tracker with its clear milestones make tracking the development work easier.

Finally, better software testing is a major step to strive for. Regressions have hurt us in the past, and the only way to get rid of them is to to implement a good test suite. For this, we will have an unit testing workshop on the first day of the Gathering.

Documentation

If our intent is to encourage people to use these tools and to contribute their time to the development of these tools, we need to spend more energy on introductory documentation. Engineers who look at Sourceforge are looking either for solutions to problems or are looking for interesting tools. In either case the Web site needs to convey the important details in a short form to enable the reader to gauge their level of interest. Obscurity in documentation benefits no one as it annoys potential users and non-users alike. (Is Documentation Holding Open Source Back?)

Midgard's documentation wiki is currently in a horrible shape. As Midgard's capabilities have grown, and versions changed, new stuff has been added. But all of the old stuff is also there. And users, stumbling there either through the navigation or a google search, will have few ways to tell whether a document is up-to-date.

Developers clearly feel this frustration, and as result much of the newer documentation, especially for Midgard2 is available only in blog format.

Because of this, we really need to put an effort to improving the level of documentation. And important first step would be to take the current wiki content into control. Old information must be either removed or tagged to the version it belongs. Templates must be tuned so that they show clearly if something is current or historical information. And the new materials must be collected from the various blogs in order to be published on the site.

After this is done we must rethink the way the wiki is maintained. Maybe we need a "documentation master" just like we now have a "bug master" and a "VCS tyrant". Maybe we must switch to MediaWiki. Or maybe we must make the wiki a replicated system that we all can run and edit also on our own machines. As I am not quite sure of the right solution this must be discussed well in the Gathering.

Virtual servers

One of the more successful technologies to have been developed is virtualization. Broadly speaking, to virtualize is to make a single piece of hardware function as multiple pieces. Different user interfaces isolate portions of the hardware, and make each one operate as a separate entity. As applied to data centers, installing virtual infrastructure allows more operating systems and applications to run on fewer servers, which reduces overall energy use and cooling requirements. (Ecopreneurist)

In the past Midgard has been hurt much by the fact that root access is required. Less advanced content management systems have surpassed us in popularity by many orders of magnitude because anybody can set them up in just some web space.

But now I believe things are changing. Virtual servers are becoming cheaper and cheaper, and as they allow much larger degree of freedom than shared web hosting, companies and even individuals are now buying them instead. And on a virtual server you can run Midgard easily.

If we want to really benefit from the wide popularity of virtual servers, we must take some steps. First of all, Midgard must be very easy to install, as it is now thanks to datagard and OBS. And secondly, we should provide preconfigured "virtual appliance" images that hosting providers running Xen or VMware can set up just as easily as they would an off-the-shelf Debian or RHEL.

The replicated network setup should also take this into account. Users should be able to easily keep adding new virtual servers into their cluster and have that instantly start sharing data with their other servers.

Summer versus autumn identity

Posted on 2008-10-31 17:41:15 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

As I didn't go to LatinoWare this year, the extended summer is now officially over, and therefore it is time to change to autumn garb, also on my online identity. Background remains the same:

Summer BergieAutumn Bergie

I remember seeing somebody's blog change its background image according to weather outside, showing sunny or rainy scenery. Maybe I should follow similar idea, changing color scheme and avatar automatically based on location and temperature?

Midgard and content filtering

Posted on 2008-11-01 11:46:58 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Gadgetopia has a post on how CMS's should provide an API for content filtering. Since Midgard is persistent storage API first, and CMS only second we obviously have nice APIs for doing exactly this.

In this case we're running a query and checking if a different user is allowed to see something, as specified by Gadgetopia:

Hey, CMS, I have this list of content IDs here… How did I get them? Yeah, well, that’s not that important right now…

Anyway, can you look at this and tell me which ones I can show Nathaniel Snerpis? Here, just take them all, and give me back the ones I can show him.

With Midgard you do this by fetching the objects first with Query Builder, and then checking their permissions via MidCOM auth service. When user is logged in, his ACLs are already automatically applied to the results so no checks are needed.

<?php
// In this example we have some pre-gathered list of GUIDs
$guids_array
(
    '35c2b080736b11dd935ab300c51623d723d7',
    '18aa22ee736b11dd935ab300c51623d723d7',
);

// Instantiate a query builder
$qb = midcom_db_article::new_query_builder();
$qb->add_constraint('guid', 'IN', $guids_array);

// Get the articles
$articles = $qb->execute();

// We need Nathaniel Snerpis' GUID to perform the ACL check
$nathaniel = $_MIDCOM->auth->get_user_by_name('nathaniel');

// Loop through the articles and check permissions
foreach ($articles as $article)
{
    // Check if Nathaniel is allowed to see this
    if ($_MIDCOM->auth->can_do('midgard:read', $article, $nathaniel))
    {
        // Show the article to Nathaniel
    }
}
?>

You can see here that we're using GUIDs, not IDs to refer to content. This is because GUIDs (compliant with the UUID spec) are replication-safe, and you can trust them to be the same on every system in your Midgard cluster.

Note: in this case the API example was in PHP. But with Midgard 9.03 you will be able to use the exact same APIs with Python and Mono.

Midgard: benefits of synchronized releases

Posted on 2008-11-03 15:28:05 UTC in 60° 11.232 N 24° 58.440 E Helsinki, FI to . 0 comments.

From the Midgard Project:

The Midgard Project switched to a new synchronized release model with the 8.09 "Ragnaroek LTS" release. Synchronized release model means that a major release of Midgard will happen every six months, tuned to be part of the larger Linux software ecosystem as described by Mark Shuttleworth:

WHAT IF you knew that the next long-term supported releases of Ubuntu, Debian, Red Hat and Novell Linux would all have the same major versions of kernel, GCC, X, GNOME, KDE, OO.o and Mozilla. Would that make a major difference for you? I’m willing to bet not - that from a customer view, folks who prefer X will still prefer X. A person who prefers Red Hat will stick with Red Hat. But from a developer view, would that make it easier to collaborate? Dramatically so.

...


The same model has been employed very successfully by major projects like GNOME, Eclipse and the Ubuntu distribution. As Midgard relies on many GNOME technologies, being in the same release cycle with them helps our development immensely, and makes Midgard more easy to install because we have a more stable set of dependencies.

Finland, freedom, censorship

Posted on 2008-11-04 07:05:15 UTC in 60° 11.232 N 24° 58.440 E Helsinki, FI to . 0 comments.

According to recent Helsingin Sanomat poll, 73% percent of Finns aged 55-64 years wanted to "control" the Internet, removing freedom of speech as necessary, in the light of the recent school shootings.

I've got very little to say to them, except:

"Those who would sacrifice freedom for security deserve neither" - Benjamin Franklin

Every knee-jerk reaction like this only fights the symptoms, not the causes of problems our society is facing. And at the same time, little by little, we erode away the values European culture has been built on.

Europe got ahead by applying new ways of thinking during the Age of Enlightenment. Now, facing global competition, is it really a good time to become like China?

Not everything goes according to plan

Posted on 2008-11-06 20:57:19 UTC in 60° 11.178 N 24° 49.956 E 6km NW of Helsinki, FI to . 0 comments.

Damn. As Slate put it:

Distance also magnifies the impact of negative feelings like longing and suspicion; according to one study, intercity lovers are more likely to be depressed

What next? I don't know, maybe focus on some core competencies...

Royal Enfield somewhere in Poland

Midgard Gathering 2008

Posted on 2008-11-07 14:42:25 UTC in 60° 11.178 N 24° 49.956 E 6km NW of Helsinki, FI to . 0 comments.

The second Midgard Gathering of 2008 is this weekend in Otaniemi, Espoo. Happened so far:

Thursday

Friday

Saturday

  • Saturday started with waking up the various Midgardians sleeping in OK20
  • Alexander gave a presentation on how Midgard's internals could be ported from straight C into Vala
  • We discussed reorganizing Midgard's documentation and appointed Solt and Neithan to be in charge of it. I expect to see lots of documentation-related bugs in Trac
  • Split in MidCOM between "core" and "contrib" components was clarified and we made an updated list of core components and discussed some components we hope to promote to core soon
  • Midgard 9.03 feature list is now decided. With 9.03 we will focus on the persistent storage and MVC layers of Midgard, and plan to add the CMS features on the application level around 9.09
  • Rambo, in his role as a VCS Tyrant started reorganizing Midgard's SVN
  • We started planning a foundation to govern the Midgard project. This will not be a big thing like Mozilla and GNOME foundations, but mostly a practical instrument for handling copyrights and Midgard Gathering arrangements
  • In the evening we went to Kaisla for some beers to celebrate the fact that Midgard actually did compile (though not run) on Windows

Some pictures on Flickr.

Meme: Ten years

Posted on 2008-11-11 22:59:22 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Ten years ago, 1998

  1. Started my first "real job" as a site building in an ad agency
  2. Moved out of the commune
  3. We were running already the first production Midgard site
  4. Was in process of handing Harmaasudet over. By spring 1999 I would be out

Five years ago, 2003

  1. Did my first motorcycle trip to Russia
  2. Co-organized a very nice conference in the Harvard university
  3. The relationship started in 1998 ended
  4. Had been running my own business for two years, and it was finally cash-positive

Three years ago, 2005

  1. Learned to fly
  2. Spent the summer holiday on a Viking ship in Russia
  3. Visited Rome, Brazil and the cave city of Vardzia for the first time
  4. Had a cat

Year ago, 2007

  1. Released my first mobile application
  2. Changed homes and motorcycles
  3. Got robbed twice, for a total of about 15,000 EUR
  4. The company got an AAA credit rating

This year so far

  1. Got black belt in Haedong Kumdo, a Korean sword art
  2. Moved partially to Istanbul, and then didn't
  3. Saw Midgard2 finally become a reality
  4. Did not motorcycle or fly almost at all, but traveled quite a lot

Yesterday

  1. Recovered from the Midgard Gathering
  2. Returned the rented white tie suit
  3. Did some customer support duty

Today

  1. Upgraded some Midgard servers to Ragnaroek, with varying degrees of success
  2. Got my local development environment back up-and-running
  3. Missed two after-work meetings

Tomorrow

  1. Will go to Haedong Kumdo after a long break
  2. Wear my black christmas hat for the first time this season
  3. Do some calendar digging for missing hour reports

Next year, 2009

  1. Get out of debt caused by the disasters of 2007
  2. Get back into the motorcycle adventurer mode
  3. Learn to sail on modern boats

Via Tiuku.

Nemein is going to Ubuntu Server

Posted on 2008-11-14 09:37:34 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

At Nemein we do maintenance for quite a few servers of our customers. While some customers have their own Linux distribution preference - usually RHEL - in most cases we have a say what distribution runs their servers. So far this has been debian, but now we're going for Ubuntu Server.

Ubuntu and Midgard

The reasons for this are quite simple:

While not everybody is happy about the way Ubuntu has established itself in the market, there seems to be a strong gravitation towards switching to it, on both desktop and server.

On innovation, and how choice is not always good

Posted on 2008-11-16 20:55:33 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

JP Rangaswami is writing about how innovation should happen as a dialogue between the developers and the users of the product. As an example of how innovation used to happen, he dug up Henry Ford's early automobiles and assembly lines.

With these early Fords, the customer choice was limited to having your car "in any color as long as it is black". And judging how since then cars have diversified to come in so many different forms, specialities and colors, this thinking must be flawed, no?

As Tim O'Reilly pointed out, JP Rangaswami's blog talks about enhancing the consumer experience in markets that are already out there and are mature. In less established fields, the lone inventor must still press on:

In a talk I attended many years ago, Joseph Campbell said that the Knights of the Round Table were the archetypal myth of Western civilization, the idea that each of us, alone, must go off into the deepest, darkest part of the forest, populated by monsters, on a quest to make the world a better place.

An interesting comparison with Ford at another, still quite immature and emerging field is Apple. Apple provides a full range of computers from servers to mobile phones and in most cases seeks to control the experience through the whole way. The devices are beautifully designed and work well as long as you use them as intended, and not for anything else.

This is a big contrast to the rest of the computing world, where everything comes with a bewildering number of choices. And these choices rarely work so well with each other. And so Apple is able to utilize their singular vision and attention to detail to make very good business.

In the free software world, the same distinction has traditionally been between the GNOME and KDE projects. GNOME has focused on a controlled environment with strong usability and accessibility, while KDE has been about the freedom to tinker and configure.

At some point users will want to manifest their personality or a tribal identity through how they set up their computers. But at the moment I believe we still need more the working systems that we can use, don't have to spend too much time configuring, and that let us focus on whatever we want to accomplish.

This is what originally drove me from my HP Linux laptop to an iBook four years ago. When I ran Linux I found myself constantly tweaking settings and installing new interesting applications that were supposed to improve my life. With Mac, once some basic necessities had been set up, I have very rarely touched any settings.

Now the iPhone experience has got me to feel the downsides of Apple's total control, and I'm again looking over the fence to see if free software is greener on the other side. While with Linux I would have full control of my environment, the whole synchronized release business keep things fresh enough. Given that a new GNOME desktop and a new Ubuntu would be out in just a few months, I should be able to fight the urge to start upgrading bits and pieces on my own, ruining productivity and potentially breaking my work environment.

If SubEthaEdit wasn't locking me to OS X, I would definitely be trying this out.

As an afterthought

All this talk of Ford got me to think a little about the car problem. Cars make cities unlivable and pollute the world, but at the same time they let people accomplish and experience things that they couldn't without personal transport.

Now the conventional thinking seems to be that what the world needs is more energy efficient, cleaner cars. But to my point of view, that is quite close to what Ford said:

If I'd asked people what they wanted, they'd have said "faster horses"

So how about solving the problem in some other way? Segways tried and failed to make mobility more even more personal and less space-requiring - but not very appealing in chilly Helsinki weather. But how about making the world require less mobility in the first place? Maybe World of Warcraft, Skype and Second Life - the field of telepresence - are better answers to the car problem than Prius or Tesla.

Technorati Tags: , , , , , , ,

Maemo.org goes Ragnaroek

Posted on 2008-11-18 16:54:52 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 0 comments.

Maemo.org, the community site for Nokia's mobile Linux environment has this week been upgraded to 8.09.2 Ragnaroek, the much faster and long-term supported version of the Midgard framework. Thanks to Niels and Piotras for working with me on this!

in October, I spent quite a bit of time optimizing this release, shaving off an estimated 60-70% of queries through some smart caching and removed redundancies. In addition, a new database server is now in place. Together, these should get us quite far in the "Fast Server" agenda.

Maemo on Nov 18th

We're however still not done, and now we will do more optimizations that will be part of 8.09.3, due next week, and will move static files (images and javascript) to a separate lighttpd instance to remove that load from the normal Apache. When all this is done, the Maemo community should have infrastructure that will be able to serve it for a long time.

In addition to optimization, we've been working on some other features related to the website:

Midgard is a big and complex piece of software. If you notice any issues related to this upgrade, please let us know. And if you have any ideas on improving the website, be sure to file those too!

Technorati Tags: , , , ,

Summer of Code works

Posted on 2008-11-21 11:06:43 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

COSS - Finnish Centre for Open Source Solutions

Prompted by a recent COSS news release, I thought to write about two Summer of Code success stories:

Not bad!

Technorati Tags: , , , , ,

With Nokia you're not just a consumer

Posted on 2008-12-02 11:20:04 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

N97
Today's N97 launch reminded me of a big mental difference between using Nokia or Apple phones: with Apple, you're merely a consumer, where Nokia's devices allow you to participate in the information flow, to be a producer. Back in 1932, Bertrand Russel wrote:

The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part.

The whole N series of devices seems dedicated for allowing you to take that active part: decent cameras, video recording capability, reasonably good keyboards. Not so with the iPhone.

With Apple, you're given the role of a consumer: browser the web, watch videos, buy music from huge corporations. Just don't think different.

Comparing my current iPhone and previous N95, on the Nokia I uploaded a bit more data than I downloaded, on the iPhone, I've downloaded ten times more than uploaded. With difficult text input and no background applications, the device simply seems to push users into the consumer mindset.

Two years ago we handled the whole Death Monkey Rally experience using three Nseries phones. They took our pictures and video, all blog entries were written and published with them, and they recorded our stories to the YleX radio show. Try doing that on an iPhone!

As a product, N97 looks very promising. It has pretty much all features I want from my universal communicator, except one little detail: it doesn't run Maemo.

Technorati Tags: , , ,

Lex Nokia: I read your email

Posted on 2008-12-04 11:58:08 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

Lex Nokia, the controversial snooping law is about to pass in the Finnish Parliament pretty soon, the latest of a series of clueless, unconstitutional laws passed because our MPs are just hopelessly out of touch with the modern world (well, except one).

This means that soon in addition to the Swedish, any organization providing you an internet connection can listen to anything you do online. Electronic Frontier Finland is trying to fight the law, but it is unlikely that anything good will happen.

And why are our constitutional rights being taken away from us this time? Because Nokia is concerned that their employees perform corporate espionage using their nokia.com email accounts. Come on! How difficult is it to take the data out on a USB stick and mail it from home? At best, this law may help to catch a few idiots, while eroding the rights of all.

I urge everybody owning a business or running a community internet provider to get one of these and wear it to demonstrate people around you what the law means:

I read your email.

Technorati Tags: , ,

Acting on HTTP errors

Posted on 2008-12-08 12:05:07 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

How not to handle Midgard errors
Since Midgard does now Python nicely alongside PHP, some Midgardians have recently been looking at Django as an optional web framework to use with Midgard's replicated storage system.

Looking at other systems than yours every now and then is great, as you can get some ideas. First such idea to come to Midgard from the Django world is error interceptors, a set of configurable actions to perform on given types of errors. For a long time, Midgard has been mapping various types of system errors (and in MidCOM3, Exceptions) to various HTTP status codes, and has made it possible to create customized templates for displaying them.

Error interceptors, on the other hand, allow other actions to take place. Some examples:

  • Log all 404 Not Found page URLs into a special log file alongside their referrers
  • Send all 500 Internal Errors with debug stacktrace to the site developer

This feature just landed into Midgard SVN and will be available in the 8.09.3 release due out next week. To enable those mentioned features, tweak your MidCOM config in the following way:

$GLOBALS['midcom_config_local']['error_actions'] = array
(
    500 => array
    (
        'action' => 'email',
        'email' => 'webmaster@example.net',
    ),
    404 => array
    (
        'action' => 'log',
        'filename' => '/var/log/broken_links.log',
    ),
);

Technorati Tags: , ,

Midgard: now with spam filtering

Posted on 2008-12-26 15:58:10 UTC in 60° 11.250 N 24° 58.188 E Helsinki, FI to . 0 comments.

Frustrated with how some Midgard-powered community sites were being spammed (their fault, not using CAPTCHA or registrations, I know), I decided to add a little feature to MidCOM's forum and page commenting tools: automated spam filtering.

Mollom-moderated spam comment

To make this happen, I hooked Midgard with the Mollom anti-spam service. When enabled, all posts sent to Midgard either on-site or using the email import tools will be passed to Mollom for assessment. If Mollom finds them spam or ham, they will be moderated accordingly. This should save a lot of time policing the site.

Expect the feature to be available for all Midgard installs in the soon-to-be-released Midgard 8.09.3.

Technorati Tags: , , , , ,

Back