Mobilblogg for the iPhone.

For a long time I haven't been able to develop anything constructive. It's been a severe code block that has been lasting for years. That's why it so fun to now announce some of my recent projects!

I decided to really learn Objective-C back in November. At work a customer requested a iPhone application and I was the only one that knew anything about Objective-C, so I was asked to join in a customer meeting telling them that I really knew Objective-C and iPhone development. So instead of lying my ass off I sat down and tried to get some coding done.

Eventually the customer didn't want to pay for the application so the project was never started, but I really learned Objective-C. And it resulted in my first iPhone application! It's a dedicated client to the MobilBlogg community. Together with Henrik Öhman of MobilBlogg (who did the API) an application to browse, upload and comment on photos was created. The application is submitted to Apple, who knows when it's going to be accepted :-)

The application is Open Sourced under the GPL license and you can check out the sources here.

The application could never had been made without other brilliant open source code: Three20 and JSon Framework. If you want example of using these frameworks, checkout my code.

To view screenshots and photos uploaded with the application head over to my mobilblogg!


Good discussions about copyright control

Over at The Digitalist blog there is a very good discussion about eBook DRM. Cory is excellent as usual but the highlight must be Clay Shirky's quote:

You say “I’m a strong believer in the rights of creative artists to control the distribution of their copyrighted content.” Sure, why not? And while we’re at it, we can be strong believers in breathing under water, or living to 130. Those ideas are similar to the idea of controlling distribution, in that there are a whole bunch of people who think they would be really really great. They’re all similar in another way too. Can you guess what it is?


EuroPython 2009 - What happened?

Last week I attended EuroPython 2009 in Birmingham, both as a speaker and as an attendee. This post won't reflect on my talks (one was not good, one was actually very good, I might do more posting about that later) but rather something interesting that I observed during the conference this year.

EuroPython have always been a very nerdy conference, no surprise there, so it struck me as very odd that several talks and seminars this year didn't include that much technology at all! They talked about politics and freedom.

First out was Cory Doctorows keynote "The Copyright Wars" which I unfortunately missed, but Reinout van Rees have a excellent summary here. Hopefully the audio recording of that keynote will posted soon. It does bring up a very important point about the future of open source software in a world controlled by paranoid content makers.

During the lightning talks (which was hugely entertaining at whole) two talks had the topic of politics.

First out was Holger Krekel who talked about the internet and how the information about us could be used for mass surveillance and the need to do something about it. He touched on the very recent problems we have seen in Iran, how the state has been filtering the access to the internet. Holger went on and suggested that there are two ways to attack the problem.

The first involves political activism ("We know it works, because we stopped the software patents"), he mentioned the Pirate Party (which makes me very happy) and that he considered joining it (Holger: You are very very welcome!). We need to start talking to the politicians and convince them that internet needs to be free!

The second option for people that have a more technical approach to things (almost everyone at the conference!) is the need for new technologies that can't be filtered as easy as a centralized system for passing messages. Holger encouraged people to develop other ways to distribute information and getting around filtering equipment. My colleague and me was very inspired by this and started to scribble some notes on how a system like that would look like. I might blog about this later.

All in all I really liked Holgers lightning talk, it was very inspirational and well delivered, thank you.

The second lightning speaker that had politics as a topic was Jacob Hallen. Jacob strikes me as a very soft spoken and timid man (I actually talked to him right before his speech), which is why his talk really surprised me. He delivered a very passionate (improvised?) speech about how big content are using methods that are really scary and he drew a direct parallel to "men in high boots, abducting people in the middle of the night". Thanks Jacob, it was inspiring!

For me it was very inspiring to hear this types of talks and speeches in a area so technology heavy (nerdy?), because this means that we are many that cares. Now we need to transform that care into action!


Not really a secret

I have already voted for Piratpartiet in the Swedish EU elections. For people who know me that can hardly come as a surprise. I just wanted to briefly talk about why I went with PP instead of MP (that I usually vote for), when they actually have the same opinions about integrity and the future of Internet. I think it can be summed up in: I wanted to make a statement. There you have it. I want people in "power" to understand that it's not OK to ignore these questions (internet, freedom, integrity), it's not OK to push through new laws (FRA, IPRED) without consequences.

I might be naive, thinking that voting for PP is a "consequence" for the sitting parties. At least it seems like most politicians seems to understand that they have to tackle this question these days, that's a start.

