Luca Gasperini
Italy
gentoo users, compiled
Posts for Thursday, August 26, 2010
Italy
Italy
A proper transcode must have a lossless audio format as a source, a good one is flac ,stands for Free Lossless Audio Codec, because it does the job well and has a good licence ( BSD and GPL ).
If you have some flacs and want them in mp3 format (you need lame and flac) you can use this one liner:
for FILE in *.flac; do flac -cd "${FILE}" | lame - "${FILE/.flac/.mp3}"; done
the above line decodes every file that ends in .flac to the standard output (screen) and pipes it to lame that will encode it. “${FILE/.flac/.mp3}” will be the output file, in bash that means: take the variables “$FILE” (that is the original filename), remove “.flac” and substitute “.mp3″.
Nowadays I transcode quite often to 320 kbit/s constant bit rate (CBR)
I simply need to use lame with the proper switches , the above one liner becomes:
for FILE in *.flac; do flac -cd "${FILE}" | lame --cbr --preset insane - "${FILE/.flac/.mp3}"; done
To rip my compact discs and encode my music in flac I use a program for windows called Exact Audio Copy (EAC), my Wine build doesn’t like it for some reasons and Virtualbox has historical problems in handling cdroms correctly, the solution was VMWare. The native solution is RubyRipper
Posts for Wednesday, August 25, 2010
Belgium
The wireless driver developers are actively working on a new wireless toolset called “iw”, slowly deprecating the older wireless-tools toolset (which contains the “iwconfig” command). Kasumi_Ninja reported to me in the Gentoo Forums that it would be nice to add information on iw to Linux Sea, so I did. I must admit though that my systems don’t (or hardly) support iw, so I had to be lead by examples throughout the Internet.
Apart from the iw addition, I’ve reorganized the sections on Software Management as it was becoming too crowded. I’ve also started a ChangeLog for those who want to track the changes to the document.
Now if anyone can recommend me a good spell- and grammar checker…
Belgium
Albeit with less updates than 0.3 had, cvechecker 0.4 brings in internal project files reorganization (more to the liking of the GNU autoconf/automake standards – I think), fixes a databaseleak (instead of memoryleak ;-) bug and introduces a teenie weenie bit more intelligent pullcves command (with multiple return code behavior to improve automation efforts) as was mentioned in the feature request list. All documentation is also updated and a pullcves manual page has been added.
Belgium
The Community contributions subforum of the Arch Linux forums is awesome.
It is the birthplace of many applications, most of them not Arch Linux specific.
File managers, media players, browsers, window managers, text editors, todo managers, and so on. Many shell scripts, urxvt extensions and dwm patches aswell.
Most of the apps are designed after suckless/KISS principles, but there are also some GUI programs.
If you like to discover new apps and tools, check it out.
Malaysia
RTS is an acronym for real-time strategy. It’s a game genre. There’s a classic RTS game known as StarCraft. Although only a casual gamer (say, might I recommend Machinarium?) I have played (and somewhat enjoyed) a few more "hardcore" games – like for instance, StarCraft. Although being pretty pathetic at it, I did enjoy it and appreciated the balanced strategy between the various "races" you could control in the game. With StarCraft II already out (hell, it’s about time!) I decided to revisit the original StarCraft: Brood War game to refresh my memory.
I downloaded the game from Battle.net, installed the latest version of WINE (1.3.0), ran the Blizzard downloader flawlessly, ran the installer flawlessly – and true to its Gold ranking on the WINE AppDB, ran the game flawle- no wait. It was laggy. Not particularly laggy. But it wasn’t as fast as it should’ve been, and too many critters on the screen would make it choke. I tried all the lag-fixes suggested on the AppDB submission to no effect. It was a sort of phantom, website-loadingish lag.
However one comment on the AppDB page said that using PlayOnLinux to install WINE 0.9.14 to run StarCraft fixed all lag issues. I decided to give it a shot. Turns out any version below 1.0 is no longer supported (as any sane developer would do) and no longer available in portage. PlayOnLinux was, however – and PlayOnLinux did still allow WINE 0.9.14 to be installed. Unfortunately it wasn’t particularly intuitive to tell PlayOnLinux to run my installed .exe file with WINE 0.9.14, so perhaps this blog post might help others in my situation. Using these steps I was able to install a prehistoric version WINE via PlayOnLinux, and tell it to run the already installed version of StarCraft on my computer:
#!/bin/bash
export WINEPREFIX="/home/username/.PlayOnLinux/wineprefix/starcraft"
export WINEDEBUG="-all"
cd "/home/username/.PlayOnLinux/wineprefix/starcraft/drive_c/Program Files/StarCraft"
wine "StarCraft.exe" $@
And that’s it! Run PlayOnLinux and you’ll be able to run the program from there. This guide should be able to work for other scenarios as well so feel free to adapt it.
Oh, and as for the lag? Yep – oddly enough it did get completely fixed. Regression time.
Related posts:
Posts for Tuesday, August 24, 2010
Belgium
My current personal projects, Linux Sea and cvechecker, are actively being watched by the free software community. For the Linux Sea book, I get nice feedback and ideas on the Gentoo Forums and on the cvechecker application, people such as Nigel Horne are helping out in various ways – including feature requests of all sorts.
I must admit, I remain impressed.
Small changes have already been squeezed in in the Linux Sea document. A larger change (the use of the iw tools for wireless connectivity) is being investigated (sadly, my broadcom-sta device doesn’t support the new nl80211 API so the documentation change is slower to integrate than expected). I’m also planning to make some updates on the software management chapter as it is currently becoming quite crowded.
In the cvetool, most changes are bugfixes and output enhancements as expected. I’m not going to add more functionality now – I first want to get a stable 1.0 release out there. But first continue to squash bugs and add rules to the versions.dat file so that it is usable on various systems (release 0.4 is around the corner).
Paludis 0.54.0 has been released:
Australia
Posts for Monday, August 23, 2010
Belgium
Dusty Phillips, Arch Linux shwag guy, Archcon co-organizer, (python) consultant and since recently buddy of mine wrote his first book: Python 3 Object Oriented Programming.
I got the opportunity to get a free pdf copy in exchange for a review on my blog, so here we go.
Mind you, my Python knowledge is very limited. I have done some python programming, and I once read (most of) Dive into python, but over the years that experience has vanished from my memory. Dusty's book has had many proofreads/reviews by python-aficionado's, now it gets a fresh perspective from an amateur, and for me this was a good opportunity to work on my python skills.
To paraphrase the "who this book is for" paragraph, which is in the beginning of the book and in online advertisements for the book:
Good, that includes me (category 2)
Pro's:
Con's:
I should clarify my last point. Here and there I found some information to be lacking. Especially static class methods (they are only mentioned very briefly in a case study somewhere) and static properties/variables.
Other then that, sometimes an example or explanation was not entirely clear to me. This didn't happen often, but there were moments where I thought 95% of what you need to know is explained, but the other 5% you have to google up yourself.
It is quite convenient however, to have the author of a book available in your jabber client.
So FWIW here are the things I asked him about and which responses I got, with some comments added by me afterwards.
<Dieterbe> hmm you mention that methods *need* a self param, but why is this? can't python automatically make a variable self available in the scope of the function, when calling it? <Dusty> no, they are always explicit <Dieterbe> but why? <Dusty> it's part of the python philosophy, I guess. "explicit is better than implicit" is in the zen of python poem. Basically, if you are accessing a variable in any namespace, that variable has to be have been made explicitly available in that namespace. The one exception is the from X import * syntax, which 98% of python programmers avoid exactly because of the namespace issues. <Dieterbe> right # good to know. Too bad this isn't really mentioned anywhere. <Dieterbe> i don't quite get why - in your notebook example of chap 2 - you iterate over the list to find the correct note based on its id. can't you just get the element based on it's index in the list? (ie keep the node id in sync with the index in the list) <Dusty> I don't have the code in front of me, but I suspect that it's because if a note is deleted, that id should not be recycled and applied to another note. <Dieterbe> but still, since you keep the last used id, and keep increasing it, you won't recycle id's. <Dusty> yeah, but the index in the list will change <Dusty> when you delete #4 <Dieterbe> oh <Dusty> the object with ID 5 becomes the object at #4 <Dieterbe> thanks buddy <Dusty> no problem. :) # again, makes perfect sense. But if you don't know the ins and outs of the datatypes, you're on your own. <Dieterbe> i had a question about your example for the decorator pattern. you use a socket and then you have 2 decorators that implement a send function which do some stuff (logging and what not) but also the actual sending on the socket <Dieterbe> and you mention you can have multiple decorators on the same object. but since each decorator also does the sending on the socket, doesn't that mean the sending happens multiple times? <Dusty> no, because the first decorator is decorating the second decorator <Dusty> which is decorating the socket <Dieterbe> ah yes you're right. and although you did not specify it like this in the explanation text, it should be clear from the code. # If I would have looked better at the code I would have figured it out. # I just assumed something had to be wrong, I'm too used to the way 'behaviors' are implemented in CakePHP. <Dieterbe> one last remark i have about the book: i couldn't find an explanation of static variables/properties. i did see a very short mention of static methods in the case study at the end of chap 3, i would have expected to have that info a bit more prominent, in it's own subsection or something <Dieterbe> especially because you use static class methods a few times throughout the book <Dusty> I had a long section on them and ended up removing it because the chapter was too long and one of my reviewers suggested that they aren't very good form in Python. <Dieterbe> hmm. i see
The writing is pretty informal, and here and there you'll find a subtle reference or joke. But of course that's not what you buy this book for.
I would say the "who this book is for" part is a bit too optimistic. You won't learn Python (3) from scratch by only using this book. It's not a book restricted to mere OO subjects (in python), but neither does it cover all basics of the Python language.
So if you are a python newbie, I would probably recommend you 'Dive into python'. It's free, covers the basics, but doesn't contain so many real life examples.
If you want to know more about OO in python, design patterns, some real life examples and techniques, or advice from a pro, then I definitely recommend this book.
Free chapter: Chapter No. 7 – Python Object-oriented Shortcuts
Posts for Sunday, August 22, 2010

