Pages

Friday, 10 January 2014

A journey of a year (more or less)

What have we done...

I had some time to sit down and think recently and give some perspective to the year that passed by.

(The post is obviously looking to my life at Jolla even though that has been big part of my life it is not the only thing that happened during this year but don't worry I won't talk about that :D)

January, Jolla had 50-something employees, we were looking for a System on Chip (SoC) to build a phone, we had some hunches, but it had been very difficult to involve major players that far. We had already an OS based on X11, Qt4.8 and a lot of legacy MeeGo code. Still lots do be done but at least something more than slides.

February, we went to Barcelona for MWC2013 and it was a blast, even though we were in the middle of nowhere in the last pavilion people and journalists came looking for us and we were able to tell our story. We finalized the decision of going with STE a SoC and we were more than ready to build a phone.

March, just a month after having found an SoC and lots of work under the hood had gone STE told us that they were not able to support us anymore. So in a couple of weeks we had to make some very big decisions...

April... so we started a project to evaluate the feasibility of making a product based on Carsten Munk's libhybris, Qt5 and Wayland. Wayland had reached 1.1 by that time and (as far as I know) we were the first ones making a mobile product with it. Same goes with Qt5. At the same time we were in search for a new SoC, a new ODM and a new product. No pressure...

End of April-May, the project was a success, we decided to go for it and the whole company started to move all the internal projects from X11+Qt4.8 to libhybris+Wayland+Qt5. It was less than painless and it took us about a couple of months to go back to the state were we where in March with the other SoC. A new product program was made on April 23rd and we set the target date for sales on w47.2013. We started a pre-sales campaign based on the SoC we managed to secure. We had the first Jolla Love Day in Helsinki where we presented our device.

From jollausers.com


June-July, the whole company was running full speed on the new project, every day there was a new something running and working. Performances were not yet great but given the time we had it was fantastic what Sailors managed to achieve.

August, lots of perplexity on the schedule, we seemed to be late, not enough was working fast enough and we had to take a lot of things off the plan to maintain schedule and quality. We were only 12 weeks from sales and things had just started working on the new HW.

September was dedicated to fixing bugs bugs and more bugs.

October was the month of the change. We had a bugfixing week in Helsinki with people from all over the world (from Australia to Europe to US) and only in that week we managed to fix more than 700 bugs. Sailors worked an average of 14 hours a day and quadruplicated the velocity. We started to go downhill, all the pieces of the puzzle started to fit together. It was almost magic.

After that we had 3 weeks to sales and we were tired, happy and confident that we would have made it.

November was the month of Slush and the announcement that we would have shipped on Nov 27th.

From Slush.org (Copyright 2013: Jussi Hellsten)
And then there was Nov 27th in Kamppi, Helsinki. That was week 48: just 1 week of delay on our original plan back in April. Lots of love from all over the world, lots of party (part of the things I promised not to talk about :) )

Just recently, in December we were hit by some nasty data corruption in our shipping system that created some tension inside the company and especially some unhappiness among our eager customers. Mr. Logistic managed to fix the problems and put the train back on tracks just for Christmas tree to be full of Jollas. And we maintained the promise of shipping our product in 2013.

Then we opened our online web store and started serving the whole EU (support us and buy a Jolla today!)


Just 2 weeks ago we opened our co-creation platform  and to date there are more than 2000 posts by more than 1600 users.



Ah and we released 2 updates and 1 hotfix in 1 month, more than most of the devices out there will ever get in their lifetime.

During this journey we managed to get to about 100 awesome Sailors aboard and still counting.

The road was extremely tough and still we managed to deliver a product to the market in time. We focused on quality and stability rather than on number of features and we committed to our customers to listen to them and support the phone so it will remain valuable, relevant and well performing. We did this in about 100 guys and girls: we built an OS, an app store, a product, logistic and sales channels, online collaboration tool, SDK and developer intake.

We changed the SW and the HW architecture in May 2013 and we still made it (I still haven't probably realized the magic in this...).

This goes to our Sailors: UBERAWESOME!

The road ahead

Sure we have done a lot in very short time. But what is coming next?

This is just the beginning. We committed to release updates often: we did. And we will keep doing.

More features will come. We will react to the feedback we get on the various channel, we will build this OS with our users, we will keep talking, responding and fighting.

We will be in Barcelona again for MWC (want to meet us? Contact our press dept. ;) ) and besides eating tapas and drinking good wine and beer we will demo some of the cool new things we have been working on.

We will provide (the hacker) community with tools to hack on top of Jolla and Sailfish.

We have another 12 months ahead before getting again to the "look back and see what you did" moment.

Let's walk this road together.

Sunday, 6 October 2013

Jolla: community and innovation

I write this open letter to the communities out there inspired by Misha and Lucien telling a bit of "behind the scenes" in Jolla.

About openness and communities.