Let's keep internet FREE, as in speech.


Apple: Be more transparent!

Apple is a very secrative organization, they value their secrecy because it builds up a hype around the products. I love Apple products, I am what most people call a Apple fan-boy. But I think recent events regarding the App Store aproval process must be addressed in a negative fashion.

I love the fact that Apple have created great development tools for the iPhone and they have done so for free. This have given the iPhone eco-system a great boost and in less than a year they have succeeded in creating a development community that it’s competitors haven’t succeeded with yet.

I really believe that the App Store is a big reason for the success, all applications gathered and easy to browse / search. But the App Store is also the big sign of weakness in the iPhone eco-system. As you might already know, Apple is the gatekeeper for everything going into the App Store to make sure that “malicious” and “offensive” applications stay far away from the iPhone. While this makes sense (you don’t want viruses spreading via the App Store) in some ways the big problem is actually that Apple have so far refused to share any details on the approval process.

This creates big problems, not only because it’s hard for developers to know if their application will ultimately be accepted or not, but also because currently it seems like the process is very random, some of them have gotten a lot of attention. The latest application that have gotten the metaphorical cold hand was Nine Inch Nail own application. The application was actually first accepted (and put on the “featured” page in App Store), when NIN then submitted a minor update it was rejected because of “objectionable content”.

Probably this occurred because different people reviewed the first submission and the update. This really makes the flaw in the process really apparent, the developer can never trust the Apple approval process. If this continues I wouldn’t be surprised if small indie developers think twice before they start develop iPhone applications and that would really be a shame, because it will in the long run kill the community.

I think that Apple have to be more transparent, really post the guidelines that are used for the approval process or even better, small developers should be able to “test drive” their idea and get a pre-aproval. That would make it easier for the small developer to justify the investment they need to do to create a iPhone application.

Maybe another solution would be to “do a Maemo”. Maemo have a staging area called the “garage” where third party developers can upload basically anything they want, users needs to manually install them. This would allow Apple to review applications for the App Store, but applications that are deemed “offensive” can still be installed on willing users iPhones.

Please Apple, don’t destroy a good thing you have going on here, a free SDK was a great idea, the App Store was a super idea as well but your approval process can throw it all overboard. Be transparent, let the developers in on the secrets in this case.


Open Source is about Participation

As I have talked about earlier I am holding an education for company management about Open Source Communities. Since I can't release the slides directly I am going to blog a bit about what these slides contain.

One of the things I am trying to get across the table is that getting involved in a Open Source Community as a company is hard work and often counter-intuitive to old business practices. To illustrate this I have created some case studies about companies that have tried to involve them-self in the community and the different outcomes of that. In my examples I use Nokia, Apple, Google and Sun as examples (and some more of them), all these companies are interacting with the Open Source community in different ways. All of these companies have both succeeded and failed with their interactions (I won't comment on the individual cases in this blog post, but I am still interested in your feedback, what do you think about the companies listed above and do you have other examples of companies failing or succeeding with Open Source?).

While I was researching these different companies (most of my research was based on google searches like "opensource at X") I ran across Sun's Open Source webpage, this page states that 'Open Source is about Participation'. I think that is one of the most accurate one-liners about Open Source I have ever heard. In order to be able to accepted and successful with a Open Source Community you must show that you can participate, create code and work together with the community with it rules.

I think very few Open Source Communities would accept companies that tries to 'buy' their way into gaining influence over a certain project. But companies that can send relevant, well written patches that implements a feature or fixes a bug in a project they are using can succeed. Many nerds just care about code and that is the way it should be.

Interacting with a Open Source Community is not like interacting with business partner, few communities will implement features that they don't like just because your company needs it. Many community volunteers have a lot of pride invested in their projects and will place code-style and technical aspects before the needs of their end-users. This is very different from how a company works, because companies needs to see to the user needs before the technical aspects of the actual code (this might actually explain why most proprietary code is such a mess - "We need this now, or else!").

This means that companies have to care about things like this when they are contributing to Open Source projects, otherwise they might never get their patches merged.

So to sum up, if you want to gain the trust of a Open Source Community, participate and show them the code!


Open Source Community Eduaction

Purple Scout was contracted to do a Open Source Education a while back. The customer wanted a education that gave them the history, business and legal aspects, but they also wanted a section with some "real life" stories, from someone that have worked in a Open Source community already. While both my bosses handled the business and legal aspects I tackled the community section.

After almost a month of preparation, we held the pilot in front of a smaller group today. I was a bit nervous at the start but managed to hold a very engaging talk about the different inner workings of a community and a generalization of what drives open source hackers. It was a fun and interactive group that I managed to provoke a couple of times :-)