Canada
I love tomboy. I drop tons of my ideas into it. And plans. Lists. Anything on my brain. The problem is as soon as I have more than one computer, like now with my netbook and laptop, all my thoughts are split in half. Ever since tomboy hit the scene years ago I've loved it but also known it needed synchronization to be the best and truly useful to me. I've only had sporadic luck with the sshfs sync. It worked last year. Now it doesn't.
Anyways, I finally couldn't stand it any longer and decided to sign up for an Ubuntu One account that goes with the Ubuntu Web Sync plugin shipped with Tomboy on Ubuntu. I'm not normally one for web services, I like to roll my own where I can (email, jabber, blog), but here since sshfs sync wasn't working and snowy (tomboy online) is pre alpha, I didn't have a choice.
(Actually, in hindsight I realize I could have tried and been using sync to local folder and placed that in my DropBox, whoops)
Anyways, it was painless and now my notes are synced to the cloud and my brain is healed. So thank you Ubuntu. I'm not a huge fan of proprietary solutions but no one else has a solution at all, so you win by virtue of just shipping. (Of course this isn't exactly a multi platform approach, I just thankfully only run Ubuntu on my laptops right now. A few years ago when I ran Gentoo on desktops/laptops this would have been a no go, and Dropbox would have probably floated to the top of my mind sooner)
Let that be a lesson to the rest of you, ideals are good, but solid options are better.
I need to get back into blogging, but like so many others, twitter has been eroding at that. We shall see.