I have been involved in Meego (named OSSO and Maemo before that) since 2005 when I moved to Finland and started working in Nokia. Few months after I started working in Nokia the 770 Internet Tablet was released and since then I have seen several other Linux based products being developed and released to the public (and some not released to the public). I loved the atmosphere and the learning I was able to do at Nokia. Most importantly I learned a bit more about open-source and community as a (mostly passive) member of maemo.org.

Openness is a very cool thing and Nokia was not bad at all in that respect. And I learned a lot about being open, open-source and related.

As Lucien points out very well Jolla is a company that has to do business and make money, like any other company in the world. Being open is not about telling all what we think and do exactly when we think and do that. Everything and right away. It would just be insane from any kind of perspective. It could disrupt all the innovation we are having, other companies might copy us, investors might not invest in the company anymore, customers and partners might feel betrayed and so on.

One clarification that I also have to make is that Jolla is not "using" open-source, Jolla is using AND contributing back. 75-80% of the code we use is upstream in Mer and Nemo and we make no forks (if and when we do it is a rare and extreme case).

Openness in Jolla is open communication between the inside and the outside of the company (what I am doing right now and what we try to do as much as we can), as being active part of a good open source project like Mer and Nemo.

If you think openness as "I need to know everything and right away" that is not being open to me. It is being stupid from business point of view. And even though you might see us as a set of crazy guys, no we are not stupid.

Yes we do listen and we do care about what you guys think and say and regardless what you think we change or try as much as we can to change plans based on the feedback you give us. And we respect you enough to answer you (on twitter or wherever else).

Being on internet is not our primary job, we all have at least a couple of other jobs inside the company. But we still do it for a very simple reason: we could not be here without you and your support.

That's why we care about communities that follow us. You are our customers, our research department and our feedback loop into real life.

In this business timing is essential. And also timing of revealing things is essential. Mer and Nemo as open source projects have these discussion in the open and Jolla sailors as part of these projects do participate in these discussions. And since 80% of what we do is Mer and Nemo, well we don't want to fork these projects and you can go there and see what we are doing there.

We are as transparent as we can be at any given time. And time is a precious variable here.

About what we are doing

We are not doing a "proof of concept" device. We are doing a real device that works. And we are doing that in 80 people.That means that yes we are a small company, I would say a tiny-miny company in this world, compare us to all the major phone manufacturers of the world. HTC has 16K employees. Nokia 97K. Sony 146K. LG 220K. Samsung 425K. We are 80 (no Ks here, just 80). And we are doing an OS and a phone (None of the company above is writing anymore their own OS, all of them use either Android or Windows.). EDIT: As pointed out in the comments Samsung is working on Tizen, just it hasn't released any phones based on it yet.

We are so tiny that our company is probably the size of the cleaning department in any of the companies mentioned above.

Still we are making a smartphone AND an OS that powers this smartphone.

This company named Jolla did not even exist on paper two years ago, yes we had ideas but we had no money, no employees and no name. No website, no mail addresses, no nothing. Still 2 years after a lot of people are talking about us and are waiting a phone made by these guys and girls in Jolla.

When this phone will be on the shelves, with its beautiful and priceless design, with it's crazy good UI, when you will boot it up and you will read Jolla on the screen and then the phone will connect to the network and you will be able to make your first phone call with it, that call, that boot logo, that will have the sweat and the blood of 80 guys (and some subcontractors) that have devoted the last two years of their lives for you to make that phone call (thank you Sailors!). They will have slept half of the time they should, spent half of the time they should have spent with their families and done way less exercise than they should have done, for you. And of course they will have done it for themselves. Because they believe in Jolla and they believe in Sailfish and in what it can be.

That is our love and our passion. You just can't touch it yet but we do love you guys. And when you will touch the device for the first time everything will be clear to your eyes. I won't have to say anything anymore. I will not have to explain. This device is a pure, pristine, crystal monument to the love we feel for you and for this software and hardware. And you will not care about the megapixels and the ppis, the megahertz and the megabytes.

Specwars and innovation

Have you realized that before three years ago nobody was talking about specs? Yes there was a bit about megapixels on cameras but I just can't remember all this fuss about specs.

The 1st gen iPhone did not have 3G (they made the 3G version for that). The iPhone 3GS (it was mid 2009) had an average camera, decent RAM, and average processor by that time. There were at least other 20 phones that had equal or better specs. Nobody talked about its specs though.



But Apple managed to do something that others did not manage to do. Have a beautiful UX on a beautiful design.

Pumping up the specs is easy, working on a beautiful user experience is the hard part. Putting that beautiful experience in a great industrial design so that SW and HW become a unique PRODUCT is not something that a lot of companies can do. And that's what we are focusing on at Jolla. Because we believe that is what matters and that is our differentiation. We don't have to differentiate with the specs. We can (and are) innovating on the UX by building a product that stands out already on the shelf.

