Search Results: "beh"

1 November 2006

Andrew Pollock: [life] Who called me?

Tonight whilst Googling for random numbers that call us up and don't make it through the Asterisk menus, I discovered Who Called Us, a user-driven site to identify the people behind the numbers, for callers that provide a number but no name. Very cool. One such number seems to be drawing a reasonable amount of ire. Generally speaking, we're not bothered by telemarketers, because of the menu Asterisk presents to all callers. It's just interesting to see the cases that continually call back.

30 October 2006

Anthony Towns: Google Ate My Brane

After visiting Google for the Summer of Code Summit the other week, I thought I might actually try out some of the web services they’ve come up with, rather than just sticking with search and maps, and see if they did anything for me. To my surprise – as a certified hater of webapps generally – a couple did. Writely, the web-based word processor, was kind-of interesting, but in the end didn’t work for me. The potential killer feature for me would’ve been SubEthaEdit or Gobby -like interactive collaboration, which seems like something Google ought to be able to do with their whacky AJAX techniques. Unfortunately, it seems to just be some sort of automated merge-on-commit, which does nothing for me. What I’d really like as far as online document editing goes, is actually to be able to do Gobby-like editing of (moinmoin) wikis, rather than having to deal with advisory locking. I poked a bit further at that, and I suspect it ought to be possible to hack something up by using a tool like editmoin to edit wikipages with an editor rather than a webbrowser, and using gobby to do the editing, via a sobby server hosted on the same site as the wiki. It ought to be possible to automate all that complexity using an application/gobbymoin mime type; but I didn’t get anywhere because sobby seems to require IPv6 support. Oh well, maybe some other time. I’ve played with GMail and Google Talk before, with minimal impact. GMail is kind-of nice, but I like to be able to read my mail offline, so whatever. It is useful as a backup email address if my regular one goes down though. Google Talk doesn’t seem to handle voice/video under Linux, so it’s just a Jabber server. Which is fine, since I hadn’t ever actually gotten any of these whizbang IM things setup. What’s less brilliant is that Gaim is a bit of a pain when it loses connectivity, which happens everytime I suspend my laptop, which is everytime I stop using it. But I need GMail in order to even try some of the interesting Google services these days, so whatever. Google Calendar isn’t really something I expected much of. Sure, it’s a calendar app, but I’ve never gotten much use out of appointment diaries or planners or whatever anyway. Having it be web-based actually changes that a bit though, since it makes it trivial to publish to other people, and that even makes a calendar a little bit useful for me too. Having it be able to send reminder SMSes is also neat, at least now I’ve worked out how to default that behaviour to off… Oddly, though, I’ve found I’m getting more value out of it in listing things I’ve done rather than things I’ve got coming up. I guess it’s nicer to have a list of things you’ve actually done, rather than a list of things you should have done (but often didn’t), or a list of things you’ve got to do… But the real winner is definitely Google Reader even if it’s still in Google Labs, rather than even being “beta”. While I’ve tried some aggregators in the past, none have remotely grabbed me, and I’ve been tending to just remember the URLs for the blogs and webcomics I like, and type them in when I’m feeling bored. That has the benefit that it limits the number of each I read, but the drawback that I waste time typing URLs and waiting for pages to load even when there haven’t been any updates. The keyboard interface to Reader is pretty pleasant, with the only drawback I’ve found a slight lag in loading entries at the start of the day. Having it be in my web browser is perfect, since I generally want to follow a few links from blog posts anyway. It’s also made it easy enough that I’ve added a few feeds from real newspapers (or news channels), which is probably a good thing as far as balancing my take on what’s going on in the world. There’s a couple of downsides. One is that a lot of webcomics don’t have RSS feeds, or, if they do, don’t seem to include the actual comic, just a link to it. I don’t think there’s much of a reason for that – there are a few blogs I read that include ads in their RSS, so that doesn’t seem difficult to handle, and I can’t see any other potential objections. Also annoying is that posts that get aggregated on multiple planets (such as Planet Debian and Planet Linux Australia) show up multiple times, though admittedly I pretty much expected that. Probably the major downside is that it’s so easy to read stuff that I keep adding feeds to it, though…

Jurij Smakov: Papers, please ?

Today I have witnessed an incident which involved a person getting kicked from #debian-devel, when he refused to disclose his real name (I did not notice any other disruptive behavior on his part). When I objected to that, I was quite surprised to find that quite a lot of people found this an acceptable administrative measure (the channel rules wiki page was promptly created to reflect that). While I find it totally acceptable, that a person must reveal his/her real name when becoming a Debian Developer, I think that having such a requirement in place for an unrestricted public Debian channel is completely inappropriate. In my opinion, the right to remain anonymous is fundamental, and I don’t care about the person’s real name, as long as he/she has something useful to contribute. I also believe that protection of this right is a part of the core Debian philosophy, as we refuse to recognize software as free, if it impedes on the person’s right to remain anonymous (”Dissident test” in the DFSG FAQ). Therefore, the support of fellow DDs (some of them actively involved in NM process) for such measures looks like nothing but pure hypocrisy to me. I have added a note stating my disagreement on this issue to the wiki page.

Axel Beckert: BarCamp Zurich -- Resume

