mail usprint this pagerss feed

www.liip.ch

Liip is hiring!

Making of resolutionfinder.org UN database

September last year I met up with an old room mate. She told me about a student project called Making Commitments Matter (MCM). They had created a database for UN resolutions. Even though the team was quite large, spanning all across Europe, they didn't have anyone in the group who had a sufficient level of IT know how to bring it all online. Once again it shows that Universities usually are unable to bring together different departments. So I had no choice but to help them out!

Step one defining a database schema for the excel files they currently used to store the information. Contrary to the document systems of the various UN organizations which scatter the various PDF's across different sites, the aim of resolutionfinder.org (previously called UN-informed.org) is to bring all information to one database. Furthermore resolutionfinder.org would also show the entire history of documents and each of the clauses there in. This again is a huge leap forward, since right now its essentially impossible to determine if a given document or clause is actually the most current version and how things changed over time. Especially this history was a big challenge in the definition of the schema.

Aside from this the two years that MCM spend interviewing key stakeholders like NGO's, government officials and researchers have lead to a fairly complex set of additional attributes that also need to be stored for each document and clause. The fact that each clause is stored separately is also a key improvement since many documents contain decisions on many different topics. With this database it will be possible to search for just the clauses for a given area as both documents and individual clauses are tagged.

Using the admin generator of the symfony PHP framework I started building up an interface to the database in order to be able to get feedback from the MCM team. By way of a call for help on my blog Dennis Riedel, living in Barcelona, joined the effort and began working on an import tool to move the data from the excel files into the database schema. At a project meeting in Helsinki in early December 2009, we used this prototype to define the final specifications for the database.

The goal was to have a working frontend ready for the conference MCM was organizing on the topic of "UN information management" end of May 2010. No small undertaking for a small team of two guys in their spare time, neither of whom being real experts in frontend development. So I turned to Liip for help. At Liip we have budgets to support technically or socially relevant efforts. The process is basically pitching the idea to the entire team to get development resources. In the end resolutionfinder.org was allocated 12 man days development as well as 1 man day for server administration and a server to run the application on!

Christoph and Jordi both stepped up on short notice to help me build up a frontend that actually exceeded by far the hopes of the MCM team. The site leverages Apache Solr for the search with features boolean operators and facette filtering. We display the documents, clauses as well as their relation and history. Its also possible to register to store bookmarks to documents and clauses as well as comment them. Most amazingly we still have a few days of development left that we will use to further optimize the UX on the search interface. I should also thank Stefan Sicher who delivered a very sleek and clean design just days before the conference.

Obviously there is still lots left to do. As mentioned before we want to further improve the UX on the search. We are also considering adding alternative search approaches, for example some people might want to search chronologically, others organization etc. We also want to add data mining capabilities so that we can automatically import voting records and maybe eventually even entire documents. Supporting more languages both for the interface and the content also is high on our list. We might also provide the content via an RDF database to enable others to come up with queries of their own. The team is obviously full of ideas and is actively looking for companies or developers willing to donate resources. The source code of the entire application is of course open source: patches welcome!

Here is an example search for "security council" documents, for regional education topics outside of africa. Here is an example document and example clause with a history on the topic of malaria. Additional information on the technology can be found in the case studies publised as Lucid Imagination and symfony. I also published a series of posts on my personal blog. Overall it was a very fun and rewarding experience and obviously I will continue to work on the project in my spare time. For Liip I can already see how several of the lessons learned during the project have paid off on client projects as well. So overall I guess its a win for all!

Related Entries:
Zurich Symfony Live Hub
Symfony Live Wrap-up
phpDay Italy
Fine-grained SVN commit emails made easy
Welcome PHP 5.3!
Comments (0) |  Permalink

Liip Mahara Hackday success

Liip encourage their employees to suggest and participate in "Hackdays", which are full days of hacking on some bite sized application or a proof of concept, or something we want to add to our favourite Open Source project, or just experimenting with a new technology.

