Tweakr has been finally promoted to Maemo Extras, check it out at http://maemo.org/downloads/product/Maemo5/tweakr/.
You can now easily install it from the App. manager. I’ll write up a new tutorial someday soon.
Tweakr has been finally promoted to Maemo Extras, check it out at http://maemo.org/downloads/product/Maemo5/tweakr/.
You can now easily install it from the App. manager. I’ll write up a new tutorial someday soon.
Hi. I have released tweakr 0.0.16, which you should be able to install from Maemo Testing in a matter of minutes. A couple of bugs fixed and the Silent profile hardcoded is what’s new. Update!
Hi, a quick update on Tweakr: it has now been promoted to extras-testing, since the reboot loop bug (thanks, hildon-home!) has been fixed.
Also a new feature present: the Profile button in the Status Menu gets replaced by Tweakr’s own button (which looks identical), so that you won’t have get your Status Menu too crowded.
A new feature in Tweakr allows you to extend the sound Profiles to more than just General and Silent.
Tweakr introduces the concept of Profile preset. Presets are Profile settings which can be saved, deleted and assigned to the General profile. This allows you to practically use as many profiles as you want on the N900.
The normal use-case is to first tune the General profile for the new preset you want to save, then open Tweakr and choose the Save current General profile to new preset button. This will allow you to save the settings of the General profile with a new name.

After that, you will find a new button in your Status Menu, as shown in the following screenshot:

You can now select whatever preset you have created before, and its settings will be applied to the General profile.

If you’re not using Tweakr yet, go get it from its download page!
I have been working on a little utility package for Maemo 5, called Tweakr. It’s a Settings applet that lets you tweak little known settings that could otherwise be changed only by editing configuration files by hand.
It has a plugin architecture, so you could write your own plugin too. The ones I have so far are Desktop and Hardware keys.
This plugin allows you to edit the labels of the bookmark shortcuts you have on your desktop.
You can configure the behavior of the Power Key, and whether uncovering the camera lens unlocks the device.
More plugins and feature coming soon!
Here’s some screenshots:


During my coding adventures, I have just found myself having to port an existing Win32 application to CMake. After writing a mere 283 lines CMakeLists.txt file, and getting the application successfully compile, I fired it up to see if it worked, of course. I found it failing when doing a WSAAsyncSelect, and failing there didn’t seem to make any sense. So, to get to the point, I decided I’d just carefully compare the compiler’s options generated from CMake with the ones that were in the original Visual Studio project file. After finding the difference, I decided I was gonna learn what those flags meant, so I googled for “visual c++ compiler flags” and guess what? Nothing useful. The right string to google would be “visual c++ compiler options”. But before getting to it, I had to unsuccessfully go thru “visual studio compiler options”. You’d think that would cut it, right? Since “visual c++ compiler options” did it. But, surpringly, “visual studio compiler flags” did actually find what I wanted. Interesting combination.
I don’t really feel like blaming Google on this. Reproducing the same search pattern in the internal Help function of Microsoft Visual Studio gave me the same success/no-success scheme. Besides, the whole point-and-click procedure is a terribly uncomfortable experience. Not only I have to get my hands off my keyboard (inherently a waste of time), but also do I have to (mind: have to) wander my mouse around for a while to get to the information.
So, I wondered, is there an alternative? I went to my rxvt terminal emulator (which I run through Cygwin, can’t really be bothered with using the native Windows Terminal), and tried to get some help from cl.exe. No luck. After some try-and-fail recursion, the least useless thing I would find was cl.exe -help which would give me 106 (one hundred and six!) lines of documentation. Wow, impressive, isn’t it? Comparing, gcc’s manual page is 7820 lines, as for the latest stable.
In order to fulfill what has been a proposition of mine for quite a long time, as of December the 1st 2007, I will no longer use any Instant Messaging services based on a closed protocol, e.g. MSN, ICQ, AIM or Yahoo. The only way you will be able to contact me (besides conventional methods such as phone and email) will be through my Jabber ID: salvatore.iovene at googlemail.com (replace “at” with “@”). This also works from GMail.
Proprietary IM systems have a terrible flaw: MSN users can’t chat with Yahoo users, AIM can’t chat with ICQ, and so on. So if I have friends who only use MSN and other friends who only use ICQ, I will have to use both to keep in touch with everybody. The reason for this is the corporate greed taking advantage of the network effect. Wikipedia says:
The network effect is a characteristic that causes a good or service to have a value to a potential customer dependent on the number of customers already owning that good or using that service.
This also reflects the fact that corporates are valuing their own profit better than the final user’s satisfaction. Moreover, I don’t like the idea of using a closed protocol. “Closed protocol” means that the data (e.g. chat messages) exchanged by two computers involved in a transaction, is represented with a secret format, that the user is not allowed to study. Jabber, on the other hand, uses an open protocol, based on XML. Everybody is allowed to study the protocol, and write clients or servers that support it. This allow collaboration and coöperation. Greedy corporates, instead, keep the protocol secret in order to be the only ones able to write a client and a server for it, so they impose you the use of their clients (such MSN) which might be bloated with spyware and advertisements.
Since I’ve decided that I don’t want to support this kind of behaviour, I will unsubscribe from the closed protocol services that I use. You don’t have to do the same, but just get yourself a Jabber account in order to keep in touch with me, and, preferrably, convince your friends to do the same.
When you hear someone (probably me) talking about Jabber, they are usually referring to one of the following:
Jabber is, strictly speaking, the informal name of an open-standard decentralized instant messaging protocol officially called XMPP.
NOTE: It is also the name of a company called Jabber Inc., which sells Jabber-based products. However, the Jabber platform is much larger than this single company. Don’t let this confuse you! If you want to go to the authoritative website about jabber, that would be jabber.org, not jabber.com!
The network of independent Jabber servers on the internet make up the Public Federated Jabber Network. If you have an account on a server on the PFJN, then you can communicate with anyone else who has an account on a PFJN server. This means that Google Talk users can communicate seamlessly with Gizmo-Project users (and vice-versa), as both of these services are on the Public Federated Jabber Network.
To use Jabber you need a Jabber client and an account on a server. Here’s a list of popular clients:
Then you will need an account. Most of the listed clients will allow you to create a Jabber account choosing from a list of servers, or, if you want, you can run your own server.
If you have a gMail account, then you have a jabber id via Google Talk! Your jabber id is the same as your email address. You can use either the native google talk client or any other jabber client.
Also, if you use the Gizmo Project, you too have a jabber account. Your jabber ID is login-name@chat.gizmoproject.com.
The Jabber Software Foundation is probably the best known Jabber server out there. They just recently switched over to ejabberd for their software, so they should be quite solid now.
I found myself in the process of realizing a dual-boot system on a laptop, with Windows XP and Ubuntu 7.10. After wiping out the content of the disk and partitioning it appropriately, I proceed to the installation of Windows XP (knowing that I needed to install it first, since it would overwrite the MBR and completely disregard and disrespect user’s freedom), so I put in the so-called Recovery Disk provided with that particularly Fujitsu-Siemens laptop. After a little while, the Recovery Disk was proposing me to install Windows XP either using the full disk, or in two partitions, with a 10 GB “data” partition. I was astonished and outraged. It seems that the Fujitsu-Siemens people were thinking that the user wasn’t smart enough to be able to choose what partition use for his or her Windows install. They would rather limit the user’s freedom, and not give him or her some choice. I suspect this was the result of some pressure from the Microsoft end: this “trick” basically stops the user from installing other Operating Systems along Windows, unless he or she buys a new non-branded copy.
Fujitsu-Siemens and Microsoft: shame on you!
After all the dust raised again by Microsoft about Linux and the Open Source community allegedly committing patent infringements (235 this time, they were 228 in 2004), I really feel the need to spend a few words about the matter, or then, a few images.
It looks like the jealous Redmond’s zealots, avidly fighting to protect the uniqueness of their work (sarcasm intended), didn’t realize that they have been playing copycat for a long time, reinventing the wheel and doing a bad job at it. Do the following screenshots tell you anything?