The BarCamp Zurich 2006 is over. On the way there I thought about what I would do during time slots with no interesting talks. But when I tried to make up my personal schedule, I noticed that I rather would have the opposite problem: Too many interesting talks at the same time… Well, to many interesting talks at all, although I only went to tech talks and left out the biz talks. I first went to the Podcasting & Co. talk by Timo Hetzel, since I never heard or made a podcast, but was curious about podcasts in general. Besides statistics and rankings he spoke about where people listen to podcast (most listeners seem to do that during commuting), what people like in podcasts, why companies podcast, etc. And that a very big share of all podcast listeners use iTunes as podcast client and except juice (never heard of it before) all other podcast clients seem to be irrelevant. My conclusion: I haven’t missed anything not having listened to or made podcasts neither do I need to listen or make podcasts in the future. They’re irrelevant. To me. :-) Then I had to choose between the talks AJAX@localhost (PDF) by Harry Fuecks and Realtime Collaborative Text Editing and SubEthaEdit by the Coding Monkeys. I heard about realtime collaborative editing once know that it’s a challenging task for the developer. I also know what AJAX is (and that I would only use or recommend it for bells and whistles, but not for content in general), but “AJAX@localhost” sounded like writing normal applications using AJAX. It sounded interesting and evil at the same time. I had to go there! ;-) Others had similar expectations after reading the talk’s title, so I was quite surprised that it was about something completely different, namely about debugging AJAX on the localhost but under conditions usually only appearing if you’re running AJAX application not from localhost but from somewhere on the net: You may have different lags with every request, so some requests may reach the server before others, which may screw up the whole AJAX application, if the developers didn’t think about it and only tested it on localhost. (Hence the talk’s title…) My conlusion: I will use and recommend AJAX even more seldom, since there seem to be even more design misconceptions than I thought before. But I’ll once have a look at the Webtuesday meeting, he mentioned. For the third time-slot, I didn’t need long to decide where to go: I already knew a little bit about Microformats and I wanted to know more. Tag Trade also sounded interesting, but the second part of the talk’s title, Paid Learning sounded like business and so I had no scruples to cold-shoulder that talk. I probably didn’t learn anything really new in the microformats talk, but my knowledge about microformats is now more concrete, and after talking with Cédric Hüsler later during a break, I would even trust myself to start and define a new microformat. Then I went to the HG Caféteria together with Gürkan and two German guys. While waiting in the queue, we were talking about our jobs and our favourite Linux distributions. I got some rhubarb pie and a rum truffles, assuming that the Caféteria uses no alcohol in their products like all other SV restaurant I know. But this one seemed to have quite a lot of alcohol, since it felt like my breath was burning… Well, this resulted in my second SV feedback form submission… Next I went to Alex Schröder’s talk about multilingual websites, Oddmuse and the Emacs Wiki, although also the talk A-Life about simulating evolution sounded promising. Alex asked the listeners about their experiences with multilingual websites and showed what Oddmuse offers as partial solution to the general multilingualism problems. But regarding the comments from the auditorium, there probably won’t be a perfect solution until computers can translate perfectly… The next talk I visited was Gabor’s talk about his master thesis Organizing E-Mail which resulted in a soon to be released Mozilla Thunderbird extension called BuzzTrack. From the other concepts he showed, I found Microsoft’s SNARF (Social Network and Relationship Finder) and IBM’s Thread Arcs most interesting as well as the fact that there is no e-mail client seems to have a majority at all. Directly after Gabor I had my own talk about Understanding Shell Quoting, so I also couldn’t go to Adrian Heydecker’s talk about Learning with Hypertext and Search Engines. I had only about three and a half listeners of whom several to my surprise where here because they didn’t know what “shell quoting” is. I really didn’t expect that. But that seems to be one of the differences between a BarCamp and a Linux Conferences: People come here to see something new, something they haven’t heard about before. On Linux events most people come, because they already heard about some special topic and want to know more or learn something about it. On Linux event my shell talks usually were attracting many visitors while at a BarCamp, talks presenting an idea, a concept or a tool seem to much more interesting for the attendees. So for the next BarCamp I perhaps exhume my Website Meta Language talk which never seemed to hit the nerve of Linux event attendees, since it tried to “sell” a different concept of generating website than most were used to. At least one listener excepted the talk to be named “shell escaping”, but IMHO escaping is only one quoting technic and it’s not only used for quoting. But perhaps I should take the word “escaping” in the title though for the next time. Happily most of the listeners seem to have learned something new from the talk and Silvan Gebhardt was really happy about his new knowledge about ssh ~ escapes, although I mainly talked about how to quote them than how to use them. :-) During the last slot I visited the session about the upcoming BarCamp Alsace 2 and the yet to be planned BarCamp Rhine, a BarCamp to be held on a ship traveling from Basel in Switzerland down the Rhine, stopping in Strasbourg, Karlsruhe, Rhein-Main-Area and perhaps even Cologne and Amsterdam. Contrary to my initial thoughts, the day was over very fast and I had no single boring minute during the BarCamp. Wow! After we’ve been kicked out of the building by ETH janitors, we joined again at the Bar N-68. On the way there I met Urban M ller who attended BarCamp Zurich, too. We talked quite a lot and it was very interesting to see behind the scenes of e.g. map.search.ch. Later I joined the French speaking table, talking with Gregoire Japiot from WineCamp France and Alex Schröder. Around 9pm I left the N-68 as one of the last BarCampers, tired but with new knowledge, new ideas, new acquaintances and a new hobby: BarCamping. What a luck that BarCamps aren’t that often, otherwise I couldn’t afford this new hobby. ;-) As a relaxing end I met with Alex Schröder and Christophe Ducamp on Sunday morning for brunch in the restaurant Gloria in the Industriequartier. When we were leaving the Gloria I noticed their book board with a lots of BookCrossing books and I took “The Da Vinci Code” with me, since I saw the movie and people were telling me that the book is much better. I’ll see…

