RE: Evo Morales on the Daily Show

Online version of the Interview that Miguel recently referred to.

A little bit of introduction, before doing a 1.0

While developing on top of Tinymail you need to make a platform factory, a device type and an account store. The platform factory will create instances of types that are specific for your device. The device type will tell the Tinymail framework about the state of your device (online, offline and state changes) and the account store is where the accounts are requested from.

These types are interfaces in Tinymail: you don’t want me to tell you what configuration libraries to use for putting account configuration in, neither do you want me to tell you what Network detection to use. A cellphone’s GPRS connectivity might or might not work the way NetworkManager works! What about the future? Think about the kids!

Perhaps I want to decorate an existing local account configuration by synchronizing it using data from an ACAP server? What about doing this for all the account stores that I ever wrote?

By itself that doesn’t mean that you are on your own while starting your application. Of course does Tinymail have a bunch of default implementations. For example a device implementation that uses NetworkManager and an account store that uses GConf. Obviously there’s also documentation in the format of a manual that explains how to implement your platform factory, how to implement your device type and how to implement an account store.

Dirk-Jan told his audience (slides, page 4) at GUADEC ’07 that this makes your application and Tinymail look a bit like a chessboard. That’s right, you do need implement certain Tinymail types to build your application on top of it. This is not really abnormal in a modern framework. Consider things like Spring and Hibernate. For those frameworks you need to integrate your code with the framework too. Although such frameworks enjoy the fantastic world of virtual machine capabilities. Like reflection.

That’s a lot of interface implementing and type inheritance to support in a language binding. And this is exactly what Mark (Doffman) is providing in the Python binding of Tinymail.

Mindstorm … s

You buy a bunch of Lego Mindstorms bricks and you start building a robot to remotely control your mobile devices.

Well, that’s the official explanation.

The actual explanation is that this is what happens when you are 26 years of age, your girlfriend tells you you are almost 30 and that when you are 30 it’s the end of your youth (although, people of that age usually tell me this ain’t true), you are a nerd of the type software developer (and quite addicted to this too), you have your own business and therefore your accountant asks to make some expenses (like .. buying a Mindstorms robot! No?).

I acknowledge it’s probably just an early midlife crisis. Boys want to make things, fiddle with stuff, put things together. Whereas girls, girls just wanna have fun. I’m totally guilty of being a boy. I know. (although, I’m sure a lot of girls enjoy making things too — before I get killed by a group of feminists –).

Now that the model itself is finished, I clearly see what I am becoming: an old lonely dude who plays with trains, electricity stuff and mostly breaks things just to put them back together. I’ll probably die getting electrocuted while trying to take apart a by that time old holographic 3D gesture recognizing display, as I’m trying to figure out whether some evil corporation is spying on its customers by using such electronic devices.

But, isn’t that cute? No? I mean, Tinne, seriously, now I must be ‘like’ a younger dude, no? I have been playing with toys for kids aged 11 to 16 (that’s what the Lego box’s age indicator says, so it must be true). Anyway, the only way that it can get worse now, is if I’ll start writing software for this Lego model. I’ll have a camera view on my screen where I can mouse-over so that the robot will follow my mouse pointer. With a library like GStreamer I can let that camera image go efficiently over a distance. Sending some commands over a socket ain’t very hard.

About the bot itself: it has three axis. One (the X one) uses normal wheels, two others (Y and Z) are built on top of the chassis. All axis are controlled by Mindstorms motors. The Mindstorms computer thing is integrated in the model, there’s a touch sensor on one of the axis (the Z one). I don’t yet have this software, that’s the next thing I’ll (try to) finish. I’ve spend ~ 450 euros on this thing (the normal Mindstorms package didn’t have enough bricks, but the programmable thing, the sensors and the motors are ~ 300 euros).

But hey, 450 euros for something that you could give to a little fellow as soon as you are done playing with it? That’s not much for multi functional and multi age toys! I mean, if I get bored of this thing, I can make another robot with it. If you have a son (or a technical minded daughter), you can let him (or her) play with the Lego bricks while watching his (her) brains grow! You can’t convince me that today’s computer games are better for training a kid’s brain than Lego.

