Blog Posts

Mahara ePortfolio what for?

For various reasons, people don't really know what an ePortfolio is and/or what the Mahara ePortfolio system could be used for. I will try and explain:

Mahara is...

... a web based tool to track, nurture and document your learning path.
... a container to store your artefacts (textfiles, audio files, movies, pictures) in one place.
... designed in a user centered way, giving you (and only you) full control over your content, with easy tools to share only what you want to share.
... ecouraging self reflection, self learning and learning in peer groups.
... designed to practice and encourage peer review with a system-wide feedback functionality.
... designed as a kind of reversed "walled garden", giving you easy control over the "gardens" you work in.
... made for social networking without distraction in a controlled environment.

Mahara use cases

The most obvious use case is in education. Mahara is made to accompany you throughout an educational career, from primary school, higher education to further education and vocational training. Mahara is made for life long learning.

Since you have your CV, diplomas, awards, journals, feedback and discussions all inside Mahara, a job application is easily assembled, choosing from the elements in your Mahara that fit the job you're applying for. This leads to the use case of Mahara as a software for job agencies , - to manage and "sell" their clients. 

Easy to create forums, groups, institutions, feedback forms (wherever you want them) and the option to have several blog instances per user, let you create a social networking site out of the box.

Drag & drop embedding and arranging of movies, photos and audio files make it fun to create, work with and share your content. In the primary school use case, Mahara can be used to train media skills, by having a class work with Mahara on small research projects like gathering, reporting and sharing nature observations or a day at the zoo, museum etc.

Speaking of nature, Mahara can be a platform for breeders and growers (...), to document, discuss and show off their "items", be that cattle or flowers.

Mahara is an ideal place to document and report on work placements (which is often a requirement in higher education), voluntary work and political or environmental activism. Any example where you want to have discussion as well as documenting activities illustrates this use case really. You can write a journal, embed video, photo galleries, run discussion forums, share with and invite people to join - all inside Mahara.

I'd be happy to read about further examples of how to use Mahara, please leave a comment.

Find more information on the Mahara website mahara.org. A good place to start is manual.mahara.org

Related Entries:
- Liip Mahara Hackday success
- Liip now a Mahara Partner!

Comments [0]

Modular Asset minification

One of the most effective ways to boost the application's frontend rendering is to minify the assets (CSS and JS) into single files and set a long cache-time so that they are not requested each time the page loads.

So, most of the times, the page loads one big CSS and one big JS containing the style and the js needed by all the pages.

The problem

I noticed how many times the loaded asset is not efficiently used since most of it affects elements not present in the current page.

To get an idea just install Page Speed and check the "Remove unused CSS" in the report.

The "wasted" CSS is often around 50%.

Modular assets minification

I started wondering if  a different, modular, approach would fit better in some circumstances.

By "modular" meaning that each page only loads its own minified assets which are loaded at every request.

The playground

I have quickly set up a simple "test suite" to see if the modular approach pays.

To measurements have been done using the above mentioned Page Speed and Firebug on Firefox 7 on a quite fast Linux powered machine.

Also note that results depend on many factors so they always differ and are not meant to have any scientific value.

Anyway this is what I got:

All CSS minified

  • Wasted CSS: 50%
  • Load time with empty cache: 289ms
  • Load time with warm cache : 133ms

Page specific CSS minified

  • Wasted CSS: 26,3%
  • Load time with empty cache: 267ms
  • Load time with warm cache : not applicable since the css will always be requested

Conclusions

Even the test has some limitations it clearly displays that to balance the additional time needed by the browser to render the big CSS file, the waste percentage has to be very high.

I have a bad feeling knowing that a great part of the CSS is not used, being thus inefficient but the "cold numbers" say I don't have to worry about this.

What do you think?


Comments [11]

Next innovation after work event hosted at Liip Fribourg the 27th of October

This Thursday we host the 2nd edition of innovation after work. The purpose of the format is to get new perspectives on any sort of topic. This time we are focusing on time and information management. Would be great to see you in Fribourg!


Comments [0]

SCRUM Meets HERMES

On Thursday the 19th of May I attended the "Hermes Forum 2011" in Berne and I got some interesting insights in how you can combine a rather linear project management approach with an agile methodology like SCRUM. And even more interesting: It has been done successfully.The following ideas are based on two talks. Thanks to Oliver Gut from Erni and Dr. Christoph Streit (bit.admin.ch) for the interesting input.