29 October 2006

Giacomo Catenazzi: shell: parallel execution with timeouts

From time in time I was looking how to run a command with a timeout (in a shell script). I never put big efford to find the solution, because I always found a easyer (and probably better) workaround. But few days ago, in a discussion in the austing group (POSIX standardization), I found the solution, in an elegant manner, and it permit also to run commands in parallel.

The solution (it works on bash, dash, and it seems posix compatible, but you should test, because the discussion was about the different behaviours of $! in bash and kornshell):
 # run command1 in background, and the sleeping killer
command1 &
pid=$!
( sleep 60; kill $pid ) &
# other stuffs
command2
# wait command1
wait $pid

Note: kill (the shell buildin) prints some error messages, which you should filter
Note: Security: the methods is not very clean and secure. If an user can force system to recycle the PID, the scripts could do unintended things.

I this trick can be used to parallel the init script (parallelize within the script, not "run scripts in parallel", as the current trend).
So another short tip: Debian sleep support "floating sleep", so use sleep .1 istead of sleep 1, to speed up the init scripts (module loading, waiting for devices, net,...). Unfortunately most of the debian scripts use integer sleeps.

27 October 2006

Sven Mueller: Teardown in Debian?

In Scotts Blog : Teardown,Scott had a small post about what Teardown in Ubuntu does (or did?). I like the idea that’s behind this “project”. Basically, it tries to avoid calling init scripts with “stop” when actually shutting down the system. This is feasable wherever the init script does nothing but sending the TERM signal to the associated daemon anyway. Or to put it the other way around: The only init scripts which should get called in rc[06].d (i.e. on halt or reboot) are those that do more than just TERMinating the daemon.
This is an interesting “new” approach which I personally would like to see implemented in Debian, too. The way this is supposed to get implemented in Ubuntu looks quite sane to me, too.

Benjamin Mako Hill: I MIT Libraries

There are many things at MIT that I find I want to distance myself from (e.g., much of the military related research). Recently though, the MIT Libraries have been giving me a number of reasons to be proud to be an MIT graduate student. MIT has taken the brave step of the being one of the first major research universities to throw a stone at the publishers in the whole Open Access, scholarly publishing debate. The libraries have put up a bunch of information on open access issues and have created a copyright amendment form for all scholarly publication that will allow the institute and its authors to retain copyright over their work for publication in the institute archives, on the author's website, or even in an open access repository like PubMed Central. More importantly, MIT Libraries are offering to do all of the negotiation with the publishers on behalf of the authors. When it is MIT as a whole, and not just the one graduate student, post-doc, or professor on their own, it puts the authors in a much stronger to retain the openness of their work. It's not victory, but it's an important and essential step toward open access for scholarly publishing. But that's not it! The libraries have also recently stood up to Hoover's Online's attempt to hold the libraries responsible for, "activity Hoovers deemed or even suspected was fraudulent." When Hoover's gave the libraries the choice of saying yes to a set of unreasonable terms or walking away from an important research tool, MIT Libraries made the difficult but correct choice and walked away. Making a choice like that will surely get the libraries a lot of flak from MIT scholars who use Hoover's. But MIT made the right decision by standing up for their principles. The effect of large, powerful institution like MIT is usually to maintain the status quo. There's clearly a lot of external pressure from funders, politicians, etc. and internal pressure from academics and students who are doing well by the current system. MIT Libraries are using their power to make the whole system better and I haven't ever been as proud to be an MIT student.

Lucas Nussbaum: Debian, Ubuntu, Mozilla Firefox , wearing hats, and Epiphany

With my Ubuntu hat, I strongly regret that no Ubuntu developer (to my knowledge) stepped forward to point out the inaccuracies in Chris Beard’s (Mozilla Vice President of Products) Q&A on Mozilla Firefox in Ubuntu. Letting people bash Debian when Ubuntu gets so much stuff from Debian isn’t nice at all. With my Debian hat, I really like how Mike Hommey chose to discuss facts, with references, in his reply to Chris Beard’s post. When it is possible, going back to the facts is really the best thing to do to avoid the usual FUD. It’s not really a surprise that this intelligent behaviour came from the Debian side. I have been a very happy user of Epiphany since I made the switch from Firefox 3 months ago. I would recommend it to anyone still using Firefox who is tired of its slow startup times, and its lack of integration in the Gnome desktop.

Scott James Remnant: Upstart in Universe

