I'm a keen amateur photographer and have been since I was at school. Of course back then it involved smelly chemicals, strange lights and dark rooms. The expense and hassle of film eventually did it in for me and in 2000 I bought my first digital camera. After a series of increasingly sophisticated devices, back in 2007 I bought a Nikon D80 and soon thereafter I discovered that you can do things with raw camera files that have some analogies to the darkroom processing of my youth.
For most of the time since then I've used UFraw for processing my raw images, combined with increasingly sophisticated batch files to harass it into shape. It has increasingly frustrated me that UFraw doesn't do several things that are essential to processing most files, since once the image leaves that programming it usually ends up in an 8-bpp processing path. It seems to me that the saving the processed image into an 8bpp format like jpeg is the last step before leaving the image alone.
Of course this can't always be the case since sometimes a judicious use of the 'Resynthesizer' plugin can make some unsightly elements just disappear, or one needs to carefully apply some censorship to the 14 year old in the background so that the 7 year-old's parents can put the photo on the mantelpiece without worrying about what Granny will say about how much better children's manners were in her day.
I'm hoping too, that when I have grandchildren I'll be able to tell them that 'in my day we only had 8 bits per pixel, and we were lucky', but The Gimp isn't there yet, no matter how much promise Gegl seems to offer.
The thing that has particularly annoyed me is sharpening. UFraw doesn't, and as a result my workflow has either involved applying some blanket sharpening, much like the camera does, or moving the image into a second tool just to apply some sharpening.
This week has been particularly demanding, as the school asked me to 'take some photographs of the production'. So of course that's a thousand-odd photos that I want to do a cull down to a hundred or so, and then I want to quickly do justice to the good ones so I can move on to other stuff.
Well this time my frustration with UFraw hit that ceiling that got me to try something else. I've done this in the past, and found myself going full circle and ending up right back at UFraw with a few extra lines added to my script, but this time I tried rawstudio and in processing the 'can you do the class shots overnight please' test it produced much nicer results in much less time than I have ever been able to with UFraw.
So I've switched, and the more I use it the more convinced I am that UFraw will be getting uninstalled pretty soon.
That's not to say that rawstudio is perfect: it isn't. In particular it has some user interface failures that are kind of annoying to me, but they aren't enough to stop me using it. In fact I liked it so much that I immediately had to pull the nightly repository and build that, just to get the new saturation handling.
The user-interface niggles that do get to me are:
One of things I missed for quite a long time in Lazygal compared to lot of other galleries is navigation using keys in between the images. Well, it should be easy to implement, shouldn't it?
A little bit of googling and reading jQuery documentation and the code is here :-).
It seems to work fine in browsers which I use, you can try it yourself.
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. |
kernel: mptscsih: ioc0: attempting task abort! (sc=ffff880018320100)
kernel: sd 0:0:0:0: [sda] CDB: Read(10): 28 00 00 00 00 38 00 00 08 00
kernel: mptscsih: ioc0: task abort: FAILED (sc=ffff880018320100)
kernel: mptscsih: ioc0: attempting target reset! (sc=ffff880018320100)
kernel: sd 0:0:0:0: [sda] CDB: Read(10): 28 00 00 00 00 38 00 00 08 00
kernel: mptscsih: ioc0: target reset: SUCCESS (sc=ffff880018320100)
kernel: mptscsih: ioc0: attempting task abort! (sc=ffff880018320100)
kernel: sd 0:0:0:0: [sda] CDB: Read(10): 28 00 00 00 00 38 00 00 08 00
kernel: mptscsih: ioc0: task abort: FAILED (sc=ffff880018320100)
kernel: mptscsih: ioc0: attempting task abort! (sc=ffff88001eefcc00)
kernel: sd 0:0:0:0: [sda] CDB: Read(10): 28 00 00 98 01 a7 00 00 08 00
kernel: mptscsih: ioc0: task abort: FAILED (sc=ffff88001eefcc00)
kernel: mptscsih: ioc0: attempting target reset! (sc=ffff880018320100)
kernel: sd 0:0:0:0: [sda] CDB: Read(10): 28 00 00 00 00 38 00 00 08 00
kernel: mptscsih: ioc0: target reset: SUCCESS (sc=ffff880018320100)
While the NFS transient issues are probably a real bug, I have this
image of a state machine inside the driver trying over and over the
same error paths, in a futile attempt at fixing the hardware , and
not locking onto/matching the real hardware behaviour.
Or, this most recent case during boot and resource probing:
kernel: e1000: 0000:00:08.0: e1000_probe: The EEPROM Checksum Is Not Valid
kernel: /*********************/
kernel: Current EEPROM Checksum : 0x031a
kernel: Calculated : 0x031a
kernel: Offset Values
kernel: ======== ======
kernel: 00000000: 08 00 27 f6 f3 9b 00 00 ff ff 00 00 00 00 00 00
kernel: 00000010: 00 00 00 00 08 44 1e 00 86 80 0e 10 86 80 40 30
kernel: 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
kernel: 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
kernel: 00000040: 00 00 61 70 0c 28 c8 00 c8 00 00 00 00 00 00 00
kernel: 00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 06
kernel: 00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
kernel: 00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1a 03
kernel: Include this output when contacting your support provider.
kernel: This is not a software error! Something bad happened to your hardware or
kernel: EEPROM image. Ignoring this problem could result in further problems,
kernel: possibly loss of data, corruption or system hangs!
kernel: The MAC Address will be reset to 00:00:00:00:00:00, which is invalid
kernel: and requires you to set the proper MAC address manually before continuing
kernel: to enable this network device.
kernel: Please inspect the EEPROM dump and report the issue to your hardware vendor
kernel: or Intel Customer Support.
kernel: /*********************/
kernel: e1000: 0000:00:08.0: e1000_probe: Invalid MAC Address
kernel: e1000: 0000:00:08.0: e1000_probe: (PCI:33MHz:32-bit) 00:00:00:00:00:00
kernel: e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
This is an emulated Intel NIC under VirtualBox. I have never seen it
before, and it went away after a reboot. The most funny thing is the
This is not a software error! message well, it definitely is :),
but the driver has no way to know that.
I think that these software-driven failures probably trigger some
obscure error handling paths; I assume that the usual failures for
real versus virtual hardware are quite different in nature, and that
recovery is again different. This leads to using the wrong strategy
for recovery, but fortunately nothing is really broken, just in the
wrong state Since I'm not familiar with low-level driver details, I
might be wrong of course; I'm just speculating on what I think goes on
inside the driver.
I'm not even mentioning virtual clock issues, as those are no longer
funny
When there a security update, just logging in to every host and issuing
"apt-get install $pkg" doesn't work as the package might not be installed
there. The fact that apt-get doesn't understand "apt-get upgrade $pkg" has
bugged me for a long time. Recent aptitude versions support that, but that's
not part of Lenny.
Here's a shell function that does the trick:
upgrade ()
if [ "$*" ] ; then
set -- $(dpkg -l "$@" grep ^ii awk ' print $2 ')
if [ "$*" ] ; then
echo "apt-get install $@"
sudo apt-get install "$@"
else
echo "Nothing to upgrade"
fi
else
sudo apt-get upgrade
fi
One application is upgrading a lot of hosts when logged in with
clusterssh.
One of the things that I love about our Local LUG is the people. At our LUG, we have our resident geek artist, Antonio Roberts (aka hellocatfood) who, on the odd occasion, gets harassed into doing a talk for us. His talks are always fairly awesome. His previous talk about FLOSS + Art is the video with the highest views on our video archive, and tomorrow night, Thursday 16th September, at 19:30pm BST, he ll be delivering his next talk about his experience in the FLOSS community as an artist to us.
In his own words:-
This talk extends greatly on what was said and goes into issues of copyright and what experiences I ve had as an artist in the open source worldHis previous talk was a bit of an eye-opener to me, as a pure geek with barely a trace of artistry in me, and it s always good to see the FLOSS world from the eyes of someone who doesn t exactly fit the stereotype of what you d normally expect to see. The video will be available after the event, at some point, but for those who re interested in gaining an insight into artistry and FLOSS, we ll be broadcasting the talk live over the interwebs. <script type="text/javascript"> var flattr_wp_ver = '0.9.11'; var flattr_uid = '34168'; var flattr_url = 'http://www.sourceguru.net/freedom-creativity/'; var flattr_btn = 'compact'; var flattr_hide = 0; var flattr_lng = 'en_GB'; var flattr_cat = 'text'; var flattr_tle = 'Freedom in Creativity'; var flattr_dsc = 'One of the things that I love about our Local LUG is the people. At our LUG, we have our resident geek artist, Antonio Roberts (aka hellocatfood) who, on the odd occasion, gets harassed into doing a talk for us. His talks are always fairly awesome. His previous talk about FLOSS + Art is the video with the highest views on our video archive, and tomorrow night, Thursday 16th September, at 19:30pm BST, he\'ll be delivering his next talk about his experience in the FLOSS community as an artist to us. In his own words:- This talk extends greatly on what was said and goes into issues of copyright and what experiences I ve had as an artist in the open source world His previous talk was a bit of an eye-opener to me, as a pure geek with barely a trace of artistry in me, and it\'s always good to see the FLOSS world from the eyes of someone who doesn\'t exactly fit the stereotype of what you\'d normally expect to see. The video will be available after the event, at some point, but for those who\'re interest'; var flattr_tag = 'art,artist,floss,lug,presentation,sblug birmingham lug,streaming,talk,video'; </script> <script src="http://api.flattr.com/button/load.js?v=0.2" type="text/javascript"></script>
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.
I finally made some progress on Czech translation of phpMyAdmin and it has again reached 100%. It was first time since merging GSoC projects, which introduced quite a lot of new strings. Not that they would be hard to translate, but it was rather hard to find time for that.
However there are still lot of translations which are quite behind and would need some love. So if you can translate, you're welcome to join our translators and translate!
PS: If you're looking for more work, we're also translating documentation :-).
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 a fan of LC_MESSAGES=de_DE and localized web pages -- almost.
Unfortunately, the wording of many translations in Debian often drives me nuts.
This applies mostly to web pages and package descriptions. Apologies to all
hard-working translators -- the percentage of good translations does not
outweigh the "wtf" cases for me. Still, I didn't want to switch to English for
all the web.
Rhonda pointed me to a Firefox ^W Iceweasel plugin:
HeaderControl.
Now *.debian.org is English for me (reading the constitution in German doesn't
solve DAM problems anyway). Yay!
Depends: $ misc:Depends , libdbd-pg-perl (>= 1.41),I changed the lines to this:
postgresql-client (>= 7.4)
Suggests: postgresql postgresql (>= 7.4)
Depends: $ misc:Depends , libdbd-pg-perl (>= 1.41),Now I was able to install request-tracker3.8 successfully, upgrade the database and enjoy the new shiny version of rt. I'm unsure whether I needed to edit/save the Respond scrips as well to make the mail sending again or not. But that shouldn't be big show blocker either. Anyway, I think I'll write a bug report for rt 3.8 tomorrow... It's always fun to find yet another bug when a new release is upcoming... :-) UPDATE:
postgresql-client-8.3 (>= 7.4)
Suggests: postgresql-8.3 postgresql (>= 7.4)
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
I was asked to write about what I do at Canonical and what I do in the Free Software community at large. There is obviously a great deal of overlap, but I ll start with the things I m involved with when I m wearing my Ubuntu hat.
My primary job at Canonical is keeping Ubuntu secure. This means that I, along with the rest of the Ubuntu Security Team, coordinate with other Free Software distributions and upstream projects to publish fixes together so that everyone in the community has the smallest possible window of vulnerability, no matter if they re running Ubuntu, Debian, RedHat/Fedora, SUSE/openSUSE, Gentoo, etc. Between vendor-sec, oss-security, and the steady stream of new CVEs, there is plenty going on.
In addition to updates, the Security Team works on pro-active security protections. I work on userspace security hardening via patches to gcc and the kernel, and via build-wrapper script packages. Much of this work has been related trying to coordinate these changes with Debian, and to clean up unfinished pieces that were left unsolved by RedHat, who had originally developed many of the hardening features. Things like proper /proc/$pid/maps permissions, real AT_RANDOM implementation, upstreaming executable stack fixing patches, upstreaming kernel NX-emu, etc. Most of the kernel work I ve done has gotten upstream, but lately some of the more aggressive protections have been hitting frustrating upstream roadblocks.
Besides the hardening work, I also improve and support the AppArmor Mandatory Access Control system, as well as write and improve confinement profiles for processes on Ubuntu. This work ends up improving everyone s experience with AppArmor, especially now that it has gotten accepted upstream in the Linux kernel.
I audit code from time to time, both on the clock with Canonical and in my free time. I m no Tavis Ormandy, but I try. ;) I ve found various security issues in Xorg, Koffice, smb4k, libgd2, Inkscape, curl+GnuTLS, hplip, wpa_supplicant, Flickr Drupal module, poppler/xpdf, LimeSurvey, tunapie, and the Linux kernel.
With my Canonical hat off, I do all kinds of random things around the Free Software ecosystem. I m a sysadmin for kernel.org. In Debian, I maintain a few packages, continue to try to push for security hardening, and contribute to the CVE triage efforts of the Debian Security Team.
I ve written or maintain several weird projects, including MythTVFS for browsing MythTV recordings, GOPchop for doing non-encoding editing of MPEG2-PS streams, Perl s Device::SerialPort module, and the TAP paging server Sendpage.
For a selection of things I ve contributed to other project, I ve implemented TPM RNG access in rng-tools, made contributions to Inkscape s build and print systems, implemented CryptProtect for Wine, wrote a PayPal IPN agent in PHP that actually checks SSL certificates unlike every other implementation I could find, added additional protocol-specific STARTTLS negotiations to OpenSSL, implemented the initial DVD navigation support in MPlayer, updated serial port logic in Scantool for communicating with vehicle CAN interfaces, tried to add support for new types of timeouts in Snort and Ettercap, fixed bugs in mutt, and added HPUX audio support to the Apple ][ emulator XGS.
As you can see, I like making weird/ancient protocols, unfriendly file formats, and security features more accessible to people using Free Software. I ve done this through patches, convincing people to take those patches, auditing code, testing fixes and features, and doing packaging work.
When I go to conferences, I attend UDS, DefCon, OSCon, and LinuxCon. I ve presented in the past at OSCon on various topics including security, testing, and video formats, and presented at the Linux Security Summit (miniconf before LinuxCon this year) on the need to upstream various out-of-tree security features available to the Linux kernel.
I love our ecosystem, and I love being part of it. :)
* Gwibber in experimental. Expect: 2.31.93-1 by tonight.
+ It is still slow. In short, it sucks at moment. Report bugs to upstream. Any improvement for Debian packaging (I moved it to pysupport (Thanks to Filip Chabik)
* Life sucks. Why?
+ Festival time. I ve developed allergy to noise.
While working on new Gammu documentation I came to need to include some graphs showing some workflows. Looking into Sphinx documentation (which is used for the documentation for Gammu), I've discovered nice integration with graphviz.
Fortunately it was pretty easy to learn the basics, though I've never used it before and here it comes - message processing workflows for SMSD.
dpkg-source is the program that generates the Debian source package when a new package version is built. It offers many interesting command-line options but they are often not used because people don t know how to ensure that they are used every time the package is built. Let s fill that gap!
It is possible to forward some options to dpkg-source by typing them on the dpkg-buildpackage command line but you d have to remember to type them every time. You could create a shell alias to avoid typing them but then you can t have different options for different packages. Not very practical.
The proper solution has been implemented last year (in dpkg 1.15.5). It is now possible to put options in debian/source/options. Any long option (those starting with -- ) can be put in that file, one option per line with the leading -- stripped.
Here s an example:
# Bzip2 compression for debian.tar compression = "bzip2" compression-level = 7 # Do not generate diff for changes in config.(sub guess) extend-diff-ignore = "(^ /)config.(sub guess)$"Notice that spaces around the equal sign are possible contrary on the command line. You can use quotes around the value but it s not required. The
debian/source/options file is part of the source package so if someone else grabs the resulting source package and rebuilds everything, they will use the options that you defined in that file.
You can also use debian/source/local-options but this time the file will not be included in the resulting source package. This is interesting for options that you want to use when you build from the VCS (Version Control Repository, aka git/svn/bzr/etc.) but that people downloading the resulting source package should not have. Some options (like --unapply-patches) are only allowed in that file to ensure a consistent experience for users of source packages.
You can learn more about the existing options in the dpkg-source manual page. Read it, I m sure you ll learn something. Did you know that you can tell dpkg-source to abort if you have upstream changes not managed by an existing patch in debian/patches? It s --abort-on-uptream-changes and it s only allowed in debian/source/local-options.
Be sure to subscribe to the RSS feed or to the email newsletter to not miss useful documentation for Debian contributors!
Next.