I would love to share the slides I did, but unfortunately they contain some information that I can't spread, therefore I will try to blog a bit about the conclusions that I managed to draw from all of this.

Also a question: What do you people think is the driving factor for participating in open source communities as a company, i.e. not for you personally, but what would drive your company to work with open source?


Sony Reader PRS-700

I got myself a Sony Reader PRS-700 the other day. Imported from the USA of course, since we can't get fancy things like that here in Europe. Actually I am evaluating this unit for some friends and co-workers so they know what Reader to buy later.

So far I must say that I am impressed. I have been using it on my weekly trips back and forth to Malmö and more or less left all my books at home. The built-in light is pretty slick, I can actually read books in bed without disturbing my lovely fiance.

A word about the display, a lot of people hate it because it "glares", my guess is that these are the same people that "can't" use a glossy macbook either. I on the other hand have never had any problems with it. So I will continue to read my books digital going forward, no more big books that weigh a ton in my backpack.


Google Summer of Code 2009

XMMS2 got the good news again! It feels awesome, not only because we get to participate in this fantastic program once again, but also the prospect of going to a mentor summit later this year is awesome :-) Thanks Leslie, you know we love you! ;)

But, I heard someone whispering that our proposed projects was less interesting this year! Let's do something about that! Do you have a good idea? File it at our wiki, TODAY! :-)


Official XMMS2 client should be written in Qt!

I read the that theefer did the other day and I just wanted to voice out my opinion about the Official client. I don't doubt that all people in the XMMS2 community probably already know my position about this, but I wanted to make it perfectly clear!

I think the official XMMS2 client should be written in the Qt toolkit and these are my reasons for it:
  1. Qt works natively on all the platforms that XMMS2 runs on. More important, it actually looks good on all the platforms that XMMS2 runs on. It even looks good under GNOME these days.
  2. The Qt API is very clean and easy to use.
  3. You can write Qt applications in C++, Python or Ruby (see my language discussion further down).
  4. Qt bundles with QtScript, which is a ECMA compliant language, which means that we can extend the official client in QtScript. This means a very low entry-level for people that want to add functionality to our client. QtScript is (IMHO) not fast enough to be the sole language we should use, but that might change soon.
  5. Upcoming features like QtKientic will bring awesomeness to our client.

I also think that the base client should be written in C++, but supported by QtScript. First we had the idea that we should write the whole client in QtScript, just have a small C++ loader. I have researched this possibility but I don't think QtScript is ready for that. QtScript is slow, and you need the qtscriptbindings to bind the full Qt API to QtScript, that takes 2 hours to compile on my master macbook pro.

Writing the application in Python or Ruby would probably be more rapid than writing it in C++, but it will be a bigger pain to deploy. Qt/C++ is easiest to deploy because all the tools are already there and users don't have to install yet-another-lib. My second choice would be Python, mostly because I know Python, I don't know Ruby :)

How about xmmsclient bindings?
The last thing I would like to touch is about xmmsclient bindings. Right now I have Qt4 bindings that are native, that means that it doesn't use libxmmsclient beneath, they are not merged into the mainline, but could be found here. I think these bindings could be a good candidate to use in the client, but we would need to make it complete and merge it into XMMS2 first.

See this post as a material for discussion, I would love to hear your opinion. Let the flames rain!


Health related

So this post is totally non-technical.

The last month I have been on a new diet. The reason for this is that I realized that I was simply getting way over-weight and unhealthy, so I decided to try something that worked good for my mother. I haven't blogged about this before because it's not something fun to talk about. But now, after four weeks on the diet and increased physical activities I have lost 14 kilos (about 30 pounds) and I am starting to feel light, full of energy and a lot more healthy.

I have also decided to participate in midnattsloppet this year. It's a 10 km run throughout Göteborg in the end of August. Want to join? :)

GSoC 2009 and other tidbits.

I am on vacation this week, we where supposed to be in Sälen the whole week for some skiing, but due to some mandatory classes that Lisa had to attend, that didn't happen. We will leave for Sälen today instead and get 3 days in the slopes, that will be perfectly fine as well, I am actually looking forward to it a lot.