upstart is a replacement for the init daemon, the process spawned by the kernel that is responsible for starting, supervising and stopping all other processes on the system. The existing daemon is based on the one found in UNIX System V, and is thus known as sysvinit. It separates jobs into different “run levels” and can either run a job when particular run levels are entered (e.g. /etc/init.d/rc 2) or continually during a particular run level (e.g. /sbin/getty). The /etc/init.d/rc script is also based on the System V one (and is in the sysv-rc package), it simply executes the stop then start scripts found in /etc/rcN.d (where N is the run level) in numerical order. Why change it? Running a fixed set of scripts, one after the other, in a particular order has served us reasonably well until now. However as Linux has got better and better at dealing with modern computing (arguably Linux’s removable device support is better than Windows’ now) this approach has begun to have problems. The old approach works as long as you can guarantee when in the boot sequence things are available, so you can place your init script after that point and know that it will work. Typical ordering requirements are: This worked ten years ago, why doesn’t it work now? The simple answer is that our computer has become far more flexible: We’ve been able to hack the existing system to make much of this possible, however the result is chock-full of race conditions and bugs. It was time to design a new system that can cope with all of these things without any problems. What we needed was an init system that could dynamically order the start up sequence based on the configuration and hardware found as it went along. Design of upstart upstart is an event-based init daemon; events generated by the system cause jobs to be started and running jobs to be stopped. Events can include things such as: In fact, any process on the system may send events to the init daemon over its control socket (subject to security restrictions, of course) so there is no limit. Each job has a life-cycle which is shown in the graph below: The two states shown in red (“waiting” and “running”) are rest states, normally we expect the job to remain in these states until an event comes in, at which point we need to take actual to get the job into the next state. The other states are temporary states; these allow a job to run shell script to prepare for the job itself to be run (“starting”) and clean up afterwards (“stopping”). For services that should be respawned if they terminate before an event that stops them is received, they may run shell script before the process is started again (“respawning”). Jobs leave a state because the process associated with them terminates (or gets killed) and move to the next appropriate state, following the green arrow if the job is to be started or the red arrow if it is to be stopped. When a script returns a non-zero exit status, or is killed, the job will always be stoped. When the main process terminates and the job should not be respawned, the job will also always be stopped. As already covered, events generated by the init daemon or received from other processes cause jobs to be started or stopped; also manual requests to start or stop a job may be received. The communication between the init daemon and other processes is bi-directional, so the status of jobs may be queries and even changes of state to all jobs be received. How does it differ from launchd? launchd is the replacement init system used in MacOS X developed as an “Open Source” project by Apple. For much of its life so far, the licence has actually been entirely non-free and thus it has only become recently interesting with the licence change. Much of the goal of both systems appears initially to be the same; they both start jobs based on system events, however the launchd system severly limits the events to only the following: Therefore it does not actually allow us to directly solve the problems we currently have; we couldn’t mount filesystems once the “filesystem checked” event has been recived, we couldn’t check filesystems when the block device is added and we certainly couldn’t start daemons once the complete filesystem (as described by /etc/fstab) is available and writable. The launchd model expects the job to “sit and wait” if it is unable to start, rather than provide a mechanism for the job to only be started when it doesn’t need to wait. Jobs that need /usr to be mounted would need to spin in a loop waiting for /usr to be available before continuing (or use a file in a tmpfs to indicate it’s available, and use that modification as the event). This is not especially surprising given that Apple have a high degree of control over both their hardware and the actual underlying operating system; they don’t need to deal with the wide array of different configurations that we have in the Linux world. Had the licence been sufficiently free at the point we began development of our own system, we would probably have extended launchd rather than implement our own. At the point Apple changed the licence, our own system was already more suitable for our purposes. How does it differ from initng? Initng by Jimmy Wennlund is another replacement init daemon intended to replace the sysvinit system used by Linux. It is a dependency-based system, where upstart is an event-based system. The notion of a dependency-based system is interesting to talk about at this point. Jobs declare dependencies on other jobs that need to happen before the job itself can be started. Starting the job causes its dependencies to be started first, and their dependencies, and so on. When jobs are stopped, if running jobs have no dependencies, they themselves can be stopped. It’s a neat solution to the problem of ordering a fixed boot sequence and the problem of keeping the number of running processes to a minimum needed. However this means that you need to have goals in mind when you boot the system, you need to have decided that you want gdm to be started in order for it, and its dependencies, to be started. Initng uses run levels to ensure this happens, where a run level is a list of goal jobs that should be running in that run level. It’s also not clear how the dependencies interact with the different types of job, a dependency on Apache would need the daemon to be running where a dependency on “checkroot” would need the script to have finished running. Upstart handles this by using different events (“apache running” vs. “checkroot stopping”). Again while interesting, Initng does not solve the problems that we wanted to solve. It can reorder a fixed set of jobs, but cannot dynamically determine the set of jobs needed for that particular boot. A typical example would be that if the only dependency on the job that configures networking is the mount network filesystems job, then should that job fail or notbe a goal (e.g. because there are no network filesystems to be mounted) the result is that network devices themselves will not be configured. You could make everything a goal, and just use the dependencies to determine the order, however this is less efficient than just ordering the existing sysv-rc scripts (which can be done at install time). Another example is that often you simply don’t know whether something is a dependency or not without reading other configuration, for example the mount network filesystems may be a dependency of everything under /usr or may just be a dependency of anything allowing the user to login if it just mounts /home. The difference in model can be summed up as “initng starts with a list of goals and works out how to get there, upstart starts with nothing and finds out where it gets to.” How does it differ from Solaris SMF? SMF is another approach to replacing init developed by Sun for the Solaris operating system. Like initng it’s a dependency-based system, so see above for the differences between those systems and upstart. SMF’s main focus is serive management; making sure that once services are running, they stay running, and allowing the system administrator to query and modify the states of jobs on the system. Upstart provides the same set of functionality in this regard, services are respawned when they fail and system administrators can at any time query the state of running services and adjust the state to their liking. Will it replace cron, inetd, etc? The goal of upstart is to replace those daemons, so that there is only one place (/etc/event.d) where system administrators need to configure when and how jobs should be run. In fact, the goal is that upstart should also replace the “run event scripts” functionality of any daemon on the system. Daemons such as acpid, apmd and Network Manager would send events to init instead of running scripts themselves with their own perculiar configuration and semantics. A system administrator who only wanted a particular daemon to be run while the computer was on AC power would simply need to edit /etc/event.d/daemon and change “on startup” to “on ac power”. What about compatibility? There’s a lot of systems administrators out there who have learned how Linux works already and will not want to learn again immediately, there’s also a large number of books that cover the existing software and won’t cover upstart for at least a couple of years. For this reason, compatibility is very important. upstart will continue to run the existing scripts for the forseeable future so that packages will not need to be updated until the author wants. Compatibility command-line tools that behave like their existing equivalents will also be implemented, a system administrator would never need to know that crontab -e is actually changing upstart jobs. Does it use D-BUS?
“To D-BUS people, every problem seems like a D-BUS problem.” —Erik Troan
The UNIX philosophy is that something should do just one job, and do it very well. upstart’s one job is starting, supervising and stopping other jobs; D-BUS’s one job is passing messages between other jobs. D-BUS does provide a mechanism for services to be activated when the first message is sent to them, thereby starting other jobs. Some people have taken this idea and extended it to suggest that all a replacement init system need do is register jobs with D-BUS and turn booting into a simple matter of message parsing. This seems wrong to me, D-BUS would need to be extended to supervise these services, provide means for them to be restarted and stopped; as well as deal with being process #1 which means cleaning up after children whose parent’s have died, etc. It seems far simpler to arrange for D-BUS to send an event to init when it needs a service to be started, and focus on being a very good message passing system. The IPC mechanism used by upstart is not currently D-BUS because of various problems, however it’s always been expected that even if init itself doesn’t communicate with D-BUS directly, there would be a D-BUS proxy that would ensure messages about all init jobs and events would be given to D-BUS and D-BUS clients could send messages to init to query and change the state of jobs. What is the implementation plan? Because this is process #1 we are changing, we want to make sure that we get it right. Therefore instead of releasing a fully-featured daemon and configuration to the world, we’re developing it in the following stages:
  1. Principal development; at the end of this stage the daemon has been implemented and can manage jobs as described.
  2. Replacement of /sbin/init while running the existing sysv-rc scripts. This is the shake-down test of the daemon, can it perform the same job as the existing sysvinit daemon without any regressions?
  3. /etc/rcS.d scripts replaced by upstart jobs. These consitute the majority of tasks for booting the system into at least single-user mode, and contain many of the current ordering problems and race conditions. If the daemon solves the problems here, it will be a success.
  4. Other daemon’s scripts replaced by upstart jobs on a package-by-package basis; this will be an ongoing effort during which upstart will continue running the existing sysv-rc scripts as well as its own jobs. During this time the event system may be tweaked to ensure it truly solves the problems we need.
  5. Replcement of cron, atd, anacron and inetd. This will happen alongside the above and result in a single place to configure system jobs.
  6. Modification of other daemons and processes to send events to init instead of trying to run things themselves.