One of my favourite Open Source pet projects is Mahara, which I was one of the founding developers of while I was still in New Zealand. Mahara is an e-Portfolio application, which gives learners the ability to collect, organise and share their learning portfolio. In many ways, it is a sister project to Moodle, which is one of our core Open Source projects we work with for our clients. Mahara is starting to gain more traction in Switzerland, which I am watching with interest, because it's so successful already in other countries, and version 1.3 is going to be released in around a month or so, so I thought it would be good timing to have a Mahara Hackday at Liip, to get some of our developers here interested in it, as well as seeing if we could get something cool done to go into the 1.3 release.

So a few weeks ago, on a Friday, Adi, Pierre and myself sat upstairs at a desk away from the rest of the company, listened to music and hacked all day. Here's a picture I took of them figuring out how something works:

Happily, the feature we wrote has been merged into master already, and will be in the 1.3 release!

We had a couple of options for things to work on, but we ended up going with creating Views for Group homepages. In Mahara terminology, a "View" is a presentation of some content in some meaningful way, using different blocks that can be dragged onto the page. They're really a bit like mini webpages. We started off just using Views for portfolio presentations, but have expanded out over the years to using Views for other things too - the first one was done a few years ago, on an Easter Hackfest with Nigel McNie and myself, creating Views for users to use as their profile page, so that they can customise what is displayed using the same drag and drop editor that they always used to create their portfolio Views. Mahara 1.3 also has a dashboard View for users.

Groups have had portfolio Views for quite some time, but the group homepage was a bit boring, with just the description of the group and which members were in it, along with the latest forum posts, and some other information. This page was not previously customisable at all, and that actually prevented me from doing what I really wanted to do for the hackday, which was to write a Poll plugin. Having a poll plugin would be really cool on group pages, as well as user profile pages actually, but since the group homepage wasn't yet customisable, we thought that would be a better thing to work on for the hackday.

First we needed to figure out exactly what was on the group homepage, and find a way to reproduce all of that information in a View, using the Block plugins we had, and identify some more Block plugins that would need to be written. We then had to write a migration so that all existing Groups will have this View created for them during their 1.3 upgrade, and also make sure that new Groups got one auto created.

We kept track of a list of tasks on the Liip "Foss wiki" and managed to get through them all during the day, before going out for a victory beer. We published our code in our public Mahara repository on git.liip.ch, and I had a talk to some of the other core developers in NZ on our Mahara IRC channel (#mahara on freenode), and Richard Mansfield quickly did a review, made a few small changes and merged it into master.

I am personally really happy with what we achieved during the hackday, and how fast the other core developers reviewed it and merged it. Thanks, everyone! :)

Related Entries:
The Tagi iPad App done in NIWEA aka html5/CSS
Liip now a Mahara Partner!
TestFest@Webtuesday Hackfest
Comments (1) |  Permalink

What's NIWEA?

This is an idea I had mind in since last year, and finally was convinced to put online these days. Hoping you'll like it, Hannes

If anything about current web development can be called «glamorous»[1], it’s creating applications for en vogue platforms such as the iPad or the latest line of Android phones. After all, they're not only super sexy, but the rate of progress we see is staggering as well - a pretty tempting combination.

At the same time, web technology is constantly taking up more and more speed, progressing on many levels at an exceptional pace. Standards such as HTML5 and CSS3 as well as their support in transformative tools such as Webkit have been helping web user experience improve dramatically and at a much greater rate than the progress we have seen on any "desktop" environment - which almost stagnated for a decade.[2] And let's not forget: seeing the speed of JavaScript engines improving by orders of magnitudes clearly means: something important is happening here.

This blog entry is trying to deal with the great deal of stuff that's happening when these two ongoing developments -amazing devices and accelerating web tech- come together. That «stuff» we see out there has such as breadth, depth and scale that we shall be trying to get from stuff to patterns, and then give them names. Names that help us actually have clearer conversations about those things as they develop, like folks did with «AJAX», «RIA» or «Web 2.0». The name we're suggesting is NIWEA - Native Interoperable Web Apps. Let's see what this means:

Native

«Native», the N in NIWEA, is a word that has been bended and stretched for years. We'll use it in just two simple ways:

  • «Made for this thing» - native apps just do feel right - on your desktop, your mobile, your tablet, your TV.
  • «No crutches» - web native apps use use the tech and specs of the web - bred through open standards, no plugins, no add-ons.

 «Native» also means access to the capabilities of the underlying platform: sensors, geolocation, graphics, storage, background computations, audio, video - you name it.

In the example sections there's an whole array of examples illustrating this point, runtime environments such as PhoneGap, systems like Jolicloud, native user experience enablers like jQTouch, Google's Store for Installable Web Apps are certainly amongst those that must be mentioned.

Interoperable

«Interoperable» can mean a lot as well, but it's a strong notion, and one that keeps getting more and more important. The «I» in NIWEA means two things:

  • «Works with my sites» - NIWEA can be standalone, but mostly they'll be talking, synchronously or asynchronously, to web APIs. APIs based on web standards that have interoperability built in, enabling mashups
  • «Works with my gadgets» - another kind of interop, the "write once, run anywhere" idea. Indeed, web technology is the only platform I see that has the potential to overcome the terrible fragmentation we see in mobile platforms these days. Being the only platform without an owner certainly helps.

Interoperability between devices and consistent communications between applications - browser engines, REST & Co. can do it.

Web

NIWEAs are built using web technology, and nothing else - but «web» doesn't mean exclusively «browser» any more. And «web» doesn't mean «online only» any more either. In fact we're going more and more towards what you might want to call an «ubiquitous web», with the browser engine becoming the universal runtime.

Apps

The are many ways NIWEA bring application functionality to you, be it packaged Web OS, Chrome Store or HTML-based Adobe AIR apps, desktop «gadgets» or dashboard «widgets» - it's all native-feeling, interoperable web tech.

Why care?

So why is this relevant at all? Aren't those iPhone and iPad apps out there just so superior that there's no need to even bother about that old-school web stuff? Well, I think this is about the long term, about what we can do to foster "sustainable" development practices that are truly open and e.g sufficiently safe against lock-in. In the short term, proprietary platforms might be lucrative and spectacular, but the benefits of having web tech "everywhere" might very well be far greater: the web is where the developers are, and enabling them to do NIWEAs could very well be pretty disruptive in many areas. And: we should never ever underestimate the web.

And now?

Having a word for all that stuff happening these days could help a lot, I think. So please do let me know: what do you think about it? Do you like it? Is it stupid enough? Or way too stupid?

Would you tag your bookmarks with "NIWEA"? Could we have a "NIWEA Conference"? Would you sign an "I support NIWEA" list? Have any links that just have to be on the list below?

Already thinking about funny logos? :)

Examples & Links

Footnotes

[1] For a note on glamor also see the original Ajax article
[2] See also Google I/O 2009 keynote for web vs. desktop UX - (not overly scientific) slide, video

Related Entries:
The Tagi iPad App done in NIWEA aka html5/CSS
Open Sourcing Radios - A PhoneGap iPhone/iPad app
Radios for iPhone/iPad with background audio on iOS 4 released
The technical details behind the Radios App
Comments (5) |  Permalink

Moodlemoot Review

On the 25th and 25th March, Adrian Schlegel and Penny Leach attended the German Moodlemoot in Berlin.

Penny's Experience

This was my 7th or 8th Moodlemoot, so for me the most important part was seeing other Moodlers again and catching up with what they're doing. I didn't go to many of the talks, since it stretches my German somewhat, but I very much enjoyed Ralf Hilgenstock's keynote address, including some interesting photos of Moodlers and a preview of Moodle 2.0.