Was talking to a friend the other day and he said he walked into Dixon's and imagined the Jolla placed there on the shelf. He said: "there would be nothing else to look at".

I haven't seen too much innovation recently, instead I heard a lot about who has it bigger and faster. It starts to get so flat and boring...

Thank you communities

Finally I want to thank you.

Thanks, keep being critic, keep us in line, push Jolla to do the best it can, don't buy the device if you don't want but keep talking with and about us. We are all human beings, we can make great things but we can make them only together. We can fail miserably as well, but only if we don't listen to the signals that the world is sending us.

We are Jolla. Together. Let's walk this road as good friends.

Saturday, 20 April 2013

Finland: the garden of technology

(I am still surprised someone still reads this blog as my last update was almost a year ago... but it seems that some crazy guy still visits this... Thanks!)

Anyway back on the topic I had in mind, random thoughts about stuff and technology. If you don't know I am working as CTO of Jolla, a finnish based mobile phone company, and I had a lot of different discussions lately with startups here in Finland.

Just yesterday I realized what luck we have to be living and working here.

In a land were most of the people are shy and prefer to talk to you via IRC (I am one of those BTW even though I am not shy) and darkness and ice are there for several months a year you might think that living here is just boring and totally not fun (well sometimes is not fun when it's -20C outside...). But if you happen to be in the technology field, jeez, this is Colorado in the age of gold mining.

The talent is tremendous and when you hear a pitch it might sound and look flat, but that's just due to the Finnish accent of the guys that are presenting. If you look at the contents you understand the amount of top notch talents that are available in Finland.

Why now?

So where the heck was all this talent all these years?

I believe most of them were working in Nokia and now with the fallout happened after year 2011 all these ideas were liberated, all these top notch talents had to actually find a job and Nokia helped them not to find a job but to create new ones (kudos to Nokia for that!).

So 2013 is the year when Finland has become the Silicon Valley of Europe, the Ice Valley of technology.

Why does it work?

The scholastic system of Finland. It's not about the PISA rankings guys, it's about the fact that everybody is the same and receives the same education. There are geniuses but all the rest is good as well. So if there is a lack of geniuses well the system still works.

Collaboration. Finland gets it right, is not by going solo that you will become the best, you have to collaborate and share the ideas, only in a place where ideas can grow and flourish the collective intelligence will lead to common success. If you have a beautiful flower and this flower lives in the desert with no possibility to get water... the flower will die.

Ideas in Finland are watered every second, people talk, share ideas, collaborate (by the way Linux was born in Finland in a cottage) and the whole nation grows.

What does not work?

Money. We have been running around and talked to so many people to get some money to start Jolla (eventually we managed) and in Finland unfortunately there is not yet enough access to money for startups. Entrepreneurship is getting better but everyone's willingness to take risks is still quite low and definitely lower than Silicon Valley. It's getting better but still it can improve.

Any big guy there listening? Finland is the place for innovation in 2013 (and gaming industry is supercool here with SuperCell and Rovio among others) put some more water (money) into the system and this place will become the best garden for technology in the world. Please ;)

Tuesday, 7 August 2012

Tips for writing a readable CV and cover letter

Note: those are my personal opinions and by no mean I pretend those to constitute a universal truth.

I had the chance to read several curricula over the last few years and to be honest a very tiny percentage of that was something that I found enjoyable.