The current plan is that we will be at least part of the way into stage #3 by the time edgy is released, with that release shipping with upstart as the init daemon and the most critical rcS scripts being run by it to correct the major problems For edgy+1 we hope to have completed stage #5 and be at least part of the way into the implementation of stage #6. From the start of development of edgy+2, no new packages will be accepted unless they provide upstart jobs instead of init scripts and init scripts will be considered deprecated. What state is it in now? The init daemon has been written and is able to manage jobs as described above, receiving events on the control socket to start and stop them. This has now been uploaded to the Ubuntu universe component in the upstart package for testing before it becomes the init daemon. We welcome any experienced users who want to help test this; install the package and follow the instructions in /usr/share/doc/upstart/README.Debian to add a boot option that will use upstart instead of init. If your system boots and shut downs normally (other than a slightly more verbose boot without usplash running) then it is working correctly. Other types of events will be added as required during development and testing. Currently only a basic client tool (initctl) has been written, compatibility tools such as shutdown will be written over the next week or two before it replaces our sysvinit package.

25 October 2006

Enrico Zini: housing-agent-in-the-uk

Housing agent in the UK Yesterday afternoon: Me: "Where is the gas central heating?" Agent: "Over there, behind the chimney" Me: "I see. Beyond that wall is another apartment: where do the fumes go?" Agent: "Up the chimney" Me: "Good. And where does it get oxygen from?" Agent: "It does not need any oxygen, it only needs gas" Me: "The gas central heater does not have any oxygen or air??" Agent: "No, it only needs gas" Me: "I think the laws of physics would have problems with that" Agent: "You'd have to ask that to British Gas"

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.

