Search Results: "cas"

27 October 2006

Scott James Remnant: Upstart can now replace sysvinit

Today I reached another milestone in the development of upstart, the packages in universe can now replace the existing sysvinit package. Before trying this, make sure your installation is up to date as we’ve had to split out some parts of sysvinit into a new sysvutils package. If you’re up to date, and want to try it out, install the upstart and upstart-compat-sysv packages from universe. Note that the first reboot after you’ve installed the packages (from sysvinit to upstart) will be a little tricky … use reboot -f. If your system boots and shuts down normally, everything’s working just fine. Note that both will be somewhat more quiet than you’re used to, unless you have usplash running. Throughout the rest of this entry, I’ll try to answer some of the questions and comments that I’ve received since the last post. Events As I talked about previously, upstart is an event-based init daemon. Events are the primary force for having your services and tasks started and stopped at the appropriate time and in the appropriate order. So what are events and where do they come from? (Note that this part is under development, so may change in later releases). Events are just simple strings that may be sent by any process when something it is tracking the state of changes. They have no state or longevity, and if, when queued, they do not cause any job state changes, then they have no effect unless they are sent again. Jobs can list which events cause them to be started if they are not already running and which events cause them to be stopped if they are running. Multiple start and stop events may be listed, in which case the first to occur changes the job until the next one occurs. upstart itself generates the following system events: The shutdown tool included in the package also causes one of the following events to be sent once the “shutdown” event has been handled: Jobs also generate events whenever they change state, this is the primary source of events for ordering: And as mentioned, any other process on the system may send events through the control socket or just by using initctl trigger EVENT. For now this is just the event string, however it’s intended that the event may include other details including environment variables and even file descriptors. Typical example To clarify how it all hangs together, here’s an example (using fictional names) of how the tasks and events can be arranged to provide race-free mounting of filesystems. By breaking this job into these small tasks, we can see how the pieces fit together. Because everything is now done on events, there are no race conditions; we know that any filesystem listed in /etc/fstab will be checked and mounted. The only reason they wouldn’t be is if there’s an error of some kind, and that means you have larger problems anyway and the system administrator would have a shell to fix it. Of course, the moment they finish checking the filesystem and mount it, the boot process would carry on. There’s no reason that any of these events need to be generated by the upstart daemon itself, it can receive them from any other daemon on the system such as udev, acpid, etc. This keeps the focus of the init daemon narrow. A large part of the future development will be working out exactly what kinds of events we want init itself to generate, what kinds we want to come from elsewhere, and what the contents of an event can be. Getting Involved If you want to get involved with trying to nudge the direction of upstart development, you can join the upstart-devel mailing list at http://lists.netsplit.com/ Or if you just want to grab the source code, tarballs are published at http://people.ubuntu.com/\scott/software/upstart/ and the bzr archive is at http://bazaar.launchpad.net/\keybuk/upstart/main

Scott James Remnant: Parallel Peer Programming

Here at Canonical Towers we have several staff who worship at the altar of Extreme Programming, and as such many of the methodologies and rituals prescribed by that religion find their way into our day-to-day working practices. A few of these came together in an interesting way a few weeks ago, and it was suggested by a cow-orker that I blog about it so he could give the URL to people. The first ritual is that of the sprint, I don’t think this is orthodox XP but rather something inspired from it that we picked up from the Python community. With all of the Canonical developers scattered across the globe mostly working from their own homes, it’s become a useful tool; particularly for the Launchpad team. The basic idea for those that haven’t heard of it is simple, and perhaps obvious; you get a selection of the team together in one place, sit them around the same table with particular goals to complete. In effect it’s highly compressed facetime and high bandwidth interaction to nail those tasks that need it, before you head off again and work at a more sedate pace. The second is directly from XP doctrine and is that peculiar observance known as pair programming, something that is often coupled with sprints. For anybody who hasn’t encountered this before, it’s something I’ve always found rather odd. You get two programmers together, both itching to code, and you take one of them’s laptop away; and you don’t just force them to fight over the keyboard either, the laptop-less soul isn’t allowed to touch it. The theory here is that it frees the deprived individual of the hassle of coding and allows them to direct the programmer in ways that may not be immediately obbious, or alternately think about the next bit of work that needs doing. Another interesting side-effect is it can be an interesting way to learn code you’ve not worked with before, if you’re the one doing the coding and you’re being guided what to do by a sage who already knows it. I have a funny story here, so I’m going to digress from the main stream for a moment to tell it. A few months ago I was working in the London office, Mark had been up all night coding and had then given me responsibility to get his changes landed onto the Launchpad mainline. I’m not that hot on quite a bit of Launchpad, and fade to utterly clueless the nearer the code gets to the web application itself; and when trying to merge the two there were conflicts which I needed Mark’s help to resolve. Now as anybody who’s met Mark knows, he’s a pretty good example of a Type-A personality, yet he suggested that we do a spot of pair programming to get the code in and I’d be the one with the laptop as it’d help me get to grips with the affected parts. This hilighted something I’ve always seen as a problem with pair programming, dealing with it when the a person with the keyboard has a totally different way of working to you. In particular, I’m an emacs user, whereas Mark is a die-hard vim user; but also right down to the working directory I would work from, how I test results, etc. When you’re the one without the laptop, this can be quite infuriating, as you know exactly how to solve a problem and the idiot with the keyboard is dithering about doing things you don’t understand just to get there. If you’re a Type-A personality, you generally snatch the laptop away at this point and do it yourself; or at least you would, if you could drive the strange editor the other person uses. I swear Mark was sulking as he gave the laptop back and let me do it. Anyway, there is some relevance to that and we’ll come to it in a moment. The third and final methodology is the concept of unit tests and more specifically test driven development. For anyone who hasn’t come across this before, I highly recommend it; I was suspicious too when Robert Collins took it upon himself to teach me the true way, but now I’m sold. Simply the idea is that if you have any code that doesn’t have another piece of code in a test suite that checks that it’s working correctly, that code is broken. More particularly unit testing involves checking just one feature or requirement at a time, and stacking them together to test all of the code paths. I’ve actually found that this improves the APIs I design, as I write the code in small blocks and functions to make them easier to test. Test driven development takes it even further, you write the unit tests first, before you write the code they’re supposed to test; usually one or two at a time. Obviously these tests will fail at first, it’s then your job to write as little code as possible to make them pass. If your code isn’t right, you add a unit test that will fail, and modify the code to make it pass. This really comes into its own when you’re fixing bugs later, once you’ve identified the bug you write a test case or two that cause the problem; these will of course fail. You can then modify the code to make them pass, and at the same time be sure you’ve not broken other functionality because of the existing test suite. I’ve also found it really useful for particularly complicated or tricky pieces of code, especially those intricate algorithms that do particularly heavy lifting. So onto the event itself, this was a sprint in our London office to indoctrinate Gustavo Niemeyer with the various projects he’d be working on. The goal for this sprint was decided to start the conversion of HCT to Bazaar-NG, and to do this Gustavo and I would pair program. Now my last experience of pair programming had been that story with Mark (see, it had some relevance) and I knew I’d be just as bad if I wasn’t allowed to have the keyboard. I was also acutely aware that if Gustavo was just sitting by and watching, he wouldn’t get much benefit from it either, so he needed to be actively involved in the coding so he could learn the things he’d be working on. I came to what I thought was a pretty neat, and obvious, solution to these problems. We set up my laptop with the code we’d be working on, and on my display were two side-by-side terminals both running screen sessions. Gustavo then set up two same-sized terminals on his, ssh’d into my laptop from both of them and joined the screen sessions. In the left-hand one he ran vi, and in the right-hand one I ran emacs. Thus we both had keyboards, and both had editors, yet could see each other working and even steal the keyboard without danger of violence. We didn’t just sit side-by-side and code on different things though, that’s not pair programming and is just ordinary programming with a bit of a voyeuristic twist. What we did was: in my terminal I started writing the test cases for the code we needed, it was Gustavo’s job to write the code that would make them pass. We actually added a third terminal in which we could run the test cases themselves; so I could run them when I’d added something that would fail, and Gustavo could run them when he thought he’d made them pass again. This turned out to be a rather fun way to work, and at one point I was almost able to try and convince myself that the code was writing itself to pass the test cases I was writing. It also got me thinking that it’d be really neat to use genetic algorithms to breed code to pass test cases.

Scott James Remnant: What I want in edgy+1

Now that edgy has been frozen for the beta release in a week’s time, and the next developer summit, where the plans for the next release will be discussed, has been announced, I think it’s the perfect time to start thinking about the kinds of features we want to see in that release. At our recent sprint in Wiesbaden, Mark reminded us that when Ubuntu first released we were leading the field in many of the components we installed by default. Many users came to us because we provided Linux 2.6, hotplug/udev and Project Utopia by default; along with the latest GNOME release and development framework. Now everybody does that, butwe led the way. With the dapper release, we produced something that could be supported for a long time. With edgy we’ve scratched our itches and fixed things under the hood that have been causing us problems. edgy+1 seems a good time to integrate the hottest new technologies and lead the way again. So what do I think is exciting, and what do I want in edgy+1? telepathy, farsight and galago Anybody who has used the 2006 software release for the Nokia 770 Internet Tablet will have seen these in action already. They’re, in my opinion, some of the most exciting projects currently being worked on; and ripe for integration into Ubuntu. Telepathy is a communication framework built on DBus that allows any application to establish communication with users all around the world, using any protocol from IRC to MSN to VoIP. It uses Farsight to provide the codecs and protocol support on top of the (GStreamer)[http://gstreamer.freedesktop.org/] media framework. And Galago glues it all together; providing presence information about contacts and allowing users to specify their own status. Galago Presence Applet This means that you’ll be able to contact your contacts. Your calendar alarm tells you that it’s a colleague’s birthday, you’d be able to click their name and see a selection of different ways that you can contact that person right now. From e-mail, opening an MSN or Jabber window or even establishing a VoIP or SIP call to them. The most exciting thing is that because every application on the desktop has easy access to this, people are coming up with fantastic ideas for using it! zeroconf By this, I mean zero configuration networking. Something the OLPC project appears to be going to do very well indeed. Where no existing network infrastructure exists, your computer should still be able to communicate with other nearby computers. It should use ad-hoc wireless networks, link-local IP addresses and server-free DNS resolution with libnss-mdns. Play games with your friends on the train without touching a button. Chat with other people in a lecture hall or at a conference where the existing network is unavailable. Hassle-free home and office networking without any complicated set up. Networking that “just works”. avahi Whether your computer is on an infrastructure or ad-hoc network, it should be able to locate resources on the network and share its own to other people. Avahi allows applications to, via DBus, do this by using a mulicast form of DNS; compatible with Apple’s Bonjour protocol. The immediately obvious benefits of this are that one can locate such things as file servers without any complicated directory; more fun things can be done too, such as sharing your music from RhythmBox with other users on the network. Combine it with telepathy, etc. and you can establish communication with anyone else, with a wide range of different protocols. The immediate problem here is that we currently have a “no open ports” policy, which if we’re going to give the users the opportunity to establish ad-hoc networks is almost certainly a very good thing. We already have exceptions for that policy for DNS and DHCP, it may be that Avahi (mDNS) joins that list. Another option is a “mobile-phone like” interface for enabling and disabling discovery and sharing. Bluetooth I don’t think we should stop discovery and sharing at 802.* networking either. Linux actually has a pretty decent bluetooth stack, it’s something that we should start taking advantage of. Your computer should be able to discover paired or known bluetooth devices when in range without intervention and communicate with them. If I attempt to establish a network connection, and my phone is nearby, that should be offered as a method for getting on the Internet. If possible, it should also be offered through telepathy as a method for contacting people in my address book! Synchronisation These technologies together give us a really big possibility, automatic synchronisation of user’s information. When I bring my laptop home, it should automatically update my desktop with any changes I’ve made to my address book or calendar, and any shared files, etc. Likewise it should be automatically be updated with any changes made on the network, to a company address book on a server, for example. And why stop there? Don’t use share your music, synchronise it so that your laptop, desktop and iPod have the same selection available at all times. Hassle-free backups is an obvious win here. But we’re stopping again. Why is my mobile phone, and PDA excluded from this? Via bluetooth, my address book and calendar should be automatically updated from these and these should be automatically updated themselves. If I add a new number to my phone’s memory, it should appear in my computer address book; and my computer should offer me the ability to contact that person (using VoIP, for example).

Erich Schubert: mDNS is nice

I'm setting up my new laptop, and for obvious reasons I have to copy over some data from the old to the new laptop. The wireless network here at my apartment-sharing is crappy; and it lacks a local DNS server offered by newer DSL routers. So I would have to find out the current IPs of my laptops to copy data around (note that the router also doesn't give you IP persistence apparently, the laptops have new IPs each reconnect...) mDNS to a rescue. Multicast DNS (Bonjour / Zeroconf / Avahi) comes in handy here. It allows me to locate my laptops by just using "hostname.local" (using the libnss-mdns package) or using the avahi zeroconf browser (package: avahi-discover).

Julien Danjou: Knud can't

Or Dunc-tank in sorted order. I never wrote about this until now. But today, when I woke up, I had this strange feeling saying "jd, you gotta do something about DT today.". Actually, that was just my f**** alarm clock. And here I am, and I'm gonna talk to you about the dunc-tank experiment. First it's important to know what a real dunk tank is, because personally I've got no idea until I looked up on Google. So, you see? A dunk tank is a funny game finally. I must admit, if Anthony Towns was seated above the dunk, I would have vote in favor of DT!
Maybe I'm trying to give you some idea for the next DebConf, who knows More seriously, after the co-signed mail that Joerg Jaspert just sent, I wanted to say something more.
Some weeks ago, when our DPL (amen) asked us our opinion about that idea, I said "yeah, go ahead". Of course, that was my opinion at this time, and it changed a little. I still don't have objections about people getting paid, because I'm not jealous.
What does that mean? This means that if Debian was only composed of me, Anthony, and two release managers, I wouldn't have any problem. But that's not the case here, I discovered that there is a lots of people in Debian. Maybe should I tell DT people about that, don't you think? Reality is obviously different, and DT has been launched without a real consensus. We lost valuable people, and I dislike this project for that. We lost time. And we lost money, because time is money (don't beat me). That's an organised foutage de gueule [1] . But please, remember this is an experiment, so kids: don't do this at home.
Notes [1] Feel free to translate yourself

Sven Mueller: Debian and Dunc-Tank

Well, this really is a controversal topic to say the least. While having the RMs get paid to get Etch out might be a good thing, the big problem I see with dunctank is that it is initiated by people very prominent inside Debian and moreover by people perceived as friends of th RMs in question. Though dunctank says that is distinct from Debian, due to the high profile the people involved have inside the Debian community, this distinction might not be recognized by less careful observers. The second problem is that the payment the RMs get is not connected to well specified tasks, but they are for “working on the release of Debian “Etch”. And finally, there is the problem that this is said to be an experiment. However, a good experiment has well defined objectives and well defined boundary conditions. In other words: Regarding Dunc-Tank, it is unclear to me what the experiment is trying to achieve. I admit I voted as much in favor of the experiment as the GR allowed, but in the meantime, I regret doing so. My vote was because my impression was that Dunc-Tank would pay just enough to pay rent, food and the other usual expenses (insurances, debts etc.). But now each of the two RMs is supposed to receive 6k$. This surely is less than they could earn working as IT freelancers, but it sure exceeds their pure living expenses. While just covering their living expenses would be OK for me (in the sense that I could live with it, not in the sense of being happy about it), paying substantially more isn’t, but that’s just me. A DPL collecting money to pay certain DDs is always going to ask for trouble. Or as Ben collins put it back in 2001:
… use Debian money to pay developers. It can never be done fairly, or in a way so as not to piss someone off. It will always be susceptible to political gains and/or favoritism. This subject caused a lot of hatred, and in my opinion, the experiment is a failure. Though it might help to get Etch out in time, it caused many DDs to cut down on the time they spend on Debian, among them people like the DWN editor, who used to invest a lot of time. And this effect will not go away when Etch is released and is thus hurting Debian in the long run. The whole thing might have been a lot different if some random, mostly unknown DD (or even better: non-DD) had started dunc-tank, collecting money and finally paying some DDs to work on some specific tasks. But the fact that the DPL started it makes it so controversial. But on the other hand, it would have been less likely that dunc-tank collected enough money to do so in that case. Honestly, if I were to decide, I would drop dunc-tank completely once Etch has been released (it’s too late to do it now, it would just deprive Debian of the benefits and still cause all the negative side effects). The people who thought (and think) dunc-tank was a good idea could then restart it later under some different name and without involvement of the DPL. There is only one position in Debian I could see reasons why the person occupying it should receive some sort of compensation: The DPL. The reason I see here is that this position requires a lot of time if taken seriously. This also means that many people can’t reasonably apply for it since they would need to resign from their “real world” job.

26 October 2006

Wouter Verhelst: US$ 6000

There's a bit of commotion around the amount of 6000 US dollars that's being paid to the RMs for a month of work; some people seem to think that this is a lot of money for one month of work. My guess is that these people have never had to run a business. Steve does run one; I don't know about aba. But let's just make some calculations here, shall we? I'd make them with the US system in mind, but as I have a business in Belgium, that's kinda hard to do. So I'll make them with the Belgian system in mind instead. And now if you want to pay yourself, you get to do the above dance all over again. You get to pay income taxes, insurance, rent or mortgage, Internet, phone, water, and whatnot. Plus food. In addition to all of the above, I don't know how much Steve has to drive around to talk to his customers, but if that's "quite a bit", then he may be leasing a car. I don't know whether he's got an ad running somewhere to attract more customers for the months after his paid Debian work, but if he is, he may have to pay a considerable amount of money to do so. And there can be any number of things that I've forgotten to include, but for which you still need to pay. In addition, if you want to run a business in a sane way, you need to ask a bit more than what your costs are, because there'll always be a few days that are not billable, and on which you need to live and pay expenses, too; but I could imagine that these were dropped for this particular month. Obviously the above numbers all involve some guesswork. I've been running a business for quite a while now, but it's only recently become profitable; many of these numbers will go up when your business is profitable for a long time. 6000 is nothing. I've had customers tell me you're cheap five seconds after I asked nearly twice as much. Trust me, that's no fun. It's one of the things I've had to learn while running a business: some amounts of money that seem hugely expensive in a private capacity are next to nothing in the business world. That's just the way it works... Finally, let me note that this is not meant to take any position one way or another in the matter. I did feel that experimenting with paying fellow developers was a good idea, but not at all costs; and certainly, I don't feel that going ahead with this by setting up something of the likes of dunc-tank is a very bright idea. I just thought it good to put some numbers into perspective. Update: Set the numbers straight. 6000 - 1200 is 4800, not 5800. Whoops. Yes, usually I do use a calculator :)

Mark Brown: Leafnode 2 packages for Debian

Packages of the Leafnode 2 alpha releases are now avaliable for use with unstable (and probably testing most of the time) in the experimental archive. To install them add lines for experimental to your apt sources:
deb http://ftp.debian.org/debian/ experimental main
deb-src http://ftp.debian.org/debian/ experimental main
(or use a mirror) and edit /etc/apt/preferences to tell apt to install Leafnode from experimental:
Package: leafnode
Pin: release a=experimental
Pin-Priority: 500
and install or upgrade Leafnode as normal. It should be possible to upgrade directly from Leafnode 1 (please file a bug if this is not the case) but please note that due to incompatible changes in the news spool format once Leafnode 2 has been installed you will have to purge Leafnode before downgrading to Leafnode 1.

25 October 2006

David Welton: Passing information to Rails droppables from draggables

I've been working on yet another rails project lately, and, as usual, having a lot of fun with it. I bumped into a bit of a limitation though, in the default setup. Namely, that it's difficult to pass much information between draggables and droppables. For example, if you look at the scriptaculous demo here: http://demo.script.aculo.us/shop You'll see that Rails receives and deals with the element that was dragged and dropped in sort of a hacky way, in the add method:
product_id = params[:id].split("_")[1]
In other words to get the product ID, you have to hack the string! Well, that's certainly not very elegant. I'm not sure I would consider my own solution "beautiful" either, but it does have the potential to let you pass multiple values, and do so in a way that doesn't involve chopping up strings in the controller portion of the code (which ought to be dealing with logic, not how to pick strings apart). Most importantly, you can pass values that are decoupled from the html element id used as a draggable element.
def draggable_dest()
  return "'sourceid=' + element.sourceid + '&sourceobj=' + element.sourceobj"
end
def draggable_source(htmlid, obj)
  javascript_tag "e = $('# htmlid ') ; e.sourceid = '# htmlid '; e.sourceobj = # obj.id "
end
I created these in the application_helper.rb file, so that I can use them whereever I need. They are used like so:
<%= drop_receiving_element('current', :url =>   :action => "replace_current",
                         :destid => 'current', :destobj => @current.id  ,
                         :with => draggable_dest()) %>
This sets up the action of the receiving element with the destination's html element id, and an ActiveRecord object id, as well as the :with tag that knows how to grab the information we pass from the draggable element:
<%= draggable_element("mytask", :revert => true) %>
<%= draggable_source("mytask", t) %>
What's happening here is that first, we create a draggable element with the regular Rails method, but then we apply the secret sauce, defined above, that loads the html element id, and the object id into the draggable element, so that when it lands on the receiving element, the parameters we set up get passed on. This is a rough idea at this point, as I only figured out how to do what I wanted yesterday. Potential improvements include passing arbitrary parameters, as well as integrating the whole thing somewhere "upstream", which is something I wanted to avoid for my initial attempt, so as not to lock myself into a hacked, local version of Rails. In any case, I hope you enjoy it.

Sven Mueller: New to planet.debian.org

Since I just started my blog and added it to planet.d.o, I thought I should introduce myself a little. I’m in my mid 30s (ouch), working as a sys/net admin (Linux based, mostly Debian these days) in a nice little company. I first encountered Linux back in the 1990s, before the 1.0 kernel got released. Back then, I used Slackware (which, surprisingly, seems to still be around), later switching to Mandrake. About 5 years ago, I got introduced to Debian and immediately liked it for the ease and clearness of administrating it (apt+dpkg+dselect was so much better than rpm used to be at that time). For about two years now, I’m contributing to Debian, including some involvement in the earliest pre-implementation phases of the volatile repository (mainly advocating a few ideas that actually led to it’s implementation, BTW thanks to those who did the work in the end), some small packages I maintain and involvement in some small teams. Mainly the cyrus-imapd packaging team, but also (to a much smaller degree) in the cyrus-sasl, initscripts-ng and (extremely little, since noone bothered to add me to the alioth group for it yet) the php packaging teams.
Letting computers aside, my interests are quite diverse, they range from wheelchair-basketball to books (SciFi and Fantasy mainly) and RC helicopters, among others.
More interesting posts will probably follow later.

Joachim Breitner: Giving up at SOSHGIC

Some of you might have followed my volounteer work at the SOS Hermann Gmeiner International College in Tema, Ghana, where I was invited to introduce Linux at the school. Being a free software advocate, I thought this a great opportunity to spread Free Software where it can make the most difference and helps bridging the Digital Divide: In a developing country.Judging from the offer (which was very nice, it included housing, flights, freight, money), I expected the school to be very eager to learn about Linux. I was expecting that I only had to guide existing momentum. What I found instead was that there was zero interest from the people who matter in this case. I got all freedoms to implement what I want (as long as I didn t break anything), and I created some things I think are quite nice: Automatic installations that keep the installed windows intact, neat integration in the Active Directory setup, network monitoring with nagios, a transparent firewall that let s the teachers turn the internet for the class room off and on. But it felt like working for nothing, and I can t push people to use Free Software who are unwilling.So today I drew the concequences and quit with effect to the end of December. The principal, who s project it was in the first place, was sorry, but understanding of my issues, and accepted my resignation. I will be on a trip to the Volta lake and other parts of Ghana with friends from Accra for the next 10 days anywasy, so she will take the time to think and discuss how the school can make the best out of the remaining two months.I have not giving up on spreading Free Software here completely. If I find another project where I can be of more use afterwards, I will consider that. But this time I m going to be very picky where I go, and only take a shorter, better defined project. If I can t find something, then that s it and I ll go back to Germany to continue my studies.

Isaac Jones: The Fun of Functional Infrastructure

Say the word "infrastructure" and you conjure up the images of paved roads, hot water, and that series of tubes that makes up the Internet. In other words, infrastructure is that necessary stuff that lets you get your job done, but it doesn't seem sexy. Every open source project needs a high-quality infrastructure, though, and it turns out that building infrastructure is extremely fun, even though it's not as sexy as building "the next killer app". I've spent a lot of time building software infrastructure. The Debian project is (mostly) not about building new applications. It's about brining together projects with a solid infrastructure so that real people can use it. The Haskell Cabal is a piece of infrastructure that helps other people to compile and distribute applications. So what makes building software infrastructure seem less fun, even though it's really great? It's the idea of measuring the results of your work indirectly. It's easy to say that we wrote n lines of code this year, or that "my application" has n users. Depending on the size of n, that might make us feel good, or feel bad. But measuring results indirectly is much harder. You have to be content to say things like, "I helped 10 programmers build 15 applications for 5000 users, but I only helped each one a little bit." That's an indirect result. But if you are more interested in the result than in who creates it, then you're in a good position to let yourself have fun building infrastructure. If you are more interested in fun than in glory, then you're in a good position to get fulfillment in life :) In fact, infrastructure is really fun to build, at least in computing. You get to take a series of tubes and put them together in a new way. You get to lay the groundwork for many projects that come behind you. There's a bit of systems administration, a bit of hacking, and a lot of contact with the your peers in the community. People will help you figure out what to build since they're chasing right behind you using your stuff (at least in the open source world). People will respect and even occasionally thank you for helping them to do their job. Of course, some pieces of infrastructure become sexy. Debian's apt-get is considered pretty darn cool among those in the know. Writing awesome compilers that real people use (like GHC or Cryptol) is the dream of a lot of computing science academics. The Internet itself is actually cool these days, or so I hear. The Haskell language and community is badly in need of infrastructure right now. We need people to flesh out and improve the existing debuggers, code coverage tools, and IDE support. We need a robust package database, sysadmin support, and project repositories. We need folks to make Debian and Gentoo packages from Haskell packages. If you like people, and want people to get to know you and to appreciate your work, then go out there and discover an important piece of infrastructure that people need. Ask them what exactly they want, how they would build it, but be sure to bring your own vision to the project as well. Most of all, have fun building something with your friends.

Ben Hutchings: While Planet Debian is talking about money...

Julien Blache: "You ll be pleased to learn that a release manager needs $6000 USD to cover for living expenses for a month." Sounds high, right? But we're talking about contractors, not employees. Contractors have to cover certain expenses that are generally paid for by employers, such as (depending on jurisdiction): and in this case, their own equipment. (But they save on transport!) Besides which, you have little idea how much Steve or Andi might need to pay in mortgage repayments or rent, or how many dependents they have. Nor should we pry into these personal circumstances.

24 October 2006

Ben Armstrong: Apt verb

In the English language, it is so trivial to create new words. In no domain is this quite so evident as the world of computers. Thus, informally amongst Debian users, you’ll often hear “apt-get it” or simply “apt it” which has the virtue of being equally apt a term for using aptitude. Now, I have no problem with people using these verbs. They’re precise, if a bit geeky. But really, shouldn’t there be a more general verb to cover this activity? Back when apt was new, and nobody else was installing packages this way, the lack of a general term made sense. But these days, in certain user communities, you might hear “yum it” instead. How many variants does the English language need? One per apt-like installer? Compare this with the evolution of instant messaging. Back when ICQ dominated the field, “ICQ” was synonymous with instant messaging. These days, although you might occasionally still hear people say “ICQ me” or “Jabber me” (where the protocol is important, because both participants must have access to that specific service) we can more generally say “message me,” encompassing in one fell swoop all possible protocols. Or if you prefer, the awkwardly geeky but more precise term, “IM me” (though arguably slightly less useful than “message me” because it seems to exclude irc, the king of all chat systems). So, what’s the equivalent verb that means “conveniently installing software from one or more software repositories by merely asking for the package by name”? My mind draws a blank.

Wouter Verhelst: Conversion in progress

Sometimes the things you want don't happen until you stop trying so hard. For as long as we've had Intel-compatible computers here at home, my parents have been running Windows. At first I didn't care—this was before I had even heard about Linux, let alone install it—but as I became more and more involved in Linux, I wanted more and more for them to make the change, too. Especially given how I'm still supposed to be responsible for making sure their machine keeps running; if I wasn't, I wouldn't care as much. These are the approaches I've taken to try to convert them, and why they failed: All in all, my message is this: if you want to convert people like my parents—who couldn't care less about all this freedom stuff and whatnot, shit just has to work for them—to Linux, then you should make sure that they have a reason to use it. They didn't use it when I tried to push them behind the curtains. They didn't use it when I tried to push them openly. They only decided to use it when, eventually, they had a solid reason to use Linux: there were applications there that weren't available on Windows. Of course, there's nothing in gnucash, the gimp, or scribus that prevents me from installing it on Windows. But installing software on Windows is such a pain—and, well, I did have a hidden agenda.

23 October 2006

Evan Prodromou: 1 Brumaire CCXV

First day of Brumaire -- the foggy month -- today, and the Montreal weather seems bound and determined to fulfill the promise of that gray name. The day of pomme (apple), which reminds me that we&aposve wanted to go apple-picking in the Autumn since we arrived in Quebec a few years ago. But something seems to push us inside on October and November days. Locals say that the best way to confront Winter is face-first, getting outside and being active in the snow. I&aposm not sure; it&aposs never worked out that way for me. We had snowfall a couple of days ago; in the middle of a rainstorm big wet clumps of snow started falling from the sky. I was working out at the gym around the corner from our house, and people in the weight room went to the windows to watch the snow fall. Halloween is the traditional day for the first snow for Montrealers; more than a week early was kind of fantastical, like a long-odds horse winning a race. tags:

Mo&apos blogging I can&apost say why, but my production has dropped off precipitously on this blog in the last week or so. Partly it&aposs had to do with an increased workload; also, being out of town for two long weekends in wt:Hudson (New York) and wt:Halifax (Nova Scotia) threw me off my pace. And I&aposve felt some pressure to cover these trips and other things going on in my life, which has kept me from writing short sharp posts. But mostly I think it&aposs a case of keeping up a feedback loop for myself. When I&aposve made a blog post, I watch for responses on Technorati or Planet Debian. I add one more thing or one more post. I get in the habit of blogging and then it comes more naturally in short bits and movements. I guess it all comes down to the typical but hard-to-remember suggestion: if you want to do something, you have to do it. tags:

BarCampMontreal Montreal&aposs BarCamp event turned out to be even better than I anticipated. I got up late on Saturday morning and I wasn&apost at the downtown location till quarter to 10. It was held in Fred Ngo&aposs swing dance studio, Cat&aposs Corner, on the power-centre block of 400 Ste.-Catherine. The studio had tables and chairs and a reception area set up, and it turned out to be a great venue -- lots of room and a big feeling because of the mirrors on the walls. I got there just in time to catch Chris Hand of Zeke&aposs Gallery give an excellent talk about collecting art and participating in art culture in Montreal. Not only was it extremely informative, but it charged me up to be more involved in Montreal&aposs art scene. It also set a great tone for the rest of the day -- talks at the event ranged from alternative voting systems to art and research projects to technology surveys to demos of new products and Web sites. It kept the entire thing really fun and refreshing -- different parts of your mind used at different times. I was glad to see that Heather Kelley and Damien had come; I&aposd made a point of inviting them, so it was good to see their faces. They did one of the first presentations, about their upcoming games-and-art event, GAMMA, at SAT on 9 November 2006, straddling the gap between the industry-oriented Montreal International Games Summit and the gamer convention Festival Arcadia, not to be confused with Montreal&aposs other top export, The Arcade Fire. Man, games are hard. Anyways, they demo&aposd a game they&aposre developing for GAMMA in which the gameplay action responds to arbitrary musical input; they&aposve got several teams of developers who are putting together games to fit this criterion. Interesting concept, fun and cool. There were a ton of great discussion, but I think my favorites for the day have to include Hugh McGuire&aposs talk about the excellent Librivox project; Anne Goldenberg&aposs presentation on Wikigraphe, which I&aposd seen before but which continues to boggle; Austin Hill&aposs discussion about raising money and building Zero Knowledge; and Sylvain Carle&aposs talk about successful consulting. The best part of the talks was that I came away feeling smarter and with new projects I wanted to work on. S bastien Pierre&aposs demo of data-mining del.icio.us tags in revealicious made me think hard about wp:data clustering algorithms (something I&aposve wanted to work on for a while). Patrick Tanguay gave a great talk about co-working setups in other cities, with the aim of starting one here in Montreal. As a near-independent worker who&aposs getting tired of his home office, this was a pretty fascinating idea, and I&aposm hoping to follow-up. And Simon Law&aposs talk about Web 2.0&aposs negative influence on Open Source software gave me a lot to chew on for my visit to the Web 2.0 Conference coverage I&aposm doing for Linux World. All in all, I thought the event was the best that BarCamp has to offer. Montreal has such a rich technology and Internet culture, and some of the smartest people in town were at the event. All our major tech sectors were covered, and people interested in hacking, yakking, and entrepreneurship were in a nice balanced attendance. We were all in one room together, which kept up a good atmosphere, and we had only 15 minutes per talk, which kept things well-varied and interesting. If I had any criticisms, it would be merely that I can think of so many people I wish had been there. There are a lot of women involved in Montreal technology and Internet culture who weren&apost in attendance, and Montreal&aposs majority francophone community was underrepresented. But I think those are outreach problems that need to be handled for the next time around. Fred Ngo is already talking about BarCampMontreal2, which may or may not be coordinated with RecentChangesCamp. Yesterday&aposs Montreal Gazette had an article called Geekfest comes to town which featured a photo of Heather and Damien in the print edition. Simon Law got an excellent BarCampMontreal photoset on Flickr, and also invited me out to take photos together (fun). There&aposs a BarCampMontreal post-mortem for those interested in a follow-up discussion. tags:

N Dollars... American! One of the funny things about Canadians is that when they talk about a large amount of money, they suffix the dollar amount with the word American to let you know that it&aposs really a large amount of money. Like, "I just ordered this t-shirt online and it cost me thirty-five dollars... American!" or "He moved to New York and now he&aposs making 85 thousand dollars a year... American!" It&aposs less of a punchline than it used to be -- American dollars used to trade at about 1:1.5 or 1:1.6 to the loonie, but now it&aposs hard to find 1:1.2. Still, Canadians talk about American dollars like D&D players talk about platinum pieces. They&aposre just a qualitatively different currency. I note this because I joked about in previewing Austin Hill&aposs talk at BarCampMontreal, and he did note that they raised $80 million American for Zer0 Knowledge. I had to stifle a laugh during the talk. Austin writes - Hi Evan. Yeah that&aposs funny. I may have mispoke - we raised $55 million american which at the time was important to distinguish because that was $80 million canadian. Just wanted to be clear. Loved your presentation BTW tags:

Project Blackbox Everybody&aposs all abuzz about Sun&aposs innovative design in their new Project Blackbox. It&aposs a datacentre that&aposs built into a big shipping container; whenever you need a datacentre you can just ship one of these blackboxes to wherever you need it. I have to admit that it&aposs an amazing piece of in-your-face metaphor. I mean, when a company is shipping tech jobs overseas, they can make it all the more poignant by actually taking the jobs and putting them in this big shipping container and stenciling "JOBS" on the side and packing it on a cargo ship and sending it off into the sunset. JOBS And you don&apost really use these big containers unless you&aposre shipping something faaar away. If your job is in that box, man, you can just kiss it good-bye, because baby it&aposs gone. Maybe the best way to ship out one of these jobs containers would be to have a big bulldozer that comes through the middle of town, crushing the community infrastructure under its treads, and then picks up the big shipping container full of tech jobs and carries it off to a big ship in the harbour (rolling over some more schools and houses and small businesses) and then sends it off to somewhere crazy and foreign where they keep monkeys as pets as a matter of course. In any case: good job, Sun. I hope this works out great for you. tags:

Martin F. Krafft: Testing mdadm

The problem with being the mdadm maintainer is that it doesn't make any friends but potentially quite a lot of enemies. Even though it's actually very unlikely that a new mdadm version causes data loss (mdadm is only the remote control into the kernel), people seem to exhibit unexpected reactions when their 500Gb RAID5 array containing everything doesn't want to start anymore (Hi Lars!). In such a case, don't panic, don't do anything without understanding the implications, and consider asking for help. That said, I would appreciate if you guys helped me test the latest mdadm releases a bit more thoroughly before the package is frozen for good. I do extensive tests myself, but as Murphy would be able to predict, the problem only ever occur on other people's machines, and I'd much rather fix them before etch than after. The easiest way to help is by adding my package repository (i386/amd64) to your sources.list file, and configuring the APT pins appropriately:
# cat <<_eof >> /etc/apt/sources.list
deb http://debian.madduck.net/repo sid main
_eof
# cat <<_eof >> /etc/apt/preferences
Package: *
Pin: release a=sid, release o=madduck
Pin-Priority: 50
Package: mdadm
Pin: release a=sid, release o=madduck
Pin-Priority: 600
_eof
# apt-get update; apt-get upgrade
Alternatively, you can just download the package for i386 or amd64. If you're running sarge and are willing to test, that would be great! I've prepared backports, which you can use like so (note how you need backported debconf and lsb-base packages too, the latter of which is already on backports.org):
# cat <<_eof >> /etc/apt/sources.list
deb http://debian.madduck.net/repo sarge-backports main
## unless you have backports already enabled:
deb http://www.backports.org/debian sarge-backports main
_eof
# cat <<_eof >> /etc/apt/preferences
Package: *
Pin: release a=sarge-backports, release o=madduck
Pin-Priority: 50
Package: mdadm
Pin: release a=sarge-backports, release o=madduck
Pin-Priority: 600
Package: debconf
Pin: release a=sarge-backports, release o=madduck
Pin-Priority: 600
Package: lsb-base
Pin: release a=sarge-backports
Pin-Priority: 600
_eof
# apt-get update; apt-get upgrade
The mdadm backport can also be directly downloaded for i386 or amd64, the corresponding debconf package is here, and lsb-base is resides in the backports.org archive. Much appreciated! NP: Barclay James Harvest / Gone to Earth

John Goerzen: We need to follow the Amish example

Just a few weeks ago, the world heard the news of the tragic school shooting at an Amish school in rural Pennsylvania. A deranged man entered the schoolhouse, bound and gagged female hostages, brought along torture equipment, and shot 10 of them. 5 died, and the remaining 5 are believed to still be hospitalized.

Back in 1990, a deranged man committed a series of murders near the University of Florida campus in Gainesville. The story mentions 5 people that were killed.

Both were tragic situations. Both men killed people that had their whole lives in front of them. Both shook an entire community.

But look at how the communities responded. The Amish responded like this:

CNN reported a grandfather of one of the murdered Amish girls said of the killer on the day of the murder: "We must not think evil of this man."

Jack Meyer, a member of the Brethren community living near the Amish in Lancaster County, explained: "I don't think there's anybody here that wants to do anything but forgive and not only reach out to those who have suffered a loss in that way but to reach out to the family of the man who committed these acts," he told CNN.

The Amish have reached out to Roberts' family. Dwight Lefever, a Roberts family spokesman said an Amish neighbor comforted the Roberts family hours after the shooting and extended forgiveness to them.

An article in a Canadian newspaper the National Post stated that the Amish have set up a charitable fund for the family of the shooter. (Wikipedia)


In addition, the Amish invited the Roberts family to attend the funerals for the Amish girls he killed.

Gainesville reacted this way:

Dianna Hoyt, Christa Hoyt's stepmother, said Rolling's execution has been eagerly awaited by the victims' families. Some will be inside the prison to witness it. . .

Sadie Darnell, who was the police department's media spokeswoman at the time and developed enduring friendships with the victims' families, said Rolling's execution still matters, even if it also provides him more of the notoriety he sought.

"Retribution . . . is important because it represents that our society is holding that person accountable," said Darnell, now a candidate for Alachua County sheriff. (CNN)


We've all heard of murders that have taken place lately. Usually they are accompanied by calls by politicians, victim's family, and sometimes even clergy to kill the perpetrator. In the days after 9/11, there were reports of anybody that looked Middle Eastern being attacked in several different places around the country.

I have never understood this great desire for revenge. How does that help anyone?

What the Amish did was right religiously and morally. They truly followed the New Testament call to love your enemies and forgive. It is not easy to follow all of Jesus' teachings, and nobody said it would be. But they are doing it, and they have already begun healing. Reports are that the Roberts family has become friends with several of the Amish in the area, and they are working to help each other out after this horrible tragedy.

Even putting religion aside for a moment, the Amish actions are quite simply the right thing to do. By spreading love instead of hate, and friendship instead of revenge, they have succeeded in making sure that no cycle of violence starts there.

In contrast, 16 years later, the families of the victims in Florida still aren't healing. They are still angry and bitter. They are still seeking revenge. They hope that their lives will get back to normal after the murderer is killed. But after 16 years of stewing about it, will they really? And what about the family of the murderer, whose lives certainly must have been a mess for the past 16 years? They will now lose a family member. Does anyone care about them, or will they now turn angry at society and possibly spread the pain more?

Imagine what would happen if so many more people around the world took the Amish perspective -- to forgive those that wronged us. How long must it be before we can forgive? How far back do we spread our hate? Do we still hate those that were involved in 9/11, or can we forgive them? Do we still hate the Germans for what their ancestors did in World War II, or can we forgive them? Do we hate politicians with whom we strongly disagree, or think are liars? Do we still hate all those that have wronged us personally -- someone that stole something from us or the sadistic boss?

Knives, electric chairs, and bombs do not buy reconciliation. They can not "win over" the hearts of others. They do not make our lives easier. Hate brings more hate, and more resentment.

Forgiveness is not easy. We all hope that we will never be involved in such a tragedies as these. But let us follow the example the Amish have shown -- forgive for all things, big or small, important or not, painful or not.

Only then will we be at peace with ourselves, and only then will we have the chance to be at peace with our neighbors.

Uwe Hermann: Now that's what I call a case mod!

A few days ago police in Poland arrested a 17 year old kid who ran a mini-farm of cannabis inside his PC. The PC was normally used but modded to contain a light source, and keep humidity and temperature at proper levels.
The kids these days... (via Boing Boing)

22 October 2006

Florian Ragwitz: Audio::XMMSClient::XMLRPC

I just uploaded Audio::XMMSClient::XMLRPC 0.01 to the CPAN. It's basically an XMLRPC interface to the xmms2 daemon. It ties all Audio::XMMSClient functions except for the signal and broadcast stuff to an XMLRPC API which is quite similar to the Perl API of Audio::XMMSClient. It will be available from from CPAN in some hours and can be grabbed from the Pause incoming queue in the meantime.

Next.

Previous.