Also two days of vacation at home haven't been unwelcome at all. I have had time to reinstall my Eee 901, this time with easy peasy. I like it a lot, it really makes the most of the small screen and I didn't have to worry about drivers and X11 configuration etc, etc.

I have also submitted XMMS2 GSoC 2009 application. With some great help of theefer and wanders we finialized all the texts and got it sent away. I have a good feeling about this year, I am more motivated to be the admin and we have learned a lot. I just hope that Google gives us the chance this year as well.

On a XMMS2 releated note DrM has finaly entered testing period. This is waay overdue and we hope that we can wrap it up before the start of the GSoC, so that students can work against that version and not some unreleased one.


Dollhouse - redux

Episode 2 was a lot better! Actually, I suspect that this was the episode that they where aiming for showing as the Pilot from the beginning. It explains a lot of the backstory and is less "ordinary" than the first episode. I just miss the trademarked whedon humor, please give!


XMMS2 vision

Following up on my post from FOSDEM I have now started the process together with the XMMS2 community to define our Vision. We are working on getting a version of this vision that everyone feels ok with. You can see our work (and chip in if you want) at the following wiki page.


First episode of the much talked about Dollhouse was aired the other day. I got my hand on a digital copy and I watched it with a lot of anticipation. Aaaand it didn't let me down completely, but it didn't wow me either.. I like the concept, it's pure close-future sci/fi with the whole download/upload of memory concept well in place, Elizas performance was solid, but still something was missing. I am not giving up on this yet, I have faith in you Joss Weadon! But I hope we will see more weadon-esque humor and cleaver twists in the coming episodes.


First vision, then hack.

I am currently sitting in one of the Hacker Rooms at FOSDEM in Brussels. I have spent my last two days together with a great group of XMMS2 developers, just as last year. I really enjoy these events where you have the possibility to actually meet the people you spend a lot of your spare time with.

The discussions this year was very different than last years topics. This year people was more concerned about how to organize the distributed team and work on the "right stuff". I find it pretty funny since this is just the things I have started to do at Purple Scout recently.

I have decided to give it a go for the XMMS2 community as well. I am sure that I can leverage on some of the things I have learned recently, but I also know that it will be very different since the developers of the XMMS2 community are not working on XMMS2, just doing it for the kicks (and possibly the chicks, but I think that is just a big misunderstanding).

One of the talks that inspired the discussion was Bdale Garbee's keynote about the Debian community. He said that you shouldn't underestimate the values of values. Basically you'll need to share common values and goals within a community in order to get everyone aligned. Debian has a Social Contract that outlines the vision for the Debian project.

My plan is to establish a similar document for the XMMS2 project. It will be a document that is created by the community for the community and will hopefully allow us to align better towards the ultimate world domination goal.

After this document is done I will move on and establishing our "Code of Conduct" or "Development Guidelines", this document will outline how we work together as a group and what processes we follow.

So the current plan for world domination is:

  1. Establish the XMMS2 vision document
  2. Establish the XMMS2 code of conduct document
  3. Get everyone super-hyped about XMMS2 development
  4. Hack!
  5. ????
  6. World Domination! (Or at least 'Ready to amaRock').


GTD with Things

