Lionel reports that his fancy Ubuntu toy is starting to suck more and more. It won't surprise anyone that the words I told you so are on my lips.
As I've blogged before (at length!) Ubuntu is not a very good operating system. It completely ignores decades of proven Unixy technology (like the command line and the toolbox approach) and presents users with complicated experimental solutions to simple problems which have already been adequately fixed ages ago.
The predictable result is that in an overwhelming number of use-cases Ubuntu simply does not work. The only way to get it to do anything at all, is to forget everything you know about computers and to perform a lot of counterintuitive jumping-through-hoops. Hours of frustrating mouse-clicking and trying to figure out what fuzzy (friendly) messages and prompts actually mean.
Engineers have a very good description for software like this: the bleeding edge.
The price of the bleeding edge is blood. Engineers know this. They also know that if bleeding edge software breaks and extracts blood, they get to keep the pieces and they're on their own for restoring their blood volume.
Not-very-amusingly, Ubuntu targets their bleeding edge software to novice users. Weren't novices in particular best served with tried and trusted technology? Nobody in their right mind would throw bleeding edge software at novices!
I guess this says something about the Ubuntu mindset. Do they realize that the more they diverge from the path of tried and trusted technology, the more blood they will extract? I expect to see many more blogs like Lionel's in the coming months.
Play with fire. Get burnt.
The sad thing, of course, is that innocent novices who have been told that Ubuntu is Linux, will now blame Linux for all the suckage.
Conferences don't organize themselves. This weekend we kicked off the organization of FOSDEM 2009 with our annual kickoff BBQ at Jan-Frederik's.
We were extremely lucky with the weather. A number of water-loving people even decided to cool off in the swimming pool.
There goes my free time for another six months. Yay. :-)
All credit (and blame!) to Zombie. :-)
I also garbage collected some of the dustier CAPTCHAs whose answers were a bit too ambigious. More suggestions always welcome...
So the trains are messed up again. This has stopped bothering me ages ago. There are so many fun things to get annoyed about in life, the trains are not among them.
There is an open access point (well essid "default") at the station in Haacht. Unfortunately, the connection drops every time a train goes by, so I am guessing that it is on the other side of the tracks.
Would someone near here please set up an access point on this side of the tracks? Thank you. :-)
I've mentioned it before: I don't like random one-day holidays. So today we are supposed to be celebrating the inauguration of some German (or was he Austrian, I can't remember) as King of the Belgians, many years before I was born.
Instead of giving us these holidays piecemeal, why can't we just settle on "ten free days a year" (-ish). If you want to use these days to celebrate so-called "holy" people taking off like rockets and subsequently remembering about gravity (or being remembered by gravity) and thundering down again, that's your lookout. If you want to celebrate the birth of countries or linguistic genocide, that's entirely your business.
And if you want to take a contiguous ten-day break: why not?
These one-day holidays are a nightmare for planning.
So the Belgian government toppled again. What a surprise.
Could the clowns leave now, please? You've had your chance to show off how good you are at making a mess of things. I think it's about time some serious people took over from here.
Nobody -- save some extremist fools -- is interested in "regional issues" and everyone has had it with linguistic racism and kindergarten-level "it's all their fault" whining.
First get some serious people in to clean up the federal level. Then take a large axe to the silly regional and sub-regional levels. Belgium is small enough to be 'regional' in European terms. There is no need for further expensive complexity.
The last year of political idiocy has demonstrated again that complexity kills. Keep it simple. We have too many governments in Belgium. Fix the big one, kill off the small ones. Instead of looking for differences, look for similarities. Think "abstraction".
I would like to thank N-VA in particular for services rendered (unbidden). Always ready with a big stick to insert in the clockwork of a solution being made. If you need to resort to sabotage to prove that something is "broken", perhaps it's time to consider the possibility that it's not.
Get over it. Go on holidays, preferably to a different planet, and let some serious people sort out the mess you've made of things.
Thank you.
Found in vlc (modules/misc/screensaver.c - GPL) after I found gnome-screensaver-command: not found on stderr once too often:
/*****************************************************************************
* Run: main thread
*****************************************************************************
* This part of the module is in a separate thread so that we do not have
* too much system() overhead.
*****************************************************************************/
static void Run( intf_thread_t *p_intf )
{
int i_lastcall = 0;
while( !p_intf->b_die )
{
msleep( 100000 );
/* Check screensaver every 30 seconds */
if( ++i_lastcall > 300 )
{
vlc_object_t *p_vout;
p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE );
/* If there is a video output, disable xscreensaver */
if( p_vout )
{
vlc_object_release( p_vout );
/* http://www.jwz.org/xscreensaver/faq.html#dvd */
system( "xscreensaver-command -deactivate >&- 2>&- &" );
system( "gnome-screensaver-command --poke >&- 2>&- &" );
/* FIXME: add support for other screensavers */
}
i_lastcall = 0;
}
}
}
My eyes bleed... This is what the MIT-SCREEN-SAVER extension is for, Sam. If I can only figure out how to get at the Display pointer from p_intf, I'll send you a patch.
What do non-geeks do on Sunday evenings? Code-reading is fun.
I tried to build vlc today. I'm not unhappy with mplayer. It generally just works. I wanted to test something multicast-y though, and I'm told vlc is simply the path of least pain.
Hah!
For some unfathomable reason, it wants to be linked with every single library known to man. It also feels I should install a number of things which are never going to be on my system (things like gconf, hal, dbus and other crimes against humanity).
Furthermore, my machine doesn't have any kind of optical drive. I couldn't imagine why I would want to waste diskspace on libraries accessing such things (libdvdread, libdvdnav, libcdio, and many more).
More Makefile hacking it is. No problem. I'll be submitting patches. My life would be significantly easier however, if people porting software would be nice enough to take a "default to exclude" rather than a "default to include" stance.
Especially when it comes to criminal software like hal, dbus and gconf.
Patches coming up. :-) I love the way the FreeBSD ports system (and pkgsrc, by extension) lets me fix problems like this. I'm sure binary package management systems make it much more difficult to avoid evil software which destroys your mind (and any kittens nearby too).
A couple of days ago, someone pointed me at this Slightly Advanced Introduction to Vim. I spend most of my life in Vim and I like to think I know how to use it fairly effectively. Nevertheless, I did learn a couple of interesting new tricks from this particular "introduction".
Two things in particular I learned are some more things to do with g and the fact that the + register contains the operating system paste buffer. Registers are probably one of the Vim features I use most often (together with marks, csope, split windows and various forms of g), and yet I never knew about the + register.
I don't think it's possible to know everything about Vim.
I've been fighting with OpenSSL for the last couple of days. OpenSSL is purportedly very easy to use if you happen to have a TCP socket descriptor for it to play with. When you don't have this, you have to drive SSL_connect() yourself. Once you understand how this works, it's quite simple, really.
Left to its own devices, OpenSSL will helpfully malloc() (and presumably free()) any memory it needs. Unfortunately, this is not desirable in a memory-constrained system or a system where heap fragmentation is not welcome.
With a minimum of fuss (though quite a serious amount of cursing and trying to figure out what the damn thing was doing) I made OpenSSL submit to my memory management. All it took were the usual pointer gymnastics and shuffling lengths and offsets.
Again, I wonder how people survive in languages and development environments which try to hide memory from them. How do they get any work done (with any degree of efficiency)?
Yes, C makes it easy to shoot yourself in the foot. Only your foot will be shot though. Unless you ask for it, the rest of your leg won't be blown off. This is a feature, not a bug.
I like simple. Simple is good.
For the last couple of weeks, I've been fuzz testing some code I wrote. On its own, that sort of thing is mind-numbingly boring, so instead of just handling the problems I found the "simple way" (check for NULL before dereferencing, check if offsets make sense, etc) I decided to refactor where possible so the bugs just couldn't happen. This kept the fuzzing fun too.
Moving error handling upwards nearer to the cause of the errors in an existing code base is sometimes surprisingly tricky. Lots of reshuffling of structures, hiding data from header files and clever encapsulation tricks and pointer gymnastics.
When you're working in ten or twelve files at the same time, you realize how much like a stack the brain is and how good it is at caching information. You push the consumers of a structure on the stack and you roll it up as you change the structure. Sometimes you find yourself branching because you found a way to abstract something and when you get back, the stack is back pretty much as if it had never been gone.
I haven't been able to precisely calculate the depth of my brain stack yet, but it seems to be fairly accomodating. After a couple of hours of shuffling code around, even rough line numbers seem to be getting cached for fast retrieval too. Much fun.
Yet another research opportunity for 'students of the mind'.
Copyright © 2005–2010 Philip Paeps
All rights reserved.