When writing source code, indenting is very important. Having a neat and clean programming style, let alone a precise and uniform one, is probably one of the most important keys when attaching example source code with a job application. I was myself asked to show some of my source code in my last two interviews. Nobody ever asked me to show any running program that I had made, though. Wonder why? A lot can be understood about the author just by glancing quickly at some source code.
Indenting makes the source code easier to read for us human beings, whereas the compiler doesn’t really care (except for some languages, where indentation applies as a syntax element). Even if you’re not a programmer, you can see the differences here:



There is, I guess, no question that the last one, labelled as “Properly indented”, is the most readable. Problem arise, though, when people start wondering what they should use as indenting character. Some prefer TABs, other prefer blank spaces. A TAB, the key on the left of the Q of most Qwerty keyboards, is a single character that a text editor can represent whatever way it wants. This is usually customizable by the user, of course, so she can decide that a TAB will be shown as 8 spaces, or 4, or 2.
You can hear all the time someone claiming, in turn, that TABs are evil or that spaces are evil, but the truth is that none is wrong, as long as you can indent.
I’ll use, as an example, a piece of source code taken from the ext3 module of the Linux kernel. The Linux programming guidelines recommend using TABs for indenting, and that they should be 8 spaces wide. Let’s have a look at some code.



As you can see, the original intent of the author, was to have the variable names aligned. But that alignment gets screwed up as soon as a reader has a different space-size for her TABs. What’s wrong there? Let’s use a very useful Vim tip: the :set list command.

This way, we can actually see the TABs, as “>——-”. Of course there will be less dashes if part of the TAB area is occupied by some text. So, can you see what’s wrong with that? The author of that source code is using TABs not only for indenting, but also for aligning! That way his alignment gets messed up when somebody uses a different TAB size. The solution of this problem is to simply just use what ever you want for indenting, but use spaces for aligning. Indenting must only be that left margin that you give to some lines, but it’s not to be confused with alignment. If the author of that source code had used TABs at the beginning of the lines, but just blank spaces between the type and the name of the variables, his code would be as he meant it whatever indenting style one’s editor would use.
So, in the end, it doesn’t matter whether you use TABs or space, for indenting, as long as you use just spaces for aligning.
I like spaces, and add the following to the end of all of my source files:
/* Local Variables: mode:c++ c-basic-offset:2 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) c-tabs-mode:nil End: */ // vim: filetype=cpp:expandtab:shiftwidth=2:tabstop=8:softtabstop=2
This way, if the reader uses Vim or Emacs (and maybe also gedit), her settings will be temporarily overridden by mine, so, if she’s going to change my code, there are little chances that she’ll mess up my indenting.
The :set line options I use are the following:
set listchars=tab:>-,eol:$,trail:.,extends:#
It helps me to also spot trailing spaces. I recommend everybody to use the :set list, as it will prevent you to accidentally mess up other’s indentation.
You have landed to my personal website, where I write about things that I find interesting. I am a software engineer, Open Source supporter and free thinker.
Read More →
© 2006-2010 Salvatore Iovene.