The thing is when you are reviewing CVs for a position you are facing a hard situation: there are something like 100-150 persons that want your attention and you already know that 70% of that will not be a good candidate (of course the odds might be better or worse depending on many factors, but as a rule of thumb that's what I found out).

So you allocate some time (usually a full day at least) to read those 150 CVs (you already know you will never make it), make a day 8 hours, that makes 3 minutes per each CV with no pauses and no interruptions. Of course the reality is that it takes 3 minutes maybe to read it, then another 5 to 7 at least to understand it, evaluate it, take some notes and decide what to do with it.

But anyway let's assume that a normal reviewer really has 3 minutes to dedicate to your CV (and cover letter).

What do you think it's the reaction when the guy sees 5 pages of CV? Three possible reactions: procrastination (you will go to the end of the queue), drop (you will never get read), evaluation (the guy is in a really good mood).

So first tip: make it 2 (two) pages. No reviewer has time to read your 5 pages CV.

Actually the first thing that a reviewer will read is your cover letter. That's even more important than the CV.

A good cover letter is something that tells the 3 essential thing about you to the guy who's about to read your CV. Is kind of a preparation to your CV. Think you are going on the stage in front of 1000 people. What do you want these 1000 people remember about you?

You think that "Hi, please find attached who I am" would work? Or "I am very interested in any position you might have to offer" works better?

Yeah I think you understood. You have to go there on the stage and be a freaking rock star (everybody knows there is only a limited amount of rock stars in the world).

Engage the reader, tell him really who you are and what great things you have done. Don't lie. Don't try to "I am sure you will agree with me when I say..." or quote Steve Jobs or give great names to tiny things. Be yourself, the real yourself. Tell them your story. That's what the guy wants to know: "Who the heck is this guy?"

So a cover letter should shortly say (e.g.):

"Hi there,

I found this rocket scientist position interesting because I love rockets. Rockets are all I ever wanted to do and there is nothing that will ever stop me from doing them.

I was graduated by the Rocket Science academy in Williwonkaland and since then I worked for 14 yrs in a garage building my own rocket. It flies, it went to the moon but never came back. But I did it all by myself.

You might think I am crazy but I am just a rocket scientist that wants to work with you."

Lately (and for the first time in my experience) I read a very nice cover letter. I don't remember the CV but I remember the guy because of the cover letter. This is what you want to happen.

Of course the cover letter has to be short and concise and exactly to the point. Use a big font and colors if you want as long as you say the right things in the right tone.

Of course if you are a musician and you applied to a rocket scientist position don't hold your hopes.

So second tip: Write a gorgeous cover letter. Short and to the point where you say why you like to work in this position and for this company.

Ok back to the CV.

What does the CV have to have?

Your name and contact details and where you are located (city, nobody cares about your address).

Who you are (even if you put it already in the cover letter). This has to be a one liner, something that should help the reviewer understand if she has to continue reading or stop there.

Example: "Rocket scientist with 14 yrs experience of building rockets in own garage"

Then write there where you got this experience. What you have done more than 10 years ago (unless is still your current job) does not matter. You have forgotten it, our brain does not have that much memory.

So third and last tip: write there your latest ( < 10 yrs) experiences

Per each position write your title, for what company (if you can disclose it), what was your assignment and 1 (one) important (really important) thing that you have done. Eventually links to proof of your work or portfolio. Order the positions you held in reverse order (from latest to oldest).

Example:

2005 - 2010 Cleaning manager at YMCA
 -  In charge of cleaning windows and floors. Once people were brushing looking their image on the floor so much it was clean. [Photos of the floor at Flickr]
2000 - 2005 Cleaning manager at ACME
 - In charge of cleaning all the windows. Once cleaned 73 windows in one day.

Then your education (only the most important/s, nobody cares about your primary school).

Then if you really want (but not many read them) your interests.

That's it.

This is of course if you want to have a "standard" CV. If you want to do something else (a PPT, a flash animation, a movie, comics, ...) then you are already different and you will already catch the attention of the reviewer. So ignore the tips in that case.

Tuesday, 29 May 2012

How to add a new schema to openLDAP 2.4+

I tried to stay away from the new config type in LDAP introduced in v.2.3 as much as I could but today I had to face it.

I understand the reasons behind but I have to say that the docs are pretty scarce and any newbie has a pretty steep learning curve ahead especially if used to the old way of configuring LDAP.

The configuration now is in ldif format and it follows a pretty logical scheme which is clearly shown in this picture
What you find inside these trees (which are also directories inside /etc/ldap/slapd.d dir) is all your LDAP server knows about, all the rest in the /etc/ldap is not really that interesting.

Anyway you are to read something else, I know. I could not honestly find a straight answer to the question which gives the title to this post, even though there are a lot of places that contain bits of info but as usual the amount of work needed to get everything in place is still some. That's why I am writing this post.

[UPDATE: just found this which is pretty close to what I needed.]

I will start with a practical real-life example: Adding the sshPublicKey schema kindly provided here to your LDAP server. [I am basing my example on a Debian Squeeze installation]

Now you will find in /etc/ldap/schema/ a lot of .schema files. And there is where you will start to get confused... so forget the schema files.

Copy paste the openssh-lpk_openldap.schema in /etc/ldap/schema/ directory (just to keep them happy together):
#
# LDAP Public Key Patch schema for use with openssh-ldappubkey
# Author: Eric AUGE <eau@phear.org>
# 
# Based on the proposal of : Mark Ruijter
#


# octetString SYNTAX
attributetype ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey' 
 DESC 'MANDATORY: OpenSSH Public key' 
 EQUALITY octetStringMatch
 SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )

# printableString SYNTAX yes|no
objectclass ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
 DESC 'MANDATORY: OpenSSH LPK objectclass'
 MAY ( sshPublicKey $ uid ) 
 )

Create a tmp directory, e.g. /tmp/ldapstuff and create a dummy file there called for instance slapd.conf which simply has this line
include /etc/ldap/schema/openssh-lpk_openldap.schema
Run
cd /tmp/ldapstuff && slaptest -f slapd.conf -F .
This will create in place a dir called cn=config and a file cn=config.ldif.

Run
cd cn=config/cn=schema && vim cn={0}openssh-lpk_openldap.ldif 
 The only interesting things that need to stay in that file are the  following:
dn:
cn:
objectClass:
olcAttributeTypes:
olcObjectClasses: 
So remove everything else and edit dn and cn. This is a schema so it will need to be inside the cn=schema,cn=config LDAP tree, so the result should be
dn: cn=openssh-lpk_openldap,cn=schema,cn=config
cn: openssh-lpk_openldap
Now you are ready to add this to your LDAP server:
ldapadd -Dcn=admin,cn=config -W -f /tmp/ldapstuff/cn=config/cn=schema/cn={0}openssh-lpk_openldap.ldif
That's it, you can verify that it's really there by
ldapsearch -xLLL -D cn=admin,cn=config -W -b cn=config cn=*ssh*
This should give you some result. This is pretty much applicable to any other schema.

Monday, 24 October 2011

Regaining access to an AWS (Amazon) Linux machine

Say you secured so much your AWS server you can only login with SSH keys there. And you have only one SSH key that can access that server. And you lost your SSH key or forgot the passphrase for it.

Are you damned to lose all that work you have poured into that machine? Probably not, if you have the luxury of some downtime.

AWS does not have any (easy) way to just change the SSH key that can access to a system.

So after 30 minutes of attempts this is how I managed to get access back to my machine.
  1. Create another machine (a copy or just a new one it doesn't matter) and start it up. Pay attention to authorize a new SSH key that works to access this machine.
  2. Shut down the original machine
  3. Detach the (root) disk volume
  4. Attach that volume to the running instance
  5. mount the root partition (running dmesg or fdisk -l will tell you what to mount)
  6. go to <mtpoint>/root/.ssh/
  7. vi authorized_keys and add there the public key of your new key
  8. shutdown this new machine
  9. detach the volume
  10. reattach it to the old instance
  11. restart the instance and ssh into it with the new key

Be happy.


Ps. I found here another method involving snapshots but I just couldn't make it work. For some reason the cloned machine was always empty.

Saturday, 27 August 2011

Buying group - Goodstuff from Italy

To all my friends in Finland (if I didn't send you an email already): it's that time of the year.

If interested in good food from Italy go and fill the webform (now improved usability!)

http://bit.ly/omRLY2

I hope to have all the orders by mid September (in 3 weeks), place the order in 4 and get the stuff within the second week of October. If everything goes fine :)

Wednesday, 22 June 2011

N9 - Against all odds

Well it wasn't (and it's still not) easy to run the IT behind harmattan/N9. But we made it. And the feedback on the device is just bursting for us behind the scenes. The whole Nokia/MeeGo team has pulled off a beautiful device against all odds. It's true that difficulties makes you stronger.

I am proud of all my team and all my colleagues.

Thank you all for making it the most challenging and beautiful experience of my carreer.

Monday, 25 April 2011

Calling only once setUp in unittest in python

In python unittest the setUp function gets called every time you need to run a single TestCase (no matter if you run it using TestSuite or simply unittest.main()).

So if you have to test something that requires a complex setUp routine (like loading 50000 records from SQL or preparing an orangemochafrappuccino) but that can be reused all along your TestSuite you have the same problem I had.

Now all around the internet there are posts saying "You could do that" or "One way to do that" or "Once I did that like this..." or even worse "The standard way of doing it is...".

But none of these posts really gets to the bottom of it, they all give you a piece of information. I couldn't find one place that told you "copy/paste this code and be happy".

So, after figuring it out, I can now tell you "copy/paste this code and be happy".
import unittest
from my_program import MyClass

class MyClassTest(unittest.TestCase):
    # First define a class variable that determines 
    # if setUp was ever run
    ClassIsSetup = False

    def setUp(self):
        # If it was not setup yet, do it
        if not self.ClassIsSetup:
            print "Initializing testing environment"
            # run the real setup
            self.setupClass()
            # remember that it was setup already
            self.__class__.ClassIsSetup = True
                               
    def setupClass(self):
        # Do the real setup
        unittest.TestCase.setUp(self)
        # you want to have persistent things to test
        self.__class__.myclass = MyClass()
        # (you can call this later with self.myclass)

You can do the same for the unittest.tearDown since it is exactly the same code.

Mocking LDAP calls with minimock in python

When using unittest in python you often need to mock objects and calls to those objects.

You don't need _an_entire_ LDAP server just to test a search nor you need a full blown SMTP server to test a function that accidentally sends a mail (that you don't want to send while testing anyway).

So minimock is one easy way (the easiest I found) to do the job.

What the docs don't really tell you (nor does a google search) is how to return real things when you need to call a method of an object.

Say you have some code like this:
import ldap
class MyClass:
...
    def ldapsearch(self, uid):
        self.conn = ldap.open(self.conf.ldapserver)
        self.conn.bind_s(binddn, bindpw, ldap.AUTH_SIMPLE)
        self.conn.search_s(basedn, ldap.SCOPE_SUBTREE, 'uid=%s' % uid, ['uid'])
        return True