After the kid is finished building the bot, you can make the software for it. Hah! Perfect father – son (or daughter) relationship. You actually help him make his toys, and you enjoy doing that! And … he’ll get interested in software development, join one of the many free software communities, he’ll find a job in IT as programmer, etc etc.

Lego rocks!

GMAE on WinCE

I’m sure a lot of people don’t care about the platform, a lot of other people are interested in seeing our components running on WinCE targets.

A reason why I believe making our GMAE products work on WinCE is interesting, is because of the existing market: mom, pop, bro and sis are not going to flash their expensive devices into a for themselves nearly unusable state. Maybe if you’d pay the shop that distributes the devices to flash it, you might convert a single percentage of the users to your absolute freedom Utopia. Most of them, will not really care and go with the flow.

That doesn’t mean that I don’t like initiatives like what Openmoko and Maemo are doing. Those are great, for the developers. The actual users, usually don’t care that much about the freedom aspect of it. (sure, comment that you disagree and that users do care. Please also post the actual numbers that prove it). The availability of applications that comes with opening a mobile, however, is what its users care about indeed. If this is in an integrated way (with a nice website where they can find the point-and-click installable applications).

We can, however, make software for people who made the decision to buy a WinCE based device. We just have to finish the WinCE port of pthread-win32, get iconv compiling and then build a glib for it. With the relatively new project cegcc it’s easy to set up an environment for cross compiling to a WinCE target. It works a lot like Mingw32. They even have a compiler that is compatible with it (and which seems to be working with autotools nicely).

My first experiments gave me the typical results for iconv and pthread-win32: WinCE has no errno.h, and when faking it you get unresolved symbols about _errno. Such problems are relatively easy to fix. The pthread-win32 library tried to link with wsock32, which I had to replace with winsock. There are some platform dependent parts in the pthread_cancel implementation of pthread-win32. I don’t think glib uses pthread_cancel so you can perhaps initially just ignore this and make it compile with an empty implementation.

The latest version of iconv seemed to be in an even better state. I think the only problem that I had while trying to compile it was the unresolved symbol _errno. Although I think WinCE has its own typical iconv related things.

Making Gtk+ work on WinCE might also be worthwhile. Although my opinion is that D-BUS and glib (including gobject, gmainloop and gthread) are initially more important. Tor did some work on porting Gdk/Gtk+ to Win32, perhaps is a bunch of that stuff reusable?

Once finished, we could run GMAE applications and components on WinCE phones, PocketPCs with native O.S. and a lot of tablet computers. I’m for example very interested in the many ruggedized embedded and mobile devices. For example the Psion Teklogix ones. A lot of companies let their employees use such ruggadized devices in the field. This might be an interesting market to explore with GMAE? And why not? Those companies usually see no reason whatsoever to flash their device with Linux, if their custom Compact Framework .NET application already just works for them. Although Mono might be very interesting for the company who developed that software?

Tinymail’s second

I just released Tinymail‘s second pre release (v0.0.2). Here’s the announcement and here are the files.

This is still a pre release, there are no API nor ABI promises being made just yet. There was one major API change since last pre release.

A major feature added since pre-release v0.0.1 is of course Mark Doffman’s Python bindings. I expect that Mark will continue improving this feature during the pre releases and it’s among the major changes that I approved to take place during this period of doing pre releases.

Looking at these pre releases you get a good view on what a final release of Tinymail will look like.

Belgium for sale on EBay, for one euro!

Regretfully, they removed the EBay article, so I can’t link to it. This was the original text:

Kingdom in several (3) parts, can be bought as a whole ( not recommended), can be bought in parts.

I. Flanders