HERMES an ancient greek god and the way Swiss government is managing their projects

Swiss Government has chosen a somehow divine approach to manage their projects. To make it short: a quote from the official website of the Swiss government: "HERMES is an open method for the uniform and structured management of projects in Information and Communication Technologies (ICT). The method is mandatory within the federal Administration for all ICT projects. HERMES is also used by other public administrations, universities and businesses."[source...]

What you need to know about Hermes for now

I will skip a deep introduction into HERMES in this blog post. For the interested among you: There is a quiet handy summary of the method available for free download [here...]. The following dense and short introduction is based on the same paper.

Embedded and Enriched Process

HERMES can be considered as a method for process support. Projects are divided into phases (grey), embedded into support, controlling and management environments (pink) and the processes itself are enriched with supporting sub-models (green) (eg. risk management, quality assurance, and so on….). As last element procedure models (blue) give the structure for specific activities and methods within a sub-type of a project type: E.g. the development (project type) of a commercial application (subtype 1) or an application for office automation (subtype 2) may vary.

All roles, activities, decision points of the three elements (Process structure, sub models and procedure models) will form the final WBS (Work-Breakdown Structure) that is individualized for each project.

And where to put SCRUM?

An introduction to SCRUM can be found here. To be shorter this time: SCRUM fits in the Implementation Process of HERMES.

Cosequences of the integration

The activities from the procedure models and sub-models must be taken into account. Possible solution: include them into the product backlog. The Sprints must be respected as a time-frame within the implementation phase of the HERMES project. Within this time-frame SCRUM makes the rules. The SCRUM artifacts can enrich the reporting for the HERMES project controlling.

Conclusion

SCRUM and HERMES have a common goal: Transparent and well structured projects in order to present a good result within the deadlines without wasting resources. As SCRUM is a de facto standard for managing modern IT projects and more and more developers get used to work with this agile method it fits well in the HERMES Framework. And there are benefits for both methods: SCRUM can be embedded into an enterprise quality and risk management process. HERMES can use the agility of SCRUM in order to get even better project results.

Read whole post

Comments [6]

A workaround for the missing git submodule support in Bamboo 3.1

Atlassian's Bamboo (which we use for Continuous Integration here at Liip) has built-in git support since 3.0, but unfortunately, even in version 3.1, that doesn't support git submodule. It's now scheduled for 3.2 (see this issue), but they already promised that for 3.1, so let's see if it actually happens (sometimes I have the impression Atlassian prefers to build shiny new features than to fix the existing ones which is a little bit frustrating)

The major problem with the missing submodule support is that you can't even clone a project, when it has submodules. It just fails with an error. So you can't just update the submodules with a script after the clone/update. Major headache. But I found a workaround. Not a nice one, but it works - as long as your submodules don't change too often.

Just call this script before you start the next build:

#!/bin/bash
BUILDDIR=${bamboo.build.working.directory}
REPOURL='git://gitrepo.example.com/path.git"
rm -rf $BUILDDIR
git clone $REPOURL $BUILDDIR
cd $BUILDDIR
git submodule init
git submodule update

From now on, Bamboo will check for updates and start the tests, as it normally would, until ...

The major problem is that you have to do that every time your submodules change. If they change, the checkout of Bamboo will fail and no tests will be run anymore. One could maybe automate that somehow (outside of Bamboo), but I leave that as an exercise for the reader :) Until such a solution exists, you have to start it manually. Every. Time. A. Submodule. Changes.

BTW, you have to figure out what ${bamboo.build.working.directory} is in your Bamboo installation, you can usually find it eg. at http://bamboo.liip.ch/build/viewBuildFiles.action?buildKey=SF-CORE-PHPUNIT (replace the build-key and domain name with your settings), if your logged in and an admin.

It's just a dirty, manual-involvement-needed workaround, so I sincerely hope Atlassian builds support for submodule soon into Bamboo. You can vote for the issue BAM-8106, maybe that helps to get it more attentions.

And yes, we know there are alternatives and we're continuously (pun intended) looking into them, as well

Related Entries:
- Liip @ linuxwochen.at
- webtuesday: Selenium
- Visual Code Coverage with SimpleTest

Comments [3]