Wow, it really took a long time to write this entry. I have now been working at Purple Scout for around two weeks and it has been really good. I have a fantastic team to work with and I have already done some good work (in my own humble opinion). I have also had the chance to really start using GTD in my daily life (it's hard to organize your life when you only play video games, which was what I did during my vacation). So far I am very pleased with it, but the test of time will really show if it reduces my stress and improves my efficiency.

I am using Things from Cultured Code as my organizer software. It's a very clean software that implements the basic lists from GTD (Inbox, Next, Someday, Scheduled, etc). It also have a very flexible tags system that I use for a number of things and most important it has iPhone synchronization.

I use the iPhone application as my on-the-go collector. Most things I have to do pops up in my head when I am taking a walk or sitting in a meeting, in true GTD style my brain is stupid as well, so I just flick up my iPhone and scribble a few words in there. I concentrate to get a reminder mostly in the iPhone because it doesn't take that long to do that way and then expand on it when I sync it to my desktop client.

Collection with the desktop client is also very good, when I identify a task I just press my globally recognized shortcut (meta+ctrl+space) and it brings up a dialog where I can enter my task.

Things has the concept of Areas of Responsibility and Projects. I use the Areas as "larger projects" that can have several sub-projects. For example is 'Home' one of my areas, in there I can have projects like 'Redecorate the room' which in turn can contain specific tasks. Another area is "Work" but I also have a area for one of the bigger customers we are working with, since we are running ~8 projects together with this customer. Important to note is that tasks that are organized into a project can not be scheduled, they can only be 'next' or 'someday' as far as I understand it, but tasks that belong to the area directly can be scheduled. I am not really sure why this is, or if it's a bug.

When I get to my organization phase I first scan items that should be put into projects and put them there and then areas. I don't have item outside any area. Tasks that goes into projects get the tags of the project so usually I don't have to apply any extra tags to these tasks, but since areas doesn't have tags I have to apply them to these posts. The most common tags for me is "work" and "home" because when I head over to the "do stuff" phase I can filter my things based on tags, which removes a lot of distraction "now I am at work and can only see things I should do at work" works great for me.

Things isn't without flaw, the things that annoys me most are:
  • Pressing the icon in the dock doesn't bring up the minimized Things window.
  • Synchronization with iPhone only works over wifi and you have to be on the same network. Also if your firewall/router/switch for some reason filters bonjour (mDNS) it will not work (I had to fight the system administrator at work for this).
I hope these issues will be addressed in future updates of things.

That's it for today, next entry will probably be about SCRUM, since we just implemented this at work.


Introducing GTD - Inbox Zero

As you might or might know I resigned from my position at Procera Networks in the end of 2008. My new position will be at a company called Purple Scout, where I will lead a small team of developers and develop processes and infrastructure for in-house development work. Between my two positions I have managed to scrape together almost a month of spare time. While most of this time has been spent with family for holiday celebrations I have also spent quite some time researching GTD (Getting Things Done). I have decided to decided to try to implement this full out at my new position.

I will spend some posts in the blog about my way to implement this methodology. I will not try to explain all the finer details about GTD, this is explained in numerous sites around the internet. I will just described my attempts on implementing it. So far I haven't really implemented it fully, but this is the steps I have done so far.

I read the book and I don't think there is a short cut around that, just read it. Also listen to the 43 folders podcast with David Allen interviews. They give you a lot of practical tips.

I have been using Things for a long time, both for my Mac and for my iPhone, but I have never really got around to learn how to use it correctly, the pieces was falling in to place when I started to read the Getting things done book, more about that one later.

First thing I really implemented was the Inbox Zero mail handling. I have two mail accounts, one for my work and one personal GMail account.

I read my work email with Mail.app and I started off by changing the settings for getting emails in Mail.app, instead of polling email every 5th minute it's now polling every hour. I also turned of "Badge" notification (i.e. showing in the icon how many new emails you have) and disabled Growl Mail. I think these things are essential, because the whole point with GTD is that you should have specific slots for collecting and processing data, if you get interrupted when you actually do work this could really hurt the process. Secondly I downloaded and configured MailActOn to handle three different keyboard shortcuts: Ctrl-A will move the email to the Mail Archive folder, Ctrl-T will move the email to the To Do mail folder and Ctrl-R will move the email to the Read folder.

This makes it very easy to sort the email when they arrive. If it's a item that I can't do anything about and I don't want to save it: I delete it, if it's a email I can't do anything about but I want to save it for future reference I press Ctrl-A and get it out of my INBOX. If the email contains something I want to read, but is not a direct action I press Ctrl-R and revisit it later when I have some spare time. Now if there is a action in the email, something I need to reply to or do in any other way, then I press Ctrl-T. The emails that ends up in the To Do folder are collected and categorized in the "process" phase. When collected and categorized I will archive it. This is not optimal, my goal would be to get the To Do emails filed in my Things INBOX so that I have just one way to collect actions.

GMail is actually pretty well prepared for GTD. It has the concept of "archive" that just get's things out of my INBOX and into a search able index. It also have the possibility to put a Star on emails with keyboard shortcuts. I use it the following way: press 'e' and archive emails that I can't do anything about, star the email and archive it if it's something I want to read or to do anything about, then collect and categorize the starred messages later in my collection phase.

Instead of writing a monster post for everything I have done so far I will stop here and write another post later in the week about how I use Things and my data collection. I also have a lot of ideas on how to work with GTD in my future team, more about that will also come later.