This weekend, I launched an extremely ambitious effort to collect
evidence of extremely ambitious efforts. The result was a short
program that searched the web and revealed the:
Date: Mon, 18 Mar 2002 18:22:10 +0000
Debian Med prepares a metapackage
for multi-purpose image machines, containing packages for bioinformatics
that can be used in command line or via scripts, and that do not depend on
too many other packages.
I would like to prepare such an image for the Amazon cloud in the most
secure manner, and the simplest way is to build it automatically in order to
not have to clean anything at the end of the process. I tried for months so
use the Debian installer, but banged my head against
walls repeatedly, as it was impossible to re-partition the volume on
which the installer was started. In the end, I figured out that this was
not necessary.
For instance, one can start an image containing the installer on a micro instance (-t t1.micro), with an additional volume of one gibibyte (-b /dev/sdb=:1:false) to install Debian on, and preseed the installer via instance metadata (-f preseed.txt) using a file prepared in advance. When the installation finishes, the instance terminates instead of stopping (--instance-initiated-shutdown-behavior terminate), and its volumes disappear, except the one where Debian was installed (/dev/sdb=:1:false).
Debian-installer in Stable is not often updated, and its size is very small. One can therefore think of releasing one machine image per zone and architecture. I did so for T ky (ap-northeast-1) on amd64. It contains the kernel, its initrd, and a GRUB 1 menu for pvgrub, that passes the following options: console=hvc0 auto=true priority=critical url=http://169.254.169.254/latest/user-data DEBIAN_FRONTEND=text.
Two key pieces are missing in the resulting system. When the kernel is installed or updated, the GRUB 1 configuration file for pvgrub must be refreshed. Also, the system must be able to retrieve a public SSH key provided through the instance metadata, to allow one to log in without using a predefined password. These two functions are provided by the cloud-init package, available in Ubuntu and Fedora. I am looking for volunteers to maintain or co-maintain cloud-init in Debian.
Some of my recent time has been devoted to making our boot media more Mac friendly, which has entailed rather a lot of rebooting. This would have been fine, if tedious, except that some number of boots would fall over with either a clearly impossible kernel panic or userspace segfaulting in places that made no sense. Something was clearly wrong. Crashes that shouldn't happen are generally an indication of memory corruption. The question is how that corruption is being triggered. Hunting that down wasn't terribly easy.00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ * 001568a0 ff ff ff ff ff ff ff ff ff ff ff ff 84 00 00 00 ................ 001568b0 00 20 a7 ac 46 00 00 00 00 00 00 00 00 00 06 01 . ..F........... 001568c0 c2 0b 0c 00 ff ff ff ff ff ff ff ff ff ff ff ff ................ 001568d0 ff ff 0a 04 f0 03 82 0d 40 00 00 00 ff ff ff ff ........@....... 001568e0 ff ff 00 21 00 36 9a 80 ff ff ff ff ff ff 00 7e ...!.6.........~ 001568f0 00 09 43 48 41 2d 47 75 65 73 74 01 04 02 04 0b ..CHA-Guest..... 00156900 16 32 08 0c 12 18 24 30 48 60 6c 2d 1a 0e 18 1a .2....$0H l-.... 00156910 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00156920 00 00 00 00 00 00 00 dd 09 00 10 18 02 00 10 01 ................ 00156930 00 00 dd 1e 00 90 4c 33 0e 18 1a ff ff 00 00 00 ......L3........ 00156940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00156950 00 00 bd ea f8 b3 ff ff ff ff ff ff ff ff ff ff ................ 00156960 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ * 022fb000That's a lot of 0xffs (around 31MB of them) with one small section that contains an 802.11 probe packet with the SSID of the hospital across the road from my house. Apple support network booting off wireless networks. It seems that the firmware brought up the wireless card, associated with this network (it's the only public one nearby) and then left the card DMAing packets into RAM. The read-only page attribute only applies to CPU-initiated accesses, so it could do this without triggering a page fault. It also explained why it was so random - whether memory corruption occurred would depend on whether a packet appeared between that memory being used by the OS and the kernel reinitialising the wireless card. It certainly explains why I couldn't reproduce it when I left the machine repeatedly rebooting on the bus home.
So, since Wednesday, we have no more teenagers among our children.
Indeed, our youngest, Magali, turned 20 and we happily celebrated that
in a japanese restaurant in Paris : Magali is living in a (very) small
flat in Paris as she attends preparation courses for exams meant to
enter physical therapist schools. She's currently working very hard to
prepare these and is left with only one week before the first exam.
We're 100% confident that she'll succeed.
Really, the days where our little shrimp was crawling across her bed,
turning clockwise and finally sleeping in the width of the bed....do
not seem so far. And still, these folks we call "our kids" are now
grown-up persons living their own lives : Jean-Baptiste (some of my
friends reading this blog have met him at DebConf 10) will soon enter
profesionnal life after graduating an engineering school in
electronics, at 24. Sophie, now 22, will resume her social worker
school in Bordeaux in September and will probably start working as
social worker ("assistante sociale", in French) afterwards. And we
hope that our little shrimp (which her sister calls "mini-poop")
starts a physical therapist school next year.
So, well, more and more, Elisabeth and I are old parents and weeks
where we're indeed both alone at home are now common (not to mention
weeks where only one of us is alone either because she has
professionnal commitments on some other side of the planet or I have
some free software event on another side of the planet).
It is indeed really likely that this year's holidays will be the first
ones where we have a distant travel...which we'll be doing alone.
Holidays in Nicaragua (you probably guess why Nicaragua) are much
awaited and will be enjoyed a lot, but still...:-)
So, well, to all those of you who read this and are parents, or plan
to become parents, be happy. The wonder that it is lasts for years and
it's very hard to describe precisely the link that connects parents
and their children. At least the one we have with our children, which
both us and them are proud of. And that pride and this link have no
price. I really wish you guys to develop the same with your newborns
(particularly those of you who very very very recently became parents
anbd, yes I mean you who know who you are...).
After a long silence, I updated the bpo Debian-installer for Debian GNU/Linux 6.0.4, Squeeze. You know, you can take it from http://kmuto.jp/debian/d-i/.
A General Framework for Increasing the Robustness of PCA-Based Correlation Clustering Algorithms(part of my diploma thesis).
Hans-Peter Kriegel, Peer Kr ger, Erich Schubert, Arthur Zimek
Scientific and Statistical Database Management (SSDBM 2008)
One of the earliest features I wrote for the Debian bug tracking
system (Debbugs) after joining the team was support for forcibly
merging bugs. Originally, merging two bugs required that the bugs be
in exactly the same state before merging them; forcemerge removed
this requirement.
Unfortunately, the way I originally implemented this was shortsighted,
and merely forced the merge partners to have the same values as the
merge master. This meant that owners, blocking bugs, and many other
things were silently changed, which meant that people weren't notified
of changes, and bugs could end up in an inconsistent state.
A while ago, I decided to fix this by calculating the changes required
to actually merge the bugs, making those changes, and then merging the
bugs normally; thus, doing everything that a maintainer would normally
have done for them. This necessitated abstracting out the entire
control apparatus into the Debbugs::Control module.
Now that it's complete, you can do the following:
> forcemerge 1 2
Bug #1 [foo] new title
Bug #2 Done: foo@bugs.something [foo] foo
Unset bug forwarded-to-address
Severity set to 'wishlist' from 'grave'
3 was blocked by: 2
3 was not blocking any bugs.
Removed blocking bug(s) of 3: 2
2 was blocked by: 4
2 was not blocking any bugs.
Removed blocking bug(s) of 2: 4
Bug reopened
Removed annotation that bug was owned by bar@baz.com.
Removed indication that 2 affects bleargh
Removed tag(s) unreproducible and moreinfo.
Merged 1 2
> thanks
Stopping processing here.
and bug 2 now is merged with 1 and matches the state of 1.
[The above is the control output from the appropriate bit of the 06_mail_handling.t test.]
This change also means that I'll be able to finally write support for
control@ operations at submit@ time. Also, all of the bug
modifications that happen at submit@ or nnn@ time (setting title,
found, etc.) will be implemented as calls to Debbugs::Control so we
can eventually keep a postgresql database updated in addition to the
flatfile database.
Over the past few weeks, I upgraded my Ubuntu hosts to the Precise release due to be published next month. While the upgrade on my desktops from Oneiric to Precise went mostly well, the upgrade of my terminal server from Lucid to Precise was more daunting. In short: too many packages leave an undue amount of cruft behind, namely tons of obsolete configuration files that are not correctly handled by maintainer scripts, to either delete obsolete files or to rename them to the currently valid filename. At Debian, these oversights are periodically monitored using piuparts and reported to the package maintainer, but Ubuntu doesn't seem to offer this sort of automated Quality Assurance process yet. Perhaps this would be something worth developing?
PS: For those who wonder how I spotted those obsolete configuration files, I simply enabled the FLAUSCH environment variable before running upgrade-system.
Just as I promised yesterday, I pushed a new git repo with my fork of the tool I used to migrate my old Mephisto blog to this new WordPress one.
I forked because the tool have not worked the first time. First of all, I was missing uuidtools gem, and to install it would be a pain inside the jail system I used to run my blog. Too much trouble just to get a UUID we can get by other means so I just added an environment variable UUIDGEN anyone can use to point to a tool to do the job. I know this have performance implications, but I am not talking about 10-thousand entries
Then, I found out that, for some odd reason I still have to understand, WordPress was cutting my articles everytime it read a character. I could study the subject, but I just added a #gsub in mephisto-to-wxr code and moved on. I was about to remove it from the repo, but I left it there since it could help other people. Also, since there might be other similar occurrences, leaving it there serves as a heads up.
Also, I added support for Categories and Tags to mephisto-to-wxr, that seemed to be limitedly accepted (I translated Mephisto Sections into WordPress Categories).
All other activities were just clean-up. That tool generated a .WXR with all the articles and comments from my Mephisto blog. Everything I had to do was import it using WordPress import tool.
Justin TV is a streaming service that uses the broken flash concept in order to allow you to view channels.
Unfortunately it's the only source of Arabic movies, series and shows.
I wrote a GStreamer source that retrieves the channel information and uses libRTMP to connect to the Justin streaming server. The rest is handled by GStreamer ;-)
If you want to watch http://www.justin.tv/ammartv for example, you simply do
gst-launch-0.10 playbin uri=jtv://ammartvThe 2nd plugin is a Totem plugin that indirectly utilizes the GStreamer source.
Given a language code (ar or en or ...), it will download the list of channels in that language and shows them in Totem's side panel. One can then easily double click on a channel and simply watch it. I originally wanted to do the Totem plugin in python but the inability to do asynchronous callback based HTTP requests prevented me :-(
Be warned that the code is of course a bit buggy and needs a lot of cleanups, it's been years since I coded anything in Gtk and that Justin might find out and either block the source somehow or even change the protocol but let's wait until that happens ;-) read more
For a while now the git repository used for packaging WebKitGTK+ has been broken. Broken as in nobody was able to clone it. In addition to that, the packaging workflow had been changing over time, from a track-upstream-git/patches applied one to a import-orig-only/patches-not-applied one.
After spending some more time trying to unbreak the repository for the third time I decided it might be a good time for a clean up. I created a new repository, imported all upstream versions for series 1.2.x (which is in squeeze), 1.6.x (unstable), and 1.7.x (experimental). I also imported packaging-related commis for those versions using git format-patch and black magic.
One of the good things about doing this move, and which should make hacking the WebKitGTK+ debian package more pleasant and accessible can be seen here:
kov@goiaba ~/s/debian-webkit> du -sh webkit/.git webkit.old/.git
27M webkit/.git
1.6G webkit.old/.git
If you care about the old repository, it s on git.webkit.org still, named old-webkit.git. Enjoy!
Next.