PHP 5.3 for OS X 10.6 one-line installer

Apple computers and OS X are quite common here at Liip (and local.ch) as developer machines. But while OS X comes with a not-too-old PHP installation, it nevertheless doesn't have everything we need (for example the infamous intl extension) and it's not that easily extendable with self-compiled extensions.

The first reaction to that situation was usually to install one of the many available solutions to get everything we need. Like MAMP, XAMPP or install it with a package manager like homebrew or MacPorts or even compile it by yourself. That usually worked, but as a consequence we had a very heterogenous setup and for every new Liiper we needed to set that up and it usually took ages. And then came this fancy new extension and we had to invest quite some time to get it set up on the different installations.

Our friends at local.ch took this very dissatisfying situation in their own hands, forked the build-entropy-php script from Marc Liyanage's great entropy work, extended and adjusted it to their (and our) needs. They also built a nice packager and installer around and finished the "install this and you're set in 5 minutes" procedure.

People at Liip started using the package, we added more extensions we needed and one day we decided, that this is the only officially supported way to get PHP on your Apple computer. And it was a very good decision, people getting a new Mac now have a recent and full blown PHP installed in less than 5 minutes.

Enough, talking, want to try it out for yourself? Go to http://php-osx.liip.ch/ and follow the instructions. It's really copy&pasting one line into your shell.

The package only installs PHP into /usr/local/php5, it uses the "built-in" apache server and leaves the shipped PHP alone. It also doesn't include MySQL or PostgreSQL or any other server software, you still have to install those by yourself. But it comes with all the extensions needed to access those servers. See the phpinfo() output to see what all comes with it.

We also ship Liip-recommended php.ini settings (for developers, not for production) so that we can make sure, that everyone is using the same settings.

