Search Results: "xam"

1 October 2008

Ross Burton: Translation Nightmare

I just got a new bug titled Very weird translation template, need comments in .pot file to clarify, and giggled to myself. I was wondering how long it would be for this bug to be filed. The problem is that whilst most of the translatable strings in Tasks are pretty boring: "Tasks", "today", "Priority" and so on, all of a sudden the template goes a bit mental:
"^(?<task>.+) (?:by due on)? (?<month>\\w+) (?<day>\\d 1,2 )(?:st nd rd th)?$"
Apparently the average translator doesn't think that learning PCRE-style regular expressions, and reading the source that uses this string to understand how it is to be used, is appropriate. [note: this is sarcasm] Maybe I should have added some translator comments to clarify exactly what I meant by this. These monster strings (all in koto-date-parser.c) are GRegex regular expressions which are used to parse the user's input to try and extract meaningful date information. To translate these strings you'll need to have a basic understanding of regular expressions: if you don't then skip them and hopefully someone who does will finish the translation. If you know regular expressions then translating these strings is easy, honest. The golden rule is to never translate the words which look like this: (?<foo>. These are markers which identify portions of the input (such as task or month) and need to remain in English, although they can be moved around if required. The rest of the strings are translatable. I'll give an example using the French translation by Stéphane Raimbault. First, the string in English and a worked example:
"^(?<task>.+) (?:by due on)? (?<day>\\d 1,2 )(?:st nd rd th)? (?<month>\\w+)$"
First, we have a sequence of any characters identified as task, which magically expands to be as many as possible. This is optionally followed by one of the words "by", "due" or "on". This is followed by one or two digits identified as day followed by "st", "nd", "rd" or "th". Finally a sequence of characters which is identified as month. If the user had entered "pay bills on 2nd june" then task would be "pay bills", day would be "2", and month would be "june". Tasks can then turn "june" into a month number through other translations, and it now knows what date the user entered. In French, this translates as follows:
"^(?<task>.+) (?:pour pr vu pour le)? (?<day>\\d 1,2 )(?:er e)? (?<month>\\w+)$"
See, I said it was easy! All I need now is a legion of translators who understand regular expressions enough to correctly translate the new Tasks... [this, again, is sarcasm] Luckily, plans are afoot to move the Tasks source to the GNOME Subversion server, so the full fury of the GNOME translation team can attack this. NP: Trailer Park, Beth Orton

29 September 2008

Ian Wienand: Kernel Development Course

Here are some slides and examples I used for a kernel course I developed (some time ago now). The course was aimed at C developers who wanted an introduction to both general UNIX-style user-space and Linux kernel development with a focus on embedded systems issues. The course is aimed at two 8-hour days, and is pretty packed in even then. The first day is user-space development and kernel building, focusing on things like make, autotools, advanced gcc, getting cross-compilers working, configuring the kernel and building. The second day we get into kernel internals; building up a kernel module to produce some simple proc nodes, take data, crash and debug, etc, look at internals like concurrency and the driver model, and focus on USB quite a bit. Here is a tarball of the entire thing, including the examples. Hopefully these can help out anyone tackling the design of such a course.

Russell Coker: Never Trust a DRM Vendor

I was reading an interesting post about predicting the results of the invasion of Iraq [1]. One of the points made was that the author rejected every statement by a known liar (which includes all the world leaders who wanted the invasion). So basically regarding every statement by a known liar as potentially a lie led to a better than average prediction. It seems to me that a similar principle can be applied to other areas. A vendor or advocate of DRM (Digital Restrictions Management) [2] has already proven that they are not concerned about the best interests of the people who own the computers in question (who paid for the hardware and software) - they are in fact interested in preventing the owner of the computer from using it in ways that they desire. This focus on security in opposition to the best interests of the user can not result in a piece of software that protects the user’s best interests. I believe that any software with DRM features (other than those which are requested by people who purchase the software) should be considered to be malware. The best example of this is the Sony BMG copy protection scandal [3]. Note that I refer to the interests of the people who own the computers - not those who use them. It is quite acceptable to write software that serves the buyer not the end-user. Two examples are companies that want to prevent their employees doing “inappropriate” things and parents who want to restrict what their children can do. We can debate about what restrictions on the actions of employees and children are appropriate, but it seems clear that when software is purchased for their use the purchaser has the right to restrict their access. Also note that when I refer to someone owning a computer I refer to an honest relationship (such as parent/child or employer/worker) not the abusive relationships that mobile phone companies typically have with their customers (give the customer a “free” phone but lock it down and claim that they don’t own it). Mobile phones ARE computers, just rather limited ones at this time.

27 September 2008

Adeodato Sim : A good window manager for me?

For some time now I’ve been wanting to find a window manager that allows me to improve my current “implementation” of my workflow. I currently use KWin. Since I’m a bit overwhelmed by the number of window managers available, some of them being perhaps too flexible, and since what I want is very, very specific, I thought I’d go for a lazy-web post. My workflow is simple: I don’t do tiling, and my sole wish is that a simple key combo (Mod + one letter) can activate the window designated by that combo. Ideally I can statically assign combos to each application (or, in general, window properties) from the configuration file, but I can also use a special combo to change on-the-fly the current keybindings for a particular window. At the moment I’m “faking” this with several methods combined: In my new world, I’d be able to just type Mod+M to activate Minirok, Mod+A to activate Akregator, Mod+B for the browser, and several others keybindings for each instance of my terminal emulator (one for my -release work, one for my ongoing Uni work, another for my ongoing programming work). I really, really want that’s it’s just one Mod plus a key, because I’m convinced that’d work out very well for me (though it should offer a way to cycle among all windows as well). As for the rest, ability to display Kicker (KDE’s panel) gracefully would be a plus. Please mail me with your suggestions, but I’d appreciate if you could include pointers to the relevant parts of the documentation, or even examples, of how to accomplish what I want. I’ve tried eg. awesome 3, and I only managed to get lost in Lua-land.

26 September 2008

Christian Perrier: Painful shoulder

This week, I sufferred and still suffer from a very painful left shoulder, which handicaps me for most activities. That happened when I falled during one of my regular runs, after hitting a stone on the floor. I probably falled right on my left shoulder and, since then, it is more and more painful. This is indeed an encore of something that happened already in July when I had a very bad fall while running in the woods, because of a stupid low-level fence meant to keep boars outside the forest. I unfortunately suspect a broken shoulder or so. No run for this week-end, then. Sad, as I was indeed on my way back to long distance runs (22km last week) in an attempt to break the 30km barrier until the end of the year. I'm even handicapped for typing on my keyboard which, as my wife says, should be the final argument to bring me to a doctor and have rido exams....(I hate seeing doctors!).

Kapil Paranjape: Why people write Free Software

Some people troll free software lists with remarks like:
Linux will never be able to displace MacOS/Windows since the latter are much more pretty/user-friendly. You will lose.
Such people assume that hackers write free software because they "hate Microsoft" or "hate capitalism" or have some other pet hates. However, it should be obvious that such a large creative effort cannot be sustained if it is based on such negative emotions.1 There are a number of positive reasons why one works on free software. The software that I like to work on is software2 that I use or want to use. This has some consequences which are worth underlining: Giving others the "four freedoms" results in wider critical examination of these aspects. Bugs must be acknowledged and fixed --- or elevated to features! Moreover, there are parts of the task that are "obvious" to me but I would have to ask others for advice on other parts. So I gain a lot by being part of a larger community. There are other reasons to write free software. For example, someone may pay you to do it. However, this is just deferring the same question to your employer. In most cases, your employer already has a use in mind for the software. The employer has the same concerns as I outlined above except that the job of writing the code is being out-sourced. The usability, portability and long-term maintainability are probably even bigger concerns for your employer. "Last but not the least" (as we always wrote in our school-day essays) free software is fun! You share ideas with people from across the globe and to show them your own clever little tricks. Good code and good themes resonate with people who may not even speak the same language as you do. What could be nicer than that!

  1. One should not ignore the strength of negative emotions. Enormous war machines are built on negative emotions.
  2. I use the term "software" here for computer programs. Most of what is written applies equally well to books, articles and documentation --- which are "software for the brain".

Mark Brown: Whats the standard Linux audio API?

Lennart Pottering’s post about the sound APIs available for Linux appears to have caused some consternation from people working with the modern out of tree OSS drivers who feel that the current, out of tree, OSS drivers are being unfairly maligned. This rather misses the point of his post. The fact that there are improved versions of the OSS code doesn’t really help developers who are trying to target current Linux distributions which only ship the old OSS drivers. From this point of view the new OSS drivers are probably best looked at as a completely different product. Joss is right, though - most applications should be working with a higher level user space API than either ALSA or OSS. One of the most obvious examples of this is in the embedded space where there are often vast numbers of controls that need to be exported in order to support the complex audio routing that devices like phones can have. Most of these should only be touched very occasionally when changing use case and should therefore be hidden from normal applications where they’re at best irrelevant and at worst confuse end users. They do, however, need to be exposed by the kernel in order to allow user space the flexibility to manage the audio configuration of the system at run time.

25 September 2008

Pablo Lorenzzoni: Brazilian E-Voting

DISCLAIMER: Paranoid rant ahead. You ve been warned. Every two years, around this time of the year, I feel concerned: it s voting time in Brazil. For quite some time now, Brazil has had electronic voting, but that doesn t make me more confortable with it. Yes, having the results within the same day is an enormous advantage, but I am not sure about the security of the whole process. You can call me paranoid (and surely I am a bit), but there are some things that give me the creeps about it. For a start, let s look at the operational process. The voting machines are certified and sealed by Electoral Justice officers the week before the voting. They are opened in the electoral section by those officers in the presence of common citizens. Those citizens are called to work in the Electoral process usually for four or five elections in a row, being replaced after that by newcomers . The voting machines are not connected to any network. During the day, voters come with the voting document (voting is mandatory in Brazil), one of those citizens enable the voting machine by typing the document unique number in it, the voter give his vote and go home. Then the voting machine is unable to receive votes if not enabled by entering another document number, and it goes on and on the whole day long (pretty boring work ). At the end of the day, the president of the section (usually the most experienced of those citizens) close the voting machine, prints a tally sheet , hand a colored 3 -inch floppy disk to the Electoral Justice officer with the votes and go home. Other officers will pick up the voting machines later on. The first officer then goes to the voting processing central of the Electoral Justice and within hours we will know the result of the election. As you can see, there are lots of points of failure in the whole process! All this sealing of voting machines are just a matter of trust. First point: there s no way we can know for sure if the machine does what it s suppose to do. Even if officers say that they randomly choose machines to be tested, there s no way to know how random is that. There s a report [pt-BR] made by a prestigious university (English summary here), stating that 1/3 of the voting machines in a particular studied state had corrupted log-files (among other important security problems!). This study also showed differences in the countings (sometimes as large as 20-thousand votes!)... Hey! This is supposed to be a deterministic system: if nothing in the conditions changed, counts should always match! Until recently, closed-source software were used in the voting machines, but that has changed recently. I doubt that it makes any difference, since we ll never really know what is actually running in the machine. Surely, Electoral Justice officers know (or should know), so we d have to trust them So second point: we don t know how the voting is processed within the machine. (Also, we don t know for sure the machine doesn t have a network connection. It may have a wireless connection we don t know about and can be passing all the votes to someone else, or even receiving instructions But since that can be spotted with a scanner, I ll trust other paranoids have already done that.) Surely the machine must be enabled before every vote with the voters document number. If it were not, how could we know that no one voted twice, or that a non-voter have voted? But we don t know how the machine records that! Third point: we cannot know if the voting machine database doesn t link the voter to the vote. That is a nasty one it opens up the possibility of voting by intimidation . Also, the tally sheet that is printed at the end of the day only brings the total of votes, the total of absent-voters, and the votes each candidate (or party) have received. So, on to the fourth point: there s no way of knowing for sure that your vote was counted right (or was counted at all!). At least a copy of this tally sheet is glued at the entrance of the voting section, so an independent audit only on the numbers is do-able (although hard to do!). What happens to the colored disk between the voting section and the voting processing central is not known. It goes with the officer and what he does with it is just a matter of trust. Now for the most insteresting point: the security is based on the color of the disk!. The Electoral Justice checks if the officer handed the right colored disk and puts the data in the system. Surely (?) they might have some way to check data integrity other than that On the same issue, maybe even worse: even if the disk is not tampered, but just read (or copied) by the officer before being handed, and if the database links the voter to the vote, this information is valuable, and may be sold. Finally, since we don t know (and have no way to know for sure) what the machine does, we don t know if the machine keeps a copy of the voting database in it. So when it is taken back by other officers, we cannot know whether the same thing that may happen to the disk also could happen with the machine. I am missing a lot of things about the whole Brazilian E-Voting process, and also I surely have missed other points of failure. I heard of fraud in the past, with paper ballots, and those were pretty nasty frauds. But this whole tale of impossible fraud in e-voting is nothing but a tale (as fraud is more than possible!). I think we have to begin investigating other systems, surely with cryptography involved. A system like Debian s, far from perfect (we all have to trust secretary s word on the secrecy of the voting system key), is much better, for instance. I understand that it s not simple enough for non-geeks, but there might be a way! It doesn t need to be a whole new system! I would be happy if, as an example, the tally sheet printed a hash of my vote that I could verify later on or if the security of the disk is not just color-based or if the tally sheets had a way of being validated and be available on-line for auditing (and not just glued at the entrance of every voting section). Look! I am not distrusting any officer a priori... I think the message is auditing should be made easy... then I could trust a version of Linus s Law adapted to E-Voting: Given enough eyeballs, all frauds can be discovered .

John Goerzen: New version of datapacker

I wrote before about datapacker, but I didn't really describe what it is or how it's different from other similar programs.

So, here's the basic problem the other day. I have a bunch of photos spanning nearly 20 years stored on my disk. I wanted to burn almost all of them to DVDs. I can craft rules with find(1) to select the photos I want, and then I need to split them up into individual DVDs. There are a number of tools that did that, but not quite powerful enough for what I want.

When you think about splitting things up like this, there are a lot of ways you can split things. Do you want to absolutely minimize the number of DVDs? Or do you keep things in a sorted order, and just start a new DVD when the first one fills up? Maybe you are adding an index to the first DVD, and need a different size for it.

Well, datapacker 1.0.1 can solve all of these problems. As its manpage states, "datapacker is a tool in the traditional Unix style; it can be used in pipes and call other tools." datapacker accepts lists of files to work on as command-line parameters, piped in from find, piped in from find -print0. It can also output its results in various parser-friendly formats, call other programs directly in a manner similar to find -exec, or create hardlink or symlink forests for ease of burning to DVD (or whatever you'll be doing with it).

So, what I did was this:


find Pictures -type f -and -not -iwholename "Pictures/2001/*.tif" -and \
-not -wholename "Pictures/Tabor/*" -print0 \
datapacker -0Dp -s 4g --sort -a hardlink -b ~/bins/%03d -


So I generate a list of photos to process with find. Then datapacker is told to read the list of files to process in a null-separated way (-0), generate bins that mimic the source directory structure (-D), organize into bins preserving order (-p), use a 4GB size per bin (-s 4g), sort the input prior to processing (--sort), create hardlinks for the files (-a hardlink), and then name the bins with a 3-digit number under ~/bins, and finally, read the list of files from stdin (-). By using --sort and -p, the output will be sorted by year (Pictures/2000, Pictures/2001, etc), so that photos from all years aren't all mixed in on the discs.

This generates 13 DVD-sized bins in a couple of seconds. A simple for loop then can use mkisofs or growisofs to burn them.

The datapacker manpage also contains an example for calling mkisofs directly for each bin, generating ISOs without even an intermediate hardlink forest.

So, when I wrote about datapacker last time, people asked how it differed from other tools. Many of them had different purposes in mind. So I'm not trying to say one tool or the other is better, just highlighting differences. Most of these appear to not have anything like datapacker --deep-links.

gaffiter: No xargs-convenient output, no option to pass results directly to shell commands. Far more complex source (1671 lines vs. 228 lines)

dirsplit: Park of mkisofs package. Uses a random iterative approach, few options.

packcd: Similar packing algorithm options, but few input/input options. No ability to read a large file list from stdin. Could have issues with command line length.

Enrico Zini: Write your own launcher

Write your own launcher I am at OpenExpo and while chatting about KDE 4.1 with the nice people at the KDE booth, I realised that some of the Debtags Technology could be used to make a really good application launcher. After a bit of prototyping, I present you the Application Launcher Startup Kit:
git clone http://people.debian.org/~enrico/2008-09/launcher

There are two python scripts in it: index that indexes your existing .desktop files in a Xapian database, and query that contains a function to query the index, and when run with the query keywords as parameters, it shows the results. You give it a list of terms (and possibly of currently selected categories), and it gives you: It's more than fast enough to do all of this in real time, as the user types. For example, on my system:
$ ./query imag
Found: 55 /usr/share/applications/gqview.desktop
Found: 51 /usr/share/applications/gimp.desktop
Found: 48 /usr/share/applications/gpicview.desktop
Found: 46 /usr/share/applications/camorama.desktop
Found: 44 /usr/share/applications/inkscape.desktop
Found: 42 /usr/share/applications/geeqie.desktop
Completion: image
Completion: imagemagick
Completion: images
Tagcloud: 2DGraphics 0.661410884419
Tagcloud: Application 0.489939013302
Tagcloud: Core 0.331070153265
Tagcloud: GTK 0.158799073563
Tagcloud: Graphics 1.0
Tagcloud: Photography 0.426417355406
Tagcloud: RasterGraphics 0.661410884419
Tagcloud: Utility -0.3383614892
Tagcloud: VectorGraphics 0.213729717371
Tagcloud: Video 0.364913248472
Tagcloud: Viewer 0.806009703748
Spellchecked: image
$ ./query word proc
Found: 100 /usr/share/applications/ooo-writer.desktop
Found: 69 /usr/share/applications/efax-gtk.desktop
Completion: word processor
Completion: word processors
Tagcloud: GTK -0.255400677833
Tagcloud: Office 1.0
Spellchecked: 
Spellchecked: doc

Now, it's just a matter of putting a GUI on top of it. I am not going to do it: that is up to you.

24 September 2008

Norbert Tretkowski: Init Script for MySQL Proxy in Debian

This morning I finally found some time to add an init script to the Debian package of mysql-proxy (0.6.1-3 which includes it was just uploaded to unstable, I will try to get a freeze exception for lenny). It is disabled by default, because mysql-proxy is quite useless without a proper configuration. It can be enabled in /etc/default/mysql-proxy, here is an example:
ENABLED="true"
OPTIONS="--proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua
         --proxy-address=192.168.1.140:3306
         --proxy-backend-addresses=192.168.1.20:3306
         --proxy-read-only-backend-addresses=192.168.1.23:3306
         --proxy-read-only-backend-addresses=192.168.1.24:3306"
In this example the proxy binds to 192.168.1.140 port 3306 and does read/write splitting. Writing statements are directed to 192.168.1.20 port 3306 (master), and reading statements are loadbalanced between 192.168.1.23 port 3306 (first slave) and 192.168.1.24 port 3306 (second slave).

23 September 2008

Joey Hess: awesomely frustrated

Just spent a good two^Wthree hours trying to configure awesome 3.0 to match my awesome 2.x setup. Docs are effectively nonexistant. So far, I'm stuck on several fronts: Anyone else hate lua, or at least build-your-own-WM-in-lua config files for window managers that used to have simple config files?

Russell Coker: OpenID Delegation

I’ve just installed Eran Sandler’s OpenID Delegation Plugin [1]. This means that I can now use my blog URL for OpenID authentication. I’ve also included the plugin in my Wordpress repository (which among other things has the latest version of Wordpress). One thing that I consider to be a bug in Eran’s plugin is the fact that it only adds the OpenID links to the main URL. This means that for example if I write a blog comment and want to refer to one of my own blog posts on the same topic (which is reasonably common - after more than two years of blogging and almost 700 posts I’ve probably written a post that is related to every topic I might want to comment on) then I can’t put the comment in the URL field. The problem here is that URLs in the body of a blog comment generally increase the spam-score (I use this term loosely to refer to a variety of anti-spam measures - I am not aware of anything like SpamAssassin being used on blog comments), and not having OpenID registration also does the same. So it seems that with the current functionality of Eran’s plugin I will potentially suffer in some way any time I want to enter a blog comment that refers to a particular post I wrote. deb http://www.coker.com.au etch wordpress My Wordpress Debian repository is currently available with the above APT repository. While it specifies etch it works with Lenny too (my blog currently runs on Lenny). I will eventually change it to use lenny in the name. For the OpenID server I am currently using the OpenID service provided by Yubico as part of the support for their Yubikey authentication token [2] (of which I will write more at a later date). I think that running their own OpenID server was a great idea, it doesn’t cost much to run such a service and it gives customers an immediate way of using their key. I expect that there are more than a few people who would be prepared to buy a Yubikey for the sole purpose of OpenID authentication and signing in to a blog server (which can also be via OpenID if you want to do it that way). I plan to use my Yubikey for logging in to my blog, but I still have to figure out the best way of doing it. One thing that has been discussed periodically over the years has been the topic of using smart-cards (or some similar devices) for accessing Debian servers and securing access to GPG keys used for Debian work by developers who are traveling. Based on recent events I would hazard a guess that such discussions are happening within the Fedora project and within Red Hat right now (if I worked for Red Hat I would be advocating such things). It seems that when such an idea is adopted a logical extension is to support services that users want such as OpenID at the same time, if nothing else it will make people more prone to use such devices. Disclaimer: Yubico gave me a free Yubikey for the purpose of review. Update: The OpenIDEnabled.com tool to test OpenID is useful when implementing such things [3].

22 September 2008

Adam Rosi-Kessel: An Annotated Guide to the Financial Meltdown (Podcast Edition)

I don’t have the expertise to intelligently explain the entire global financial meltdown myself, but here are a few resources that merit wide dissemination, especially if you are a podcast-listener:
Thinking the bailout through What is this bailout supposed to do? Will it actually serve the purpose? What should we be doing instead? Let s talk. First, a capsule analysis of the crisis. 1. It all starts with the bursting of the housing bubble. This has led to sharply increased rates of default and foreclosure, which has led to large losses on mortgage-backed securities. 2. The losses in MBS, in turn, have left the financial system undercapitalized doubly so, because levels of leverage that were previously considered acceptable are no longer OK. 3. The financial system, in its efforts to deleverage, is contracting credit, placing everyone who depends on credit under strain. 4. There s also, to some extent, a vicious circle of deleveraging: as financial firms try to contract their balance sheets, they drive down the prices of assets, further reducing capital and forcing more deleveraging. So where in this process does the Temporary Asset Relief Plan offer any, well, relief? The answer is that it possibly offers some respite in stage 4: the Treasury steps in to buy assets that the financial system is trying to sell, thereby hopefully mitigating the downward spiral of asset prices. But the more I think about this, the more skeptical I get about the extent to which it s a solution. Problems: (a) Although the problem starts with mortgage-backed securities, the range of assets whose prices are being driven down by deleveraging is much broader than MBS. So this only cuts off, at most, part of the vicious circle. (b) Anyway, the vicious circle aspect is only part of the larger problem, and arguably not the most important part. Even without panic asset selling, the financial system would be seriously undercapitalized, causing a credit crunch and this plan does nothing to address that. Or I should say, the plan does nothing to address the lack of capital unless the Treasury overpays for assets. And if that s the real plan, Congress has every right to balk. So what should be done? Well, let s think about how, until Paulson hit the panic button, the private sector was supposed to work this out: financial firms were supposed to recapitalize, bringing in outside investors to bulk up their capital base. That is, the private sector was supposed to cut off the problem at stage 2. It now appears that isn t happening, and public intervention is needed. But in that case, shouldn t the public intervention also be at stage 2 that is, shouldn t it take the form of public injections of capital, in return for a stake in the upside? Let s not be railroaded into accepting an enormously expensive plan that doesn t seem to address the real problem.
If our regular discourse looked like this, I’m pretty sure we would have never ended up with this mess.
Finally, the On the Media podcast shows how the media is now actually doing a fairly decent job covering current financial events (having thankfully dropped the pig-makeup stories!), although it was apparently mostly asleep at the wheel in the events leading up to the crash. E.g.:
Actually, a couple of very interesting examples of false balance. Back in the day and no one remembers but back in 2003, New York had an [LAUGHS] attorney general named Eliot Spitzer. And he was going to war with the comptroller of the currency, and the war was over whether or not New York State anti-predatory lending laws could apply to nationally chartered banks. What happened was that almost all the states attorneys-general picked up on this issue and this is 2003, 2004 [LAUGHS], 2005 and they’re seeking to rein in nationally chartered banks and their lending practices in the subprime category. The press, predictably, and kind of shamefully, I think, treated this as some sort of ping-pong match between Eliot Spitzer and the Bush Administration. I’m telling you, beneath the fight between officials there were a lot of signs that something was sort of rotten going on between lenders and borrowers. That s a pretty good, you know, sort of smoke signal to the press to go out and explore the issue more deeply, and they really didn’t.
Technorati Tags: , , , , , ,

Michael Schutte: VAC: Prague (September 23rd to 26th, 2008)

Tomorrow, a long bus ride to the capital of the Czech Republic will set off the last trip together with my high school classmates before the final exams in spring. We are to leave half an hour past 6am local time; I m surprised to find that my alarm watch can be configured to get on my nerves at five o clock in the morning. Until Friday, instead of connectivity I will have medieval buildings and woozy-for-some-reason teenagers all around me, so please don t expect me to reply to mails before Saturday. I ve been really looking forward to these holidays for weeks (hint: the school year started a fortnight ago). So glad they re finally here! PS: I m going to miss the party, so allow me to pre-congratulate 500000-submitter and the prospective winner of the contest. Cheers!

Ond&#345;ej &#268;ert&iacute;k: master studies

I did it! :) I defended my thesis and passed master finals from theoretical physics at Charles University in Prague couple hours ago.

After almost dropping out of my school exactly a year ago for not having enough credits to go to the next year, I gave myself an obligation to finish my school on time. I worked very hard the last year, I had to do 8 exams, some of them very hard, requiring more than a week of thorough learning and 9 seminars, requiring a lot of work too and also a master thesis, for which I had to had working finite element solvers and together with SymPy it took all my time and energy. I even had to cancel my trip to Austin and Caltech for the SciPy conference. But I finished my school after all, I am very happy about it.

Last year, two of my friends bet $100 between themselves that I will not finish on time. Jarda, who believed in me is now at Princeton doing his Ph.D. Matou , who didn't believe in me, will now pay $100 to Jarda. I think that life is fair.:)

Now I'll be visiting pubs quite often and then I'll fix some long standing issues in SymPy, hopefully finish my Debian task & skills (to finally become a Developer couple months after that) and finally do useful stuff for my research with a fresh head now.

21 September 2008

Russell Coker: Things you can do for your LUG

A Linux Users Group like most volunteer organisations will often have a small portion of the membership making most of the contributions. I believe that every LUG has many people who would like to contribute but don’t know how, here are some suggestions for what you can do. Firstly offer talks. Many people seem to believe that giving a talk for a LUG requires expert knowledge. While it is desired to get any experts in the area to share their knowledge, it is definitely not a requirement that you be an expert to give a talk. The only requirement is that you know more than the audience - and a small amount of research can achieve that goal. One popular talk that is often given is “what’s new in Linux”. This is not a talk that requires deep knowledge, it does require spending some time reading the news (which lots of people do for fun anyway). So if you spend an average of 30 minutes a day every week day reading about new developments in Linux and other new technology, you could spend another minute a day (20 minutes a month) making notes and the result would be a 10 to 15 minute talk that would be well received. A talk about what’s new is one way that a novice can give a presentation that will get the attention of all the experts (who know their own area well but often don’t have time to see the big picture). There are many aspects of Linux that are subtle, tricky, and widely misunderstood. Often mastering them is a matter that is more related to spending time testing than anything else. An example of this is the chmod command (and all the Unix permissions that are associated with it). I believe that the majority of Linux users don’t understand all the subtleties of Unix permissions (I have even seen an employee of a Linux vendor make an error in this regard while running a formal training session). A newbie who spent a few hours trying the various combinations of chmod etc and spoke about the results could give a talk that would teach something to almost everyone in the audience. I believe that there are many other potential talk topics of this nature. One thing that is often overlooked when considering how to contribute to LUGs is the possibility of sharing hardware. We all have all the software we need for free but hardware still costs money. If you have some hardware that hasn’t been used for a year then consider whether you will ever use it again, if it’s not likely to be used then offer it to your LUG (either via a mailing list or by just bringing it to a meeting). Also if you see some hardware that is about to be discarded and you think that someone in your LUG will like it then grab it! In a typical year I give away a couple of car-loads of second-hand hardware, most of it was about to be thrown out by a client so I grab it for my local LUG. Taking such hardware reduces disposal costs for my clients, prevents computer gear from poisoning landfill (you’re not supposed to put it in the garbage but most people do), and helps random people who need hardware. One common use for the hardware I give away is for children. Most people are hesitant to buy hardware specifically for children as it only takes one incident of playing with the switch labeled 240V/110V (or something of a similar nature) to destroy it. Free hardware allows children to get more access to computers at an early age. Finally one way to contribute is by joining the committee. Many people find it difficult to attend meetings, so attending a regular meeting and a committee meeting every month is difficult. So if you have no problems in attending meetings then please consider contributing in this way.

20 September 2008

Francois Marier: Getting your project included into Free Software distributions

After releasing a new Free Software project to the world, you may be interested to see it included by the main Linux or Free Software distributions. After all this is the easiest way for end-users to download and install your software.

Here are a couple of technical details that will increase the chances that your project will be picked up by a distribution.
Can I distribute this software?The first question that a distribution maintainer will need to answer is this one: can my distribution legally distribute this piece of software?

There are two ways you can help here:Once your software has past this check, the next question will be of course: does it actually work?
Will it work on my distro?To answer this question, the maintainer will have to install the software and figure out all of the external dependencies that need to be installed at the same time.

Therefore, your tarball should include:What's changed?Another element that can make life easier for the maintainers of your software in downstream distributions is to include indications of what changes from one release to the next.

One important detail is to use a sane versioning system. In a nutshell, this means:Another thing that you should include is a changelog (normally in a file called Changes or ChangeLog). This document will be used by maintainers to decide when to upgrade to a new version and to figure out which bugs may be fixed by the new version. It should contain:Finally, to make sure that distro maintainers don't miss new releases of your software, make sure you sign your project up on Freshmeat and announce new releases there.
Proposing your Package to DistrosOn Debian, the main way that users and upstream developers can suggest packages for inclusion in the archive is through the Debian Bug Tracking system. Bugs are filled against the special wnpp (Work-needed and Prospective Packages) pseudo-package and are titled something like RFP: superfoo -- bringing more foo to the desktop where RFP stands for "Request For Package".

Alternatively, if you are a Debian/Ubuntu user, you may also want to build and maintain the package yourself. In which case, you will need to find a sponsor.

Other distributions have different procedures. Feel free to leave a comment explaining what these may be.

More detailed information on getting packaged for Debian is available on the Debian wiki.

19 September 2008

Francois Marier: Choosing the right license for your new Free Software/Open Source project

Writing the software is only one component of a successful Free Software project. If you want to build a community around your pet project, there are a number of important things you need to do but which typically fall outside of the "coding" job. One of these tasks is choosing a license.

A license choice is very personal since it involves putting in writing the permissions and protections that you want to give with respect to your code. However, your choice of license will have a number of implications.
"A license can ruin a perfectly good piece of software"
- Jon Stevens
Whenever possible, try to avoid:
  1. writing your own license
  2. choosing a license which is incompatible with the GPL
To make sure that your project can be included in a Free Software distribution like Debian and to make your code most useful to other people, it is highly recommended that you choose a standard license. Common ones include the GPL, LGPL, the Modified BSD license and the Apache license. You can find a more exhaustive list on the Free Software Foundation website.

Common licenses are well understood by the community and have stood the test of time. Their compatibility with other licenses are also much clearer. This is important if you'd like your code to be reused inside other projects, but also if you want to include code from other sources inside yours.

The standard licenses are also more likely to make sense in different countries. The latest version of the GPL, for example, was reviewed by lawyers from all over the World. Whatever you come up with is unlikely to have this level of scrutiny. If you think that the existing licenses don't fit your needs, please write to licensing@fsf.org to discuss your specific situation and avoid practical problems.

So take the time to familiarize yourself with common licenses and then decide for yourself what protections you want to give to your code. Then, add the following to your tarball before you publish your source code online:
  1. a copy of the license
  2. a clear copyright statement in a file like README
Here's an sample copyright statement for a piece of software under the latest version of the GNU General Public License:
Email-Reminder - Receive emails for events like birthdays and anniversaries
Copyright (C) 2004-2008 by Francois Marier (fmarier@gmail.com)

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
This helps distributors and contributors by explicitly stating the license version as well as the name and contact details of the copyright holder.

Next up: some tips and ideas about what to provide along with your source code

18 September 2008

Isaac Clerencia: Sketching words

Some months ago I came across Sketch Engine. Sketch Engine is a website that offers a collection of pre-loaded corpora in several languages and the ability to automatically extract collocation information from them among other things. You can get a 30-day free trial account if you want to check it out, the point is that I thought it was really cool, but it was a bit pricy, 55 euros/year for an individual and 1080 euros/year for a site (up to 50 employees and students) and these were the academic licenses!!! And I don’t even have any real need for it :P So I thought it would be an interesting project to do something similar, albeit just focusing in the ‘word sketching’ part, as described in this paper. After a weekend I got it working although I didn’t devote any second to make it look good as you can appreciate: Collocations and other stuff. For now only the corpus of the state of the union addresses is loaded, with almost 400000 words. You can select that corpus, click on sketch and get the sketch of any word, for example, the ‘word sketch’ for problem. We can see that the adjective used more times with ‘problem’ is ’serious’, although if we look at the relative frequency it’s ‘complex’. The verb which has ‘problem’ as object more times is ’solve’ followed by ‘approach’, ‘address’ and ‘deal’. You can also click on the numbers to see the actual sentences in which these words appear, for example, ’serious problem’. So how does it work? First of all it does part of speech tagging using Apertium. Once the text is POS-tagged we apply a set of ‘regular expression’-like rules to identify the relation between words, such as:

*DUAL
=a_modifier/modifies
2:[tag=adj] [tag=n] 0,2 1:[tag=n] [tag!=n]
This rule expresses the relation between adjectives and the nouns they modify, matching sentences like ‘the red ball‘ and ‘the red football ball‘. Each relation is stored in the database with extra info about position in the text. Once the database is created accessing it to display the sketch and concordance information is really simple. The site and auxiliary tools were written in around 1400 lines of Python/Django. I am still not sure about what to do with this, if there is anyone interested on adding some corpora to it, continue development or anything else, please let me know.

Next.

Previous.