“Almost good enough”

Some time ago, I read an article about why an “IKEA” would never happen in Denmark. Not that Swedes are anything special, or that Danes are’t smart enough.

But the argument is that to be able to create an IKEA, one would have to decide that things are only made to be “almost good enough”, meaning that one know that the product is not perfect, it will not last longer than it was designed to last, and so fort. And any one in Denmark who would start a company would would do so to produce products which where the best of the best (I am not fully in agrement with that one).

But lately that made me think about the stage of software quality, we know that it is impossible to remove all issues in software, the 90/10 rule still plays a role in our daily life. But we have gotten used to software which, we actually pay for, doesn’t work, or it crashes, or causes data loss.

The vendors, in many cases does not care, or tell us that it’s caused by us using the software wrongly. Last week Apple shipped a new Java for OSX Lion which closed a security hole which have been know for some time. When Microsoft shipped Windows 8, they had to lock it down to such a degree that it became almost impossible to use, for the sake for security. We are daily faced by annoyance, which are caused by people making things too complex, and end up having to add security layers which forces us to enter username / password everytime we wants to change a setting.

Not that it’s the fault of neither Apple nor Microsoft (or any vendor actually), it’s our hunger for new functionality which fuels their money machine, so us, but asking for this new functionality indirectly causes this, and at the same time these vendors do not have enough time to make a product which is “perfect”.

But one of the things, which really ticks me off, is the when one have something which is supposed to work, and one then get in contact with a vendor (more or less anyone of them), and am being told that this is know issue, and one will have to wait “sometime” for a fix. Like for example the crash issue with Macbook Pro’s when one wake them from sleep, or the Macbook Air’s which cannot switch it’s primary monitor when it’s woken from sleep in clamshell mode (external monitor). Both very known issues by Apple, but non the less not fixed. We can live with most of the most annoying things, but when our dear and beloved computers starts crashing without reason, then it’s not really fun anymore. This is the “almost good enough” atitude which I have a problem with.

Also when one look at smart phones; I still remember the people who got the first Windows Phones, who complained about having to reboot them 2 – 3 times a day for them to be able to use them. We are over that periode, now we have the “iPhone antenne gate”, batteries being drained if one enable the standard features of the phones. And we are being told that we are holding our phone wrongly, or that we should not expect that the numbers in the official marketing material are correct, and they are done with all features switched off.

I think that with the prices we pay for our software (yes it also runs on partly faulty hardware), are too high. Would we be happy if we had to restart our cars every 25 km, as they otherwise would stop working… don’t think so…


Delicious Books

As some might have noticed, I have a “Recent Books” in my sidebar, and some might have wonders how it got there, well some time ago I decided to get a bit more handle on my books, as I started buying duplicates. Due to getting a license to DeliciousLibrary fairly cheap via MacHeist I choose to use that as library software, now what does on do when one have +800 books; there is the option of using a camera with ones Mac, but then again after a few books one figures out that this is not an option, so via ebay I found a cheap USB Barcode reader, and presto 3 days later all my books where in DeliciousLibrary. One thing I feel I have to mention; DeliciousLibrary is not perfect, far from, but it kind of works with all it quirks. And if your books isn’t in any Amazon shop, then you’ll have to manually add them.

Now that was cool, I had all my books in a database, well sort of, in a massive sqlite database, which kind of made things a bit difficult, I wanted to be able to 1) search my books, 2) be able to show off on my blog which books I recently had read, and 3) like to have access to my books via my iPhone…. 1) and 3) could be combined in one with a webpage, 2) was kind difficult, but possible. Now to do any of this I needed to have all my books in a usable database (I don’t really like sqlite), and after a bit of googling I found DeliciousSQLExport, and everything was bliss.

Next step was to create 1) and 3), massive headache which I’ll talk about some other time…..

But 2), well at that point my bloktheme was kind of customized, so add some php code and it was working, but there is a “small” issue with that, which is that if one wants to change theme, one is required to add custom code; which is not a good idea, as it becomes impossible to maintain (every developer should know that…), so I started looking in to writing a widget, and gave up again as the documentation was horrible.

A couple of days ago, I started researching the issue again, and found some good example which I could work with, and now have a widget which does what I want; it connects to a different data, does it query, and show it in the sidebar, what else could one ask for?

As I’m such a nice guy, I’ll let other people use it; download, create a deliciousbooks directory under wp-content/plugins, copy it there, and have a go at it.

And just to be even nicer;

title – what title the widget should have in the sidebar
show – how many books should be shown
db – database
dhHost – database host
dbUser – user which logs into the database host
dbPass – password for dbUser
dbTable – which table to query
amazonlink – http://www.amazon.
amazonadd – if you have something which needed to be added to the link, like if you for example get some a bit of money for referals add it here, it must end with ‘&’ (it don’t check this….)

Then it should show something in the sidebar. If it does not work, check your webservers error_log, look in the code, etc.

Please do not ask me for help, as it works for me, and that is it’s main purpose.

Missing your Facebook contacts in Adium?

There is a problem with the protocol Adium used to implement the Facebook Chat, which means that some people have problems seeing their contact (they are not there…).

As of Adium 1.4.2 this will be fixed as Adium is moving to the new protocol – or they say they are.

As per this wiki page do:

  • in preferences, remove the facebook “account”.
  • add a “Jabber” account (as opposed to a Facebook account).
  • type in your Facebook username, followed by @chat.facebook.com, for examples “JoeBob@chat.facebook.com”. You’ll need to activate your username in the account preferences (Account ? Account Settings ? Username) of your Facebook account, using the website. (I did not have to do this)
  • set the connection server to “chat.facebook.com”, on the options pane.

And you should see all your Facebook contacts in Adium again.

Control Firefox memory consumption

Firefox has become a memory hog, it will do it best to use all the memory available, or so it seams. I sometimes see that Firefox uses more than 1GB Ram, which will grind my computer to halt, or make everything else very slow.

According to this, there is a simple way to make sure that Firefox doesn’t use too much memory.

  • Use the configuration editor (url: about:config)
  • Find ‘browser.cache.memory.enable’ and change it to ‘false’
  • Add ‘browser.cache.memory.capacity’ as an integer, and set it to 4096

Restart Firefox, it should not behave itself.


One of the nice things about MacHeist is that you pay a small amount of money and you get a fair select of Software.

The last bundle (as they call it) included ‘MacJournal’ which I’m using to write this – I always like offline tools to online tools (not depending on an internet connection).

In general a MacHeist bundle is every from $19.95 to somewhat more, mostly you’ll end up with a selection of software which cost many times more than what you paid.

Learning Python

I’ve been learning something new this week (which happens on a regular basic), but this time it was very official, I actually went to a training.

It was decided, that I had to learn Python, which is a [stag]programming language[/stag], and yet another of the scripting ones – we already have Perl, PHP, Ruby, and so forth, which meant that I actually was in some sort of pathetic way was looking forward to see what all this was about.

There is one thing which is annoying about Python, and it’s even worse that they have decided not to do something about it. They have not implemented a ‘switch’ statement, they have some obscure reason why;

It is too early to decide. I’d like to see at least one completed proposal for pre-computed values before deciding. In the mean time, Python is fine without a switch statement, and perhaps those who claim it would be a mistake to add one are right.

The whole thing is discussed here.

A switch statement is used to in a very simple way do a selection:

switch( variable )
   case 'a' : do something if variable is a
   case 'b' : do something if variable is b
   otherwise/else : do something if variable is neither a nor b
end switch

Instead they they have decided that ‘if’ is a lot better. The same as above just with ‘if’:

if variable == 'a' then
   do something if variable is a
else if variable == 'b' then
   do something if variable is b
   do something if variable is neither a nor b

Well it does not take long to see that using ‘if’ does work, but it will look like a mess, which is avoidable by using ‘switch’. Well until further notice there is no other option than to use ‘if’ – sadly enough.

But there are good things also, it have a tight integration to the OS, which means that the whole Std. C Library is there (more or less), and also lots of other things is available. On Linux for example there is integration to both KDE (QT) and Gnome (Gtk2), on OSX there is Coca, and Carbon, and an interface or ObjectiveC (PyObjC). The nice thing is that on OSX it’s available from Xcode (integrated development environment). I don’t know about Microsoft Windows, as I don’t have much interesting in dealing with Windows development these days (as I do this for fun).

Everything is an object, but due to the way namespace is dealt with, one end up doing strange things. For example, to use sqrt (square root), one would do;

import math
x = math.sqrt(9)

and not like in C/C++

#include <math.h>
x = sqrt(9)

Of cause there are ways to get around the namespace thing, but it’s slightly annoying.

But in general, it a usefull language, lots of things are using it; like Xen (hummm, yes). It’s easy to do prototyping in, and one could actually use it for application development, there are a enough libraries to make it possible. The designer tools on Linux can generate Python code, so nothing is stopping you from writing stuff in Python.

The best of luck….

Google Reader

I’m using [stag]Google Reader[/stag] for my rss feeds (that way I can read them everywhere), and now they (well been able to for a while), allow you to share things on a public page.

When you see items you would like other people to see (actually people can also subscribe to it) you can share the item (at the bottom of the reader item window), and it becomes available on your public page.

Also you can put a link to it on you page:

Google Reader

Kind of cool….

My shared page is here.