If you want to build your own distribution (because you want to host that internally or have different extensions), everything needed to do that is on github. build-entropy-php is the stuff needed to actually build PHP and all the needed extensions and libraries (if you just want your own custom-built php, that's all what you need). php-osx are the scripts needed to build the tar for the package, build the php-osx.liip.ch webpage and upload everything. And the packager is the script needed for downloading and installing the package (written mainly by local.ch and in python)

The php-osx.liip.ch website runs completely on S3. Since Amazon made it possible to host your static website on S3, we can provide such a service without having to run a machine somewhere. As a benefit of this, it will be highly reliable, I just hope the data transfer bill doesn't kill us :) If you want to provide your own package, you don't need S3, it should run on any server which can deliver static pages.

And as a last remark: We can't provide end-user support for this. If you don't know what a shell is and how to edit a configuration file, this is may be not for you (but you actually don't have to edit a configuration file in 99% of all cases). We have it running on dozens of machines and it runs fine for us. If it doesn't for you, it most certainly is an error on your side. Pull Requests are of course always welcome and you can nevertheless use the github issues page for filing bug reports.

Thanks to local.ch for all the work they did on all the infrastructure needed for this and for contributing this back to the community. It will certainly help a lot of PHP developers with OS X 10.6 to get a decent PHP up and running within minutes.

PS: One thing I forgot to add: You don't need Xcode installed. It's nowadays a hefty 4 GB download with using 10 GB diskspace (default installation) and also not free anymore, if you're not an ADC member.

PPS: It only works on a 64bit-capable system. This means not on very old hardware with Intel Core Duo and Intel Core Solo processors (see http://support.apple.com/kb/ht3696 for the overview). If anyone wants to make it work on those systems too, please tell me how (I tried, but didn't came up with anything running in a decent amount of time)

PPPS: We have setup a twitter account for the latest news and updates. Follow @php_osx.


Comments [52]

Mobile World Congress 2011

I spent Monday and Tuesday in Barcelona at the Mobile World Congress. It's Europe's must-attend annual gathering of the mobile industry. Spread over four days, usually over 50'000 people visit it.

On day one, i explored the massive exhibition area looking at some Impressive new mobile hardware:

  • Samsung Galaxy S II Phone: 4.3" Screen, Dual-Core Processor, 116g, 1650mAh Battery
  • Samsung Galaxy Tab: 10.1" Display, Dual Core Processor
  • LG Optimus Pad: 8.9" Tablet, OMAP4 Processor, 3D-Camera
  • Motorola Xoom Tablet: 10.1" Display, Dual Core Processor, 1GB RAM
  • Motorola Atrix Phone: 1930mAh Battery, 4" Display, Dual-Core Processor
  • HP Touchpad Tablet: 9.7" Screen, Dual-Core Processor
  • HP Veer Phone: 2.6" Screen, 800Mhz Processor, 103grams
  • HP Pre3 Phone: 3.6" Screen, 1.4 Ghz Processor

It's amazing if you compare a 5 year old PC with today's smartphones in terms of available computing power .. and you can carry that computing power around with you all day and hope that the battery will last.

On day two, i explored the software side more:

How can a phone possible replace a PC, a notebook or even a Settopbox for our TV? At the Motorola booth, i saw a possible answer:

The Atrix Phone can be docked to a docking station or even a notebook shell (just keyboard and screen). You then start a separate work environment on the Phone (called WebTop) that comes with a Browser, OpenOffice and other Applications. When the Phone is removed from the dock, the state of these applications is saved. When the phone is docked to a docking station connected to a TV, you can start the Entertainment Environment, which is basically a MediaCenter interface, but also running on your phone and controlled with a remote.

At HP's booth you could also see interesting ideas how to interconnect different devices (Phones, Tablets):

- "Touch-to-Share" let's you place your phone on your tablet and then the URL of the website that is currently open on your tablet is transferred instantly to the Phone. 

- After tablet and phone are paired and share the same account, you can read SMS received on the phone on the tablet or even make/receive phone calls on the tablet (routed through the phone)


Comments [0]

webOS Hackday review

February 10th was webOS Hackday at the Liip Zurich Office. Palm provided some brand new Pre 2 developer devices to try out and keep (!). I started with talking about cross-platform development options (PhoneGap, jQuery Mobile, Jo) and how they can be used on webOS. We next talked about and went through a short tutorial about the Palm specific Mojo Framework for development. More hands-on learning was made with going through some application examples (RSS Reader with YQL, HTML5 Canvas and Audio and using Webservices).

After a lunch filled with discussion, we started creating a new webOS application from scratch: Telefonbuch. We used the Jo Framework (joapp.com), that way the Application can easily be adapted to not only run in a mobile browser, but also packaged with PhoneGap to run on iOS, Android, Blackberry or Nokia. 

At the end of the day, we learned a lot and got to experience the webOS platform and it's ease of development.


Comments [0]

"Choice As" New Zealand band The Phoenix Foundation to play in Switzerland!

Hi Liipblog readers, Penny here, for a blog post that has almost nothing to do with Agile Web Development! I'm from a tiny country on the other side of the world called New Zealand (which isn't part of Australia by the way). And I love music. And New Zealand music is by and large, completely awesome.

But my all time favourite New Zealand band, is coming to Switzerland in February. And I am super excited about it, because I promised to help them promote it here. Their name is The Phoenix Foundation, and they are playing two different shows here:

  • 17/02/11: Le Bleu Lezard, Lausanne (tickets)
  • 18/02/11: Komplex, Zurich (tickets)

The shows are only 15 and 22 CHF, respectively. I will be there at both shows, along with a few Liipers who are already convinced that The Phoenix Foundation are the best thing since sliced bread. Come along and join in!

Need more convincing? Here's the song that made me fall in love with the band:

There's a whole bunch more of their videos on Youtube. My favourites are Damn the River, Going Fishing, 40 Years, All in an Afternoon.. and many more ;)

I hope to see you there!


Comments [0]

webOS Hackday at Liip

 I'm organizing a webOS Development Hackday at Liip. Join me on February 10th at the Liip Zurich Office.

Agenda

Cross-Platform development

PhoneGap on webOS
JS Frameworks: Jo and jQuery Mobile on webOS

webOS-specific development

Mojo Framework + Prototype
Quick Look at the new Enyo Framework

Analyze App Examples

Tuts+ (tutsplus.com RSS News Reader)
SBB Fahrplan
Moo (Animal Images and Sounds)

Create a new App from scratch

a phonebook search app
work on your own idea

Please contact me at markus.leutwyler@liip.ch if you plan to attend or have any questions.

Related Entries:
- Applying Niwea: TV Sélection iPad app
- YUI Training
- Backbone.js, a micro MVC for javascript
- Kinect Hackday
- CSS for mobiles

Comments [0]

Next1-10/201