Officially, during the conference, I co-led a talk and workshop with about Mahara which went very well - at the end of our workshop we had attendees doing a demonstration of the presentations they created about what they had learned during the course of the Moodlemoot, which was great to see, from people who had never used Mahara before.

 I also did a handover of MNet to David Mudrak. I was working on MNet during my secondment to Moodle HQ in January and February, but I can't really maintain it as actively as I need when back in my normal life, and David volunteered while we were at the Moodle developer conference last December in the Czech Republic.

Finally, of course we upheld the fine Moodlemoot tradition of Mojito drinking. This has been a tradition as long as I remember, and apparently I am partially to blame for inroducing Martin Dougiamas, Moodle's founder, to Mojitos many years ago.

Thanks very much Liip for giving me the time to go to this conference, and of course the organisers for a stellar job.

Adi's Experience

The MoodleMoot in Berlin was my first MoodleMoot so it was quite a different experience for me.
I really liked Ralf Hilgenstock's (eledia.de) Keynote on Moodle 2.0. It provided a nice overview over the upcoming features of Moodle 2.0.
The interesting thing about MoodleMoots is that most of the participants are teachers/people from educational institutions.
Although you will meet the occasional core developer it's mostly an end user conference. This means you meet a lot of people that are confronted with Moodle in their day-to-day life. What struck me most was the amount of enthusiasm these people are showing for Moodle. I had a lot of conversations with other attendees and I was suprised to see how much effort they put into advocating Moodle. Apparently in Germany it's quite hard to introduce new tools into the class rooms due to a lot of bureaucracy. Still those people fight for Moodle until it gets accepted by superiors and pupils.

A lot of the talks at the MoodleMoot were from teachers sharing their experiences in adapting Moodle to their specific needs. Even though most of them do not really have any programming experience they manage to adapt Moodle to their needs.

It was also interesting to meet some of the core developers (David Mudrak and Petr Škoda) and being introduced to the MoodleMoot Mojito tradition.

From a developer point of view I can highly recommend taking part in a MoodleMoot because you get to see how people use Moodle in real life to get the most out of it.

Related Entries:
Liip Techday 2010 and the slides, starting with Moodle 2.0
Recent activities of Liipers in the Moodle Community
Comments (0) |  Permalink

Come see us at OpenExpo

OpenExpo, *the* Open Source conference and tradeshow in Switzerland, is opening at BEAexpo Bern next week, once again. We are looking forward to having interesting discussions and meetups with the community, users, clients, policy makers and developers alike. Along with lobbyist Matthias Stürmer, e-education hacker Penny Leach will have a slot in the conference schedule. Take the chance to talk to them afterwards at our boot, as well as checking out those loads of interesting topics such as the Learning Content Management System docendo, the E-Government plattform PloneGov or several speakers from government and parlia institutions like Christian Wasserfallen and Edith Graf-Litscher or Priscilla Dipner-Gerber from the canton Basel-Stadt.

Free tickets can be downloaded.

Related Entries:
Vote for PROGR - Bern's free art space
Comments (0) |  Permalink

Introduction to node.js at Webtuesday

At this weeks WebTuesday in the AdNovum offices in Zurich I presented node.js, the much talked about framework for writing event driven servers in JavaScript. It's an interesting approach to develop asynchronous applications with completely non-blocking input/output without the headaches this usually involves. From our perspective it's especially an interesting tool to develop the server side of Comet-like applications in a language that most developers are already familiar with.

You can find the slides containing an introduction to event loops in general and a few code examples on slides.liip.ch.

Related Entries:
Webtuesday: PHP vs. Javascript: which sucks more?
Techday Slides: PhoneGap
Next Webtuesday: Sebastian Bergmann about PHP 5.3
Busy February Evenings at the Liip Zurich Office
TestFest@Webtuesday Hackfest
Comments (6) |  Permalink

Recent activities of Liipers in the Moodle Community

In December last year, two Liip employees Brian King & I (Penny Leach) went to the Czech Republic for a week, for the first ever concentrated Moodle Developer Conference. There were 16 attendees from around the world, participating in an intense week of discussion about the upcoming Moodle 2.0 release, with a lot of decisions being made and work being planned. The session notes are now online.

