Search Results: "will"

3 October 2009

Eugene V. Lyubimkin: cupt bits

I made an announce of Cupt. It resulted in some new people trying & testing & reporting bugs, plus several Linux/Unix-related sites picked up the announce and formed a news entry from it. And a bit sadly, though fully expectedly, most of comments played implementation language holy war.

Since first beta was uploaded, I have some time to perform usual round of optimization, and it appeared to be quite productive this time. Several minor optimizations were simple enough to go directly to master branch. With a usual bunch of bug fixes, they formed just uploaded first release candidate. Another few of them are more complex, so they live in various branches and, presumably, will be a part of Cupt 1.1 after some testing.

Josselin Mouette: Sexism . Again.

I can t say I m surprised, but I m still appalled by reading, again, a completely out-of-reality polemic about a leader of the Free software community being called sexist (among other nice names), after an innocent and random word used in a talk. Oh noes! Serving in the navy will hurt! It s often that you hear jokes or references picturing French as arrogant, Italians as womanizers, geeks as bearded and smelling under the arms, sailors as gay, et c tera. It s called a clich , and it helps people understand each other because it s part of the collective imagination. If you insert a reference to an Italian in a speech about womanizers, it helps picturing the clich of a guy in a black Armani suit, wearing sunglasses and using gomina. It doesn t mean you think Italians are like this, and if it ever convinces someone that they are so, it means that someone really had trouble using the thing she calls brain to begin with. The same goes for a talk about people not being familiar to computers, that is using women as a clich . When you look for a picture in your mind of someone who has trouble with using computers, what do you find? A granny fighting with her keyboard which keys are not in alphabetical order, or a busty blonde following with her eyes each movement of the mouse cursor. It s only natural to use these pictures as a ground for communication, and it doesn t mean you think bad of grannies or busty blondes. And if, because of that or of anything else, some people end up thinking that women can t use a computer, or that they are not equal to men in this regard, these people are the sexist ones. Not the guy who drew that picture in a magazine you read 10 years ago and forgot since, nor the one using it as a reference. My intolerance is worth more than yours And instead of actually focusing on educating or slapping those people, some of us are conducting a witch hunt, in which anyone implying the very existence of different categories of people, called men and women, regardless of his merits or opinions, is called a sexist and has stones thrown to him on several public fora. This is not acceptable. Do not let your speech be dictated by intolerance. If you apply the same reasoning to anyone that could be possibly hurt, in a completely literal and simplistic analysis of the speech, you can stop right now using any kind of metaphor, idiomatic expression or proverb. All that remains is a poor, sterilized speech. And when the speech is poor, the ideas get poorer as well. Imagine what would a complete stranger reading those blogs understand. She would surely picture hackers as a completely misogynistic community in which people only talk about women (whether it is for sexist jokes or for rhetorical discussions about them) and never talk with them. Which would be utterly wrong, since hackers (and geeks in general) are on the contrary open-minded and friendly to feminism, compared to the rest of the population of course, except for the OMG OMG it s a woman! We need to be nice!!! kind. And this is actually the reasoning that hides behind all this insane RMS and Mark Shuttleworth are sexist trolls. The picture they are giving of women are that of fragile little things that need to be protected against any attack of all these evil misogynist bearded geeks. Pretty ironical for people who claim fighting for gender equality, isn t it? Questioning the unquestionable Frankly, RMS and Mark are among the people I trust the less in the community, but I don t need to paint them as misogynists for that. Look at what they say instead of how they say it: one is an intolerant man who used to be a visionary but turned his principles into dogma; the other has seen the light and behaves as if he was the savior of Free software. I d prefer if we questioned their vision and leadership based on their ideas and actions, not on distorted ways to interpret what they say based on a few people s neuroses. Or, to say it shorter: dudes, get a life.

Andrew McMillan: I still know where it came from...

I publish my photos on the internet. Well, I do when I get around to updating it, anyway. When I do so, I include some information about licensing them. I say to people "I'm very open to people wanting to use these pictures for something else, and will be happy to release photos into the public domain on request." so when I discover one of my photos abused by a travel website I do wonder why I didn't hear about it. Well it seems I also upload a lot of photos to the Burning Well public domain photo repository or to Wikimedia Commons where I also mostly mark them as PD-self. Still, you don't expect a photo of Cuilapan Monastery near Zaachila, Oaxtepec, Mexico to appear on a page about Edinburgh Castle, but really. Am I just being picky? Is this the norm? Are there really people all over the intawebs taking this little care about what photos they use for this sort of thing? I realise there isn't much sunshine in my photos of Scotland, and my photos of Edinburgh Castle, but really. Scotland is renowned for it's preponderance of rain over sunshine and it is considerably glossing the reality of a visit to the real Edinburgh Castle to even suggest the sun might appear. On closer examination I see that the site is actually talking about some weird nutter's home in Jamaica. Nothing to do with anywhere I've ever been, though if I ever visit Jamaica I probably would actually visit the place they're talking about. Now that I know about it, anyway, and especially if I was with Max who claims his favourite castles are Craigmillar & Tolquhon because most of the others aren't at quite the right stage of ruination. Oh well. I guess by putting the photo into the public domain I gave up responsibility for them, and it does seem that it might be hard to find real photos of the ruin in question (let alone free ones). On the other hand I do feel obliged to point and laugh, because that photo isn't Jamaica by a considerable distance, and just because I PD a photo I should still be well within my rights to have a good old giggle when I see a Mexican monastery linked to a Scottish castle. Even one in Jamaica.

2 October 2009

Barry Hawkins: Just When a Wizard Would Have Been Most Useful: Coaching versus Contracting

Then they stopped, and Thorin muttered something about supper, and where shall we get a dry patch to sleep on? Not until then did they notice Gandalf was missing. So far he had come all the way with them, never saying if he was in the adventure or merely keeping them company for a while. He had eaten most, talked most, and laughed most. But now he simply was not there at all! Just when a wizard would have been most useful, too, groaned Dori and Nori (who shared the hobbit s views about regular meals, plenty and often).

