Search Results: "will"

29 December 2009

Biella Coleman: This is one if for you: the hacker conference as ritual

One of the most frustrating things about being an untenured anthropology professor (aside from being untenured) is that, for the most part, the articles you must write to get tenure strike those you write about as hopelessly boring and jargony. I always imagine that when geeks read my articles, the experience can be represented as follows:
%*&%*&*(((& Linux *(&*(^%&%%^%% DeCSS &*(&^&&*^&^&^& Free Speech %^&%^%^%%^ Hacking &*(&^*(^^*^**^*Code*((*&&**&&*&* Emacs **(**)*( New Maintainer Process *&())))))))))&*&7&&*&)*&*&*&& DMCA **(**((( Copyleft. ****W$$&& TINC
Well, finally, I have my hands on the uncorrected proofs of an article that is far far more readable, accessible, and truth be told, romantic than anything I have written The Hacker Conference: A Ritual Condensation and Celebration of a Lifeworld. This article s ancestry goes back to this ancient blog entry that I wrote after Debconf4 in Brazil, later made it into my dissertation, and finally a gabillion years later is on the verge of publication. Debian developers, in particular, might dig this piece. I made use of your blog entries, mailing list discussions, interviews, and photos to reveal what is special about these events and also memorialize some important events, such as the the founding of Debian Women. So while some I am sure some academics will find this piece distasteful for idealizing these events, so be it. I grew very fond of these conferences, they changed the way I thought of computer hacking, and why not write something that makes those you worked with feel good (as opposed to bored and confused). Finally, academics have totally missed the theoretical boat when it comes to conferences, which are probably one of the most important ritual forms of modernity and yet there is so little written on them an issue I address briefly in the conclusion. Note that this version has various mistakes (including the name of Joel Espy Klecker and the caption under Figure 3, and Figure 9). Since many of your are human debugging machines, if anyone takes a preview read and finds any typos, feel free to send along as I will be sending the proofs back next week.

John Goerzen: Review: The Happiest Days of Our Lives (by Wil Wheaton)

I started to write this review last night, and went looking for Wil Wheaton s blog, where many of the stories came from, so I can link to it from my review. It was getting late, I was tired, and so I was a bit disoriented for a few seconds when I saw my own words flash up on the screen. At the time, his most recent story had excerpted my review of paper books. Wow, I thought. This never happens when I m about to review Dickens. And actually, it s never happened before, ever. I ll admit to owning a big grin when I saw that one of my favorite authors liked one of my blog posts. And Wil Wheaton is one of my favorite authors for sure. I enjoy reading others too, of course, but Wil s writing is something I can really identify with like no other. My parents were never in a London debtor s prison like Dickens were; I was never a promising medical student like A. C. Doyle. But I was, and am, a geek, and Wil Wheaton captures that more perfectly than anyone. After I read Just a Geek a few years ago, I gave it to my wife to read, claiming it would help her understand me better. I think it did. In The Happiest Days of Our Lives, Wil recounts memories of his childhood, and of more recent days. He talks of flashbacks to his elementary school days, when he and his classmates tried to have the coolest Star Wars action figures (for me: calculator watches). Or how his aunt introduced him to D&D, which reminded me of how my uncle got me interested in computers. Teaching himself D&D was an escape for the geeky kid that wasn t good at sports, as teaching myself Pascal and C was for me. Between us, the names and activities are different, but the story is the same. I particularly appreciated Wil s reflections on his teenage years. Like him, at that age, I often found myself as the youngest person in a room full of adults. Yet I was still a teenager, and like any teenager, did some things that I look back on with some embarrassment now. Wil was completely honest with himself he admitted crashing a golf cart on the Paramount studio lot, for instance, but also reminds me that he was a teenager then. He recognizes that he didn t always make the best choices and wasn t always successful with what he did, but isn t ashamed of himself either. That s helpful for me to remember; I shouldn t be unreasonably harsh on my 16-year-old self, and need to remember that I had to be a teenager too. I also identify with him as a dad. He wrote of counting the days until he could teach his boys about D&D, about passing on being a geek to his sons. I ve had a similar excitement about being able to help Jacob build his first computer. Already Jacob, who is 3, loves using the manual typewriter I cleaned up for him, and spent an hour using the adding machine I dug out on Sunday while I was watching the boys. (I regret that I didn t have time to take it apart and show him how it worked right then when he asked). And perhaps his 2nd-favorite present of Christmas was the $3.50 large-button calculator with solar cell power I got him as an impulse buy at the pharmacy the other day. He is particularly enamored with the square root button because a single press replaces all the numbers on the screen with completely different numbers! I can t find the exact passage now, but Wil wrote at one point about his transition from a career in acting to a career in writing. He said that he likes the feeling he gets when his writing can touch people. He s been able to redefine himself not as a guy that used to be an actor on Star Trek but a person that is a good author, now. I agree, and think his best work has been done with a keyboard instead of a camera. And that leaves me wondering where my career will take me. Yes, I m an author, but of technical books. Authors of technical books rarely touch people s hearts. There s a reason we read Shakespeare and Dickens in literature classes, but no high school English teacher has ever assigned Newton s Opticks, despite its incredible importance to the world. Newton revolutionized science, mathematics, and philosophy, but Opticks doesn t speak to the modern heart like Romeo and Jiuliet still does. Generations of people have learned more about the world from Shakespeare than from Newton. I don t have Wil s gift for writing such touching stories. I ve only been able to even approach that sort of thing once or twice, and it certainly won t make a career for me. Like Wil, I m rarely the youngest person in the room anymore. His days of being a famous teenage actor on a scifi series are long gone, as are mine of single-handedly defeating entire teams at jr. high programming contests. (OK, that s a stretch, but at the time it sure felt exciting.) But unlike him, I m not completely content with my niche yet. I blog about being a geek in rural Kansas, where there still aren t many. I m a dad, with an incredible family. And I write about programming, volunteer for Debian and a few other causes, and have a surprisingly satisfying job working for a company that builds lawn mowers. And yet, I have this unshakable feeling of unsettledness. That I need to stop and think more about what I really want to do with my life, perhaps cultivate some talents I don t yet have, or perhaps find a way to make my current path more meaningful. So I will take Wil s book as a challenge, to all those that were once sure of what their lives would look like, and are less sure with each passing year: take a chance, and make it yours. And on that score, perhaps I ve done more than I had realized at first. Terah and I took a big chance moving to Kansas, and another one when we bought my grandparents run-down house to fix up and live in. Perhaps it s not a bad idea to pause every few years and ask the question: Do I still like the direction I m heading? Can I change it? Wil Wheaton gives me lots to think about, in the form of easy-to-read reflections on his own life. I heartily recommend both Just a Geek and The Happiest Days of Our Lives. (And that has nothing to do with the fact that the Ubuntu machine he used to write the book probably had installed on it a few pieces of code that I wrote, I promise you.)

Sandro Tosi: Debian lists spam: ALL messages reviewed!!!

Holy crap! I don't know how I made it, but my mailing-list spam review page is EMPTY!! It was a long way, started on 2009-04-05, but at least the biggest part is done (now there are only the new reports, much much less than the whole backlog).

Again, I'd like to invite anyone to contribute to have (an ideal) lists.d.o spam free:
I know it seems boring at first (and indeed it is), but we are many people, and anyonw contributes a little, it will be much faster and less-annoying. For example: why not review some message while waiting for your next package to be built? Or while you wait for the dist-upgrade to end? Or in any other situation where you got some minutes of spare time to dedicate to such an easy task?

Some links to those interested:
Have fun!

Neil Williams: Intermittent tasks

Sometimes, the main task at any one time is simply going to take time and cannot be shortened. With my poor network connection, this tends to occur any time I need to do network tasks like multistrap and debootstrap tests, archive updates and the rest. The problem is that my network connection is so bad, most apt type tasks completely saturate all available bandwidth, especially when downloading a single large package like those built from gcc or OOo.

Thankfully, gpdftext has provided an intermittent task that is useful, intermittent, non-network dependent and relatively straightforward (so as not to be too distracting from the main task) without being sufficiently routine to make me think about automating it.
I've downloaded some 70 public domain novels as A4 PDF and I'm gradually working through them in gpdftext to tidy up the chapter headings and reformat as an A5 PDF, ready to be transferred back to my ebook reader.

This version of gpdftext isn't released yet (it's current SVN, 0.1.0) as it's in string freeze. However, it provides a fairly robust test of the next release. :-)

Current list includes: Little Women, Fairy Tales of Hans Christian Andersen, Lady Susan, Northanger Abbey, Pride and Prejudice, Sense and Sensibility, Peter Pan (Peter and Wendy), Lorna Doone: A Romance Of Exmoor, The Gap in the Curtain, The Thirty-Nine Steps, Through the Looking Glass (And What Alice Found There), Fanny Hill: Memoirs of a Woman of Pleasure, Moll Flanders, Robinson Crusoe, The Further Adventures of Robinson Crusoe, A Tale of Two Cities, David Copperfield, Great Expectations, Little Dorrit, Oliver Twist, The Life And Adventures Of Nicholas Nickleby, The Adventures of Sherlock Holmes, The Casebook of Sherlock Holmes, The Hound of the Baskervilles, The Memoirs of Sherlock Holmes, The Return of Sherlock Holmes, Cranford, The Wind in the Willows, King Solomon's Mines, Tess of the d'Urbervilles, The Hunchback of Notre Dame, Declaration of Independence, Just so Stories, Kim, The Jungle Book, The Man Who Would be King, The Arabian Nights, Lady Chatterley's Lover, Sons and Lovers, Women in Love, The Story of Doctor Dolittle, The Call of the Wild, The Game, White Fang, Moby Dick, Anne of Green Gables, The Well at the World's End, Pygmalion, An Inquiry into the Nature and Causes of the Wealth of Nations, East is West, Strange Case of Dr Jekyll and Mr Hyde, The Jewel of Seven Stars, Anna Karenina, The Adventures of Huckleberry Finn, The Adventures of Tom Sawyer, The Kama Sutra, 20,000 Leagues Under the Sea, The Aeneid of Virgil.

That should be enough for now.... (21 converted so far).

John Goerzen: Tunnels and Slippers

Dad! Shall we play tunnels and slippers? If you spend much time in our house, chances are you ll hear Jacob, our 3-year-old, ask me that question. It might sound a bit mysterious, but in 3-year-old logic, it totally works. One day, Jacob and I accidentally invented tunnels . I would sit on the couch, the footstool a foot or two away, with my legs on it. Jacob started crawling underneath the resulting tunnel , then got excited about crawling on top of it, crashing down off of it, or slowly sliding down. Sometimes I would take one leg off, and he would fix the tunnel. Afterwards, he d excitedly tell me, Dad! I fixed the tunnel all by myself! This being winter, I usually wear slippers around the house to keep my feet warm. Jacob steadfastly refuses to wear anything but bare feet, maintaining his feet are warm when asked. One day while we were playing tunnels, Jacob started trying to steal my slipper. I defended it by using my other foot to tickle him. He eventually got it, much to his delight. Then he d try to get the other slipper. If you were to listen to a CD of this, you d hear a frenzy of cackling, laughter from both of us, and eventual shrieks of delight as he steals the second slipper. At this point, what s a 3-year-old to do with two ill-gotten slippers? Why, put them on and try to run off with them, of course! So Jacob puts them on, and if I am too slow trying to recover them, will helpfully prompt me with Shall you get the slippers back? When I stand up, he ll shriek, and waddle off at top speed which isn t that fast, considering he s wearing slippers that won t fit his feet for another 15 years. Eventually I will make a big show of having very cold feet and wanting my slippers back. He will laugh in delight, and continue trying to escape. Eventually I ll catch him, lift him up high, and shake his legs until the slippers fall off. Then it s a mad dash to see which one of us will get them back on first. If I do, then it s back to the couch for more tunnels and slippers. So there you have it: tunnels and slippers. Interestingly, I asked Jacob the other day if he wanted to wear HIS slippers. He predictably said no. I pointed out that if he wears his, he d be just like me. He said, Here they are. Shall you help me put them on? I did. He walked around proudly. I asked him if his feet were warm. Yes, they were, he said. So you won t need to steal my slippers anymore? A brief look of panic crept across his face! I felt bad, until he replied with, No, my feet still VERY VERY cold, dad! Shall we play tunnels and slippers right now?

28 December 2009

Dirk Eddelbuettel: inline 0.3.4 released

Oleg has updated the inline package to version 0.3.4 which is now on CRAN. It is includes my patch for both Rcpp support as well as extended header / library options for PKG_CPPFLAGS, PKG_CXXFLAGS, and PKG_LIBS which I had mentioned recently here and here. There is also a brand-new and shiny R-Forge project for it. A new release of Rcpp will probably follow in due course as we can now depend on this new inline version; Romain has also put nice new code in around exceptions and we may add some more on external pointers. Good times ...

John Goerzen: Review: Those new-fangled paper books

Everyone seems to be familiar with ebooks these days. I own a Kindle 2, and of course we ve spent weeks hearing how great the Nook will be, then weeks hearing how terrible it turned out to be. But nobody seems to be casting an eye back towards paper, so I thought I d rectify that here, especially since paper books have some serious stability issues that are often overlooked! Before I begin, I feel it wise to offer this hint to the reader: this review should not be taken too literally. If you have an uncontrollable urge to heave a volume of the Oxford English Dictionary at me as if I am some European prime minister, please plant your tongue more firmly in your cheek and begin again. Today I picked up a paper book to read just for fun The Happiest Days of Our Lives by Wil Wheaton. Long-time (since this spring!) Kindle user that I am, I immediately noticed the dashing use of color on its front cover, but when I opened it, I was disappointed that I couldn t scale the font size down from the default. It seems that paper books have only one font option what are all these Kindle forum posters complaining about with its six sizes of a single font? On the very first page, I encountered a word I wasn t familiar with (Namaste). I thought I knew what it meant from the context clues, and even had the thought that on the Kindle, I could just highlight it and confirm my guess. But my paper dictionary was in the basement, so I didn t bother looking it up until I wrote this post. (My hunch was reasonably correct.) Interface-wise, the paper book is solid, and crashes, lockups, or other malfunctions are rare. I have, however, noted severe stability problems when attempting to read outdoors, especially when it s windy (which, since I live in Kansas, is pretty much always). Pages start turning themselves, even without me making the turn page gesture. Sometimes the book will even lose its memory of my last page read. This is rather annoying, and might even involve a lengthy search for a suitable temporary replacement bookmark. Also, I haven t tried it, but I suspect that the trick of putting a Kindle in a ziplock bag to read at the beach or in the tub without risk of getting it wet would be impractical with a paper book. Paper does have its advantages. For one, it s faster to flip rapidly through pages on paper than on an ebook reader. If you know roughly where in the book something was written, but not the precise wording, searching can be faster on paper. On the other had, if you are looking for a particular word or phrase, the ebook reader may win hands-down, especially if the paper book has no index. Paper is so stable that some would argue that the extreme impracticality of making good backups isn t really a problem at all. But on the other hand, paper books degrade slightly each time they are used, and this condition can be aggravated by placement in bags for transport. Eventually, they will wear out. If my Kindle wears out, I can always restore David Copperfield from my backup copy to a new one. If my printed edition (all two volumes) of it wear out, then I have to hope that the used bookstore will still sell me another one for $10. Otherwise I d have to either drive 45 miles to find one for sale, attempt to deal with the DRM for paper books at a library, or wait a couple of days for Amazon to get it to my door. A fire or flood could be devastating. Paper books also have some advantages for showing photos; no ebook reader is close to the size and resolution of glossy paper photos books in a reasonable price. The contrast on most paper books is better than that of my Kindle, but some older ones are actually worse, smell dusty, and suffer from occasional display corruption as bits of them actually break off of the book device. As to cost, it is a mixed bag. Out of copyright classics are free as ebooks from Project Gutenberg and the like, while still costing money on paper. I have found that the accuracy of some of these paper editions can be rather questionable people have sometimes manually removed important bits of the story to save on printing costs, rather than let Google Books OCR mangle it for them automatically. On the other hand, used paper editions of more current works can be found for a fraction of the cost of the new ebook edition though you are often limited in selection of these bargains. But you can usually browse a paper book for a few minutes before buying it, which is rarely available for an ebook. What s more, libraries might let you borrow paper books for free. But you often have to expel greenhouse gases to get to them, and then they enforce DRM on you you only get to read it a certain amount of time before they start adding fees. You could easily wind up paying $2 if you keep it a week longer than you should have. With ebooks, of course, there is no free borrowing (and the Nook feature it too limited to count.) And you of course know that most libraries are run by the government, so they have your address. Trying to circumvent a library s DRM could wind up involving the police, so you had best comply. Making copies of a paper book is expensive and requires specialized equipment, even if you just want a copy for backup. Compatibility problems with paper books are rare, and are usually found among readers with poor eyesight. A few works can be found in large font editions, but most can t, so those readers are left needing expensive specialty magnifiers. All in all, I prefer reading books on my Kindle, but still read on paper when that s how I have a book.

Muammar El Khatib: I am getting older

Well, today I am getting older. I am 26 now. I am singing this song for me:

They Might Be Giants -- Older

You're older than you've ever been.
And now you're even older.
And now you're even older.
And now you're even older.

You're older than you've ever been.
And now you're even older.
And now you're older still.

TIME! Is marching on.
And time.. is still marching on.
This day will soon be at an end and now it's even sooner.
And now it's even sooner.
And now it's even sooner.
This day will soon be at an end and now it's even sooner.
And now it's even sooner.
And now it's sooner still.

You're older than you've ever been.
And now you're even older.
And now you're even older.
And now you're even older.

You're older than you've ever been.
And now you're even older.
And now you're older still.

:-)

27 December 2009

Francois Marier: Ignoring files in git repositories

According to the man page, there are three ways to exclude files from being tracked by git.

Shared list of files to ignore The most well-known way of preventing files from being part of a git branch is to add such files in .gitignore. (This is analogous to CVS' .cvsignore files.)

Here's an example:
*.generated.html
/config.php
The above ignore list will prevent automatically generated HTML files from being committed by mistake to the repository. Because this is useful to all developers on the project, .gitignore is a good place for this.

The next line prevents the local configuration file from being tracked by git, something else that all developers will want to have.

One thing to note here is the use of a leading slash character with config.php. This is to specifically match the config file in the same directory as the .gitignore file (in this case, the root directory of the repository) but no other. Without this slash, the following files would also be ignored by git:
/app/config.php
/plugins/address/config.php
/module/config.php

Local list (specific to one project)For those custom files that you don't want version controlled but that others probably don't have or don't want to automatically ignore, git provides a second facility: .git/info/exclude

It works the same way as .gitignore but be aware that this list is only stored locally and only applies to the repository in which it lives.

(I can't think of a good example for when you'd want to use this one because I don't really use it. Feel free to leave a comment if you do use it though, I'm curious to know what others do with it.)

Local list (common to all projects)Should you wish to automatically ignore file patterns in all of your projects, you will need to use the third gitignore method: core.excludesfile

Put this line in your ~/.gitconfig:
[core]
excludesfile = /home/username/.gitexcludes
(you need to put the absolute path to your home directory, ~/ will not work here unless you use git 1.6.6 or later)

and then put the patterns to ignore in ~/.gitexcludes. For example, this will ignore the automatic backups made by emacs when you save a file:
*~
This is the ideal place to put anything that is generated by your development tools and that doesn't need to appear in your project repositories.

Chris Lamb: Readline tab completion using Django models

The following snippet allows readline-style tab completion backed onto Django models. I am using this in management commands in preference to specifying primary keys as arguments.
class QuerySetCompleter(object):
    def __init__(self, qs, field):
        self.qs = qs
        self.field = field
        self.prefix = None
    def __call__(self, prefix, index):
        if prefix != self.prefix:
            qs = self.qs.values_list(self.field, flat=True)
            if prefix:
                qs = qs.filter(** 
                    '%s__startswith' % self.field: prefix,
                 )
            self.matching = list(qs)
            self.prefix = prefix
        try:
            return self.matching[index]
        except IndexError:
            return None
Example usage:
import readline
from mymodels import MyModel
completer = QuerySetCompleter(MyModel.objects.all(), 'name')
readline.set_completer(completer)
readline.parse_and_bind("tab: complete")
readline.set_completer_delims('')
while 1:
    print repr(raw_input(">>> "))
Pressing <tab> at this >>> prompt will complete from the name field of the MyModel model just like a regular shell would. We call readline.set_completer_delims as our items may contain word delimeters - otherwise readline would attempt a seperate completion of (eg) "Bar" if one of our items was "Foo Bar".

Thorsten Glaser: speling[sic!]

With the Lintian 2.3.0 saturday-after-christmas release (by the way, over here if it s done twice it ll really become tradition) I ve run its spelling tests over all of MirOS CVS repository. The result: 293 kinds of typos in 35857 souce files. (Although there are the case things too. Without them, I have 51 typos in 7206 files. Asides from false positives (I used fgrep -rwl[i], and -i and -w don t play well together, and -w mis-catches GTK+ as GTK ) I probably can t (API, source code) or won t fix all of them though.) However, I have some rather hot asia-style food to eat right now, and will need to get up early tomorrow for work, so I am not applying/fixing them right now. (bsiegert@ and gecko2@ however are enjoying themselves at 26C3, see their wlog entries.) Note that all of today s fixes will not make it into the next MirBSD snapshot already, since it s built (i386) and building X11 already (sparc). On the other hand, the next bunch of WTF *.deb files will have them. I also need to fix makefs upstream for Hurd and continue the T&S questionnaire *sigh* Update: I suppose this is my Hello, Pl net Debian! posting (thanks aptituz!) well, my packages in the archive were already lintian clean, in case someone wonders (I did recheck with 2.3.0 though). My point was, why not use checking tools from one universe for another one, viceque versa? (Similar to synergy effects from knowledge.)

Andreas Barth: Backup non-NIH?

I'm currently looking for some backup tool, but each tool lacks some features. I'd like to I took a deeper look at duplicity, but the encryption to gnupg means I need to copy files around. Also the webdav-uploader has some issues if backups get too large (i.e. uploads take too long). Any other hints? Or is it worth to start to enhance duplicity? Update: I'd like to generate the backup on the backuped system, but to manage them (i.e. purge old versions) on the backup system. And of course restore to any host within my control. Without exposing any affected gpg key, but just the one-time key(s) for the affected backup(s).

26 December 2009

Stefano Zacchiroli: RC bugs of the week - week 16

RCBW - week #16 ... and here are christmas (for those who care) RC squashes, by yours truly (for those who care too): and here are the usual notes: Hint/request of the week: please add +pending when you do DELAYED/ NMUs, that way filtering out already taken care of bugs gets easier and refreshing a bug log page in the browser will immediately show the new tag at the top.
(Yes, I agree that nmudiff should offer that when passed --delay, I intend to propose a patch for that, but feel free to beat me at it :-P) In other news, christmas vacations are awesome to catch up with books you planned to finish reading months ago ... Update: the patch for nmudiff I've mentioned has been kindly provided by gregor hermann, thanks!

Erich Schubert: Duplex on HP OfficeJet Pro 8000 seriously messed up

My parents needed a new printer, and after some research I decided to recommend them an HP OfficeJet Pro 8000. Today I gave it a try, by printing some CD covers for a CD to give away for christmas to some friends.HP failed in a very subtle way: I had printed the covers, cut them, produced the CDs for them. Then I wanted to put the printed covers into the CD cases.Despite the graphics being 12cm x 12cm in size, HP managed to print them in 12cm x 11.4cm. Without any notice (or giving me a choice) it had decided to scale them on the y axis. Which makes them completely unusable, since they don't fit the 12cm height of the CD case now.After some more experiments, I decided to retry without duplex, and voila: 12cm x 12cm.Duplex on HP OfficeJet Pro 8000 is only usable for draft printing, since it will distort your pages!(See also this devidence in the HP forums, of people with the same issue, an attempt to investigate the margin messup happening, a report that the DJ990c driver can print duplex on this printer without messing with the margins, but is slower and offers less print quality. So it seems that this is an HP driver problem. And technically, it must be caused by the driver; at least it should be able to compensate for this!)I also noticed another issue with the print. The bottom right corner of the graphic didn't get enough ink, it looks like the printer stopped printing a bit too early. I don't know if this also happens in non-duplex, since I worked around this by adding a header and footer to the page.Seriously, we should send back the printer. On my first try to use it, I already encountered two bugs. I wonder how many bugs I would see if I'd use it every day?

Julien Blache: forked-daapd news: FrontRow support, TV shows

Over the past weeks, a couple of contributors sent me fixes and new features for forked-daapd. Thanks to you all! The biggest change is the addition of TV shows metadata as found, for instance, in TV shows bought on the iTunes store. Together with the added support for FrontRow and QuickTime clients, this means forked-daapd is a lot more able at streaming video files than it ever was. Kudos to Ace Jones for his work! Note, however, that you ll need a patched version of ffmpeg to pick up the TV shows metadata from your MP4 files. At the time of writing, the patches have not landed into ffmpeg upstream yet, and it s a bit unclear when this will happen. Contact Ace for the patch and instructions, see the commits in the git tree for his email address. Git tree on Alioth: http://git.debian.org/?p=users/jblache/forked-daapd.git (git URIs on the page)

25 December 2009

Joachim Breitner: Building arbtt for Windows

A friend of mine is interested in trying out the Automatic Rule Based Time-Tracker arbtt which I programmed. Unfortunately, he is using Windows and up to now, arbtt only worked on Linux. But as I wanted to check out Haskell s cross-platform abilities for a while, this was a good opportunity to do so. I don t have Windows installed myself (and did not plan to do so), so I did all this under WINE, the Windows compatibility layer, which works very well: It takes only a few minutes to install the Haskell Platform for Windows and then I was able to run wine ghc --make and cabal install. I played around with some simple programs and was surprised by these timings:
$ rm *.o *.hi; ghc --make fourfours.hs ; time ./fourfours > /dev/null
[1 of 1] Compiling Main             ( fourfours.hs, fourfours.o )
Linking fourfours ...
real	0m1.909s
user	0m1.692s
sys	0m0.208s
$ rm *.o *.hi; wine ghc --make fourfours.hs ; time wine ./fourfours.exe > /dev/null
[1 of 1] Compiling Main             ( fourfours.hs, fourfours.o )
Linking fourfours.exe ...
real	0m1.631s
user	0m1.376s
sys	0m0.092s
So it is faster to run a compiled Haskell program on top of a compatibility layer than directly on Linux! The world is in order again, though, if optimization is enabled:
$ rm *.o *.hi; ghc -O --make fourfours.hs ; time ./fourfours > /dev/null
[1 of 1] Compiling Main             ( fourfours.hs, fourfours.o )
Linking fourfours ...
real	0m0.981s
user	0m0.876s
sys	0m0.108s
$ rm *.o *.hi; wine ghc -O --make fourfours.hs ; time wine ./fourfours.exe > /dev/null
[1 of 1] Compiling Main             ( fourfours.hs, fourfours.o )
Linking fourfours.exe ...
real	0m1.270s
user	0m1.036s
sys	0m0.072s
Funny. Anyways, I wanted to port arbtt. The only platform-dependent part is the capture module that gathers the list of open Windows. The Win32 package that comes with the Haskell Platform did not cover all the functions needed to do so, but creating additional function bindings is really easy with Haskell, as can be seen in the Graphics.Win32.Window.Extra module. I also replaced the locking code that prevents two instances of arbtt-capture to run at the same time by equivalent code using Windows mutexes (module System.Win32.Mutex). With these small changes and some CPP conditionals to make the code compile for either platform, the porting was done! Even accessing the files in ~/.arbtt works correctly on Windows, where it will look in the Application Data folder, without changing the code, thanks to System.Directory.getAppUserDataDirectory. But Windows users won t like compiling software on their own. They won t even like installing software by copying various files to certain directories. Therefore, I also had to create a Windows Installer. I picked Inno Setup, because it s Free Software and seems to be simpler than NSIS. The installer puts the compiled .exe files, the example categorize.cfg and the HTML documentation in the right spot, adds icons to the Start Menu ( Edit categorize.cfg , which fires up wordpad, a link to the documentation and the uninstaller), puts arbtt-capture in the Autorun folder, puts the path to arbtt-stats in the PATH variable and starts arbtt-capture at the end (the last three points being optional). Of course it undoes all this when removing the program again. I integrated the call to the Inno Setup installer into the usual ./Setup build process of Haskell packages. Some more details of how to create the Windows installer are mentioned in the README file. Now all this does not magically add a graphical user interface to arbtt, so users will still have to work with arbtt-stats on the command line even on Windows. If this is not a problem for you then you can fetch the latest installer from the arbtt homepage. And if you happen to become a serious user of arbtt on Windows and want to help maintaining the Windows port, I ll gladly share some responsibilities. I m very satisfied with the process and the result and I m happy to know that I can offer some of my programs also to Windows users in the future.It is also a big plus for Haskell with Python, shipping a program for Windows users is likely more difficult. The next step will be providing gtk-based graphical Haskell applications for Windows, including a nice installer that ideally includes all dependencies (gtk etc.).

Christian Perrier: My Christmas gift to Debian

Being stuck at home because of my stepfather's health condition becoming worse and therefore family meeting plans being changed, I just made the Debian project a small Christmas gift by fixing an RC bug on December 25th for the first time in my Debian life. Apparently, after TeXLive packages changes, this one will not be the only one discovered by Lucas automated archive rebuilds. Anyway, Merry Christmas to those of you who celebrate it.

Clint Adams: Distributed shell scripts for Christmas

When being told about the differences between Puppet and Chef by Puppet fans, a few common talking points emerged. They included the terms DSL , declarative , and shell script . Shell script was probably the most entertaining meme, and referred to how, without dependencies, Chef was just like writing shell scripts in Ruby. In actuality, a Chef cookbook appears to be roughly 17 files in 7 different directories. Most of them end in .rb, but there is also a metadata.json to keep the metadata.rb company, and perhaps an .rdoc if you like that sort of thing. I have no idea who writes shell scripts this way. I am also stupefied that people say this is easier than Puppet, because I doubt I would want to perform system administration by writing one of these things. So when I started writing my own thing, I contemplated the dependency issue, and for a few minutes decided to be lazy and leave them out entirely. Once it dawned on me, however, that I was then writing shell scripts in Lua, I became ashamed. If I were going to go that route, why not just set up a git repository with a bunch of shell scripts, and set up cronjobs on each of the clients to do a git pull and run these shell scripts as root? After all, nothing beats shell scripting for shell scripting, not Perl, not Python, not Ruby, and least of all Lua. So I wrote a dependency resolver. It was easier than I had anticipated and I have vague plans to make it smarter than Puppet's. Then I'm justified in sticking to my Lua DSL . Now Steve has a list of requirements that seem to be relatively mild. I think he could easily get away with a VCS-shellscript-cron setup. The VCS pull can be tunneled over ssh or stunnel or anything else which will provide authentication and encryption, so there is no need for a fancy custom server with its own certificate authority. In short, all the tools are there and you just need glue. I will continue to pretend that I'll need more complex logic and power that only Lua can give me, so I'll end up doing VCS-Lua-cron until I change my mind.

Martin-&#201;ric Racine: Bad, bad Linux kernel!

Ever since Linux kernel 2.6.31 was released, my AMD Geode LX800-based FIC ION 603 can no longer boot; I get a fatal kernel crash near the end of the initramfs loading phase. At the crux of the issue seems to be a recently added kernel feature for caching filesystem ACL. I don't even use the ACL feature on my hosts, but there you go; it still crashes the kernel. Sigh. Having filed a bug on Launchpad and reported the issue upstream failed to produce a fix - despite the sustained involvement of two members of the Ubuntu kernel team members to help me narrow down the cause of this fatal kernel crash. Mentioning the issue to OLPC kernel developer Andres Salomon, he commented how he finds the new ACL caching code in the ext2/ext3/ext4 filesystem drivers downright creepy, but added that he currently lacks the time to further investigate the issue. I'm thus wondering if anyone else is experiencing this issue and might possibly have a fix to propose? Alternately, help towards debugging and fixing this issue is extremely welcome, as this bug will seriously affect users upgrading from older Debian and Ubuntu releases based on pre-2.6.31 kernels, when Debian/Squeeze and Ubuntu/Lucid are published in spring. PS: yes, the issue still exists in kernel 2.6.32 also.

Steve Kemp: And if someone gets upset you say, "chill out"!

It was interesting to see Clint Adams describe love and dissatification with configuration management. At work I've got control of 150(ish) machines which are managed via CFEngine. These machines are exclusively running Debian Lenny. In addition to these hosts we also have several machines running Solaris, OpenBSD, and various Ubuntu releases for different purposes. Unfortunately I made a mistake when I setup the CFEngine infrastructure and when writing all the policies, files, etc, I essentially said "OK CFEngine controlled? Then it is Debian". (This has been slowly changing over time, but not very quickly.) But in short this means that the machines running *BSD, Solaris, and non-Debian distributions haven't been managed as well via CFEngine as the rest, even though technically they could have been. A while back I decided that it was time to deal with this situation. Looking around the various options it seemed Puppet was the way of the future and using that we could rewrite/port our policies and make sure they were both cleanly organised and made no assumptions. So I setup a puppetmaster machine, then I installed the client on a range of client machines (openbsd, debian lenny, ubuntu, solaris) so that I could convince myself my approach was valid, and that the tool itself could do everything I wanted it to do. Unfortunately using puppet soon became painful. It has primitives for doing various things such as maintaining local users, working with cronjobs, and similar. Unfortunately not all primitives work upon all platforms, which kinda makes me think "what's the point?". For example the puppet client running upon FreeBSD will let you add a local user, setup a ~/.ssh/authorized_keys file but will not let you setup a password. (Which means you can add users who can login, but then cannot use sudo. Subpar) At this point I've taken a step back. As I think I've mentioned before I don't actually do too much with CFEngine. Just a few jobs: (i.e. I don't use cron facilities, I add files to cron directories. Similarly I don't use process monitoring, instead I install the monit package and drop /etc/monit/monitrc into place.) There is a pretty big decision to make in the future with the alternatives being: If we ignore the handling of local users, and sudo setup, then the tasks that remain are almost trivial. Creating a simple parser for a "toy-language" which can let you define copies, edits, and package operations would be an afternoons work. Then add some openssl key authentication and you've got a cfengine-lite. For the moment I'm punting the decision but I'm 90% certain that the choice is CFEngine vs. Chef vs. In-House-Fu - and that puppet is no longer under consideration. Anyway despite having taken months to arrive at this point I'm going to continue to punt. Instead my plan is to move toward using LDAP for all user management, login stuff, and sudo management. That will be useful in its own right, and it will coincidentally mean that whatever management system we do end up using will have on less task to deal with. (Which can only be a good thing.) ObFilm: Terminator II

Next.

Previous.