and you want to test this and moreover you want that search to return a given set of data.

from minimock import Mock
import ldap
from my_program import MyClass

class MyClassTest(unittest.TestCase):
...
    def test_ldapsearch(self):
        # create your fake ldap connection
        ldap.open = Mock('ldap.open')
        ldap.open.mock_returns = Mock('ldap_connection')
        # instantiate your class
        myclass = MyClass()
        # now tell to minimock that in case we do a search_s on 
        # a conn method this should be intercepted and mocked
        # returning a testuser1 value the way LDAP would do
        myclass.conn.search_s.mock_returns = [[1,{'uid':['testuser1'], \
                                        'mail':['test.user1@mail.com']}]]
        # This will return testuser1 no matter what
        # and show you on screen the operations performed
        self.assertEqual(myclass.ldapsearch('onetwoonetwo'), True)

This should help you inject whatever values you want there and also clarify a bit how to minimock wants you to think (that is the only way I could make it work).

Tuesday, 8 March 2011

DLink DVG-2001S advanced configuration

A loooong time ago I bought this SIP router, the DLink DVG-2001S. After years of using it and being bothered by the infamous call waiting alert I got fed up and tried to get rid of it.

Obviously no freaking way you can do that through the web interface... luckily that didn't stop me from doing telnet to the device and hacking a bit into it.
telnet < ip_device_of_your_device > 23
sip show
This should show more or less what is your configured line. Usually this will be #1.
Line 1 configuration
  phone_number = xxx
  display_name = xxx
  user_agent_port = 5060
  auth_username = xxx
  auth_password = xxx
  sig_tos = 0
  rtp_tos = 0
  oob_dtmf = 1
  allow_callwaiting = 1
  ec = 1
  vad = 0
  display_cid[0]=1
Now that allow_callwaiting = 1 is the problem.
sip set 1 allow_callwaiting 0
Will fix the thing. If you really want to be sure you can also do
sip set cw_at 0
 (This *should* disable the alert tone)

Wednesday, 9 February 2011

Downgrade from squeeze to lenny..

If you were distracted in the last 3 days and forgot that Debian 'stable' became 'squeeze' last Sunday, or just inadvertently issude 'apt-get upgrade' on your lenny machine, wondering why you had more than 200 packages to update, but still pressing Yes Yes Yes... well you have done the thing I did at least  on one of my servers...

But no problem, downgrading is easy in apt.

Just put:

Package: *
Pin: release a=oldstable
Pin-Priority: 1001
in /etc/apt/preferences and do again
apt-get update && apt-get upgrade
I was so lucky to have to force jsut one package
dpkg -i --force-overwrite /var/cache/apt/archives/sysvinit_2.86.ds1-61_i386.deb
 And reinstall one of them because apticron was failing the downgrade

apt-get install mktemp --reinstall && apt-get install apticron
Cheers

Tuesday, 25 January 2011

TomTom Go 750 and adding a simple microSD to it

So I was all happy about my new TomTom that I decided to upgrade the maps to the latest version (for free since it was the first time).

That turned out in an unbelievably long and painful operation.

First attempt. Connect the device to the computer and just push the upgrade button.

"You don't have enough space on the device. Choose what area you want to upgrade"

No, thanks I want the whole Europe Maps.

Go to the shop. Buy a 4G microSD.

Second attempt. Insert the microSD into the device. Connect the device, select the microSD "as the device" and push the upgrade button.

"You don't have enough space on the device. Choose what area you want to upgrade"

For God sake I have 4G free... couldn't you just select that automagically? No, uh?

Ok... let me see how those maps are stored there... ah just a simple directory...

Third attempt.

  • Take out the microSD and use the card reader to connect it to the computer
  • Connect the device.
  • Take a backup of the device.
  • Open the file browser.
  • Move the 'Europe_2G' maps to the microSD
  • Slap the microSD into the navigator
  • Turn on the device
  • Select Europe maps
  • Reconnect the device to the computer
  • Push the button 'upgrade'

HOORAY! The downloads start... 28 minutes...

"ERROR! You don't have enough space on your computer for temporary files"

WHAT!? I had 2.3G free... Ok let me remove something. Now with 7G free I can go.

  • Push the upgrade button again.

"ERROR! Map decoding error... blablabla"

Jesus!

Find the downloaded maps. Remove them.

  • Push the upgrade button again.

And finally after another 45 minutes... I had the maps upgraded.

So if you plan to do the same make sure you have at least 5G free because it looks like TomTom takes a backup before doing the upgrade...

Painful though I would work on improving this... Attila... Michal... you listening? ;)

Tuesday, 6 April 2010

Pasta alla bolognese (finnish recipe a la Stezz)

[This post is sponsored by Misha]