24 October 2006

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.

John Goerzen: Managing Software

Recently I mentioned that I hate releasing software. It's true, and I've decided that the first part of fixing it is to tackle the presentation of software to the world.

My current scheme of darcs.complete.org for repositories plus bare directories on my gopher (yes, that gopher) site leaves a lot to be desired. There is no bug tracker, there are few screenshots, there is no consistency. It is also not easy to empower others to work on them directly.

At the same time, I am the sole or primary contributor to most of them. These are not huge kernel-sized projects. These are smaller, bite-size projects. So I don't want or need a lot of overhead. I've been thinking about my options.



Is anyone else thinking about this? What are your thoughts?

21 October 2006

Ben Hutchings: Finally I'm going to shut up about these DVDs

As posted to debian-devel-announce and debconf-announce (and partially written by Holger): On behalf of the DebConf6 video team I'm proud to announce the DebConf6 DVDs! They include all formal sessions from Debian Day and DebConf, plus the group photos, the video team BoF, and some documentary videos made by Gabriella Coleman. They are divided into (there is a small overlap between these). The DVD images are now available for download along with the source videos, as are the software and menu design used for them. You can also order DVDs to be shipped to you in a nice box. Many thanks to the sponsors, organisers and other people who made DebConf6 a fun and productive event to be remembered. See you at DebConf7 in Edinbourgh - or maybe DebConf8 in your town! Finally, I apologise for the delay in producing these discs. We ran into a number of technical problems along the way but it's primarily a result of discouragement and procrastination on my part. However I believe that the VideoLink software is now sufficiently reliable and that next year's DVDs need not be so dependent on me.

Hanna Wallach: stereotypes, causes, and math performance

Article in Science (abstract, full text) on how women’s math performance is affected by whether they are considering genetic or experiential accounts for the stereotype of women’s underachievement in math. Stereotype threat is when exposure to a self-relevant stereotype (e.g., regarding something like gender or race) causes someone to behave in such a way that perpetuates the stereotype. The authors of this article wanted to determine whether the causes given for women’s underachievement in math (namely, genetics or experience) affected women’s math performance, i.e., whether stereotype threat was affected by the causes given for that stereotype. (Note that the study was NOT intended to address the question of whether there are innate sex differences in math performance.) To test this, women were given a math test, then an essay to read, and then another math test. The essay either claimed that math-related sex-differences are genetic, experiential, or don’t exist. The women who were given essays stating that math-related sex-differences don’t exist or are due to experience significantly outperformed women who were given essays that claimed genetic causes. Interesting, huh? (Thanks to Julia for pointing out the article.)

20 October 2006

Axel Beckert: The mouseless side of X

Although I like the idea of a tiling and completely keyboard focused window manager, I never fell in love with Ion because the default keybindings weren’t really intuïtive (to me). A few months ago I noticed, that ratpoison is also a tiling and completely keyboard focused window manager, only with much more intuitive usage: If you know screen and it’s keybindings, you also know ratpoison and it’s keybindings: Just exchange Ctrl-A with Ctrl-T. This sounds perfect for usage on my low performance laptops, where I have small screens and usually also no virtual desktops in use. There’s only one thing which annoys me in ratpoison: If I use a mostly mouse driven application like e.g. a webbrowser with ratpoison, I have no problems to click on links, even if the webbrowser is not in the so called “current frame”. But if e.g. click into an input field, I usually notice much too late that while the mouse works fine in the browser, keyboard focus is still in some other window. Currently they all use flwm, the Fast and Lite Window Manager. So what I would need is a tiling and keyboard focused window manager but with “focus follows mouse” politics. And since the laptops on which I intend to use such a window manager, all have a touchpad or thumbstick, the mouse there counts as keyboard focused, too somehow, doesn’t it? :-) I wonder, if an ion3 could be configured to use the same keybindings as ratpoison. That would probably fulfil this desire. On the other hand, there are browsers which are fine without mouse. lynx or links2 for example, so the focus problem I have with ratpoison wouldn’t occur. But what if I need or want a keyboard driven and full blown webbrowser? Ok, Firefox as well as Opera are not that bad in keyboard only use, but they still are focused on the mouse using user. But Gecko wouldn’t be Gecko, if there wasn’t some Gecko based browser with this features: On the ratpoison website I found a link to a very interesting Firefox plugin which makes Firefox a complete new browser, a keyboard driven webbrowser named Conkeror. It has no toolbars at all, no (visible) tabs, no menus, no nothing — it shows only the website in fullscreen, a status line and a multipurpose command line — exactly like the mini-buffer of GNU Emacs. But not only the layout, even the keybindings are very emacsish: C-x C-f opens an URL in a new buffer -eh- tab, C-x 5 C-f opens an URL in a new frame (window), C-x C-v opens a new URL in the current tab (buffer) with the current URL as editable default value, C-x b switches to another tab, C-x k kills -eh- closes a tab, C-x C-b lists all open tabs, l goes back (remember the Emacs info reader, eh?), C-g quits accidently requested dialogs or stops loading a web page, Ctrl-s and Ctrl-r give you forward and backward i-search, C-n, C-p, C-f and C-b scroll, etc. Even M-x works, e.g. will M-x revert-buffer reload the web page. (Unfortunately Esc-x doesn’t work. Yet.) And for vi freaks, there is even M-x use-vi-keys. There’s even one lynxish keybinding: \ lets you view the source. And although it’s one of the strangest webbrowsers I saw yet, I somehow like it and also would like to see it in Debian as package, since it is the perfect companion for ion or ratpoison. Looking through apt’s package cache as well as the wnpp bugs, I haven’t found any hint on somebody already packaging it, so I’ll have a look on it and on how to to package a Firefox extension for Debian. BTW: While looking through the wnpp bugs, I found bug #335459, which is the ITP flock, an also Gecko based browser with a lot of cool features for blogger who like social network tools. Another nice thing I found today in Debian was the xfonts-artwiz package whose small fonts are very suitable for small resolution screens, especially if a tiling window manager is used with a e.g. 800×600 resolution. Unfortunately they aren’t available in a charset with German umlauts. Apropos tiling window managers: Anyone tried pconsole with an automatically tiling and resizing window manager? I wonder if it’s usable. At least on MacOS X with its cascading window positioning algorithm, pconsole is a pain. — But even without cascading windows, MacOS X is a pain for keyboard users. Just think of its default behaviour when using the tab key inside a form mask: It will skip all buttons, all checkboxes, all radio buttons and all select boxes. Argh!

19 October 2006

Wouter Verhelst: Wireless networking

Warning: useless rant follows Since about two years, my main machine is an Apple Powerbook G4. These come with builtin wireless ("Airport Express"), but for a long time there were no Linux drivers for these things. Instead, I had bought myself a USB wireless thingy; one based on a ZD1211 chipset, for which there is a free driver contributed by the company that designed the chipset. The driver needs non-free firmware, but I don't give a flying **** about that. The unfortunate thing about the driver is that it was written in a style that makes it hard to be accepted by the kernel developers, so that didn't happen. And won't for a while. As a result, the driver sometimes breaks upon kernel upgrade, which is a shame. But when it does work (which unfortunately is not 'now'), it works great; the throughput is about as much as I could expect from my 11M wireless access point. The alternative now is to use the Airport Express driver. Unfortunately, this driver only exists because some binary-only driver that existed for Linux somewhere was reverse-engineered. As a result, the driver isn't very good; it sometimes crashes on me (in which case the only thing I can do is power down my laptop and boot it up again), and when it does work only has a throughput of about 60kB, at best. Which is not very good (a 10Mbit network can easily reach about 10 times that speed; and yes, I did verify that I'm running at 11Mb/s, not at 1). I'm very grateful to Zydas for providing a GPL-ed driver for their hardware. If only companies such as nVidia, ATI, and broadcom would give up their crack pipe and behave similarly, then this world would be a much better place. But I'm not grateful to Zydas for just providing a dump of their CVS repository and leaving it at that; getting a driver into the Linux kernel is not that hard, it just takes some persistence. Had they done that, I would've had working wireless now. Real working. grmbl. Update: Seems the situation is better than I thought. It had been a long time since I last tried the bcm43xx driver. Last time I tried it it was a piece of crap; when I tried it a few days ago, it was also a piece of crap. Apparently, though, that was just bad luck, since the driver in 2.6.18 is buggy (but it should be fixed in 2.6.18.1). And for the Zydas driver, apparently it made it into the kernel mainline while I wasn't looking. Only it doesn't work for me, probably because the hardware is breaking down (if I hold it in a peculiar way, it gets detected as a broken USB1 device rather than a working USB2 device, which is not good...). That, or my access point is playing tricks on me. That wouldn't be the first time, either. I guess an apology is warranted here. Sorry.

Wouter Verhelst: nVidia

I know, I just ranted about it. However, it would seem that the Xorg driver can do more with the video card in my laptop than would appear at first sight. If I plug a VGA monitor to the mini-DVI output of my PowerBook and start X, then the nv(4) driver seems to detect it. Behold the diff:
--- Xorg.0.log.not-connected	2006-10-19 14:49:07.000000000 +0200
+++ Xorg.0.log.connected	2006-10-19 14:49:51.000000000 +0200
@@ -11,7 +11,7 @@
 Markers: (--) probed, (**) from config file, (==) default setting,
 	(++) from command line, (!!) notice, (II) informational,
 	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
-(==) Log file: "/var/log/Xorg.0.log", Time: Thu Oct 19 14:42:00 2006
+(==) Log file: "/var/log/Xorg.0.log", Time: Thu Oct 19 14:42:46 2006
 (++) Using config file: "xorg.conf"
 (==) ServerLayout "Default Layout"
 (**)  -->Screen "Default Screen" (0)
@@ -444,7 +444,7 @@
 (II) NV(0): Probing for analog device on output A...
 (--) NV(0):   ...can't find one
 (II) NV(0): Probing for analog device on output B...
-(--) NV(0):   ...can't find one
+(--) NV(0):   ...found one
 (II) NV(0): Probing for EDID on I2C bus A...
 (II) NV(0): I2C device "DDC:ddc2" registered at address 0xA0.
 (II) NV(0): I2C device "DDC:ddc2" removed.
@@ -452,7 +452,46 @@
 (II) NV(0): Probing for EDID on I2C bus B...
 (II) NV(0): I2C device "DDC:ddc2" registered at address 0xA0.
 (II) NV(0): I2C device "DDC:ddc2" removed.
-(II) NV(0):   ... none found
+(--) NV(0): DDC detected a CRT:
+(II) NV(0): Manufacturer: MAX  Model: 178e  Serial#: 2006
+(II) NV(0): Year: 2000  Week: 13
+(II) NV(0): EDID Version: 1.0
+(II) NV(0): Analog Display Input,  Input Voltage Level: 0.714/0.286 V
+(II) NV(0): Sync:  Separate
+(II) NV(0): Max H-Image Size [cm]: horiz.: 36  vert.: 27
+(II) NV(0): Gamma: 2.76
+(II) NV(0): DPMS capabilities: StandBy Suspend Off; RGB/Color Display
+(II) NV(0): redX: 0.632 redY: 0.329   greenX: 0.272 greenY: 0.604
+(II) NV(0): blueX: 0.142 blueY: 0.062   whiteX: 0.280 whiteY: 0.311
+(II) NV(0): Supported VESA Video Modes:
+(II) NV(0): 640x480@60Hz
+(II) NV(0): 640x480@75Hz
+(II) NV(0): 800x600@75Hz
[...more data about the monitor goes here...]
The nv(4) manpage also contains this bit:
       Option "CrtcNumber" "integer"
              Many graphics cards with NVIDIA chips have  two  video  outputs.
              The  driver attempts to autodetect which one the monitor is con 
              nected to.  In the case that autodetection picks the wrong  one,
              this  option  may be used to force usage of a particular output.
              The options are "0" or "1".  Default: autodetected.
... but when I set that to 1 in the Section "Device" of my xorg.conf, it still uses the internal monitor of my laptop. Am I missing something?

MJ Ray: JDLL and how bubulle upset Julien

To try and make it easier for non-Francophone Anglophones to understand this complaint and response in English, an attempt at translating the email is below. Errors are all mine:-
Our community (Debian) has a defect: the noisiest (and evidently the most extreme) are always the most visible. It is very regrettable that the people who say they represent Debian at JDLL, who are always only some of the 70 French developers of a thousand-developer project with many thousands of contributors, can have given you this totally false image. Their provocation was totally purile, even if the subject is a true subject of discussion. Unfortunately, this sort of position will always exist. I hope simply that the people who have been shocked by this childish behaviour and the also-totally-purile comments appearing in 24 hours on various blogs will have the intelligence not to fall in the same trap as their opponents, notably the easy amalgamation. Extremism doesn't always win in Debian (and not even as often as that), compare the last votes: http://lists.debian.org/debian-devel-announce/2006/10/msg00018.html http://lists.debian.org/debian-devel-announce/2006/10/msg00017.html and so on. I would appreciate it if this appears in your blogs to temper a little the unacceptable comments that you have received from certain people... and I allow myself to give you respectively meetings at the next Solutions Linux to discuss all this calmly over $BEVERAGE. [ENDS]
I think posting the above without making it clear that it is a one-man initiative and apparently sent without consulting those criticised was downright sneaky and always going to offend. The daft acts of people at JDLL cannot be corrected honourably by more daft acts! The message also seems to me to suggest that it's somehow extreme to object to the Mozilla Corporation using trademarks to stop Firefox and friends being freely-modifiable free software (by requiring inclusion of material with no copyright permission to modify) and to try to dictate what goes into distributions. Unlike the firmware problem, Mozilla's trademark terminators are an obvious and active practical problem for debian maintainers and downstream. I hope the Mozilla fans who were upset by such a "childish" non-obvious reminder [JPEG, 70Ko] about the MozCorp trademark offensive will bring MozCorp into line. If not, I hope that the next time is better satire that informs more people and avoids the "purile" tag.

18 October 2006

Russell Coker: mailing list culture

There is currently a big debate in progress in Debian. I am not going to mention any specifics because too much of it has already been blogged (maybe in the same syndication in which you read my blog).

I think that the way things are going is more an illustration of the failings of mailing list culture than of failings of Debian. Maybe another mechanism would be more productive in leading towards a solution.

One option that occurred to me is debate via wiki. If each side had a wiki page that they could modify then in a small amount of time we should get a set of two main consensus opinions which would each be explained clearly and summarised well. Then with two options clearly expressed the people who have less strong opinions could decide which option they favor. For this to be a quick solution honorable behaviour would be required from all people involved, if people start trying to sabotage the other group's wiki entries then it would significantly increase the time taken to achieve things.

Another possibility that occurred to me is debate via blog. The quality of blog postings is expected to be a lot higher than that of mailing list discussions as all posts are tied to the author's public image. Writing content-free messages on a mailing list is easy, but every blog entry needs to stand on it's own to a certain extent and anyone who writes flames in most of their blog entries will probably find that the readers like it less than the readers of a typical mailing list.

Maybe when an issue is recognised as highly contentious a few people could blog about it and then form groups to develop wikis to promote their views. A debate might start out with five or more different competing views, some of them would merge until there were only two main opinions being pushed. Then once the two remaining groups had sorted out their positions a vote would be easier to arrange.

What do you think?

Next.

Previous.