USA
Posts for Saturday, August 21, 2010
Italy
Today I found the usual chinese trying to get in my smtp to send his spam to the world and I realized that fail2ban wasn’t working because the regexp used to match the offender is wrong.
This is the log entry (/var/log/mail)
Aug 21 22:45:30 myserver postfix/smtpd[12071]: warning: unknown[xxx.xxx.xxx.xxx]: SASL LOGIN authentication failed: authentication failure
and this is the regex that work , just remove the part after “authentication failed” (/etc/fail2ban/filter.d/sasl.conf)
failregex = (?i): warning: [-._\w]+\[<host>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed
Test it:
fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/sasl.conf
if you are on a slow server or on a big mail server use /var/log/mail.err instead
Posts for Friday, August 20, 2010

Slovenia
Well, I'm not very proud of it, but I got the Flattr button working somehow. I've added the static button to the theme's template, so it shows on every node.
OK, technically it's not pretty, but to be fair, my current Drupal install isn't either (that's also the reason why Drupal's Flattr module doesn't work for me in the first place).
Can't wait for Drupal 7 to come out, get myself a PlugComputer and migrate to it.
...actually can't wait until I get that done, with the state of my DB this should be quite an ugly ordeal :\
hook out >> taking a nap to cure the headache, then working on a text to finish my application for that legal counselling job
<!--break-->
Posts for Tuesday, August 17, 2010

USA
I've said it before: undo in Emacs is horrible. On the other hand, undo in Vim is awesome.
But this is true no longer. Now there are undo trees for Emacs! Yes, this news is so important I had to italicize and bold it. It's like Emacs has been punching me in the face for years, and today I got it to stop. I never thought I'd see the day.
And it works great too. You can even view the tree visually and navigate it with the cursor keys, which is a step up on what Vim offers out of the box.

In other news, Vim 7.3 is out and it now has persistent undo across reloads. It's like an arms race, and gleeful hackers reap the benefits.
USA
I’m not too happy the devicekit-power package has become unsupported but still remains in the tree as stable, with not even a word in elog or similar. This package depends on libusb:0, which has some pretty unfortunate bugs, resulting, at least for me, in power management only half working. I praise the developers of GNOME yet again for solid code writing that chugs along and still recognizes my battery and other things despite crashes like this.
It’s pretty easy to update and move on. Simply run emerge -1v upower and portage will handle the transition.
Posts for Monday, August 16, 2010
Belgium
I’ve made version 0.2 available of cvechecker. It fixes some build warnings and also supports the normal “make install” step. The pullcves command now also pulls in the latest versions.dat file. Special thanks to Per Andersson for reporting that the ./configure didn’t fail if sqlite3 or libconfig wasn’t available – that should be fixed now as well.
In my Gentoo overlay, cvechecker-0.2.ebuild has been put available. Thanks there to webkiller71 for helping out with a more sane approach to cvechecker-0.1.ebuild – I hope I didn’t screw up his changes in 0.2 too much ;-)

Germany
The picture you see on the right was taken a few days ago in our “new” house. We recently moved into a new place and the house we rent now was build in 1865 so the neighbors gave the owner this picture when he bought the place (a few years ago). It shows the house how it looked around 1955 and aggregates all the different owners and how the house was build and whatnot. I am not a historian but it is kinda neat.
In Germany we’ve had some discussions about Google Street View. Many people complained how a private company could do that and how it was a huge invasion into people’s privacy, especially considering how Google makes its money selling advertising and considering how good and effective Google is with crossreferencing and linking data.
The other side of the argument supported Google, pointed at the fact that those are just pictures (and you can get your house removed). This argument focuses on the possible uses of this neat technology.
Now I don’t want to rehash the whole thing (in fact I don’t really wanna link anything because most posts and texts about the whole discussion are borderline retarded, but I want to bring us to stand back and look at what’s really happening, apart from all the recent “Google hate” we’ve been seeing here.
Step one. Let’s restate what we can consider “fact”.
Step two. Let’s analyze some further thoughts.
Step three. Let’s draw conclusions.
All those complaints about the bad bad Google or the bad bad Government are not without merit. In fact they do have a lot of weight: Google could take that data and close it off at any given time. And just cause they publish anonymized data does not mean that they won’t use the unfiltered images for something shady in the background. But should that mean that useful services shouldn’t be implemented?
As we have also seen, many people don’t trust “the government”. I wouldn’t either. Because it’s my job to always check on my government to see that they ain’t breaking the rules for the simple reason that we are the people which makes us boss.
So with the government dropping out of the equation and profit-oriented organizations also not sounding all too pretty there can be only one conclusion: We need to find ways to have non-government, non-profit organizations handle that kind of stuff. They can provide the data in a form that we can consider “clean”. They can also provide it for free. But the crux of the matter is: Right now we lack a framework to really finance that kind of endeavor.
Money for big projects that might help the public either comes from the government or from companies. And if you start pissing those off by not giving them what they want, you will find yourself without funding quite quickly.
If there’s one thing we can learn from the whole Google shebang it’s that right now we have no way to publicly fund infrastructure in a reliable and independent way. That’s what should scare us, not that Google’s engineers decided to kinda “fix” the situation.
Think of how much historians in 20 years would thank us for a yearly updated OpenStreetView that would allow them to analyze and show how a certain area changed. We need to find way to fund those infrastructure projects and we better do it fast. Because when those things are all privatized I don’t see a big push for an independent solution pick up any steam.
People care about things working. They want to get something done and if something gets it done good enough that’s fine. The whole license and freedom angle that some people (like me) might support does not interest many people in the least. Wikipedia (or maybe better WikiLeaks) are somewhat good examples for what we want: Independend data providers that allow people to get something done. But how can we get those projects funded?
lately i had to create 31 classes( 31x .h and 31x .cpp), that is 62 files. i thought about doing that with Qt itself but i think this can be done much more elegant with python.
what i like most about python is the string handling using “”" and “”". this is very nice as one does not have to escape much. it’s basically copy’n'pasting the code and the places the script should replace some string names are altered using a $ sign.
#!/usr/bin/python # -*- coding: iso-8859-1 -*- import os import string from string import Template modules=""" Utils NoiseMapBuilderPlane 1 0 0 Utils RendererImage 1 0 0 Utils Image 1 0 0 Generator Perlin 0 0 1 Generator Billow 0 0 1 Generator RidgedMulti 0 0 1 Generator Checkerboard 0 0 1 Generator Const 0 0 1 Generator Cylinders 0 0 1 Generator Spheres 0 0 1 Generator Voronoi 0 0 1 Combiner Add 2 0 1 Combiner Max 2 0 1 Combiner Min 2 0 1 Combiner Multiply 2 0 1 Combiner Power 2 0 1 Modifier Abs 1 0 1 Modifier Clamp 1 0 1 Modifier Curve 1 0 1 Modifier Exponent 1 0 1 Modifier Invert 1 0 1 Modifier ScaleBias 1 0 1 Modifier Terrace 1 0 1 Selector Blend 2 1 1 Selector Select 2 1 1 Transformer Displace 1 3 1 Transformer RotatePoint 1 0 1 Transformer ScalePoint 1 0 1 Transformer TranslatePoint 1 0 1 Transformer Turbulence 1 0 1 Spring Mapgenerator 1 0 0 """ myclass_h=""" #ifndef $MYIFNDEF #define $MYIFNDEF #include <DataAbstractModule.h> #define ID "$MYMODULENAME" // http://libnoise.sourceforge.net/docs/group__modules.html /** @author Joachim Schiele <js@lastlog.de> */ class $MYCLASS : public DataAbstractModule { public: $MYCLASS(); ~$MYCLASS(); QString identify(); }; #endif """ # testing code for the .h creation #t = Template(myclass_h) #s = t.substitute(MYCLASS=myClassName, MYMODULENAME=myModuleName, MYIFNDEF=myIFNDEF) #print s myclass_cpp=""" #include "$MYMODULENAME.h" #include "ModuleFactory.h" #include "registermodule_macro.cpp" M_REGISTER($MYCLASS); $MYCLASS::$MYCLASS() : DataAbstractModule($IN,$MOD,$OUT) { setProperty("FIXME", 112); } $MYCLASS::~$MYCLASS() { } QString $MYCLASS::identify() { return ID; } """ # testing code for the .cpp creation #t = Template(myclass_cpp) #s = t.substitute(MYCLASS=myClassName, MYMODULENAME=myClassName,IN=portIN,MOD=portMOD,OUT=portOUT) #print s # this code will create directories, place cpp and h files into these directories newlines=modules.split('\n') for i in newlines: mylist=i.split() if len(mylist) > 0: myClassName=mylist[1] myCategoryName=mylist[0] myModuleName=myCategoryName + "::" + myClassName myIFNDEF=myCategoryName.upper() + "_" + myClassName.upper() + "__HH" portIN=mylist[2] portMOD=mylist[3] portOUT=mylist[4] t = Template(myclass_h) s = t.substitute(MYCLASS=myClassName, MYMODULENAME=myModuleName, MYIFNDEF=myIFNDEF) #print s # creating the directory for the module, based on it's class if not os.path.exists(myCategoryName.lower()): os.mkdir(myCategoryName.lower(), 0777) print "modules/" + myCategoryName.lower() + "/" + myClassName + ".cpp" # creating the .cpp file f = open(myCategoryName.lower() + "/" + myClassName + ".cpp", 'w') t = Template(myclass_cpp) s = t.substitute(MYCLASS=myClassName, MYMODULENAME=myClassName,IN=portIN,MOD=portMOD,OUT=portOUT) f.write(s) # creating the .h file f.close() f = open(myCategoryName.lower() + "/" + myClassName + ".h", 'w') t = Template(myclass_h) s = t.substitute(MYCLASS=myClassName, MYMODULENAME=myModuleName, MYIFNDEF=myIFNDEF) f.write(s) f.close()
Posts for Sunday, August 15, 2010

Slovenia
I've already stated my allegiance to FCron, but after using it for quite some while and writing an article or two about it already (see Publications subpage), I think it's time I shared my fcrontabs.
Since FCron is such a nice and vertisable command scheduler, I can depend that everything's going to get done even though my laptop is not up 24/7.
fcrontab -e systab lets me edit my system fcrontab (note: systab ≠ root's fcrontab):
# All FCron notifications are e-mailed to normal user MAILTO=hook # Updates 'slocate' in 'man' every day. %daily,nice(7),random,mail(no) * 10-14 makewhatis -u %daily,nice(7),random,mail(no) * 16-18 updatedb # Once a month (as soon as possible) my Portage tree is updated and the results e-mailed to my normal user's account. %monthly,nice(7)mail * 16-23 * eix-sync; emerge -DNuvp world # Once a month (on a random day in the second half of it) some general cleaning of the Portage tree; again e-mail of results. %midmonthly,nice(7),random,mail * 16-23 * eclean-dist --destructive --nocolor; eclean-pkg --destructive --nocolor; eix-test-obsolete detailed
And here's my normal user's everyday stuff, accessible by fcrontab -e:
# Twice a week the weather report gets printed automatically and an e-mail notifies me when I can take it from the printer or whether there's been a problem %weekly,mail * 06-23 sleep 500; wget <a href="http://www.yr.no/place/Slovenia/Ljubljana/Ljubljana/varsel.pdf" title="http://www.yr.no/place/Slovenia/Ljubljana/Ljubljana/varsel.pdf">http://www.yr.no/place/Slovenia/Ljubljana/Ljubljana/varsel.pdf</a> -O /tmp/vreme.pdf && lpr /tmp/vreme.pdf && echo "Weather report printed." || echo "ERROR: Weather report *not* printed!" ; rm /tmp/vreme.pdf* %midweekly,mail * 06-23 sleep 500; wget <a href="http://www.yr.no/place/Slovenia/Ljubljana/Ljubljana/varsel.pdf" title="http://www.yr.no/place/Slovenia/Ljubljana/Ljubljana/varsel.pdf">http://www.yr.no/place/Slovenia/Ljubljana/Ljubljana/varsel.pdf</a> -O /tmp/vreme.pdf && lpr /tmp/vreme.pdf && echo "Vremenska napoved je stiskana." || echo "NAPAKA: Vremenska napoved *ni* stiskana!" ; rm /tmp/vreme.pdf* # Using curl magic to automatically send updates to Status.net; I don't need e-mail notification of that ;) %nightly,mail(no) * * curl <a href="https://identi.ca/api/statuses/update.xml" title="https://identi.ca/api/statuses/update.xml">https://identi.ca/api/statuses/update.xml</a> -u johndearheart:<password> -d status='GNU John Dearheart → !discworld' %daily,mail(no) * * curl <a href="https://identi.ca/api/statuses/update.xml" title="https://identi.ca/api/statuses/update.xml">https://identi.ca/api/statuses/update.xml</a> -u dwtrivia:<password> -d status="`fortune discworld pqf -n 128 -s`"' → !discworld'
Note 1: I prefer to use the %*LY commands to define cronjobs, because they fit my needs the most. FCron itself uses all sorts of ways how to define the time when a cronjob should be executed — from strict date+time (like in "normal" Crons) to intervals and even defined by uptime.
Note 2: Of course, in the last two (f)cronjobs the passwords were censured ;)
I hope this whet your appetite and you'll be anxious to try it and find your own way of how to make your life easier with FCron :]
hook out >> doing "schoolwork" for my potential new legal counselling job
<!--break-->
Posts for Saturday, August 14, 2010
Hugo Pereira Da Costa and Thomas Luebking are geniuses. If you’ve used KDE 4.5, you’ve probably noticed that you can now drag windows by selecting any blank area. You’ve also probably read that, as expected, this only works with Qt apps. How does such hackery work? What in Qt allows this kind of interaction? How can a window decoration enable such an interaction with the window manager? How do we know which events on which widgets to intercept? I suggest that if you haven’t already seen it, you give oxygenwindowmanager.cpp a close read. It’s extremely educational.
Belgium
cvechecker version 0.1 is out. This is the first publicly available development release, so it’s still far from production-ready yet. However, it is usable so it can now be publicly analyzed to remove all icky bugs and such. I’m not planning (m)any new features (apart from the reporting script as mentioned on the tools’ homepage) before the first general available release, but any request will be gladly documented and taken in scope in future versions.
What is cvechecker? Well, it is a tool that strives to scan your system for installed software. For each software it detects, it attempts to discover which version you have. This information is stored in a local database. The tool then matches this information with the (publicly available) CVE data (security vulnerability information). If a CVE entry mentions the software/version you have, the tool will report this to you.
Who needs cvechecker? Noone needs it, but it can be interesting nevertheless. Users that install lots of software themselves and don’t use the Linux distribution’s package manager might benefit from this as the tool will then help them verify if a security update is needed or not. Users of LinuxFromScratch can do some security validation tests on their installations. Developers of particular packages (or even tools) can use the tool to be notified when one of their software’s has a CVE (which most likely results in a new version of the software to be made available).
Who needs cvechecker? No, this is not a duplicate paragraph – cvechecker needs input. Most of the work goes in detecting the available software and version. The method cvechecker uses is very rudimentary: run a (predefined) regular expression against the file (which is parsed with the strings command as this command understands ELF structures) and if the expression matches, it will extract the version (which is found using the expressions’ groups) and store this in the database. The rules are defined in the versions.dat file (also available from sourceforge), but this file is currently microscopicly filled – so lots and lots of additional rules need to be added. I’ll be adding more and more rules as I encounter them (or have immediate need for), but I can definitely use additional help here.
If you are interested in enhancing the versions.dat file, check out the cvechecker manual page – it describes the format and how it is used as well as some examples.
And yes, an ebuild is available in my overlay, but I’m no ebuild developer (it’s just easy to have them so Portage can track it) and the ebuild is butt-ugly (and probably also violates all QA policies).
The Netherlands
The last couple of days I have done some coding for Android. All my resentment towards java is coming back but getting some cool mobile app requires sacrifices! But I do not want to write about java today.
The problem I encountered when installing the Android SDK is that the some of the programs won’t run on non-multilib AMD64 installations. This is really annoying since I do not want to have 32bit libraries on my system (it is matter of principals!). But linux to the rescue! A simple multilib chroot allows me to compile and deploy my android apps!
Mounting (with bind) the source directory allows me to code in my normal env while compiling in the chroot. Which is not a big thing for me since I code in VIM but for IDE users this might be an advantage!
So for all native AMD64 users there is hope! But it would be better for the Android devs to fix the binaries!
Posts for Friday, August 13, 2010

Netherlands
tl;dr: Sometimes stereotypes are true.
I came across this rather excellent comic about how people see your resume depending on who they are and after glazing over it and appreciating it as one of my ~5-10 daily interweb funnies, I looked over it again and noticed that it’s eerily accurate.
Planet Larry is not officially affiliated with Gentoo Linux. Original artwork and logos copyright Gentoo Foundation. Yadda, yadda, yadda.