This is the way it's called all over the world even though we call it in Italy "Pasta al ragù" (the ragù is "alla bolognese").

It's mainly made of tomato and minced meat BUT not only of that (and this is basically the difference between the one you find in "JukkaPekka's restaurant" and a proper italian one).

INGREDIENTS for 4 persons
  • 1/2 onion
  • 1 carrot
  • a bit of persil
  • 1 glass of red wine
  • salt
  • extravirgin olive oil
  • 1.6Kg of sleeved tomatoes
  • 0.4 Kg of minced meat (naudanjauheliha)


PREPARATION
Slice carrot, onion and celery in thin slices. Put 1 dl of oil into a casserole just to cover the bottom and put the carrot onion persil and celery in. Start frying at low temperature until the onion gets yellowish.

Then throw the minced meat in and cook until it gets brown. At that point put the red wine and let evaporate.

Now it's time to raise the temperature and to put the tomatoes that you previously slightly pressed.

Add 1-2 dl more of oil if needed and cook for 30/40 minutes (this would pretty much depend on the temperature you are cooking at) stirring regularly. You will understand that it's done when the sauce reduced its quantity to half of the original one. At that point the meat will be 50% of the tomatoes (you started at 25%).

Add salt as you like.

Cook the pasta now and take it out one minute before you usually would and finish cooking it in the sauce.

Add parmigiano in big quantity.

Enjoy.

Spaghetti Bolognese - Michaelangelo, Aspendale...Image by avlxyz via Flickr

To give you an idea this is the desired result. You can see how all the pasta is red and cooked together with the sauce.








Spaghetti Bolognese with Ground BuffaloImage by 1JLS via Flickr

This is how it shouldn't look like, you can see the sauce on top of the pasta (and probably the pasta is like glue now...)









Reblog this post [with Zemanta]

Saturday, 30 January 2010

Italy vs. Finland (a statistical approach)

I've come across an economic measure called Gini index, the index is commonly used as a measure of inequality of income or wealth. A low Gini coefficient indicates a more equal distribution, with 0 corresponding to complete equality, while higher Gini coefficients indicate more unequal distribution, with 1 corresponding to complete inequality.

So I got interested in what the Gini coefficient might be in Finland and, as expected, it's not that high. But the most interesting thing is when it is compared to the italian one and its evolution during last years (unfortunately data is there until 2005 only).

It's incredible to see that after the introduction of the Euro in Italy the inequality has increased of 4 percent points while in Finland only of 2 points (with an absolute difference of 7%).

This basically means that after 2001 the rich are richer and the poor are poorer (and this is not big news). But more in Italy than in Finland.

Another quite interesting figure is the one that photographs the gross domestic product (GDP) per capita in purchasing power. GDP is a measure for the economic activity. It is defined as the value of all goods and services produced less the value of any goods or services used in their creation. The volume index of GDP per capita in Purchasing Power Standards (PPS) is expressed in relation to the European Union (EU-27) average set to equal 100. If the index of a country is higher than 100, this country's level of GDP per head is higher than the EU average and vice versa. Basic figures are expressed in PPS, i.e. a common currency that eliminates the differences in price levels between countries allowing meaningful volume comparisons of GDP between countries.

If we check this graph it's pretty evident (and also stunning) how after the introduction of the common european currency the average 'money to spend' of italians has been dropping like hell while in Finland remained mostly unchanged. With an end result of 15% difference between the two countries.

The whole post was an attempt to proof (mostly to myself) my personal perception that while in Italy people have less money to spend and there are still a lot of people that go around in a Ferrari, in Finland, while there are obviously poor and rich, the average guy can still live decently and the distance between poor and rich is not as unfair as in Italy.

(*) Data source:
Gini index
GDP per capita in PPS


Reblog this post [with Zemanta]

Sunday, 8 November 2009

Job at Maemo

In case you'd like working in Maemo, we're looking (also) for an IT specialist:

Wednesday, 14 October 2009

Debian packaging: Changing permissions and ownership of dirs

Regarding creating users and permissions our beloved Debian Policy [chap. 10.9] tells us:
...you must arrange for your package to create the user or group if necessary using adduser in the preinst or postinst script (again, the latter is to be preferred if it is possible).

I wanted to stick to the postinst since it's preferrable so I couldn't change the permissions in the rules file.

Now the thing is I need to give this user permissions for the dirs it will need to own/write and so on. I already have the dirs listed in debian/dirs and I don't want to hardcode anything else in the rules or in the postinst. Of course not being a so experienced debian devel I started to google but didn't find anything... asked around but nothing yet... so I hacked it in this way in the end:
debian/rules:
...
MYDIRS := $(shell cat $(CURDIR)/debian/dirs)
SUBME := $(foreach dir, $(MYDIRS), chown -R \$$the_user $(dir);)
SUBFRIENDLY := $(shell echo "$(SUBME)" | sed -e 's/\//\\\//g')
...
binary-indep: build install
...
dh_installdeb
sed -i -e 's/PLACEHOLDER/$(SUBFRIENDLY)/' $(DESTDIR)/DEBIAN/postinst
...
...

