* No, we don t have moksha packaged yet.
Sometime ago, Nirav forwarded me query regarding Utkarsh (my project where our goal was to provide complete Gujarati interface in OS) who got CD long time back but facing some issue. Last week, I decided to help and finish this pending task and went to place we decided. It was small laptop (ie EEE PC) for guru of group called, OM Parivar. I installed Ubuntu and customized it for Gujarati interface and required software.
Second time, I went to Guruji s place for small training and I was wondering how fast man of 82 years can learn! He was very happy to see me helping and so I m converting more person to Linux. I also explained why I m using Linux and we even discussed about some Free Software philosophy.
Next time: Keep Debian Installer with USB boot handy
As I'm currently attending the EUgridPMA meeting in Zagreb I thought I'd share a bit of this project I've been working on for the past year: the TCS eScience project.
In the scientific world lots of calculations are performed on distributed computing platforms known as grid. Because users of other institutions will be using your hardware, authentication is needed and this problem has been solved with x.509 personal certificates. The problem however, is that these certificates of course have to be issued by some CA. Currently in Europe alone there are over 40 active CA's, even multiple per country, dedicated to this job. They are accredited through the EUgridPMA which meets regularly. For scientists, it's often cumbersome to obtain a certificate: find your local CA, present an ID (probably in person), and sometime later receive your certificate. The process can take days or even weeks. Scientists are not interested in CA's but just want to practice science.
Our solution is a central web portal where users can request a certificate and have it delivered in minutes. This leverages the fact that identities of scientists normally have already been vetted at their home institution: users log in to the portal via federated login. Their home institution passes a special attribute that declares "Yes, we have really seen photo ID of this person and the name is correct". This attribute must of course not be passed for guests or test users or role accounts. However, it may still be easy to mass-provision it. In the Netherlands for example, the employer is required by law to verify the identity of each employee, so all employees can be automatically assigned the attribute.
After logging in and uploading (or generating) a csr, the request is passed in the back end to the Comodo API. This also means that we do not need to perform the complex operations of running an online CA (with hardware crypto devices, crl's, etc.). The use of Comodo is part of the same deal as the TERENA Certificate Service for host SSL certificates. The Comodo API responds within two minutes with the certificate which the user can download.
Currently 10 European countries are involved with the project (nl no se fi dk at cz it fr be), and more have shown interest. The certificates we issue have been accredited by the EUgridPMA so can be used on the grid. A separate but similar service is being set up for 'regular' personal certificates for the academic community, e.g. for s/mime usage. More details are in the presentation and paper by portal software developers Henrik and Thomas at the most recent TNC.
Usually I like to monitor as much as possible. but unfortunately my cable provider does not allow to access the cable modem via SNMP, so I had to find a different way to retrieve at least some basic information. After a bit of googling I figured out how to access the web interface of the Scientific Atlanta modems. The model here is a EPC2203 - seems to work for various models, though.
These modems do not only provide access to the traffic within the cable network on their internal networking port (ever tried tcpdump on that?), but they also have their own IP (192.168.100.1). To be able to access the modem you should add something like
post-up ip addr add 192.168.100.2/31 dev extern0 trueto the configuration of the interface which is connected to the cable modem. Make sure you're not using the same network internally - or find a proper way to handle it. If you access http://192.168.100.1/ then, you'll be able to retrieve some basic information form the modem. If you google a bit longer, you might even be able to do more stuff! But to monitor the power levels and signal-to-noise ratio, this is all we need. I'm using Munin usually, as the web interface is just much easier to setup than the collectd CGI (hint, hint!!). Drop the following two scripts into the Munin plugins folder. wget, sed and grep is all they need, so it should be easy to get them working. cablemodem signalnoise.sh
#!/bin/sh # Copyright (c) 2010 Bernd Zeimetz <bzed@debian.org> # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH if [ "$1" = "config" ]; then echo graph_title cable modem signal to noise ratio echo 'graph_args --base 1000' echo 'graph_vlabel dB' echo 'graph_category network' echo 'graph_info This graph shows the signal to noise ratio of the Scientific-Atlanta cable modem.' echo "signalnoise.label ratio" echo "signalnoise.info Signal to noise ratio" echo 'signalnoise.draw LINE2' echo 'signalnoise.type GAUGE' exit 0 fi wget -q -O - http://192.168.100.1/system.asp \ grep 'Signal to Noise' \ sed 's,.* ,signalnoise.value ,;s, dB.*,,'cablemodem powerlevel.sh
#!/bin/sh # Copyright (c) 2010 Bernd Zeimetz <bzed@debian.org> # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH if [ "$1" = "config" ]; then echo graph_title cable modem power level echo 'graph_args --base 1000' echo 'graph_vlabel dBmV' echo 'graph_category network' echo 'graph_info This graph shows receive and transmit power levels of the Scientific-Atlanta cable modem.' echo "receive.label receive" echo "receive.info Receive power level" echo 'receive.draw LINE2' echo 'receive.type GAUGE' echo "transmit.label transmit" echo "transmit.info Transmit power level" echo "transmit.draw LINE2" echo "transmit.type GAUGE" exit 0 fi wget -q -O - http://192.168.100.1/system.asp grep dBmV \ sed -e 's,.* ,,;s, dBmV.*,,' \ -e '1s/^/receive.value /' \ -e '2s/^/transmit.value /'
Guess you can easily figure out when I had issues with my cable connection.
This morning, my laptop was stolen from my parked car while I was jogging. I do not want to make a big deal out of it.
Still, even though I am sure it was not targetted at my data (three other people at least were reporting similar facts in the same area), and the laptop's disk will probably just be reformatted, I am trying to limit the possible impact of my cryptographic identification being in somebody else's hands.
GPG makes it easy: I had on that machine just my old 1024D key, so it is just matter of generating a revocation certificate. I have done that, and uploaded it to the SKS keyservers - Anyway, here is my revocation certificate:
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: A revocation certificate should follow iHIEIBEIADIFAkyaOZwrHQJBIGNvbXB1dGVyIGNvbnRhaW5pbmcgdGhpcyBrZXkg d2FzIHN0b2xlbgAKCRDYDvNai7UnrzWAAKC34eF76JQjxrZqSjNwcC0dU/5VbACg gMIMmYg91Sl3y8KsZXdGj/rV7UE= =rdlT -----END PGP PUBLIC KEY BLOCK-----But What worries me more is access to the computers my ssh key works for. Yes, the ssh key uses a nontrivial passphrase, but still SSH keys cannot be revoked (and this makes sense, as SSH should not add the delay, or potential impossibility, to check with a remote infrastructure whenever you want to start a session). So, I generated a new key (and stored it at ~/.ssh/id_rsa.new / ~/.ssh/id_rsa.new.pub) and came up with this snippet:
$ OLDKEY=xyHywJuHD3nsfLh03G1TqUEBKSj6NlzMfB1T759haoAQ $ for host in $(cat .ssh/known_hosts cut -f 1 -d \ cut -f 1 -d , sort uniq); do echo == $host ssh-copy-id -i .ssh/id_rsa.new.pub $host && ssh $host "perl -n -i -e 'next if /$OLDKEY/;print' .ssh/authorized_keys" done
/[, ]/, but... I didn't think of that. Besides, the savings would be just for academic purposes ;-)
This is mostly inspired on this article. The main difference is that I talk about sup instead of mutt, and use SpamAssassin together with bogofilter. Having all these utilities installed and the sources for sup configured, you only need to touch procmail and sup configuration files.
My ~/.procmailrc contains a lot of comments, but what it does is basicly the following: If the message is smaller than 250 KiB, it calls SpamAssassin with it. This will create the headers X-Spam-Level and X-Spam-Status in this message. Only messages smaller than 250KiB are considered because most spam isn't bigger than that, and considering big messages would overload SpamAssassin. Then, if SpamAssassin consider this message as spam, tell bogofilter about it. Next, call bogofilter, which will add the X-Bogosity header to the message.
Now we have to configure sup. We need to tell it to update bogofilter when we manually mark a message as spam. For this we can use ~/.sup/hooks/mark-as-spam.rb. We must consider two cases: the case where bogofilter thought it was not spam, and the case where bogofilter was not sure about its status. In the first case, we must tell it to forget that the message was not spam and to register it as spam now. In the second, just register it as spam.
Also, we don't want spam on inbox. So we can edit ~/.sup/hooks/before-add-message.rb to look for the headers generated by SpamAssassin and Bogofilter and remove the :inbox label. It's important to mark unsure messages with a label so that we don't forget to mark it as spam if it is, and as not spam if it's not.
So we need a way to mark messages as not spam. I included a new keybinding in ~/.sup/hooks/startup.rb. Unfortunatelly, I don't know how to include a new keybinding in sup without repeating all the keybindings for the mode I'm dealing with, so that's how I've made it. The command removes the :unsure label and mark it as non-spam. It also sets the undo command, unregistering the message in bogofilter. The case where the message was previously marked as spam, and not unsure, is also handled.
I'm sure there's a lot of room for improvement, specially in the Ruby part, but it seems to be working.
thanks to Lucas' recent archive rebuild & bug filing we have new stuff
to work on :) my activities in the last week:
For a long time I have mainly been reading Twitter with a generic RSS reader (newsbeuter). Recently this stopped working when twitter.com disabled HTTP Basic Auth in preference of using OAuth. Now I can say a lot of good and bad things about OAuth, but to keep a short story short: It doesn t work with generic RSS readers.
Instead of getting the RSS feed from a URL, my RSS reader can run a script that prints an RSS feed. So if I could just write a script that does the OAuth dance to convince twitter.com to give me an RSS feed?
Perl to the rescue! Or rather CPAN to the rescue: Net::Twitter::Lite have a nice simple example for setting up OAuth with a desktop application. It also provides access to most of Twitters REST API, but no method for retrieving generic URLs.
Using some Jedi mind tricks and reading the source I found a private and undocumented method _oauth_authenticated_request which does exactly what I need. It is quite simple:
There are corners of the Internest where foolish people congregate, and invent stories. These foolish stories are then read as gospel by trusting people, and reposted, until the original made-up source is concealed from view. As an attempt to stem this flow of disinformation, here are some commonly held but incorrect beliefs about the Mono framework, and an explanation of the reality of the situation, as far as I understand it.
The next Mono version is co-developed with Microsoft
There is a grain of truth behind this one, but it s a gross mischaracterisation. Mono 2.8, when it ships, will bundle, for convenience, a number of Free Software libraries, which are released by Microsoft under a license considered Free Software by the Free Software Foundation, the Ms-PL. These are:
The other day I got the HP mini 2102 Netbook I won at the Release Cricital Bug
Contests. Many thanks for it!
It works more or less out of the box with Debian Squeeze, including Suspend, Hibernate, external VGA Port. Batterie seems to hold for about 7 hours, which is okay, too. However, it wasn't shipped with Debian pre-installed, as I had been told. After unpacking the Netbook right in the train on may to work after picking it up in the morning, it was quite disapointing to just see Windows 7 installing some software for over two hours, before I could do anything with it! Booting the debian-installer via usb worked, but I couldn't use the keyboard (which BTW doesn't have
Page Up/Down,
Pos1and
Endkeys) in the syslinux boot menu. But as the usb-images ship with a setup.exe wich adds the installer to the Windows boot loader, that wasn't a major problem (it just took me a while to find it). The HP mini 2102 is a quite new Netbook, but to my suprise nearly everyhting worked out of the Box. Some minor problems where the battery display. With Kernel 2.6.32 it only showed the current state, but no estimations how long it would hold. Installing Kernel 2.6.35 fixed that. The Synaptics
clickpad(which is a touchpad without buttons physically sepperated from the touching area) isn't fully supported. The Kernel driver has already been updated (see #572842), however xorg synaptics driver hasn't been updated to support it. Don't ask me, why there hasn't been a bug report for that package; I asked for it in #597082 and put the packages on my people account. You just need to download and install the xserver-xorg-input-synaptics deb and you should at least have two usable mouse buttons. You can try some fine tunning as described in the Debian wiki, but not everything seems to be supported (e.g. multitouch, emulated third mouse button). The last problem is quite interesting. While the build in wireless adapter works very well, it constantly looses the connection, when I connect it to my Palm Pre in his hotspot-mode. But I have no idea how to debug it, as it works very well with other wireless networks, while my regular notebook works without problems with the Palm Pre. So I don't know, why wpasupplicant constantly looses the connection and reconnects. It someone has some hints about these two issues, an e-mail would be most welcome. Thanks! Update: Oh, I got Pg-Up, Pg-Down, End and Pos1 keys via fn and the cursors keys! Yeah!
Usage of accelerated BLAS libraries seems to shrouded in some mystery,
judging from somewhat regularly recurring requests for help on lists such as
r-sig-hpc
(gmane version),
the R list dedicated to High-Performance
Computing. Yet it doesn't have to be; installation can be really simple (on appropriate
systems).
Another issue that I felt needed addressing was a
comparison between the different alternatives available, quite possibly
including GPU computing. So a few weeks ago I sat down and wrote a small package to
run, collect, analyse and visualize some benchmarks. That package, called
gcbd (more about the
name below) is now on CRAN as of this morning.
The package both facilitates the data collection for
the paper
it also contains (in the vignette form common among
R packages) and provides code to
analyse the data---which is also included as a SQLite database. All this is done in the
Debian and
Ubuntu context by transparently
installing and removing suitable packages providing BLAS implementations:
that we can fully automate data collection over several competing implementations via
a single script (which is also included). Contributions of benchmark results
is encouraged---that is the idea of the package.
The paper itself
describes the background and technical details before presenting the
results. The benchmark compares the basic reference BLAS, Atlas (both single- and
multithreaded), Goto, Intel MKL and a GPU-based approach.
This blog post is not the place to recap all results, so please do see the
paper for more
details. But one summary chart regrouping the main results fits well here:
This chart, in a log/log form, shows how reference BLAS lags everything, how
multithreaded newer Atlas improves over the standard Atlas package currently
still the default in both distros, how the Intel MKL (available via Ubuntu)
is fairly good but how Goto wins almost everything. GPU computing is
compelling for really large sizes (at double precision) and too costly at
small ones. It also
illustrates variability and different computational cost across the methods
tested: svd is more expensive than level-3 matrix multiplication, and the
different implementations are less spread apart. More details are in the
paper; code, data etc
are in the package gcbd.
The larger context is to do something like this benchmarking
exercise, but across distributions, operating systems and possibly also GPU
cards. Mark and I started to talk about this during and after R/Finance earlier this year and have some ideas.
Time permitting, that work should be happening in the
GPU/CPU Benchmarks (gdb)
project, and that's why this got called gcbd as a simpler GPU/CPU Benchmarks on
Debian Systems study.
![]() |
I have always liked learning and understanding history. Since I discovered him, for a couple of years already I always try to catch Javier Garciadiego's program Conversaciones sobre historia, Saturday 9AM in the Horizonte 108 radio station (can be listened to online). This program started by going over the events just before the beginning of the 1910 revolution in Mexico - and along slightly over five years, one hour per week and following different threads, the program has reached the end of the Cristiada, in the early 1930s. Garciadiego has a very nice, followable, amenable way of telling history, and I have recommended his program to many friends. This last June, I spent some days in Guatemala City, for DrupalCamp Centroam rica. I stayed with my good Colombian friend, Dilson, and at his house he had framed a poster of the History of the Civilizations. Of course, I got my nose close to it, guessing as many faces as possible in the lot. And he showed me his last Christmas present: Two books, each of them with 6 CDs. One is Historia de las Civilizaciones, the second one is Historia de las independencias. They are made by Colombia's very well known and well regarded historian Diana Uribe. I copied the CDs in order to listen to them later And wow, was I impressed! Diana Uribe makes a great narrative about topics that to some people would seem boring and dry. As I said, I have always found passion in understanding the human processes that have shaped civilization and brought us all the way to where we stand now. Well, Diana Uribe manages to bring more "normal" people to this passion. While looking for information on her to share in this blog post, I found so many places offering download of her disks, with apparently young people talking about how she has got them all so excited and interested in history... That's, I think, the best "thank you" any academician can get: having non-specialists say how her work has opened up the passion of one of the world's least sexy professions to them. And yes there are so many "thank you" and "I want" commentaries, so much of what I would call "fan mail", that it took me a bit to find an online library carrying both works. And yes, at ~US$50 each, I do intend to buy them. Now, why am I writing this today? Well, yes, because I finished listening to the series today, but besides During this year, most of Latin American countries conmemorate their 200 years of existence. Most of the independentist struggles in the continent started in 1809-1810. And today is the "partying" day in Mexico Says the legend that in the night between September 15 and 16, 1810, a priest who is always painted as old and charismatic called on his small town urging the people to rise and fight for independence, and as a result of that, only 11 years later Mexico was a fully independent country, spanning from Costa Rica to California, and... well, a nice and very idealized myth. A century later, in 1910, after a very long stability and growth period (attained mostly through repression, the same abstract thing named as "the people" rose against the dictator Porfirio D az, who had been Mexico's president for 30 years. The revolution deeply changed the social face of the country, but politically... After ~15 years of fighting, the result was that a 30 year long dictatorship was replaced by a 70 year long one... And our political system still has not evolved beyond that model. Now, comparing what has not improved nor even stayed the same but went backwards... A century ago, the festivities of the hundred years of independence were a time for showing pride, for showing to the guests from more "civilized" countries how ours was by then a modern, thriving country worth believing in, worth investing in: Besides the important, majestic and well built monuments that were erected and still stand today (i.e. the Column of the Independence or Hemiciclo a Ju rez, many institutions that would socially shape the next century even after D az's death, even after he had been declared not the role model we wanted after all were born: The National University (nowadays the most important university in Latin America), the National School for Professors, the Railroad Technical School and many others (see Javier Aranda's note for some more details)... The celebration was well-thought and planned. Of course, it didn't go into some darker corners, the country was as uneven and unfair as it can be for the poorer indigenous population (which back then was a majority), and what not. But this year? Well, we are expecting an impressive show tonight (which I won't see, even though I'd like to, as I no longer have a TV and even if I had wanted to go downtown for the celebration, different government branches are insisting we should just sit and watch it by TV at home as it can be too crowded... so not even that was well thought out Of course not every Mexican can go to the same square and see the same de-facto president do the ritual, but some more redundancy could be thought, spreading acts through all of the city instead of concentrating the festivities all along Reforma. But anyway Leaving aside our current de-facto ruler's inabilities to do anything worthy, which are already well known and documented... I took this opportunity to listen to a great work, and am most happy to do it, and to be able to share it with you. |
Last month I gave a presentation on the interaction between Android and kernel upstream at Linuxcon. The video for that is now available here (requires registration). Contrary to stories you may have heard, I do not dropkick anyone through a window.
Today, registration for the 2011
Paris Marathon (Apr 10th 2011) and 2011 Paris Half-marathon (March
6th 2011) was opening.
I just registered for both. One will note that about 3 hours after the
online registration opened, already more than 1200 people
registered. As there are "only" 37000 places (plus 3000 for travel
agencies and sponsors), people will, as usual,
need to hurry (the half-marathon has 28500 places).
I'm using Twitter plugin for Contacts and Conversations to twitter on my N900.
Twitter recently moved to OAuth. Problem is the Maemo package is outdated and seems to be unmaintained.
I did some research and came across a blog entry about exploring OAuth-protected APIs and some code. Nice idea but not usable for me.
I ended up sitting down and writing a small python script that will re-route your HTTP requests to api.twitter.com after adding all the OAuth bills and whistles, read the reply from twitter and send it back. Neat ? :-)
There's also supertweet.net which I've discovered after I finished writing my script but seems they don't support all of the twitter API call while my script does that.
The script is simple without much error checking but it's been working for me for a few days already.
Last thing, I'm not interested in running a service like supertweet. I'll not be implementing the full OAuth protocol. Need to use it ? Register your own application.
git clone git@gitorious.org:twitter-proxy/twitter-proxy.gitNext step: Thinking of maintaining the twitter plugin for Maemo. I already compiled the latest code and it sort of works fine :-) read more
My tip of day. When you lose control of a process (for example with a process launched with disown or, another example, when you close your SSH terminal with unsynced mutt), thanks gdb.
$ tty
/dev/pts/13
$ gdb --pid= pidof mutt
(gdb) call close(0)
(gdb) call close(1)
(gdb) call close(2)
(gdb) call open("/dev/pts/13", 2, 0)
(gdb) call dup(0)
(gdb) call dup(0)
(gdb) detach
Detaching from program: /usr/bin/mutt-org, process 2932
Thanks to this comment on superuser.com for the original idea.
Edit: correction on dup() calls. Thanks to Peter Pentchev for his explanation in comments.
---
class:
Debian::Dep5:
class_description: >
Machine-readable debian/copyright
accept:
name_match: X-.*
type: leaf
value_type: string
element:
Format-Specification:
mandatory: 1
type: leaf
value_type: uniline
description: >-
URI of the format specification, such as ...
Name:
type: leaf
value_type: uniline
Files:
type: hash
index_type: string
ordered: 1
cargo:
type: node
config_class_name: Debian::Dep5::Content
And the full model of Dep-5 can be also read on Config::Model repository:
(The models are biggish because they include help text taken from DEP-5 documentation)
Now some explanation is required on how is performed the License validation.
The trick is that each License used must be listed in Dep5 s license parameter which is specified this way (in YAML syntax):
License:
type: hash
index_type: string
allow_keys_matching: '^(?i:Apache Artistic BSD etc... other)[\d\.\-]*\+?$'
cargo:
type: leaf
value_type: string
So this License element contains the list of licenses with their full text and only Licenses whose name matches the regular expression are accepted.
Now, let s explain how the files are tied to the declaredlicenses. The Debian::Dep5::Content class had a License element that represent the relation between the files and the License(s). This bond is represented by Debian::Dep5::License configuration class. The abbrev and full_license elements are fairly obvious.
The abbrev element is another matter. Here s its declaration (minus the description and help):
abbrev: type: leaf value_type: uniline default: otherSo far, so good. Now the meaty part: the validation requirement based on Parse::RecDescent
grammar: "license (oper license)(s?)
oper: 'and' 'or'
license: /[\\w\\-\\.\\+]+/i\n
# PRD action to check if the license text is provided
$return = $arg[0]->grab('! License')->defined($item[0]);
"
This grammar specifies:
Next.