highly traficated and very heterogeneous architecture (as well art nouveau as spanish hacienda style) , hard working people understanding American english ( due to an overdose of episodes of Dallas), catholic but not fanatic. Be aware some Flemish ( not to confond with Amish) are ‘ practiserende Vlamingen’ and you recognise them easily by their Lion Flags (hand model or life size flag). As a whole easy to govern provided that you dont cut mobile phone traffic or television broadcasting. If you do so you will see what. Oh yes, in possesion of a seaside (50 kilometres) and flashpilars ( ‘flitspalen’). What to say, when you meet them: it is the one and the other ( ‘t is t’ een en t’ander) in case of emergency, Say it is not true ( Zeg dat het niet waar is) in all other circumstances.

II. Brussels

Lively village with nineteen lord mayors and a government on top. The real Babylon with several coexisting minorities.Nice realestate taken by National, Regional and European institutions.Still opportunities in the Bois de la Cambre for de luxe flats. Possibility to establish farming facilities both on Grand Place, De Brouckère, Place Rogier and on the Boulevards ( contact mr. Pascal Smet). What to say when meeting with a Brussels subject: Hello good morning (Zeg, draag ik soms iets van U. Quoi tu veut ma photo!)

III. Wallonia

First become member of Parti Socialiste which makes it easier in many ways to establish your situation. Has plenty of water ( sometimes sparkling), tons of old iron, acres of woods, several homebrews, ingenious shipptraffic ( The Pending Slope of Roncquiers), The Shape head quarters (tax fee cigarettes!) and German speaking backyard. In general the Wallons are more philosophical and relaxed guys then the Flemish. Plenty of opportunities but find out yourself. What to say if you bump into a Wallon: Hide the Flemish are there!

So you see there is plenty of choice. Beware there is a 300 billion of National Debt which has still to be divided under the three, but that wil be fixed soon after the Duchess Valley Talks ( het beraad van Hertoginnendal).

Free premium: the king and his court ( costs not included)

The story of the Python bindings continues

Mark Doffman wrote a roadmap for the Python bindings of Tinymail. He just committed the possibility to implement Tinymail’s types in Python. Although I haven’t tested this yet, it looks like he’s making the bindings kick ass.

I guess this means that good Python bindings will be a feature of the first version of Tinymail. Thanks a lot Mark!

The story …

In the story of the power of big corporations vs. the power of Europe we reached a verdict today: if you want to sell to Europeans, you’ll have to play the game fair. Else, go home.

I truly hope European courts will do this kind of rulings more often. European economy and free market values are more important than Microsoft’s “feature integration”. The goal of an IT industry is to foster both the economy and technology by making the flow of information faster and more accessible. Its purpose is not to let Europe become a slave of a monopolist.

While I have a lot of respect for the fine professional technical people at Microsoft, their marketing strategists today learn that Europe will not bow. If you want to be a player in Europe, you’ll play it by the European rules. No company on this world is “big enough” to circumvent European law.

The apocalypse of nonsense:

I know some pro Microsoft people will try to make Europeans envision a Microsoft leaving the European market, spreading unnecessary fear. First of all, this wont happen. Second is that fear unnecessary because such an event would probably be an immediate and huge boost for the European economy. Especially in IT and technology sectors.

Can you imagine the vast amounts of technological improvements that would start happening from within Europe if millions of companies suddenly need replacements for their softwares? The growth the European IT industry would see? India would probably also become a huge (temporary) software supplier for Europe, indeed. This would likely end even more IT jobs in the U.S.

I also think the other big countries in the world would learn from what happens in Europe. I’m quite certain that Microsoft wouldn’t be trusted by governments worldwide anymore. Each large country would probably boost their own IT industry and start developing alternatives (in fact, some are already doing this). My own conclusion on this apocalypse of nonsense? Europe has a quite vibrant software industry. Although in the beginning it’ll be difficult, Europe would survive and probably outperform today’s IT industry.

The actual outcome? Microsoft will have to play it fair if they want to sell in Europe. Or, indeed, go home and watch how their European catastrophe is the start of all of their software titles and technical achievements becoming irrelevant.

I keep censoring myself

I just noticed that I keep censoring myself. This time I wanted to respond to zeenix’s words about 9/11. I don’t want to put this on a planet like GNOME’s, as that would wake a bunch of politic-trolls up. Nor is it always interesting for people who want to know about GNOME things. I also don’t always feel comfortable exposing such political views to a huge amount of people.