debian/postinst:
...
configure)
the_user="xyz"
#Creating the user if it does not exist
if ! getent passwd $the_user > /dev/null; then
adduser $the_user
fi

#Changing the permissions for the given dirs
PLACEHOLDER
...


(user=xyz can be easily changed to numeric ID)

I don't know if this is the 'standard' way to do it (nor if there is a standard way) but it's at least a way that worked... If anybody there can give me an hint on how to do it better, it would be really appreciated.

Friday, 2 October 2009

N900 and TV-out: I just love it


After I read the post of Urho about Wiimote+DrNokSnes+TVout I couldn't help trying it out right away (except the Wiimote thing that I don't have). That was a funny jump back in time to when I was young and passed the evenings at a friend's apartment trying to finish the (amazing at that time) Super Mario bros on the NES (I didn't have a NES myself).

Besides that I tried out for the first time in these months the TV-out. I never realized it was so amazing... after having that strange cable packed on my desk for a whole 2 months I got to really use it. And, even if at first it was just to play Mario, I realized that the N900 it's a full blown audio/video player that supports a lot of formats. So I just started to watch a TV show on the bus, arrived home and plugged it into the TV and finished watching the show there.

I mean it's amazing! 180 grams plus a cable and you have a multimedia station with 32G storage on board. I've been thinking to get some kind of media box lately... well I think I found it... it was in my pocket the whole time.

Sunday, 27 September 2009

Friday, 25 September 2009

A questa non c'avevo proprio pensato...

Oggi mi sveglio, una giornata come tante altre e scopro che il nostro mitico Silvio presidentone nazionale (il migliore degli ultimi 150 anni) si candida (o si vorrebbe candidare, o lo vorrebbero candidare, ancora non ho capito) al premio Nobel per la pace.

Si avete capito bene premio Nobel per la pace.

Come se io mi candidassi al premio Nobel per la letteratura.

Non contento della messa in scena pare che abbia assoldato Biancaneve e i sette nani (al coro), un sosia di Bocelli e lo zio di Mogol per interpretare e scrivere il testo di questa canzone


O forse il testo l'ha scritto lui in un momento in cui si sentiva ispirato al cesso ("Silvio Silvio grande e'" chiara eco ai cori da stadio).

Sempre in vena di scherzoni ha fatto mettere su un sito che raccoglie una tale valanga di minchiate che manco Alvaro Vitali e Thomas Millian ubriachi e dopo essersi magnati 10 chili di coda alla vaccinara nel famoso ristorante La Parolaccia di Roma sarebbero stati in grado di mettere una dietro l'altra.

Ma andiamo con ordine:

in home page non si poteva fare a meno dell'inno italiano (che fa sempre scena, malgrado al governo con Silvio ci sia chi con l'inno ci si pulisce il deretano). Sempre in home page una accozzaglia di frasi che dovrebbero spingerti a credere veramente in quello che il sito sponsorizza:

Il Premio Nobel per la Pace non è mai stato assegnato ad un italiano dal 1907 ad oggi.
E' finalmente venuta l'ora di sfatare un tabù che dura da più di cento anni, ovvero da quanto nel 1907, ad aggiudicarselo fu Ernesto Teodoro Moneta.
Alla corsa per l'ambito riconoscimento si sono succeduti, in questi anni numerosi politici e capi di Stato, tra i quali potremmo citare, Yasser Arafat, il presidente della Corea del Sud, Kim Dae-Jung, l'ex presidente americano, Jimmy Carter, ed Al Gore.
Oggi crediamo che, anche, l'Italia meriti di ricevere tale riconoscimento, e di essere degnamente rappresentata da Silvio Berlusconi, per il suo indiscusso impegno umanitario in campo nazionale ed internazionale.


(vi consiglio di visitare questo link per un'adeguata parafrasi di quello che e' scritto qui sopra)

E andiamo subito alle chicche: testimonial d'ecce_zz_ione (nel senso di eccezziunaleveramente) e' Loriana Lana ... vi chiederete "ecchiccazze'?". Ecco se lo stanno chiedendo un po' tutti.

I GadgetS: Una maglietta con su scritto (davanti) "Silvio per il nobel", probabilmente dietro ci sara' scritto Kaka'.

Dulcis in fundo: chi ha aderito all'appello: un gruppo di sodali, portaborse e amichetti del premier (tutta gente molto importante e in vista per carita').

Ecco ora potete scoprire chi ha creato quest'iniziativa (cosi' potete mandarli a quel paese di persona) e qui ci metto il link ma cmq la faccia di questo vi dice gia' tutto: