Search Results: "xam"

1 April 2006

David Nusinow: I Can't Believe I'm A "Manager"

Via reddit (which kicks the crap out of slashdot and digg): What I've Learned From Failure.

The link above is a long, but fascinating piece. I've had to become a lot more interested in how to manage software projects since taking on Xorg maintainance, and the same lessons seem to scale up well to how Debian as a whole manages itself. This article talks about some of the major problems that I've seen myself deal with, and the experiences of this guy echo my own over the past year very strongly. Here's a few examples:

"Getting away from weak teams, another source of failure is the omnipresent threat of "chickens." A chicken is not necessarily a weak individual, but a sign of a weak management structure. A chicken is an individual who has significant authority over your project, but does not make a personal commitment to the success of the project. Significant authority includes the authority to impose constraints on the team."

I like this and I've noticed it in the XSF and in Debian as a whole. People are free to work on what they want how they want, and this tends to work out well for us. But we also have no structure in which people must actually commit to what they do. As such, there's no accountability. This frees Debian developers from the preassure of having to work on something they don't enjoy, but it also creates abandoned packages, ignored bugs, and frustrated release schedules. In the past I've described a need for a stick in addition to a carrot for Debian developers, and the sentiment here echoes that idea. I've spoken with Manoj about his conception of personal responsibility in Debian, and I think it may truly be the bedrock on which Debian needs to rest. I still don't have a good mechanism for this yet though.

"Another sign of a weak team is poor development hygiene. There are dozens of development practices that seem trivial to the inexperienced outsider or to the manager focusing on "big wins." Examples of development hygiene include source code versioning, maintenance of an accurate bug or issue database, significant use of automated testing, continuous integration, and specifications that are kept current (whether incredibly detailed or high-level overviews)."

This is a something I myself have had a problem with over the past year. Branden was extremely good about keeping the XSF svn repo and the BTS up to date and well managed. I've done just about the opposite over the past year, and it's bitten me a few times. This however, was a conscious decision on my part, knowing that I was so far behind upstream that it was going to be hard to effectively manage the BTS without a recent codebase deployed to our users. So I focused on packaging instead, and luckily that road is nearly finished. Also fortunately, everyone else in the XSF managed the BTS for me, most notably (in alphabetical order by last name) Julien Cristau, Michel D nzer, Eugene Konev, and David Martinez Moreno, and they've managed to keep it relatively tidy. I'm going to spend some serious effort over the coming months to clean out the BTS so it's more manageable both for users and developers again. Luckly our SVN repo is in good shape still, so for the most part we're doing pretty well here. Debian as a whole also seems to be doing better at this, with lots of public svn repos springing up on alioth.

"It's mandatory to fail early. You need to know you're in trouble right away. That's essential when taking over an existing project or starting something new. You have to find out how you're doing within weeks. Not quarters, not months. The longer you wait, the more inertia the failure will have."

We're getting better at this, and I've sort of made it my mantra for this release cycle. Get things in to experimental as fast as possible, and then when I've fixed the majority of the bugs that show up there, put it in unstable as fast as possible. It worked out well for all the releases I've done so far and I'm going to keep doing it. Michel is really pushing me to keep CVS (or git as of Real Soon Now) snapshots from upstream in experimental, and I really like this idea and plan to follow through with it for this reason. This also echoes some of aj's ideas about speeding up development pace. Hopefully he'll implement them whether or not he becomes DPL, because I think they're going to be important for Debian as a whole.

"Dates are sacred."

We learned this during the sarge release cycle.

"The net result is that I've tried to find the happy medium where I generate weekly management reports on projects. A management report is something that is used to actually make a decision. Everything else is garbage. I've learned that when I haven't had management reports for a project, failure has resulted."

This is an interesting idea. It sort of echoes how I try and provide status updates on my blog, as well as the "Bits from" emails, but perhaps something more like this would be useful. I may try and play with this idea in the near future.

There's a lot more in there, but this entry already got way too long. Hopefully there's some food for thought in there for everyone who's interested in how Debian is run. The Debian development model has carried us very far, but I can't shake the feeling that we need to make some critical changes for it to continue. This will require a certain degree of boldness, but in order to fix the problems with the project I think we just need to clench our teeth and go for it. With that, I'll leave you with one last line from the above: "And if you decide to make changes, have the courage to go 100% with your gut. I've failed more than once when I watered down my convictions in order to appease dissenters. The only thing worse than evangelizing change and failing is looking back and realized you might have succeeded if you'd held firm on your convictions."

Florian Ragwitz: Audio::XMMSClient

Yesterday I did some work for the XMMS2 Debian packages. Thereby I noticed that libxmmsclient0, the xmms2 client library, that allows you to write your own xmms2 clients, is bound to quite a lot of languages, but perl bindings were still missing. I took a look at the library interface and it seemed that creating bindings shouldn't be a big deal. Therefor I gave a try and wrote Audio::XMMSClient. There are still some rough edges, but it works pretty well already. The interface is quite close to the C API, so it's possible to work with it even if documentation, examples and a test suite are still missing. Comments on the API, the namespace and whether this module should go into the xmms2 distribution, like other language bindings, or directly to CPAN are most welcome.

30 March 2006

Ross Burton: Furious Anger, Part Two

Thursday 23rd March: DAYLIGHT ROBBERY Friday 30th March: NHS CUTS In the space of seven short days, they've managed to go from hard-line right-wing, give us tax cuts, don't "throw it away" on the state; to full-on fund the NHS more "Daily Express Crusade" your childen are All Going To Die. If these headlines were in The Onion they'd be a fine example of tabloid spin and use of language. But they are serious, and I hate this paper. NP: g tis Byrjun, Sigur R s

Wouter Verhelst: ColdFire arrived!

The coldfire development kit of which I made mention in a somewhat recent -devel-announce post has arrived about a week ago. Mine was the last one to arrive; the other four have already arrived. It took a while, because mine apparently got lost in shipping, so they had to ship me a second one. That, and the fact that I said I'd ask around in my neighbourhood whether it'd been delivered at the wrong address (but then eventually forgot to tell the Freescale folks that I had done so and that, no, it wasn't) meant it took a bit over two months to arrive here. But it finally has. Whee! The box contains a number of things I do not and will not likely ever need (the CodeWarrior Development Studio, for example, or power cables for other places of the world, like the US, the UK, and Japan), but, well—that's not important. It also contains some things that are interesting, such as a serial cable—even if I already have a few of those. The box contents also smells funny. Oh well. In the mean time, however, I've come across a bit of a problem: I can't seem to boot the thing. Well—I can, except it seems to be mangling the serial output it's sending for some reason. I can see that some output is being sent to the serial console, but it's not readable. And I can also see that it doesn't find it's root file system—I'm doing NFS root currently, and there's no network activity. Not sure what the problem is, though. Update: someone suggested that it is the baud rate. Yes, obviously it's something like that; however, I did try every baud rate between 9600 and 115200, but none of them worked. Besides, I have my command line say "console=ttyS0,19200n8", and it's still not working. I suspect a driver problem at this point...

29 March 2006

Wouter Verhelst: ColdFire arrived!

The coldfire development kit of which I made mention in a somewhat recent -devel-announce post has arrived about a week ago. Mine was the last one to arrive; the other four have already arrived. It took a while, because mine apparently got lost in shipping, so they had to ship me a second one. That, and the fact that I said I'd ask around in my neighbourhood whether it'd been delivered at the wrong address (but then eventually forgot to tell the Freescale folks that I had done so and that, no, it wasn't) meant it took a bit over two months to arrive here. But it finally has. Whee! The box contains a number of things I do not and will not likely ever need (the CodeWarrior Development Studio, for example, or power cables for other places of the world, like the US, the UK, and Japan), but, well—that's not important. It also contains some things that are interesting, such as a serial cable—even if I already have a few of those. The box contents also smells funny. Oh well. In the mean, however, I've come across a bit of a problem: I can't seem to boot the thing. Well—I can, except it seems to be mangling the serial output it's sending for some reason. I can see that some output is being sent to the serial console, but it's not readable. And I can also see that it doesn't find it's root file system—I'm doing NFS root currently, and there's no network activity. Not sure what the problem is, though. Update: someone suggested that it is the baud rate. Yes, obviously it's something like that; however, I did try every baud rate between 9600 and 115200, but none of them worked. Besides, I have my command line say "console=ttyS0,19200n8", and it's still not working. I suspect a driver problem at this point...

23 March 2006

Matthew Palmer: The Little Engine That Might Be Able To Later

By now, you would think that I would have learned that Breakfast + Freshmeat = mess. Today, we have an unimaginatively named program called "font manager". Some day, in the future, we may have a font manager -- but we don't yet. Here's the description, direct from the horse's mouth:
font manager is a font manager for GNOME. It cannot do any font management tasks yet, but is already useful for picking fonts.
It's quite adamant that font manager is a font manager. Yet it can't manage fonts. Interesting. I suppose this is an example of the curious issue of true identity -- are you who you are because of what you are called, or because of what you are? The author(s) of "font manager" obviously believe that your true identity stems from your name, regardless of what you may actually do. I disagree somewhat -- in a lot of ways, I identify more closely with the term "computer geek" than with my name -- I think it's essentially social conditioning and a need to be uniquely identified from all the other computer geeks out there that makes me remember to respond to a call of "oi, Matt!". An interesting book on this subject is Jennifer Government, by Max Barry (ISBN 0349117624), in which people's surnames are determined by who they work for (so take a guess as to who Jennifer works for). There's something very wrong with me when a quick scoff at a freshmeat article turns into pseudophilosophy and a book review...

Joey Hess: wiki/blog convergence

I wrote a wiki engine last week, maybe I should write a weblog engine next week? Here's my own take on converging the two, which has been done before, but which some differences in ikiwiki perhaps allow to be approached slightly differently. First, I plan for all pages in the wiki generate a rss feed for that single page, which can be subscribed to if you want to track changes to the page alone. Then, pages can have a blog embedded in them by adding a special tag to the page, which includes a list of globs for the pages on the wiki that comprise the blog. Something like "Blog/* !*/Discussion", to exclude discussion subpages from the blog. This makes the most recently created of those pages be inlined into the html version of the page (with a form at the bottom to make a new post, if you don't want to commit to svn by hand) ... and enables creation of a regular rss feed too. Some nice features that just fall out of this: ikwiki's TODO has the details (about half way down; that page needs to be implemented as a collection of pages/blog itself).

21 March 2006

MJ Ray: The DPL Debate 2006: The krooger effect

While discussing the debate with another DD, I noticed something interesting. While Ted Walther goes in too hard and too heavy in part III of the debate (lines 600 on in the log), two of his targets demand evidence rather than answer his questions. One example was Jeroen van Wolffelaar responding to Ted Walther's questions like "do you think that trying to kick people out of the project because you don't like their religious views is something to sweep under the carpet?" with the answer "can you prove one quote where I'm discriminating based on religion?" Why do that? It's usual to ask for evidence when one is undecided, but how could he be undecided about whether he discriminates based on religion? Why not reject that suggestion too? Some will assume the target(s) are avoiding or ignoring the question because they're undecided whether they need to confess yet, but don't want to lie. However, I decided I think Jeroen is ignorant or careless, rather than bigoted. At least he gave some answer, unlike several others. The other notable evader IMO was Steve McIntyre about debian commercial activity and DUS's tax registration (presumably based on the -project and/or -uk list traffic from the last year) but I'm a bit too close to that for it to change my vote. Even those who rank Ted Walther low should admit that he asked some of the trickiest questions in part III and mixed it up a bit.

20 March 2006

Matthew Palmer: The Curse of the Podcast

Over the past week or so, I've decided to get around to listening to some of the "amateur" (in the same way that Open Source software is "amateur") podcasts that I've collected in the past couple of months (primarily so I can either archive them, or delete them and free up a bit of HDD space). As a great fan of radio, I've been pretty disappointed at the quality of the podcasts I've listened to. While I hadn't expected the BBC world service, there are a number of quite common mistakes I've noticed across several of the podcasts I've listened to. In the spirit of kaizen, I've noted down the really bad things that I've noticed, in the hope that someone who does a podcast, or is considering doing a podcast, might keep these simple mistakes in the back of their mind and avoid them. No podcast I've listened to so far has exhibited all of these symptoms (there's no way I would have gotten to the end of that hypothetical nightmare audio file) but most have exhibited at least one of these flaws. For a better general idea of how a good podcast might sound, listen to professional radio for a bit -- a lot of good shows are podcast themselves these days -- and get an idea of what a good show looks like. I'm also prepared to go further than just bitching about podcasts. If you do a podcast, and would like my (unprofessional but oh-so-opinionated) assessment of your podcast, please e-mail me at mpalmer@hezmatt.org with a link to your podcast, and I'll try to give it a listen and honest critique.

Lars Wirzenius: Travel report: PyGTK tutorial

I gave a talk to the Finnish Unix User's Group about PyGTK programming (see also examples). It seemed to go fairly well, although one hour is certainly not enough to do more than scratch the surface a teeny bit. This happened at FUUG's annual cruise, which this time went to Tallinn, Estonia. The service on the ship was not the bestest ever, but otherwise it was pretty nice. I had a cabin on my own, which was much nicer than the usual style of putting four people into a sardine jar. One of the things that came up was the fact that while there is fairly much interest in arranging a big happening in Finland next fall in honor of Linux's 15th birthday, there seems to be a severe lack a head organizer. This is sad.

Amaya Rodrigo: So (un)real

Via Guilded Lilies (Grown Women Playing Games):

One of the things I find interesting in the development of computer games is the selective application of the increased realism that has been made possible by improvements in game engine technology. [...] What I find to be ironic is that there has been an industry-wide movement toward more realism through the function of, for example, physics AI in computer game design, without there necessarily being a concurrent application of that ideal to the creation of certain female body parts. This point has generated the response that games are not about realism, but rather fantasy, and thus do not have an obligation to represent women realistically

Jacobo Tarrío Barreiro: The curse of Galician-Portuguese words

Many Linux distributions suffer the curse of the Galician-Portuguese words. This means that many of such distributions have names which look or sound like (or are) Galician and/or Portuguese words. For example, “Ubuntu” sounds, in Portuguese, like “O Ponto”, which means “The Point”. “Debian” means, in Galician, “They Should” or “They Owed”. “Centos” means “Hundreds” (and reminds Galician speakers of “Centolos”, “Spider Crabs”). “Fedora” looks like “Fedor”, which means “Stench”. “Nexenta” looks like the Galician word “Noxenta”, which means “Disgusting”. AFAIK, “Red Hat”, “Slackware”, “Caldera OpenLinux”, “SuSE”, “Mandrake” (sorry, “Mandriva”) and “Yggdrasil” mean nothing in Galician or Portuguese, but I’m sure that, given enough beer, somebody will be able to think of something. (As a speaker of Galician, I can offer my services as a naming consultant. My fees may look expensive, but think of the advantages of not having millions of Brazilians laugh at your distribution’s name!)

19 March 2006

Adam Rosi-Kessel: randomplay 0.52 released

It’s been a while since I announced a release of randomplay, my command-line ‘itch a scratch’ music player. It is most useful for maintaining a random shuffle over many sessions—for example, I use it to make sure I don’t ever hear the same song in any three month period. This new version features the much sought ‘back a song’ keybinding. It also announces the “random weight” preference of the current song as it plays.

Clint Adams: This report is flawed, but it sure is fun

91D63469DFdnusinow1243
63DEB0EC31eloy
55A965818Fvela1243
4658510B5Amyon2143
399B7C328Dluk31-2
391880283Canibal2134
370FE53DD9opal4213
322B0920C0lool1342
29788A3F4Cjoeyh
270F932C9Cdoko
258768B1D2sjoerd
23F1BCDB73aurel3213-2
19E02FEF11jordens1243
18AB963370schizo1243
186E74A7D1jdassen(Ks)1243
1868FD549Ftbm3142
186783ED5Efpeters1--2
1791B0D3B7edd-213
16E07F1CF9rousseau321-
16248AEB73rene1243
158E635A5Erafl
14C0143D2Dbubulle4123
13D87C6781krooger(P)4213
13A436AD25jfs(P)
133D08B612msp
131E880A84fjp4213
130F7A8D01nobse
12F1968D1Bdecklin1234
12E7075A54mhatta
12D75F8533joss1342
12BF24424Csrivasta1342
12B8C1FA69sto
127F961564kobold
122A30D729pere4213
1216D970C6eric12--
115E0577F2mpitt
11307D56EDnoel3241
112BE16D01moray1342
10BC7D020Aformorer-1--
10A7D91602apollock4213
10A51A4FDDgcs
10917A225Ejordi
104B729625pvaneynd3123
10497A176Dloic
962F1A57Fpa3aba
954FD2A58glandium1342
94A5D72FErafael
913FEFC40fenio-1--
90AFC7476rra1243
890267086duck31-2
886A118E6ch321-
8801EA932joey1243
87F4E0E11waldi-123
8514B3E7Cflorian21--
841954920fs12--
82A385C57mckinstry21-3
825BFB848rleigh1243
7BC70A6FFpape1---
7B70E403Bari1243
78E2D213Ajochen(Ks)
785FEC17Fkilian
784FB46D6lwall1342
7800969EFsmimram-1--
779CC6586haas
75BFA90ECkohda
752B7487Esesse2341
729499F61sho1342
71E161AFBbarbier12--
6FC05DA69wildfire(P)
6EEB6B4C2avdyk-12-
6EDF008C5blade1243
6E25F2102mejo1342
6D1C41882adeodato(Ks)3142
6D0B433DFross12-3
6B0EBC777piman1233
69D309C3Brobert4213
6882A6C4Bkov
66BBA3C84zugschlus4213
65662C734mvo
6554FB4C6petere-1-2
637155778stratus
62D9ACC8Elars1243
62809E61Ajosem
62252FA1Afrank2143
61CF2D62Amicah
610FA4CD1cjwatson2143
5EE6DC66Ajaldhar2143
5EA59038Esgran4123
5E1EE3FB1md4312
5E0B8B2DEjaybonci
5C9A5B54Esesse(Ps,Gs) 2341
5C4CF8EC3twerner
5C2FEE5CDacid213-
5C09FD35Atille
5C03C56DFrfrancoise---1
5B7CDA2DCxam213-
5A20EBC50cavok4214
5808D0FD0don1342
5797EBFABenrico1243
55230514Asjackman
549A5F855otavio-123
53DC29B41pdm
529982E5Avorlon1243
52763483Bmkoch213-
521DB31C5smr2143
51BF8DE0Fstigge312-
512CADFA5csmall3214
50A0AC927lamont
4F2CF01A8bdale
4F095E5E4mnencia
4E9F2C747frankie
4E9ABFCD2devin2143
4E81E55C1dancer2143
4E38E7ACFhmh(Gs)1243
4E298966Djrv(P)
4DF5CE2B4huggie12-3
4DD982A75speedblue
4C671257Ddamog-1-2
4C4A3823Ekmr4213
4C0B10A5Bdexter
4C02440B8js1342
4BE9F70EAtb1342
4B7D2F063varenet-213
4A3F9E30Eschultmc1243
4A3D7B9BClawrencc2143
4A1EE761Cmadcoder21--
49DE1EEB1he3142
49D928C9Bguillem1---
49B726B71racke
490788E11jsogo2143
4864826C3gotom4321
47244970Bkroeckx2143
45B48FFAEmarga2143
454E672DEisaac1243
44B3A135Cerich1243
44597A593agmartin4213
43FCC2A90amaya1243
43F3E6426agx-1-2
43EF23CD6sanvila1342
432C9C8BDwerner(K)
4204DDF1Baquette
400D8CD16tolimar12--
3FEC23FB2bap34-1
3F972BE03tmancill4213
3F801A743nduboc1---
3EBEDB32Bchrsmrtn4123
3EA291785taggart2314
3E4D47EC1tv(P)
3E19F188Etroyh1244
3DF6807BEsrk4213
3D2A913A1psg(P)
3D097A261chrisb
3C6CEA0C9adconrad1243
3C20DF273ondrej
3B5444815ballombe1342
3B1DF9A57cate2143
3AFA44BDDweasel(Ps,Gs) 1342
3AA6541EEbrlink1442
3A824B93Fasac3144
3A71C1E00turbo
3A2D7D292seb128
39ED101BFmbanck3132
3969457F0joostvb2143
389BF7E2Bkobras1--2
386946D69mooch12-3
374886B63nathans
36F222F1Fedelhard
36D67F790foka
360B6B958geiger
3607559E6mako
35C33C1B8dirson
35921B5D8ajmitch
34C1A5BE5sjq
3431B38BApxt312-
33E7B4B73lmamane2143
327572C47ucko1342
320021490schepler1342
31DEB8EAEgoedson
31BF2305Akrala(Gs)3142
319A42D19dannf21-4
3174FEE35wookey3124
3124B26F3mfurr21-3
30A327652tschmidt312-
3090DD8D5ingo3123
30813569Fjeroen1141
30644FAB7bas1332
30123F2F2gareuselesinge1243
300530C24bam1234
2FD6645ABrmurray-1-2
2F95C2F6Dchrism(P)
2F9138496graham(Gs)3142
2F5D65169jblache1332
2F28CD102absurd
2F2597E04samu
2F0B27113patrick
2EFA6B9D5hamish(P)3142
2EE0A35C7risko4213
2E91CD250daigo
2D688E0A7qjb-21-
2D4BE1450prudhomm
2D2A6B810joussen
2CFD42F26dilinger
2CEE44978dburrows1243
2CD4C0D9Dskx4213
2BFB880A3zeevon
2BD8B050Droland3214
2B74952A9alee
2B4D6DE13paul
2B345BDD3neilm1243
2B28C5995bod4213
2B0FA4F49schoepf
2B0DDAF42awoodland
2A8061F32osamu4213
2A21AD4F9tviehmann1342
299E81DA0kaplan
2964199E2fabbe3142
28DBFEC2Fpelle
28B8D7663ametzler1342
28B143975martignlo
288C7C1F793sam2134
283E5110Fovek
2817A996Atfheen
2807CAC25abi4123
2798DD95Cpiefel
278D621B4uwe-1--
26FF0ABF2rcw2143
26E8169D2hertzog3124
26C0084FCchrisvdb
26B79D401filippo-1--
267756F5Dfrn2341
25E2EB5B4nveber123-
25C6153ADbroonie1243
25B713DF0djpig1243
250ECFB98ccontavalli(Gs)
250064181paulvt
24F71955Adajobe21-3
24E2ECA5Ajmm4213
2496A1827srittau
23E8DCCC0maxx1342
23D97C149mstone(P)2143
22DB65596dz321-
229F19BD1meskes
21F41B907marillat1---
21EB2DE66boll
21557BC10kraai1342
2144843F5lolando1243
210656584voc
20D7CA701steinm
205410E97horms
1FC992520tpo-14-
1FB0DFE9Bgildor
1FAEEB4A9neil1342
1F7E8BC63cedric21--
1F2C423BCzack1332
1F0199162kreckel4214
1ECA94FA8ishikawa2143
1EAAC62DFcyb---1
1EA2D2C41malattia-312
1E77AC835bcwhite(P)
1E66C9BB0tach
1E145F334mquinson2143
1E0BA04C1treinen321-
1DFE80FB2tali
1DE054F69azekulic(P)
1DC814B09jfs
1CB467E27kalfa
1C9132DDByoush-21-
1C87FFC2Fstevenk-1--
1C2CE8099knok321-
1BED37FD2henning(Ks)1342
1BA0A7EB5treacy(P)
1B7D86E0Fcmb4213
1B62849B3smarenka2143
1B3C281F4alain2143
1B25A5CF1omote
1ABA0E8B2sasa
1AB474598baruch2143
1AB2A91F5troup1--2
1A827CEDEafayolle(Gs)
1A6C805B9zorglub2134
1A674A359maehara
1A57D8BF7drew2143
1A269D927sharky
1A1696D2Blfousse1232
19BF42B07zinoviev--12
19057B5D3vanicat2143
18E950E00mechanix
18BB527AFgwolf1132
18A1D9A1Fjgoerzen
18807529Bultrotter2134
1872EB4E5rcardenes
185EE3E0Eangdraug12-3
1835EB2FFbossekr
180C83E8Eigloo1243
17B8357E5andreas212-
17B80220Dsjr(Gs)1342
17796A60Bsfllaw1342
175CB1AD2toni1---
1746C51F4klindsay
172D03CB1kmuto4231
171473F66ttroxell13-4
16E76D81Dseanius1243
16C63746Dhector
16C5F196Bmalex4213
16A9F3C38rkrishnan
168021CE4ron---1
166F24521pyro-123
1631B4819anfra
162EEAD8Bfalk1342
161326D40jamessan13-4
1609CD2C0berin--1-
15D8CDA7Bguus1243
15D8C12EArganesan
15D64F870zobel
159EF5DBCbs
157F045DCcamm
1564EE4B6hazelsct
15623FC45moronito4213
1551BE447torsten
154AD21B5warmenhoven
153BBA490sjg
1532005DAseamus
150973B91pjb2143
14F83C751kmccarty12-3
14DB97694khkim
14CD6E3D2wjl4213
14A8854E6weinholt1243
14950EAA6ajkessel
14298C761robertc(Ks)
142955682kamop
13FD29468bengen-213
13FD25C84roktas3142
13B047084madhack
139CCF0C7tagoh3142
139A8CCE2eugen31-2
138015E7Ethb1234
136B861C1bab2143
133FC40A4mennucc13214
12C0FCD1Awdg4312
12B05B73Arjs
1258D8781grisu31-2
1206C5AFDchewie-1-1
1200D1596joy2143
11C74E0B7alfs
119D03486francois4123
118EA3457rvr
1176015EDevo
116BD77C6alfie
112AA1DB8jh
1128287E8daf
109FC015Cgodisch
106468DEBfog--12
105792F34rla-21-
1028AF63Cforcer3142
1004DA6B4bg66
0.zufus-1--
0.zoso-123
0.ykomatsu-123
0.xtifr1243
0.xavier-312
0.wouter2143
0.will-132
0.warp1342
0.voss1342
0.vlm2314
0.vleeuwen4312
0.vince2134
0.ukai4123
0.tytso-12-
0.tjrc14213
0.tats-1-2
0.tao1--2
0.stone2134
0.stevegr1243
0.smig-1-2
0.siggi1-44
0.shaul4213
0.sharpone1243
0.sfrost1342
0.seb-21-
0.salve4213
0.ruoso1243
0.rover--12
0.rmayr-213
0.riku4123
0.rdonald12-3
0.radu-1--
0.pzn112-
0.pronovic1243
0.profeta321-
0.portnoy12-3
0.porridge1342
0.pmhahn4123
0.pmachard1--2
0.pkern3124
0.pik1--2
0.phil4213
0.pfrauenf4213
0.pfaffben2143
0.p21243
0.ossk1243
0.oohara1234
0.ohura-213
0.nwp1342
0.noshiro4312
0.noodles2134
0.nomeata2143
0.noahm3124
0.nils3132
0.nico-213
0.ms3124
0.mpalmer2143
0.moth3241
0.mlang2134
0.mjr1342
0.mjg591342
0.merker2--1
0.mbuck2143
0.mbrubeck1243
0.madduck4123
0.mace-1-2
0.luther1243
0.luigi4213
0.lss-112
0.lightsey1--2
0.ley-1-2
0.ldrolez--1-
0.lange4124
0.kirk1342
0.killer1243
0.kelbert-214
0.juanma2134
0.jtarrio1342
0.jonas4312
0.joerg1342
0.jmintha-21-
0.jimmy1243
0.jerome21--
0.jaqque1342
0.jaq4123
0.jamuraa4123
0.iwj1243
0.ivan2341
0.hsteoh3142
0.hilliard4123
0.helen1243
0.hecker3142
0.hartmans1342
0.guterm312-
0.gniibe4213
0.glaweh4213
0.gemorin4213
0.gaudenz3142
0.fw2134
0.fmw12-3
0.evan1--2
0.ender4213
0.elonen4123
0.eevans13-4
0.ean-1--
0.dwhedon4213
0.duncf2133
0.ds1342
0.dparsons1342
0.dlehn1243
0.dfrey-123
0.deek1--2
0.davidw4132
0.davidc1342
0.dave4113
0.daenzer1243
0.cupis1---
0.cts-213
0.cph4312
0.cmc2143
0.clebars2143
0.chaton-21-
0.cgb-12-
0.calvin-1-2
0.branden1342
0.brad4213
0.bnelson1342
0.blarson1342
0.benj3132
0.bayle-213
0.baran1342
0.az2134
0.awm3124
0.atterer4132
0.andressh1---
0.amu1--2
0.akumria-312
0.ajt1144
0.ajk1342
0.agi2143
0.adric2143
0.adejong1243
0.adamm12--
0.aba1143

18 March 2006

Daniel Burrows: Windows stupidities

As I've had to use Windows on a daily basis, I've found that I am no longer able to maintain my air of detached tolerance for the foibles of the system. In fact, I'm starting to get really infuriated with the utter boneheadedness of so many facets of it. Not so much things that are broken, as things that are done badly, and done so in the face of widespread examples of how to do it right.

Here are two simple examples that are emblematic of what Windows users have to suffer through.

(a) Mandatory file locks.

On Windows, every access to a file, by default, acquires a mandatory lock on it. Want to recompile the program you're working on? Sorry, you have to track down and kill all its running instances. Want to read that file on the network server? Sorry, you'll have to run around the office and ask all the people using it to close it.

Last week I got an email asking me to unlock a directory on our local fileserver so it could be renamed. It turned out that I was running an acroread process to view a PDF file...and that locked the directory from being renamed. Because, of course, the universe would implode if someone were to rename a file I had already loaded into memory. This is, however, better than how shared libraries are treated; trying to register a new version of a shared library with the system (the Windows version of ldconfig) will silently fail if programs have the old version mapped into memory. WTF? No, really, WTF?

Windows users get around this by having tools to find out which processes have a file open so they can terminate them with extreme prejudice. This is considered normal and acceptable behavior for a computer in the Windows universe. After all, in the real world two people can't use the same document at once, so why should they be able to do so on a computer?

(b) C# events.

They've been invented many times. Signals, events, hooks, whatever you want to call them, they're collections of function objects that are invoked when some particular condition occurs. It's a great way to make it easy to connect together objects that don't know about each other, they're simple enough that your average CS sophomore could implement them in a half hour, and the concept is so obvious (besides having dozens of examples of working and deployed implementations) that there's no way to screw it up, right?

Wrong.

Now, C# is generally a somewhat clunky language, but this is nothing to do with that (I am not, for instance, surprised that it's cumbersome to bind extra parameters to an event in a language that has little support for higher-order programming anyway). No, this is one of those utter idiocies that just make you scratch your head and go what the *@&# were they on when they did that? You see, when you call an event with no attached listeners, C# throws an exception. Just, you know, as a friendly way of letting you know that you didn't connect to that event.

But wait! It gets better! In order to test whether the event has any connected delegates (the Microsoft term for a function object), you ... compare it to the null pointer. Yes, that's right. Every time you call an event, you have to do this:

if(Event != null)
    Event();


...because, of course, an empty collection of events is clearly the same thing as a nonexistant object.

I really wish I could be a fly on the wall at the meeting where this was decided. My imagination supplies a scene along these lines:


Scene: A smoke-free office somewhere deep in the sterile labyrinth of the Microsoft campus

Programmer 1: "...and we call this bold new innovation 'events'! It's a way for you to perform method calls without knowing which method you're calling. We've found that it's amazingly useful when doing UI programming. I'm sure that introducing this new idea to the world will be yet another chapter in the Microsoft story of advancing technology!"

Programmer 2: "Have you checked the corner cases? What happens if there is no method available to call?"

Programmer 1: "Oh, of course! In that case, the list of methods is null, so we throw a NullPointerException. We thought about adding an IsEmpty property, but who would want to look up properties on the null pointer? Besides, hardly anyone will ever want to create an event that might not get connected to."

Programmer 2: "Uhhh, sure, that makes sense to me."


...!!!?!?!?!

Joshua Kwan: Awkward!

This post is going to be a little handwavey, but here goes. I really want to know what other Debian developers (and users, too, they’re in the same boat) think about this. So here’s the situation. You’re at a party — a college party, if you’d like to be precise, where all the things you saw in ‘Old School‘ happen — and by chance you are wearing a Debian t-shirt. There is consideration that doing this was a bad idea in the first place, but nevertheless, you’re there, and then the people you’re talking with start going on… First question from the peanut gallery: What’s Debian?
Second question, for those are looking closely at the words on the t-shirt (indicating that they have not quite had enough to drink yet): What’s Linux? For me, at least, it feels a little odd talking about heady stuff like Linux at parties like this. Not only is it awkward, it makes me feel like I’m getting a large ‘NERD’ stamp on my head no matter how I try to dilute it and explain it. It’s true — I am a geek. But I think it’s a bit of a faux-pas to flaunt it at a party where you’re more likely to see lots of “Mass Communications” and Political Science majors who, seriously, don’t give a damn. I’ve often tried to tell it off with “it’s a long story, not worth telling,” but all drunks love a good story. Just that this story isn’t particularly interesting! “So uh, to make a long story short, a lot of computer nerds got together and put together a lot of free software together, and it got called a ‘distribution’! Debian’s one of those distributions.” At this point, the hippies will have totally bought into it, because free is good, and free is love, etc. But they’re usually downstairs smoking pot and singing songs of liberation or whatever the hell it is that hippies do these days, so you’re still talking to the Mass Comm majors. So the question I’m really asking is: Is there a graceful way to explain Debian to people who don’t really care about it, but want a plausible answer? Should I just lie through my teeth and say it’s something they can identify with, like a band or a fraternity or something? That just sounds wrong, but if I try to sort of explain what it is, it’s hard to figure out how deep to go with it. This doesn’t just happen at parties, but it’s a notable example. Are there others in my situation? Am I the only DD in college in the USA who also has social interaction on a regular basis and inevitably stumbles on this dilemma? Help me out, guys…

17 March 2006

Erich Schubert: The Ion author has lost it...

This is probably one of the worst flames I've seen in a long time. The funny part is that he complains about "AA zealots", while he clearly is a "non-AA-zealot" just as bad as any "AA zealot" can possibly be. I know a few (definitely a minority) of people who dislike AA fonts. But as far as I can tell, it's really easy to disable them. And from all I the average user will like them better, so it makes for a sane default to enable them. So, yes, you zealot, I want my fonts blurry, because I find them easier to read. Sorry for having a different personal taste. Oh, and then there is an explanation why AA fonts can actually be easier to read then black-and-white fonts. Because they grey levels are more consistent (which btw, is one of the tings LaTeX does very well, keeping the grey level) than if you have to make each pixel either black or white. Let's say we want to make a line 2 pixels to the right and 1 pixel down. In fonts these things happen... Here are your options: (Sorry, I forgot one: the hole in the middle...) stairs example the right one is obviously using AA and is "blurred". The left one is "too dark in the middle" and the other two are deformed. Now let's blur them a bit, like the average non-eagle would see them: stairs blurred. The last one clearly is the best representation of the intended shape (a diagonal line of even thinkness). This is of course different if the intended shape was that it becomes slightly "fatter" here, or deformed. The only sane default for vector fonts is to assume that lines should well, not become deformed or thicker. I agree that a excellently made black-and-white pixel font might be done in a way that these deformations don't hurt. It doesn't apply to your favourite Helvetica font IMHO, because that font was designed for printing quality. Now go, and play configuring your "window manager", while I get some work done with openbox as my WM of choice. Because it just sits there in the background and allows me to have all my windows maximized on their own desktops except for my terminals which tile nicely without any zealot WM.

16 March 2006

Erich Schubert: SELinux tools coming

In the aftermath of the SELinux Symposium, tons of stuff has been released. (It's only a pity it wasn't released earlier. ;-)) For example MITRE has released polgen 1.3. The web page doesn't tell much yet (as usual documentation is what SELinux is missing most...), but the Slides from the symposium explain what it's about. I think polgen can probably do at least as much as AppArmors genprof (which I havn't seen a screenshot of in action yet). There are more SELinux power tools coming up, easier policy languages and so on. Do also visit the Symposium website and check out the other slides and presentations to see what's going on. The polgen tool might also (like much of the other ways to write a secure policy, instead of learning the policy 100% automatically) be a good way to check applications for intended behaviour. Such things can turn up lots of weird stuff, for example the sshd trying to write to /etc/krb5.conf on a system with kerberos uninstalled, but this config file present.

Adam Rosi-Kessel: In Defense of the Statute of Limitations

There’s a big push in Massachusetts to eliminate the 15 year statute of limitations on child sexual abuse (that runs from the child’s sixteenth birthday)—for example, this Boston Globe article and editorial. Eliminating a criminal statute of limitations is generally a popular cause—after all, the only people negatively impacted would be criminals, and they don’t form much of a lobbying constituency, right? These articles rarely provide the full reasoning behind statutes of limitations, however. If they address the issue at all, they cite the difficulty of getting a fair trial many years after the events at issue occurred, as in the Globe editorial. There is a more compelling reason, I think, to preserve the statute of limitations: scarce resources. As with my position on the death penalty, I believe this issue should ultimately be decided pragmatically based on real experience. Prosecutors are terribly overworked. When I represented some indigent criminal defendants, the prosecutors were uniformly younger than me and had no idea what their cases were about until about 30 seconds before they were called to argue (especially in bail hearings). It was all they could do to not drop their two-foot-high stack of files (each representing a criminal case) on their way in and out of the courtroom. Every case requires resources. Police resources to investigate; prosecutorial and judicial resources to try; and ultimately prison resources if the defendant is convicted. While I understand the need to address past injustices, it seems to me far more important to address current injustices. For every trial relating to sex abuse that may have occurred 25 years ago, there are certainly as many abusers commiting crimes today. If the sex abuser from 25 years ago is still dangerous, he has likely committed more recent crimes for which he could be convicted. With current funding levels, it is absolutely impossible to pursue every crime committed. Even if we quadrupled funding for the criminal justice system, we are still going to be unable to do a good job catching and convicted all the bad guys. There are at least 250 recent unsolved murders in Boston currently. Necessarily, a choice to pursue sex crimes from 20 years ago is a choice not to pursue something else. All policy decisions involve trade-offs. Just about everyone is in favor of reducing or eliminating crime and child sex crimes in particular. We can agree on that, but it doesn’t answer the key question of how you do it. Despite the injustice in letting people get away with crimes committed many years ago, it’s a worse injustice to have inadequate resources to deal with crimes committed today.

15 March 2006

David Pashley: Comment Form Attack

<p>Came back from a nice walk on the seafront, including a 30 minute professional firework display from a boat 20 meters offshore and about 50 people watching, to find that someone had attempted to attack my blog comment to send spam. Fortunately according to my mail logs, nothing went out, but it did make me go through and read the comment plugin code. I did wonder if every suitable field had been cleaned and have now made sure that it is. Looks like it came from several IP addresses over a 5 minute period and got past my (admittedly very) simple turing test, so I don't think it was an automated script. For an example of the attacks, check out this <a href="http://www.davidpashley.com/cgi/pyblosxom.cgi/general/fists-of-fury.html">old posting</a>.</p>

Next.

Previous.