For OLPC’s planet I made a new category so that they can filter the ones that are not relevant for their project. Perhaps this would be a good idea for GNOME’s planet too? Although I kinda like the fact that sometimes non-GNOME-related blog items appear on GNOME’s planet too. Like cooking tips and pictures of people building their houses. That’s just fantastic and keeps Luis’s idea that GNOME is people alive. In my opinion that is important too.

My personal political views are usually not mainstream and a lot like Chomsky’s. Not everybody wants me to put them on GNOME’s planet. Last time at least one person actually asked me in private not to blog about this subject anymore, just because I’m syndicated on GNOME’s planet.

I can imagine that an organization like OLPC doesn’t want such items on its sites (for example to avoid that silly journalists make a stupid story about it). I would understand it if the GNOME organization has the same concerns. Yet I would hate it if the only allowed subjects on GNOME’s planet would be related-to-GNOME ones.

How do we solve this, or isn’t this a problem and should the whiners just shut up in stead?

ps. For planet maintainers who want to already solve it for my case, I have this category on my blog. Only items about informatics and programming appear here.

The unread count on IMAP

IMAP has the STATUS command which can give you information like how many of the messages in a folder are not flagged with \Seen. That’s cute, but not as useful as it might sound to most people. This is the problem:

What I want to avoid on a mobile device is having to do a synchronization of a folder. A synchronization the first time means retrieving the summary information like the Uid, the flags and some headers. What use is all this information if this is a folder that will never be viewed by the user of a mobile device? Why waste bandwidth on retrieving this, especially when bandwidth over GPRS is expensive for many people?

How will you know (before said synchronization) whether a message is unread but not deleted and how many of that unseen count, that you got from STATUS, are like this? It’s perfectly possible for a message to be marked both deleted (but not yet expunged) and unread.

“Simple”, I imagining hearing somebody in the audience say: “just mark all messages that you delete as \Seen!”. The problem here is that a mobile E-mail client is most of the times not the primary E-mail client of a user and I can’t control the behaviour of the many E-mail clients being used in the field.

The nice people at Isode specified ESEARCH for things like this. To all developers of IMAP servers: please hurry up implementing this one. With ESEARCH I can get an accurate unread count suitable for mobile devices without having to do a folder synchronization for each and every folder.

Subtle things, the volatile world of mobiles

As some people at GUADEC asked me to continue the technical stories about Tinymail, here’s a preview on how it goes:

When you open a local E-mail folder that is stored on a MMC card, you obviously need to open some resources. Those include, for example, the summary’s mmapable file. You might also need to opendir() the directory and perhaps even chdir() to it? Perhaps rename items from a “new” or “tmp” to a “cur” subdirectory? In the process you might have left a directory or two open?

Suddenly … you get bug reports from system testers telling you that if the E-mail client is running, they can’t unmount the MMC card.

Today, Tinymail’s implementation for a few local E-mail folders makes sure that no directory related resources are left open, chdir() always goes to the root folder and the mapped files are closed as soon as the last component stopped using the folder.

Re: Re: about us…

Hey Damien, why not make Brussels a purely European city not belonging to either the Flemish or the Walloon parts of Belgium? To me that sounds like the current actual situation already anyway.

I’m with you on Europe though. But I’m not for a United States of Europe modeled after the United States of America. The member states of the European Union have enormous cultural differences. They need their own leadership and have their own priorities to successfully serve their citizens.

I don’t think that centralization of power leads to more democracy (or, better living standards. As I sometimes question whether “democracy” in its current form actually serves the population well). Cooperation, however, could and should be strengthened. Perhaps have a much better way to get a consensus by all member states over the world’s problems?

Problems such as the energy crisis that we’ll most certainly face in about 15 to 20 years when the world will run out of oil, the increasingly alarming state of global warming, Kyoto protocol agreements, a strictly peacekeeping military force that would empower an organization like the United Nations to act without neoconservative-guided policies during conflicts, a court system that brings justice to victims of war crimes and puts war criminals in jail (not just hang them, using a fake trail. A real, serious and fair trial is very important for the significance of the verdict. Read Jan Wouters‘s books on the subject). Even if that is a politician of a wealthy Western country. Perhaps Europe could indeed unify a bit more on education, science and scientific research? Maybe… maybe not.