After that, I had a 6 week secondment to Moodle HQ, working on improving the Moodle Networking feature for Moodle 2.0. This was my second secondment to Moodle HQ, the first was in 2008, to work on the Portfolio API. Moodle HQ is based in Perth Australia, but there are employees working all around the world in different timezones, so communication largely happens on our jabber development chat, and bug tracker, with the occasional skype video chat.

The first step was to evaluate the current state of MNet, which was added to Moodle 1.8, but needed a lot of work to bring it up to Moodle 2.0 compliance. I created a metabug with a number of subtasks representing the different areas that need work, and then linked all the existing MNet bugs to those. Then I created a whole lot more bugs for a lot of refactoring that needed to happen. Then I rolled up my sleeves and started work. I closed many bugs, some of which affected the stable 1.9 version of Moodle as well, and will be in the next stable point release.

Unfortunately there was more needing to be done than I had time to do, but MNet is now in a much better state to be able to be maintained by more people. I will be doing a handover meeting with David Mudrák soon, and also of course continue to help with bug triage and fixing during the Moodle 2.0 beta period.

Technically, I was tracking Moodle cvs with git, making branches for each bug I was working on, committing to git and then eventually rebasing and using git-cvsexportcommit to land the work into the relevant Moodle branch. This is a workflow that David has recently described in more detail, and works very well for me, a long time thoroughly convinced git user.

Working with Moodle HQ directly is always a great experience, although doing it in a European timezone, as I did in 2008, works better than doing it from New Zealand, which is where I was this time. Even so, I had as always great support from the other core team, testing and doing code review. I hope MNet users will be happy with the improvements in Moodle 2.0.

Related Entries:
Liip Techday 2010 and the slides, starting with Moodle 2.0
Moodlemoot Review
Comments (0) |  Permalink

Next Webmardi in Fribourg

The next Webmardi will be held on Tuesday, March 9, at the Liip Fribourg office.

We will have the chance to discover the promising New Zealand made Silverstripe CMS, presented by Manfred Pürro. Please feel free to join us, everyone is welcome!

Comments (0) |  Permalink

Symfony Live Wrap-up

Last week Lukas, Pierre and myself attended the Symfony Live 2010 conference since we have a growing interest in it lately, including a pilot project at Liip that uses symfony 1.4.

Overall the conference was quite a success I would say, they had a few organizational issues but considering it was the first international event of that scale they hosted it was really good. Most talks revolved around symfony and also doctrine since it's a major part of the symfony ecosystem, but a few sessions were held on more general topics, such as PHP performance, deploying apps to the cloud or Zend Framework. Lukas and I spoke about Liip's framework Okapi since it's second iteration, that is still in the works, is using a few symfony components. As we mentioned there we decided to use them to alleviate some of the maintenance work and benefit from the dependency injection feature, which offers amazing opportunities for customization and testing. Our slides can be found on slideshare and the Okapi2 source on our svn repository.

The highlight of the conference was obviously the announcement and release of the Symfony 2 codebase. Symfony 2, just like Okapi 2, is based on the Symfony dependency injection container component, which means it will have the same flexibility. Given the community it has, it is definitely an interesting development for us and we will follow its development closely. If it happens to fit our requirements as well as Okapi does for fully custom high performance websites we might adopt it but it is too early to say since it won't be stable until the end of the year.

Related Entries:
Making of resolutionfinder.org UN database
Zurich Symfony Live Hub
phpDay Italy
Fine-grained SVN commit emails made easy
Welcome PHP 5.3!
Comments (6) |  Permalink

Das Konzept der digitalen Nachhaltigkeit - ein Konzept mit Zukunft

The actual edition from Netzwoche does include an article written by our Matthias Stürmer: "Das Konzept der digitalen Nachhaltigkeit - ein Konzept mit Zukunft".

Comments (0) |  Permalink
Next1-10/45