- J.R.R. Tokien, The Hobbit

I am very fond of the works of J.R.R. Tolkien; it would not surprise me to find that many of you recognize these words from the second chapter of The Hobbit titled Roast Mutton . It occurred to me recently that there are parallels between Gandalf s role in The Hobbit and that of an Agile coach. Now, before my fellow Tolkien enthusiasts leap on their keyboards, bear with me on this. Know that I am not saying an Agile coach is on par with a wizard (OK, with one of the Istari sent by the Valar, but let s table that so as not to scare off the normal folk, alright?); that should be enough to calm you down. In the excerpt from The Hobbit at the top of the page, Bilbo and the dwarves have run into their first predicament. Note that it s not a particularly difficult situation; they just need to find shelter and partake of some food. Fire would be nice, too, if it could be managed. (Mind you, it s the first day of their journey; they set off mere hours ago fully provisioned and riding on ponies.) It isn t very long before the fledgling group finds itself not only without shelter and food, but in the hands of three rather nasty trolls who are deciding how best to eat the entire group. Gandalf returns once things have gotten out of control, and with some subtle adjustments to the situation, the crisis is averted. Could Gandalf have come back sooner and spared them this entire experience? Perhaps, but in their struggle a few key things happened. First, the group had to work out how to assess tasks at hand and appropriately delegate. To their credit, that effort was partially successful. The most skilled firestarters were assigned to that task, one of the keen-eyed dwarves was assigned to be the lookout. Second, they gathered some field experience that led to the establishment of improved practices, i.e. don t leave the ponies laden with packs when you make camp, particularly if it s all your food. (They lost most of their food that night when the pony carrying it bolted and ran straight into a nearby river later that night.) Third, Bilbo Baggins was called upon to perform his first task as burglar, albeit a fool s errand that landed them in the troll predicament. While Bilbo was wildly under-equipped for his job, he managed to work through it. That experience began a developmental journey that would prepare him for the great things that would be expected of him later on. This was not Gandalf s first adventure, nor was it the first group of people he needed to equip and challenge in order to develop them to a point that they could accomplish their goal. At this point, he s been in Middle-Earth just shy of 2,000 years. He would have been more than capable of walking them through their entire journey, but to what end? Agile coaching is a discipline that aims to help teams develop their own use of methodologies like Scrum and cross-methodology practices like testing, user stories, etc. This means equipping teams with just enough information to strike out on their own for a bit, then letting them run with it rather than dazzle them with one s own mastery so as to appear like the indispensable demigod. Until people struggle with the terse maxims of Agile Software Development, they cannot internalize them. And when the wizard is always around, why bother struggling? One of my greatest frustrations as an Agile coach is how few companies are willing to take a coaching approach with their Agile adoption. They want you to come in and be the demigod as a full-time contractor. Sure, there are fiscal, political, and seemingly practical reasons that they will cite; I chalk most of them up to being excuses for a lack of willingness to embrace what it would take to face the hard task of nurturing what you have. It s seemingly easier to just throw more money at more bodies and hope that somehow things will all work out, and surely if you can stumble upon some superstar to wrangle the mess, you ll eventually be able to browbeat them into becoming a full-time employee. Don t get me wrong; in some ways, I benefit from this dysfunction. From a selfish business standpoint, having a single full-time client is certainly easier than juggling multiple concurrent clients and their schedules. As far as actually accomplishing the aim of my business, however, I think it hinders the mission. One of my aims in working with companies is to be a coach despite being brought in as a contractor. It s certainly possible, though it is more challenging. There s not that natural separation of the coach from the team that forces them to take up the mantle on their own. Few things in my work are more rewarding than having a developer come to me and say, I wasn t really sure this Agile stuff could work, but now, after going through all this, I wouldn t want to go back to the old way of doing things. Much later in the journey of the hobbit and his dwarf companions, Bilbo is again called upon for a challenging task. His response makes me think Gandalf s approach has worked:
Perhaps I have begun to trust my luck more than I used to in the old days he meant last spring before he left his own house, but it seemed centuries ago but anyway I think I will go and have a peep at once and get it over. Now who is coming with me?

- J.R.R. Tokien, The Hobbit

Here s hoping more people will be willing to embrace the challenging, messy, and altogether beneficial task of equipping teams and allowing them to struggle when necessary, even if it means the occasional scuffle with trolls.

Neil Williams: Cold calls and LinuxExpo

Normally I, like most people, ignore cold calls but someone asking about opinions on software caught my interest - doesn't happen often. Turned out to be a study using contact data gleaned from a now dead Linux magazine which, in turn, had been gleaned from the attendance information submitted to a now all-but dead conference: LinuxExpo (the data itself was hidden in the data stream behind those fancy barcodes on the admission badges).

Simple questions about which languages I used, which development environments I used (questioner hadn't heard of either anjuta or geany but then as she also asked me to spell Debian that was probably to be expected) as well as questions about magazines and other sources of technical information. (She had heard of LinuxFormat and El Reg so that wasn't too bad.) More complex questions about why I chose a particular tool which I couldn't really answer in just a few words seeing as Martin has done an entire thesis on the answers to that question!

Got a more interesting response when asked for my opinion on various vendors - 1 to 5 where 1 is rubbish and 5 is superb. Adobe: 1 - got an oooh, why's that? (umm, no source code and better free software alternatives). RedHat: 4 got a slightly surprised tone but Microsoft: 1 got a "Really? why?" - to which the only answer had to be "release all the source code". :-)

Interesting that RedHat was mentioned, along with Google and Sun/Oracle but neither Ubuntu nor Debian.

Gradually found that the inspiration for the (expensive) methodology came from companies trying to get me to use proprietary demos which then turned into subscription-model tools. No go area for me, all my tools will need to remain free software or I'll just find something else. (Got another "why?" to that - with the inevitable "I need the source code to fix the tools" answer.) Also asked "what are your hobbies?" - to which I could only say "You've spent the last 5 minutes asking about my hobby, my paid work is not in IT".

Despite the call ending not 5 minutes ago, I've no memory of who was doing the survey. Still, she seemed impressed that I've been subscribed to LinuxFormat since about issue 3. :-)

Aigars Mahinovs: Test post with an embedded wave

Hello all, the latest craze is the Google Wave preview. I am in, so I am testing how a Google Wave will look when primitively embedded into a blog post using Wavr plugin for Wordpress. And here it is:
<script type="text/javascript"> add_wave("waveframe-1", bgcolor:"#dddddd", color:"#000000", font:"", font_size:"1em", width:"", height:"", id:"googlewave.com!w+Vc58PZQwA" ); </script> Update: to make it work replace in the Wavr source the URL to the WavePanel to https://wave.google.com/wave/ and to determine your wave url, go to your wave interface, click on a wave and look on you address bar for something like googlewave.com!w+Vc58PZQwA . If you have %252B in the URL, replace it with + . You might have to un-urlescape something else as well, so remember that %25 is a url escape for % .

Biella Coleman: Memefactory @ NYU



Memefactory @ NYU, originally uploaded by the biella.
At this point in my career, I can t really see myself organizing much of anything as it is time I don t seem to have. But after I saw Memefactory, I decided that it was well worth my time to get these guys and their computers to NYU. With help from a string of organizations at NYU, Memefactory will be performing a souped up, updated version of their masterful performance tour of Internet memes on October 9th. It is SO worth checking out. (ps, we remixed this poster though we did not get much of the bling)

******************
If one were to assume there might be any kind of end to the meaningless drivel on the web, one would be wrong. For this very reason, we present MemeFactory NYU. We re lucky enough to have been invited by NYU to present our second, full-length MemeFactory during which we wax philosorapsophical about the state of popular (and some unpopular and some berpopular) internet media. That means about one and one half of one hours of 3 projectors, 3 gentlemen, more pictures of cats, videos of fails and power ratings over 9000 than any previous MemeFactory. We d call it bang-for-your-buck, but damn this shindig is $Free! So don your pancake hat - or your furry suit, we wont judge - and get ready to Get Down, get WeeGee d and of course Crank That. http://wwksf.com/nyu To recap: WHEN: October 9 7:30-9:00. WHERE: Warren Weaver Hall RM 109, http://cs.nyu.edu/web/Location/directions.html (Free and Open to the Public) WHO: What We Know So Far http://www.whatweknowsofar.com/NYU WHY: Because it is not another academic lecture but lively performance filled with nothing but insight and humor for die-hard Internet memeologists and newbies alike. Take the plunge with the memefactory! SPONSORED: NYU @ Free Culture, Council on Culture and Media, Center for Religion and Media, NYU ACM s Chapter

Biella Coleman: Memefactory @ NYU



Memefactory @ NYU, originally uploaded by the biella.
At this point in my career, I can t really see myself organizing much of anything as it is time I don t seem to have. But after I saw Memefactory, I decided that it was well worth my time to get these guys and their computers to NYU. With help from a string of organizations at NYU, Memefactory will be performing a souped up, updated version of their masterful performance tour of Internet memes on October 9th. It is SO worth checking out. (ps, we remixed this poster though we did not get much of the bling)

******************
If one were to assume there might be any kind of end to the meaningless drivel on the web, one would be wrong. For this very reason, we present MemeFactory NYU. We re lucky enough to have been invited by NYU to present our second, full-length MemeFactory during which we wax philosorapsophical about the state of popular (and some unpopular and some berpopular) internet media. That means about one and one half of one hours of 3 projectors, 3 gentlemen, more pictures of cats, videos of fails and power ratings over 9000 than any previous MemeFactory. We d call it bang-for-your-buck, but damn this shindig is $Free! So don your pancake hat - or your furry suit, we wont judge - and get ready to Get Down, get WeeGee d and of course Crank That. http://wwksf.com/nyu To recap: WHEN: October 9 7:30-9:00. WHERE: Warren Weaver Hall RM 109, http://cs.nyu.edu/web/Location/directions.html (Free and Open to the Public) WHO: What We Know So Far http://www.whatweknowsofar.com/NYU WHY: Because it is not another academic lecture but lively performance filled with nothing but insight and humor for die-hard Internet memeologists and newbies alike. Take the plunge with the memefactory! SPONSORED: NYU @ Free Culture, Council on Culture and Media, Center for Religion and Media, NYU ACM s Chapter

1 October 2009

Gerfried Fuchs: Times Are Changing

Since I returned from this year's debconf quite a lot things have changed in my life. One thing I knew way before debconf already, I switched jobs. I was working for a pretty long time (and also through great times) for Silver Server, for well over 6 years. Let's see what I can do in and for my new job. I'm still only pretty short there yet and I being to understand what's going on (and what could need improvements in some workflows) but it's too early to see that more precisely. On a small side-note, the job change also required me to switch my mobile phone number because the old one was a company's number. I now have a private one that I don't fear of losing anymore. If you subtract the number 3933309527644 from my old one you have my new one. On the other hand you can always ask me for it in case you had my old one and wonder. ;) Besides my mobile phone number other smaller things have changed over time too. Most of you noticed that I'm neither using my @ist.org nor my @debian.org address anymore because they did carry the wrong nick. And given that everyone was switching their gnupg keys I did so too. Like before I again created separate keys for private usage and for Debian usage. I'm not really following the procedure of sending out signing requests to people who have signed my old key(s), personally I don't follow them myself so I don't expect others to do. They are though cross-signed with the old ones just to be on the save side to keep the WoT not losing connections. Also I finally got around to set up my own ejabberd server and did create my a new jabber ID that I also plan to keep. It is the same as my private mailaddress as you can see linked above in the key for private usage. ;) One of the reasons for the server is by the way also a testbed for the packaging of ejabberd which will get moved into team maintenance with the next upload which will be the next upstream version, 2.1. But the biggest and most important change in my life is that I will have to rethink my spare time spending quite a lot because there will be something demanding a lot of time starting in about march next year. An extremely fortunate change and almost as happy one even though it means that I won't be able to attend next year's debconf in NY, but I hope the people whom I told that I will be there aren't too disappointed by this announcement. Sorry! :)

Martin F. Krafft: Thesis submitted to examiners

At 14:45 CEST, today, 1 October 2009, I submitted my thesis to the print shop. Sarah has kindly agreed to pick it up tomorrow and drop it off at Brian s office, from where it will go to the three examiners. On 30 October at 9:30 IST, I will stand to publicly defend my work at the University of Limerick. I expect to receive a list of changes to be made from the examiners, hopefully minor, such that there won t be much in the way before I submit the final version to the University Board by 3 December. Once they give their green light, I will make it available on my research website, along with the data. I expect this to happen in January 2010. I have many many people to thank and will do so in due time. Right now I just want to thank Brian Fitzgerald and Kieran Conboy for their flexibility. I was supposed to have the thesis done by the end of August to given them a month to read it over, but by then, I only had the first six (of eight) chapters done. We hence spent all of September sending back and forth PDFs and paper comments, working iteratively so that today, I could put the finishing touch on the work and keep the schedule. The next thing on my agenda is the second edition of my book, which we are targetting for Debian squeeze . If you would like to be the first to receive more details, sign up to the announcement mailing list.

John Goerzen: MoinMoin as a Personal Wiki, Zen To Done, And A Bit of Ikiwiki

Since I last evaluated and complained about wikis last year, I ve been using moinmoin for two sites: a public one and a personal one. The personal site has notes on various projects, and my task lists. I ve been starting out with the Zen To Done (ebook, PDF, paper) idea. It sounds great, by the way; a nice improvement on the better-known GTD. My To Do Page Anyhow, in MoinMoin, I have a ToDos page. At the top are links to pages with different tasks: personal, work, yard, etc. Below that, are the three big rocks (as ZTD calls them) for the day: three main goals for the day. I edit that section every day. The Calendar And below that, I use MoinMoin s excellent MonthCalendar macro. I have three calendars in a row: this month, next month, and last month. Each day on the calendar is a link to a wiki page; for instance, ToDos/Calendar/2009-10-01. The day has a red background if the wiki page exists, and white otherwise. So when I need to do something on or by a specific day, I click on the link, click my TaskTemplate, and create a simple wiki page. When I complete all the tasks for that day, I delete that day s wiki page (and can note what I did as the log message if I like). Very slick. The Task Lists My task pages are similar. They look like this:
= Personal =
<<NewPage(TaskTemplate,Create new task,@SELF)>> <<Navigation(children,1)>>
<<BR>>
So, my personal task page has a heading, then it has an input form with a text box and a button that says Create new task. Type something in and that becomes the name for a wiki page, and takes you do the editor to describe it. Below the button is a list of all the sub-pages under the Personal page, which represent the tasks. When a task is done, I delete the page and off the list it goes. I can move items from one list to another by renaming the page. It works very, very nicely. Collecting Part of both ZTD and GTD is that it must be very easy to get your thoughts down. The idea is that if you have to think, I ve got to remember this, then you ll be stressed and worried about the things you might be forgetting. I have a Collecting page, like the Personal or Work pages, that new items appear on when I m not editing my wiki. They get there by email. MoinMoin has a nice email system. I ve set up a secret email address. Mail sent there goes directly into MoinMoin. It does some checks on it, then looks at a combination of the From and Subject lines to decide what to do with it. If I name an existing page, it will append my message the the end. If it s a new page, it ll create it. I have it set up so that it takes the subject line as a page name to create/append to under ToDos/Collecting/$subject (by putting that as the name on the To line). So, on my computers, I have a newtodo script that invokes mail(1), asks for a subject, and optionally lets me supply a body. Quick and painless. Also, I ve added the address to my mobile phone s address book. That way I don t have to carry around pen and paper. Need to get down some thought ? No problem. Hit send email, pull the last address sent to, give it a subject and maybe a body. Very slick. Wiki Software As a way of updating my posts from last year: I ve been very happy with MoinMoin overall. It has some oddities, and the biggest one that concerns me is its attachment support. It doesn t let you specify a maximum upload size, and doesn t very well let you restrict attachment work to only certain people. But the biggest problem is that it doesn t track history on attachments. If a vandal deletes the attachment on a page, it s GONE. They expect to have that fixed in 2.0, coming out in approximately November, 2010. I also looked at Ikiwiki carefully over the past few days. Several things impressed me. First, everything can be in git. This makes for a very nice offline mode, better than Moin s offline sync. The comment module is nicer than anything in Moin, and the tagging system is as well. Ikiwiki truly could make a nice blog, and Moin just couldn t. It also puts backlinks at the bottom of each page automatically, a nice feature. And it s by Joey Hess, who writes very solid software. There are also some drawbacks. Chief on that list is that ikiwiki has no built-in history of a page feature. Click History and it expects to take you to gitweb or ViewVC or some such tool. That means that reverting a page requires either git access or cut and pasting. That s fine for me, but throwing newbies to gitweb suddenly might not be the most easy. Since ikiwiki is a (very smart) wiki compiler, its permission system is a lot less powerful than Moin s, and notably can t control read access to pages at all. If you need to do that, you d have to do it at the webserver level. It does have a calendar, but not one that works like Moin s does, though I could probably write one easily enough based on what s there. A few other minor nits: the email receiving feature is not as versatile as Moin s, you can t subscribe to get email notifications on certain pages (RSS feeds only, which would have to be manually tweaked later), and you can t easily modify the links at the top of each page or create personal bookmarks. Ikiwiki looks like an excellent tool, but just not quite the right fit for my needs right at the moment. I ve also started to look at DokuWiki a bit. I was initially scared off by all the plugins I d have to use, but it does look like a nice software. I also re-visited MediaWiki, and once again concluded that it is way too complicated for its own good. There are something like a dozen calendar plugins for it, some of which even are thought to work. The one that looked like the one I d use had a 7-step (2-page) installation process that involved manually running SQL commands and cutting and pasting some obscure HTML code with macros in it. No thanks.

30 September 2009

Joey Hess: fractal directory structures

I was thinking about how I often end up in a directory path where the names of one or more components repeat. It seemed there should be a name for when this happens.
/home/joey/src/ikiwiki/doc/ikiwiki/
/home/joey/src/pdmenu/src/
/home/joey/src/joeywiki/joey/
/lib/modules/2.6.26-2-686/kernel/lib/
/proc/1/task/1/
Then I realized there was a name already: Fractal. While directory structures are supposedly hierarchical, different levels in the hierarchy are self-similar, and so sometimes the same name is duplicated, with a subtly, or vastly different meaning, at different levels in the same directory path. I had wondered if we were doing something wrong, that this happens so often. It is occasionally confusing. But aside from using a deep, nominally hierarchical directory structure, and displaying a slice through it (as if talking about electron orbitals in a rock orbiting sol), I don't think we're doing anything wrong. Here is a oneliner that will find all such directories inside a specified start directory. You will probably find some amusing ones you've never noticed.
perl -MFile::Find -le 'find(sub   if (-d $_)   my %bits; foreach $bit (split "/", $File::Find::name)   if (++$bits lc($bit)  > 1)   print $File::Find::name; return         , shift   ".")'

Steve Kemp: I've got a sick friend. I need her help.

There was a recent post by Martin Meredith asking about dotfile management. This inspired me to put together a simple hack which allows several operations to be carried out:
dotfile-manager update [directory]
Update the contents of the named directory to the most recent version, via "hg pull" or HTTP fetch. This could be trivially updated to allow git/subversion/CVS to be used instead. (directory defaults to ~/.dotfiles/ if not specified.)
dotfile-manager link [directory]
For each file in the named directory link _foo to ~/.foo. (directory defaults to ~/.dotfiles/ if not specified.) e.g. directory/_screenrc will be linked to from ~/.screenrc. But hostnames count too! So you can create directory/_screenrc.gold and that will be the target of ~/.screenrc on the host gold.my.flat
dotfile-manager tidy
This removes any dangling ~/.* symlinks.
dotfile-manager report
Report on any file ~/.* which isn't a symlink - those files might be added in the future.
Right now that lets me update my own dotfiles via:
dotfile-manager update ~/.dotfiles
dotfile-manager update ~/.dotfiles-private
dotfile-manager link ~/.dotfiles
dotfile-manager link ~/.dotfiles-private
It could be updated a little more, but it already supports profiles - if you assume "profile" means "input directory". To be honest it probably needs to be perlified, rather than being hoky shell script. But otherwise I can see it being useful - much more so than my existing solution which is ~/.dotfiles/fixup.sh inside my dotfiles repository. ObFilm: Forever Knight

Zak B. Elep: Off We Go...

Arrived at Manila yesterday. At least in the parts we passed through (Pasay, Makati, and Malate,) everything seems back to normal, with almost no sign of the previous storm's havoc. And nary a raindrop in sight. I'm staying at my cousin Deng's place, as usual with my Manila trips. We found it in a bit of chaos, as ondoy's flooding reached here, recalling the water being almost knee-deep. The water's gone now though, but a lot of things that were not brought up to the apartment's second floor are still wet. Hopefully they will be dry before the next storm comes in... A little history: the last time I lived in Manila was in September 2006, when Orange & Bronze got me for a 3-month contract work on a project. At the time, I was fresh off my GSoC work, and I was raring to whet my skills as a software developer. That job gave me that opportunity, as well as opportunities to meet new friends, participate in a bit of commercial software development, and get used to Manila life again. Then awhile later I got into the Morph Labs bandwagon to become its first Systems Administrator, working from Daet via telecommuting. It was here that I began the long road to unrecovery^H^H^H^H^H learning the ropes of being a sysadmin, building some cool stuff in the process as well as maintaining it. Now, I'm back here in Manila, to work for Orange & Bronze again, but this time in a more permanent position, as Systems Administrator Lead. I look forward to reconnecting with my old pals as well as meet new ones, use the valuable experience I've had over the years in my new job, and get back to the long road of unrecovery^H^H^H^H^H building more cool stuff. And I start doing that tomorrow. Good times ahead.

Romain Beauxis: About free software and yellow pages...

Even if it has happened in the past that I could support a pragmatic approach in the context of free software and media technologies, there is something that offenses me in the context of free audio players. In the world of audio streaming servers on for net radios, there are two majors competitors. In the one hand, Shoutcast, the commercial proprietary streaming server released by Nullsoft, which is also the editor of Winamp, the popular media player. On the other hand, Icecast, which started as an open source implementation of the protocol used by Shoutcast, but was rewritten in its version 2 release to support the free codecs from xiph. Now, appart from the respective quality of the two servers, the real competition takes place in another place: availability of the radios using this or that server. For that purpose, both have implemented Yellow Pages. Shoutcast's yellow pages are here, whereas Icecast/Xiph's yellow pages are there. The great thing with yellow pages is their integration into the audio player. Then, the user can browse the list of radios, and test them. It is very good both for convenience no need to download a playlist or enter manually a complicated URL and advertisement a single place to list all possible radios. The yellow pages from Shoutcast are very popular. They are integrated in Winamp of course, but also in many other popular players, in the PSP, in the iPhone, etc... The Shoutcast yellow pages are reserved for shoutcast users. Of course, the protocol has been reversed it is kind of dummy but if your radio get caught registering to Shoutcast's yellow pages while not using their proprietary software, your radio gets blacklisted and you loose a whole lot of listeners (and money too). For that reason, many net radios want to use Shoutcast as their broadcasting server. From the point of view of Nullsoft, it seems a good call. At least, they play their game and make their money out of it, so let's put this appart. But, what about the free software world ? The obvious idea would be that the free software projects should push altogether for the use of free alternatives, hence pushing for a support of Icecast's yellow pages in the free players. Of course, free software being also a matter of choice, it should be possible to also support Shoutcast's yellow pages. After all, both protocols are very simple, so it is no big deal to implement.. Well, unfortunately, that is not exactly what happens.. Guess what, Amarok and VLC only implement Shoutcast's yellow pages... Given that VLC is a massively popular audio player that spreads among a lot of plateforms, I find it quite a pity that they do not do something to encourage its users to use free alternatives to the proprietary Shoutcast yellow pages, and similarly for Amarok. The adoption of free alternatives only works with massive demand, and we should not hope that proprietary softwares help in any way, but, at least, free softwares should be a bit more aware of what they're advocating when they choose to implement only the proprietary support...

Chris Lamb: GeoDjango and the UK postcode database

This post describes how to play with the UK postcode database that recently turned up on WikiLeaks using GeoDjango. You will need the following pieces of free software:
  1. PostgreSQL (MySQL does not provide sufficient geospacial features) I will be using Postgres 8.4.1; please adjust your paths for your version and/or distributor.
  2. PostGIS spacial database extensions I will be using version 1.4.0.
  3. Django I will be using version 1.1. This version includes the GeoDjango framework.
  4. GEOS geometry engine I will be using version 3.0.0 from the libgeos-c1 package in Debian unstable.
You will also need a copy of the leaked postcode data. Usage of this data is almost certainly a copyright violation.
Getting started First, create a Django project and application for this example:
$ django-admin startproject ukpostcodes
$ cd ukpostcodes
$ ./manage.py startapp postcodes
Next, edit settings.py:
  • Configure DATABASE_*. You must use the postgresql_psycopg2 PostgreSQL database driver.
  • Add django.contrib.gis & ukpostcodes.postcodes to INSTALLED_APPS.
If you have not already done so, you must install PostGIS in your database:
$ sudo -u postgres createlang plpgsql -d <databasename>
$ sudo -u postgres psql <databasename> -f /usr/share/postgresql/8.4/contrib/postgis.sql
$ sudo -u postgres psql <databasename> -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql
Modelling a postcode Now define a simple model to store imported postcodes:
from django.contrib.gis.db import models
class Postcode(models.Model):
    name = models.CharField(max_length=8, db_index=True)
    location = models.PointField()
    objects = models.GeoManager()
  • We import models from django.contrib.gis.db instead of django.db.
  • We override the default objects manager with GeoDjango's GeoManager() so we can perform spacial queries.
Save this model in postcodes/models.py. We can now create this model in our database using:
$ ./manage syncdb
Importing postcode data We will use a management command to import the data. First, create the necessary modules with:
$ mkdir -p postcodes/management/commands
$ touch postcodes/management/commands/__init__.py
$ touch postcodes/management/__init__.py
Next, save the following code in postcodes/management/commands/import_postcodes.py:
import sys
import csv
from django.contrib.gis.geos import Point
from django.core.management.base import BaseCommand
from postcodes.models import Postcode
class Command(BaseCommand):
    def handle(self, \*args, \*\*options):
        Postcode.objects.all().delete()
        count = 0
        for row in csv.reader(sys.stdin):
            try:
                name = row[0].upper().strip().replace('  ', ' ')
                location = Point(map(float, row[13:15]))
            except ValueError:
                print "I: skipping %r" % row
                continue
            Postcode.objects.create(name=name, location=location)
            count += 1
            if count % 10000 == 0:
                print "Imported %d" % count
Finally, we can import the data using:
$ bunzip2 /path/to/uk-post-codes-2009.bz2   ./manage.py import_postcodes
This takes approximately one hour on my computer. If you plan to import the data multiple times, consult the Django documentation for faster methods of importing initial data.
Quering the postcode database We can now query our postcode database. First, let's find the postcode for Buckingham Palace:
>>> from postcodes.models import Postcode
>>> palace = Postcode.objects.get(name='SW1A 1AA')
>>> palace
<Postcode: SW1A 1AA>
Next, let's find all postcodes within 1 mile. For this, we will need to construct a tuple representing the area we want to search in.
>>> from django.contrib.gis.measure import Distance
>>> area = (palace.location, Distance(mi=1))
>>> Postcode.objects.filter(location__distance_lte=area)
[<Postcode: SE1 7BF>, <Postcode: SE1 7SG>, <Postcode: SE1 7JA>, <Postcode: SE1 7PB>,
 <Postcode: SE1 7PD>, <Postcode: SW1A 1DW>, <Postcode: SW1A 1EA>, <Postcode: SW1A 1EE>,
 <Postcode: SW1A 1EF>, <Postcode: SW1A 1EG>, '...(remaining elements truncated)...']
>>> Postcode.objects.filter(location__distance_lte=area)
7024
To find "neighbour" postcodes, we can pass a Point object to the .distance(..) method on our queryset this adds a field we can then sort on:
>>> Postcode.objects.distance(palace.location).order_by('distance')[:4]
[<Postcode: SW1A 1AA>, <Postcode: SW1E 6JP>, <Postcode: SW1E 6LA>, <Postcode: SW1E 6WG>]
Putting it all together Let's pretend we are making an app to find pizza from an arbitrary user-submitted postcode. (We will assume we have parsed the user's postcode and have found its Postcode object, but we will continue to use Buckingham Palace here.) First, define the following model in postcodes/models.py and re-run ./manage.py syncdb:
class PizzaJoint(models.Model):
    name = models.CharField(max_length=200)
    postcode = models.ForeignKey(Postcode)
    objects = models.GeoManager()
    def __unicode__(self):
         return self.name
Now, add some local pizza places:
>>> def add_pizza_joint(name, loc):
...     code = Postcode.objects.get(name=loc)
...     PizzaJoint.objects.create(name=name, postcode=code)
...
>>> add_pizza_joint('Pizza Hut', 'SW1E 6SQ')
>>> add_pizza_joint('Pizza Express', 'SW1E 5NA')
>>> add_pizza_joint('Pizza On The Park', 'SW1X 7LY')
If we were not using GeoDjango, we would have to be content with simply matching the postcode:
>>> PizzaJoint.objects.filter(postcode=palace)
[]
However, we can now find the cloest pizza places:
>>> PizzaJoint.objects.distance(palace.location,
            field_name='postcode__location').order_by('distance')
[<PizzaJoint: Pizza Hut>, <PizzaJoint: Pizza Express>, <PizzaJoint: Pizza On The Park>]
The .distance(..) method also sets a distance attribute on all the objects returned; this makes it easy to show the actual distance to the user:
>>> for x in PizzaJoint.objects.distance(palace.location,
                     field_name='postcode__location').order_by('distance'):
...    print "%s (%d metres away)" % (x, x.distance.m)
...
Pizza Hut (499 metres away)
Pizza Express (509 metres away)
Pizza On The Park (902 metres away)
For more details, see the GeoDjango documentation.

27 September 2009

John Goerzen: How To Record High-Definition MythTV Files to DVD or Blu-Ray

I ve long had a problem. Back on January 20, I took the day off work to watch the inauguration of Barack Obama. I saved the HD video recordings MythTV made of the day (off the ATSC broadcast), intending to eventually save them somehow. I hadn t quite figured out how until recently, so there they sat: 9 hours of video taking up about 60GB of space on my disk. MythTV includes a program called mytharchive that will helpfully transcode your files and burn a DVD from them. But it helpfully will transcode the beautiful 1920 1080i down to DVD resolution of on a good day 720 480. I couldn t have that. Background My playback devices might be a PC, the MythTV, or the PlayStation 3. Of these, I figured the PS3 was going to be hardest to accommodate. ATSC (HD) broadcasts in the United States are an MPEG Transport Stream (TS). Things are a bit complicated, because there may be errors in the TS due to reception problems, the resolution and aspect ratio may change multiple times (for instance, down to SD for certain commercials). And, I learned that some ATSC broadcasts are actually 1920 1088 because the vertical resolution has to be a multiple of a certain number, and those bottom 8 pixels shouldn t be displayed. Adding to the complexity, one file was 7 hours of video and about 50GB itself. I was going to have to do quite some splitting to get it onto 4.7GB DVD+Rs. I also didn t want to re-encode any video, both for quality and for time reasons. Attempts So, I set out to try and figure out how to do this. My first approach was the sledgehammer one: split(1). split takes a large file and splits it on byte or line boundaries. It has no knowledge of MPEG files, so it may split them in the middle of frames. I figured that, worst case, I could always use cat to reassemble the file later. Surprisingly, both mplayer and xine could play back any of these files, but the PS3 would only play back the first part. I remembered this as an option if all else failed. Next, I tried avidemux. Quite the capable program and I thought I could use it to cut my file into DVD-sized bits. But I couldn t get it to let me copy the valid MPEG TS into another MPEG TS it kept complaining of incompatible formats, but wouldn t tell me in what way they were incompatible. I could get it to transcode to MPEG4, and produce a result that worked on the PS3, but that wasn t really what I was after. Then, I tried mpgsplit. Didn t recognize the MPEG TS as a valid file, and even when I used a different tool to convert to MPEG PS, acted all suspicious as if it bought the MPEG from a shady character on a grungy street corner. dvbcut I eventually wound up using dvbcut to split up the ATSC (DVB) recordings. It understood the files natively and did exactly what I wanted. Well, *almost* exactly what I wanted. It has no command-line interface and didn t have a way to split by filesize, but I calculated that about 35 minutes of the NBC broadcast and 56 minutes of the PBS broadcast could fit on a single DVD+R. It worked very, very nicely. The resulting files tested out well on both the PS3 and the Linux box. So after that, I wrote up an index.txt file to add to each disc and a little shell scripting later and I had a directory for each disc. I started burning them with growisofs. Discs 1 and 2 burned well, but then I got an error like this:
File disc06/VIDEO/0930-inaug-ksnw-06.mpg is larger than 4GiB-1.
-allow-limited-size was not specified. There is no way do represent this file size. Aborting.
Eeeeepp. So apparently the ISO 9660 filesystem can t represent files bigger than 4GB. My files on disc 1 had represented multiple different programs, and stayed under that limit; and disc 2 s file was surprisingly just a few KB short. But the rest of them weren t. I didn t want to have to go back and re-split the data to be under 4GB. I also didn t want to waste 700MB per disc, or to have to make someone change video files every 15 minutes. So I decided to investigate UDF, the filesystem behind Blu-Ray discs. mkisofs couldn t make a pure UDF, only a hybrid 9660/UDF disc that risked compatibility issues with big files. There is a mkudffs, but it doesn t take a directory of its own. So I wrote a script to do it. Note that this script may fail with dotfiles or files with spaces in them:
#!/bin/bash
set -e
if [ ! -d "$1" -o -e "$2" -o -z "$2" ]; then
   echo "Syntax: $0 srcdir destimage [volid]"
   echo "destimage must not exist"
   exit 5
fi
if [ " id -u " != "0" ]; then
   echo "This program must run as root."
fi
EXTRAARGS=""
if [ ! -z "$3" ]; then
   EXTRAARGS="--vid=$3"
fi
# Get capacities at http://en.wikipedia.org/wiki/DVD+R as of 9/27/2009
SECSIZE=2048
# I'm going to set it a few lower, than capacity 2295104 just in case.
# Must be at least one lower than the actual size for dd to do its thing.
# SECTORS=2295103
SECTORS=2295000
echo "Allocating image..."
dd if=/dev/zero "of=$2" bs=2048 "seek=$SECTORS" count=1
echo "Creating filesystem..."
mkudffs --blocksize=2048 $EXTRAARGS "$2"
mkdir "$2.mnt"
echo "Populating..."
mount -o rw,loop -t udf "$2" "$2.mnt"
cp -rvi "$1/"* "$2.mnt/"
echo "Unounting..."
umount "$2.mnt"
rmdir "$2.mnt"
echo "Done."
That was loosely based on a script I found on the Arch Linux site. But I didn t like the original script, because it tried to do too much, wasted tons of time writing out 4.7GB of NULLs when it could have created a sparse file in an instant, and was interactive. So there you have it. HD broadcast to playable on PS3, losslessly. Note that this info will also work equally well if you have a Bluray drive.

John Goerzen: Jacob Is Three

Jacob s third birthday was Saturday, and I thought I ought to give a bit of an update on him. I ll start with his exactness. Jacob has become very particular about certain things. This morning, I was getting him dressed for church. We had this conversation:
Me: OK Jacob, it s time to get your pull-ups on. Jacob: No, Dad! Not pull-UPS. I don t have free (3) of them! I have one. It a pull-UP. Me: OK. Let s put it on Now, let s put on your pants. Jacob: Daaaad! Not pants! They SHORTS!
So yes, Jacob is trying to correct me about plurals. Also, when I sing Home On The Range to him at bedtime, and get to the line that says, and the skies are not cloudy all day, Jacob will look outside, and point out, the skies ARE cloudy today! (Even if they re not.) But the big thing is guitars. Terah wrote about how this happened. But suffice it to say that he s been almost all-guitar, all the time. At dinner time, he ll hold a spoon across his chest and strum the lots of pretend strings over the big end. Outside, he ll find leaves from irisis, and excitedly yell, I have LOTS of guitars! Pretty soon it wasn t just him that needed to play guitars. He d hand an iris leaf or a spoon to me and say, shall you play it too? So I d start strumming my leaf, and he d smile happily for a second. Then, No, not like that! This way! He meant I was supposed to hold it in a certain position, but it was not always clear exactly what he wanted. Then at supper Friday night, we had some family here, and Jacob said, Shall we ALL play guitars? And he d keep repeating it until we all did it. And he spent about 5 solid minutes getting us each to hold our spoons in the proper musical position. Then he was happy. So you can imagine the excitement when he got a guitar from his grandparents on Saturday. It s a child-sized one, but a real one, with metal strings. He proudly went around sitting on many different chairs to try out his guitar on each one. He played it in the car on the way home. He strummed it at home. He skipped dessert so he could play. And he cried every time he had to put it down: at dinner time, at bedtime last night, when it was time to go to church today. The next thing he wanted was for everyone to sing while he played the guitar. That was a bit difficult, since, after all, it is a 3-year-old playing a guitar he doesn t know how to play. He seemed to really enjoy it though. I have some great photos of him playing his guitars I ll be uploading hopefully this week.

Carl Chenet: Python-keyring in Debian


I have been introducing the Python Keyring library in this previous post. At that time I was looking for a sponsor and thanks to Piotr O arowski, python-keyring is now available in Sid. What for ?
  • You can access the keyring you use on your system (Gnome-keyring, KWallet) to store your app s passwords.
  • It s a unified access to keyrings that the Python Keyring library provides, meaning you can easely write your own backend for your keyring software.
  • You can create your own keyring, crypted on a file, still with the same library.
  • Keyrings are cool and this library provides a great way to play with them, from your Python applications.
  • When mature, the Keyring library will be integrated in the official Python module getpass, which means you re not learning yet-another-soon-unmaintained library.
How ? The source package provides three binary packages :
  • python-keyring : the Keyring library without the support of both Gnome-keyring and KWallet.
  • python-keyring-gnome : the support for Gnome-keyring.
  • python-keyring-kwallet : the support for KWallet.
If you use passwords in your Python apps, it s worth to give python-keyring a try.

Steve Kemp: Looks like me an Vincent caught you boys at breakfast

It is interesting that Fran ois Marier recently posted a brief "howto" document on debugging problems caused by overly-agressive filtering with privoxy, as I've recently been having problems with that tool. My home network frequently changes configuration depending on what I'm concentrating upon, but every few months I'll start/cease using the following tools: Recently I was experimenting with XSS attacks against various browsers, which meant using them for real. As not all browsers have the same anti-advert setups I was running privoxy to filter out web-annoyances, and I spotted a major flaw with it. Unfortunately I can only describe the problem, not reproduce it, or track it down. I'm 80% certain the bug is in privoxy, but the stack is suitably high that determining that for sure is problematic. In short the issue is that HTTP requests would end up being sent to the wrong host: After that clicking around consistently sends requests to the first HTTP host which was accessed succesfully. So, for example, attempting to visit http://foo.com/bar/ will send the request to http://steve.org.uk/bar - which then gives a 404. In terms of setup I use a dnsmasq DNS cache, privoxy and iceweasel from Debian unstable. From the symptoms I'm not sure if iceweasel's "KeepAlive" system is to blame, or if privoxy has a bad cache of hosts. Perhaps it is dnsmasq returning bogus DNS data, or my cable connection itself having DNS issues. Anyway once the symptoms present themselves closing the browser and restarting the cache fixes it. Until the next time which might be hours or days later. I'd report it as a bug - but I don't know where it should be. Privoxy caching things it shouldn't? iceweasel having keepalive issues? dnsmasq returning wrong DNS entries? I'd ask "Have you seen this before, internet world?" but I guess if you have tracked it down it'd be fixed by now, and it clearly isn't! Anyway for the moment I've uninstalled privoxy. ObFilm: Pulp Fiction

Next.

Previous.