I don’t want a United States of Europe to rule over each and every aspect of citizenship in all the current European countries. To give an example: in some countries a ban to hunt foxes might mean that a large amount of farmers will see their animals getting killed? In Belgium, however, we might want to protect the species? In one European country perhaps the citizens need more railroads and trains, whereas in the other there is a high emphasis on traffic over highways and doesn’t it make a lot of sense to put extra taxes on truck drivers (or would such regulation bring the economy of that region to its knees).

In one country social security is important, in another there might be other priorities or there is perhaps a different system already in place that has served people for ages (although I do think social security is a top priority, I don’t believe it should be a stupid Belgian like me who should decide for another country whether or not they need it). Why change this? Because some people want a huge monolithic Europe? As if those people in Brussels know better than the local politicians of countries? I don’t think they do.

So yes, let’s do Europe and let’s make it significant. But let’s not hurry too much. Let’s give it time and see what works, rather than making the same mistakes that another country is making today. I don’t believe we would do it a lot better. In fact, our European culture of wars teaches us our countries didn’t do any better in the past.

Does that mean that Belgium should not take care of its current problems, because maybe in a few decades we’ll have a Utopian European something? I don’t think so. Let the Belgian voters speak, and let the Belgian politicians act based on that. Today.

Edit: crap, now that I wrote this piece of opinion, I realize that I’m going to get eaten by the politic lions of the blogging world. Heh, too late now :-\

About .. us (but .. we are not important?!)

The Economist wrote in an article:

When a French-language television programme was interrupted last December with a spoof news flash announcing that the Flemish parliament had declared independence, the king had fled and Belgium had dissolved, it was widely believed.

Being a Flemish Belgian myself I’d like to correct the “it was widely believed” part of the article: this is absolutely not true. The vast majority of Flemish people immediately recognized it as a spoof. Not only was it not being reported by the Flemish television stations, radio nor news papers most Belgians understood that this would take months of (pointless) discussing at our government resulting in a “let’s not do it” conclusion.

Most Flemish people in stead of widely believing this, thought something in the lines of “No way, that’s too good to be true!”. But in a cynical or joking way rather than using a serious tone. We laughed with it the day after, when the Flemish media started reporting the spoof. Some Walloons might have been a bit scared, but I don’t think they actually widely believed this either.

They know it’s not that easy to get rid of them :-)

Python bindings of Tinymail

Mark Doffman wants to maintain and fixed the Python bindings of Tinymail. He committed a huge patch restructuring some things and making things work again. I guess this means that very soon and perhaps already you can write your own cute little E-mail client in Python?

I know that for example one person plans to make a mutt-like using Tinymail. Maybe that one can be done in Python? I think the Python bindings will be most interesting for the OLPC project, though.

Vala bindings will of course be made very soon too. Though, my current plan for Tinymail 2.0 is to rewrite all interfaces and refactor a few of them to abstract classes … in Vala. I hope that by that time Vala will generate a bunch of bindings to other languages. If I look at the progress that the authors of this programming language are making recently, I’m confident it will.

I just noticed that it has been since May that I did a video demo. I’ll try to make something soon. What about Tinymail on the Openmoko phone?

Tinymail’s first

For most of the organizations that needed it, it comes a few years to late (when i started Tinymail, they wanted it yesterday). I promised to start the process of making early releases the first time one full year ago. I completely underestimated it, indeed.

Finally, a first pre-release of Tinymail. I hear people think “What? Just a pre-release? Not even a final release?!”. The pre-releases are to aid people like the packagers with preparing their environments and to give a solid basis for application developers who want to start focusing on an API that will not change a lot anymore.

It also means that everything involved with releasing a final will now start. You can find the announcement with all the information on the mailing list.

ps. I have no idea when or if a pre-release of Modest will be made. I have no idea when or if packages will be made available.