Search Results: "jam"

30 September 2007

Benjamin Mako Hill: Shades of Google

So, you might have heard about Blackle. It's Google with a black background. Apparently, it's a misguided attempt to save electricity. A little searching around shows that there's also a Greenle. And a Pinkle. All seem to be have been built independently. We need a Purple. Update: Also, Bluegle and the the confusing similarly named, but fundementally different Graygle and Greygle. Update: And Browngle.

29 September 2007

Maximilian Attems: happy git usage

Apparently Scott James Remnant in his article on version control systems confuses arch and git. One can only speculate that his short git usage stems from the pre 1.0 days, where you had to use higher level tools (called porcelain) to happily work on git. A funny anecdote is that Scott back in his dpkg hacking year promoted arch heavily. Ubuntu^Wbzr propaganda spreads speed gains as big bonus of the last major releases. In order to be able to do that you have to start with a terrible baseline. Testing bzr on middle sized repos is no fun at all. The bzr pain inside launchpad must be beyond imagination. Nowadays it is much easier to hack on mdadm than on lvm2. The reason is that later project uses rusty cvs. With git it is really easy to contribute back. Either you mail the patches or publish your repository. git will help you along on each way. The other very big bonus of git is the big community around git. It is a community excited around building and delivering the best version control system. The git development does regular surveys on git usages and incorporates back the wishlists. The most "funny" way to use git is to run it as cvsserver. You may believe me or not i have seen git cvsserver emulation usage in the wild.

28 September 2007

Clint Adams: A thrusting hit will never find

Once upon a time I proposed a DebConf talk about how to write zsh completion functions, but it was rejected. Accordingly, I didn't waste any time preparing materials for it, so I never have anything to throw at people when they ask for some kind of introduction. Here we have a fictitious program called arismom. Usage information from the fictitious manpage and the fictitious --help output is as follows:
Usage: arismom [OPTION]... [FILE]...
Do it Jersey style.
  -a, --all                       do all those things
  -b                              bubble
      --bounce                    bonuce
      --CoC=STYLE                 adhere to STYLE code of conduct
  -d, --debian=PACKAGE            dedicate actions to Debian PACKAGE
  -e, --ensqualm=USER             ensqualm USER first
  -t, --tempdir=DIRECTORY         spew temporary files into DIRECTORY
So let's cut to the quick. Create a file called _arismom somewhere in your function search path. This is described by the array $fpath. You can view its contents by typing print -l $fpath, and you can add a a directory to the beginning with fpath=(~/.zsh/scratch $fpath) or to the end with fpath+=(~/.zsh/scritch). For the purposes of this blog entry, we'll pretend you have a ~/.michaelbolton/squatch directory in your $fpath and that you are now editing ~/.michaelbolton/squatch/_arismom. The first line of the file, at the very tippy top, should read
#compdef arismom
This ensures that when the completion system boots up and finds your file, it will associate your function with the command arismom and complete options and arguments for it accordingly. Speaking of arguments, skip a line for aesthetic equilibrium, and invoke the _arguments utility function.
_arguments \
_arguments is sort of the cdbs of the zsh completion fleet. By the end of this blog entry, you'll have no idea how it works, and if you want to do anything particularly complex with it, you might encounter some resistance. For those of you unfamiliar with Z-Shell syntax or shell syntax in general, the trailing backslash means I'm a-gonna feed you a ton of information about the command-line interface to arismom. So tell it about the first option already.
  '(-a --all)' -a,--all '[do all those things]' \
To oversimplify, this declares that -a and --all are options which produce the identical behavior of do all those things . Specifically, the part in parentheses says to not complete either -a or --all when either -a or --all is already on the command-line. The part in braces is merely brace expansion; for that reason it is outside of the single quotes. If you're unfamiliar with brace expansion, try print '(alice)' bob,carnie '[wilson]' to see how it expands. Finally, the phrase in brackets is an explanation of the option, which may or may not be displayed depending on your configuration. Next, do a short option that has no long option equivalent.
  '-b[bubble]' \
A long option with no short option equivalent looks similar. Don't feel limited by upstream's inadequate descriptions, misspellings, or poor grammar.
  '--bounce[amplify bounce level according to X-la algorithm]' \
Some options take arguments. Now we use colons.
  '--CoC=[adhere to CoC]:CoC style:(mjg59 buxy ubuntu)' \
The first column is the same optspec by which you've been so excited thus far, and the part between the colons is the message or description of that which will be matched. The part after the last colon is the action; in this case you are specifying a list of possibilities within single parentheses. In most cases, you'll want to be more dynamic than a pre-defined list, and there are many helper functions all ready to serve you.
  '(-d --debian)' -d,--debian= '[dedicate actions to Debian package]:package:_deb_packages avail' \
_deb_packages is a function that completes Debian packages; it can take avail, installed, or uninstalled to restrict which set of packages it offers. In this case we want it to complete any package available from your sources.
  '(-e --ensqualm)' -e,--ensqualm= '[ensqualm user first]:user to ensqualm:_users' \
Here the _users function will complete usernames.
  '(-t --tempdir)' -t,--tempdir= '[spew]:temp dir:_files -/' \
Normally the _files function will complete files, but you can tell it that you only want directories with the -/ option. Finally, we want to cover all the remaining arguments (which according to the fictitious usage information is a list of files). In this case, you happen to believe that files with the .nj extension are to be completed.
  '*:NJ files:_files -g "*.nj"'
The -g option specifies a glob pattern to match files. Now the entire file should look like this.
#compdef arismom
_arguments \
  '(-a --all)' -a,--all '[do all those things]' \
  '-b[bubble]' \
  '--bounce[amplify bounce level according to X-la algorithm]' \
  '--CoC=[adhere to CoC]:CoC style:(mjg59 buxy ubuntu)' \
  '(-d --debian)' -d,--debian= '[dedicate actions to Debian package]:package:_deb_packages avail' \
  '(-e --ensqualm)' -e,--ensqualm= '[ensqualm user first]:user to ensqualm:_users' \
  '(-t --tempdir)' -t,--tempdir= '[spew]:temp dir:_files -/' \
  '*:NJ files:_files -g "*.nj"'
There you have it. Restart zsh and try tab-completing various things after arismom. P.S. I expect bug reports containing functions for dpatch-edit-patch, pkill, and pgrep by tomorrow morning. P.P.S. Why is Scott James Remnant still on Planet?

Martin F. Krafft: Counting developers

For my research I wanted to know how to obtain the exact number of Debian developers. Thanks to help from Andreas Barth and Manoj Srivastava, I can now document the procedure:
$ ldapsearch -xLLLH ldap://db.debian.org -b ou=users,dc=debian,dc=org \
  gidNumber=800 keyFingerPrint \
    sed -rne ':s;/^dn:/bl;n;bs;:l;n;/^keyFingerPrint:/ p;bs ' \
    wc -l
1049
This actually seems enough as I do not recall any new maintainers being added since the last call for votes, which gives 1049 as well. Andreas told me to count the number of entries in LDAP with GID 800 and an associated key in the Debian keyring. Manoj's dvt-quorum script also takes the Debian keyrings (GPG and PGP) into account, so I did the same:
$ ldapsearch -xLLLH ldap://db.debian.org -b ou=users,dc=debian,dc=org \
  gidNumber=800 keyFingerPrint \
    sed -rne ':s;/^dn:/bl;n;bs;
              :l;n;/^keyFingerPrint:/ s,keyFingerPrint: ,,p;bs ' \
    sort -u > ldapfprs
$ rsync -az --progress \
  keyring.debian.org::keyrings/keyrings/debian-keyring.gpg \
  ./debian-keyring.gpg
$ gpg --homedir . --no-default-keyring --keyring debian-keyring.gpg \
  --no-options --always-trust --no-permission-warning \
  --no-auto-check-trustdb --armor --rfc1991 --fingerprint \
  --fast-list-mode --fixed-list-mode --with-colons --list-keys \
    sed -rne 's,^fpr:::::::::([[:xdigit:]]+):,\1,p' \
    sort -u > gpgfprs
$ rsync -az --progress \
  keyring.debian.org::keyrings/keyrings/debian-keyring.pgp \
  ./debian-keyring.pgp
$ gpg --homedir . --no-default-keyring --keyring debian-keyring.pgp \
  --no-options --always-trust --no-permission-warning \
  --no-auto-check-trustdb --armor --rfc1991 --fingerprint \
  --fast-list-mode --fixed-list-mode --list-keys \
    sed -rne 's,^[[:space:]]+Key fingerprint = ,,;T;s,[[:space:]]+,,gp' \
    sort -u > pgpfprs
$ sort ldapfprs pgpfprs gpgfprs   uniq -c \
    egrep -c '^[[:space:]]+2[[:space:]]'
1048
MAN OVER BOARD! Who's the black sheep? Update: In the initial post, I forgot the option --fixed-list-mode and hit a minor bug in gnupg. I have since updated the above commands. Thus, there is no more black sheep and the rest of this post only lingers here for posterity.
while read i; do
  grep "^$ i $" pgpfprs gpgfprs   echo $i >&2
done < ldapfprs >/dev/null
which returns 9BF093BC475BABF8B6AEA5F6D7C3F131AB2A91F5
$ gpg --list-keys 9BF093BC475BABF8B6AEA5F6D7C3F131AB2A91F5
pub   4096R/AB2A91F5 2004-08-20
uid                  James Troup <james@nocrew.org>
our very own keyring master James Troup. So has James subverted the project? Is he actually not a Debian developer? Given the position(s) he holds, does that mean that the project is doomed? Ha! I am so tempted to end right here, but since my readers are used to getting all the facts, here's the deal: James is so special that he gets to be the only one to have a key in our GPG keyring which can be used for encryption, or so I found out as I was researching this. Now this bug in gnupg actually causes his fingerprint not to be printed. Until this is fixed (if ever), simply leave out --fast-list-mode in the above commands. NP: Oceansize: Effloresce

26 September 2007

Scott James Remnant: Why I choose Bazaar (a history of revision control)

Like any sensible software developer, I have a close relationship with revision control systems. In my previous job, I was an SCM Engineer (see Software configuration management) which meant I had an even closer relationship than most, since we were running the CVS servers and actively using them to track changes and deployments. We all know, deep down, that revision control systems shouldn’t exist. This kind of thing should be inherent in the design of the operating system, through standard file and filesystem formats. The OLPC interface is making some headway towards that, but for the rest of us, it means using a revision control tool throughout the development process. Unfortunately, even though the tool is expected to be the most-used command on your system, very few of them are particularly easy to use. Thus there’s a large learning curve, and people become religious about their choice since they have invested significant time in using it. Just to spice the mix up, not only will people religiously defend their choice of revision control system, but they’ll do so while actively hating it. In the beginning there was CVS and we all thought that it was pretty good. It was based on the simpler RCS and shared a file-format with it, but introduced control of directory trees and remote operation. Actually, in reality, CVS wasn’t that good. Its command set could be a little strange and inconsistent (e.g. it’s not possible to diff between two dates on a branch); the support for branching assumed that all branches would be merged into the mainline, and only once; and nobody ever really knew how to create a new project in a repository (tip. cvs import is wrong). But we all used it anyway, and we muddled through. It did have some good features; it was simple, fast and pretty reliable–when it did break, you could usually fix the repository yourself. And most importantly of all, we understood how to drive it. And so it was for many years, until Subversion (SVN) came along. Subversion intended to be “a better CVS”, perhaps this goal should have made us suspicious at the time since CVS was already being a pretty good CVS by itself; unfortunately we hated CVS so much we flocked to the new system in hope. In hindsight, Subversion didn’t really improve on CVS much at all. In fact, arguably, the only real improvement was the addition of atomic commits (in CVS, each commit is per-file, so it’s manual labour to work out which change was made to two files at the same time). (Its support for branching, tagging, copying, renaming, etc. were no better than CVS’s when done in the repository by hand.) The cost of this single new feature was a much more complicated interface (with two separate commands), a backend that tended to break down weekly and a lethargic slowness to its operation. Most people I know now justify their use of Subversion instead of CVS by “Subversion is maintained, CVS isn’t” which is a somewhat self-fulfilling justification. While the mass conversion to Subversion, and ensuing disappointment and frustration, was going on; something new appeared on the horizon: Arch. Arch was different, it broke one of the core assumptions of revision control, that of the repository as a cathedral. In CVS, and Subversion like it, if somebody wants to modify your code (even if on a branch) you need to give them access to your own repository. In some cases (especially with CVS), vast access control and permission structures would be in place to ensure proper behaviour. With Arch, you don’t; all you need to give to anyone is read access. Anybody can make their own branch by copying yours and committing to their own copy. This model also necessitated fixing a long standing problem that CVS had; Arch has repeatable (smart) merging. If you merge from a branch, you can merge again later, and again, and again. Arch made this possible through each commit (changeset) having a globally unique identifier; made from the branch’s own globally unique identifier and the changeset number in the branch. Unfortunately while this was a massive step in a new direction, Arch had an absolutely terrible user interface. Its command list was terrifying with over 100 commands, many of which had multiple word names (tla set-tree-version). It exposed too many of its own innards, and expected you to learn them. It also forced baroque file naming semantics on its users and strange policy (though shalt not commit without first running “make clean”). Efforts were made to improve Arch’s user interface through projects such as baz, but they were always to be doomed from the start. We’ve since seen an explosion of new revision control systems; Monotone, Darcs, Git and Bazaar. What’s especially interesting is the commonality between these systems. They are all “distributed” like Arch, though they also all discard the strange “unique branch identifier” convention and instead simply assign a unique identifier to each file or commit. This means that they all support personal branches, and by necessity all support repeatable (smart) merging. So how do they differ, what are their killer features and killer problems? Monotone is all about repository integrity, ensuring that every commit is both authorised and intact. It pays for this with a severe lack of speed. Darcs is based around a “theory of patches”, a branch is not made up of its history but by the collection of patches in it. Unfortunately this often breaks down, and darcs frequently gets stuck calculating even trial and commonplace branch models. Git is very strange to me; its killer feature appears to be the speed at which it can handle very large trees, but the interface is as insane as Arch’s was. It is heavily optimised for the “I only apply patches” development model, at the expense of ordinary development models (it shares an issue with Arch where calculating annotations on an individual file is an expensive operation). What about Bazaar? Its killer feature is that it is designed to work the way you do. The command set is relatively small, and each of them works in the most obvious manner. It also supports plugins so that you can always implement your own workflow. Of all the revision control systems, it’s the only one (that I’m aware of) that supports both distributed and centralised workflows (and lets you go distributed when you need to, e.g. when you’re on a plane). Here’s a few examples of how Bazaar’s command set works the way you do. To start managing some code in bzr:
$ cd myproject
$ bzr init
To add the files, copy in your usual .bzrignore file and just add everything:
$ cp ~/bzrignore .bzrignore
$ bzr add
added foo.c
added bar.c
Check the output for mistakenly added files, adjust .bzrignore and remove the file with bzr rm. A common operation is realising that the commit you’re about to make should really go on a new branch for now:
$ cd ..
$ cp -a myproject myproject-foo
$ cd myproject-foo
$ bzr commit
A copy of a Bazaar branch is a different branch, you can commit to it separately. There’s a bzr branch command for it too (which deals with issues such as bound branches, checkouts, etc.) but it’s nice to demonstrate that Bazaar does what you’d expect even when you don’t use its own commands. Pulling changes from another branch (where you haven’t made any modifications yet) is easy:
$ bzr pull ../myproject
As is merging (when your branches have diverged):
$ bzr merge ../myproject
One particularly nice feature is that after a merge, you see the merge as a single commit and it can be treated as such; but it also has the set of merged commits indented under it–you can examine these as individual commits as well! What’s the downside of Bazaar? Well, it’s not the fastest system (but by no means the slowest), for small to medium sized projects this is never an issue but may be for extremely large projects–fortunately the developers are improving its performance all the time! But that doesn’t matter; it is, honestly, the first revision control system that I don’t hate.

Rapha&#235;l Hertzog: DSA needs a leader

Seriously. Now that we have been using the request tracker for quite some time, it’s even more obvious that the DSA team is not up to its task. Use login “guest” and password “readonly” if you want to check the RT tickets linked in this article. The facts Note that myself and Matt do not have the needed rights to fix most of the tickets, so we provided help on a best-effort basis. Otherwise we would have done more. The communication problem It’s a multi-level problem. Each of the members has some problems with one or more other members. Joey’s behavior has been part of the recurring problems mentioned: he doesn’t use the RT, doesn’t read the DSA email alias and doesn’t follow the DSA IRC channel but he still does stuff very regularly without reporting anything and obviously problems happen. Ryan and James tried to impose him a rule to document what he does, without success apparently. On the other side, as far as I know, Ryan and James also don’t impose themselves to document everything in a central changelog. Joey has refused to provide me an explanation for his behavior. He just reminded me that he holds grudges against James and Ryan because as ftpmasters they didn’t cooperate well with him while he was stable release manager. In general, outside of all personal griefs that they might have, the DSA members do not communicate very much (at least not on their own official channels). Some examples have already been given concerning the request tracker, but it’s not much more effective on IRC. Most of the traffic on the channel is made up by local admins fixing the problems themselves without any intervention by any DSA. I also use the channel to regularly ping some DSA about simple issues and/or stuff that they usually handle. It used to work somewhat but lately fil has been busy (with the kernel summit and other conferences) and I simply got no answer at all… for example I pinged elmo, neuro and fil several times in the last weeks in the hope that they handle the tickets of the security team (#150, #157, #164) without results. There’s room for improvement. The leadership problem The team has no designated leader and every time that there’s a decision to take, they are blocked. Joey wouldn’t communicate and give his opinion, Ryan is extremely requiring and perfectionist, there’s not much room for compromise… A long time ago in a galaxy far, far away, Joey and elmo were friends. It’s even Joey who gave root rights to elmo. Nowadays, it’s rather James that is sort-of leading the team but he’s fed up of the situation and hasn’t managed to get out of this mess. He refuses to take drastic measures by himself because he’s not clearly the leader and doesn’t solicit a decision of the Debian leader (or the project) because he believes that the DSA team is not under the scope of the constitution! This can’t last any further. We’ll have to do something about it. Stay tuned.

24 September 2007

Benjamin Mako Hill: Lamp Stores

I have an intense, unexplainable, uneasiness around lamp stores. Perhaps it's even a fear. /copyrighteous/images/lamp_store.jpg Something about so many lamps, so close together. It seems unnatural. Very Wrong.

22 September 2007

Clint Adams: And I answer quite frankly, when they stop building roads

This one is long and boring. You'll want to skip it entirely. A while ago, Ulrich Drepper made getaddrinfo() in GNU libc behave according to an IETF RFC. Sounds sane, right? Well, not entirely. The way RFC 3484 rules work for IPv4 is less than ideal. On the other hand, returning network address query results unsorted is also less than ideal. Imagine if getent passwd returned lines in a randomized order. It would be perfectly functional, but piss me off to no end until I conditioned myself to always sort them the way I wanted them. I digress. So, we shipped a stable release that behaved this new way. Nobody objected. I don't know if Ubuntu did or not. It would amuse me if they did, but I don't much care. Then all of a sudden, along comes bug #438179. The gist is that Kurt thinks that trying to make intelligent decisions based on network topology is a bad idea because it defeats the point of having multiple A-records in the first place. We'll come back to that in two minutes. James filed the analogous bug in Ubuntu. I keep mentioning Ubuntu for a reason. I'm not going to tell you what that reason is. The GNU libc maintainers were reluctant to change the default (which is how most other modern operating systems behave; MacOS X being a notable exception, though I heard that they were working on it), so Kurt escalated to the Technical Committee. Now nothing in our lovely and flawed Constitution says that the tech-ctte should be a technically-capable bastion of wisdom and patience; I just think it does because I don't waste my time reading Foundation Documents that don't accurately describe our governance structure. Now for a brief interlude while I vamp incoherently for some of my less technical readers who are not implementors of a DNS resolver libraries, past IETF participants, DNS administrators, someones who've followed some of the IPv6 transition work, or have invented the Internet lately: Round-robin DNS is a giant hack, a poor man's loadbalancer, as it were, something that only works due to a de facto standard that no standards bodies seem to have thought worth preserving. gethostbyname() has been marked obsolescent in POSIX and deprecate in GNU libc for what seems like forever, and the GNU libc implementation of it suffers from bugs that probably no one should ever fix, and as such, no one should ever use it. getaddrinfo() is not a drop-in replacement for gethostbyname(), and expecting it to behave the same is daft. If it were meant to behave the same, I would expect that it using it would be simply a matter of changing calls to gethostbyname() to getaddrinfo(), rather than the amount of code rewriting you need to do now to change the same effect. Furthermore, nothing guarantees the behavior of gethostbyname() except for years of observed consistent behavior and the expectation that should anyone implement a C or resolver library that sorted gethostbyname() results, there would be much loud screaming that it was the library that's broken, and not the applications or programmers for being na ve. I hope that was less than helpful. Let's move on with the plot. While the Technical Committee deliberated , and I use the quotation marks because several -ctte members don't seem to have participated at all, Ian Jackson jumped up and down like some kind of Rumpelstiltskin, screaming that he is Der Komissar and that voting is in order, and a few other things I won't mention. On the 20th of September, Ian Jackson called for a vote. On the 20th of September, Ian Jackson uploaded an Ubuntu version of glibc with the default changed. On the 20th of September, my mother had trouble sleeping, though I suspect she has no idea it was because of this debacle. This story has no ending. Let the rain come down.

20 September 2007

Benjamin Mako Hill: Award

Due to the fact that my favorite Window manager is now licensed non-freely (and then some), I award Tuomo Valkonen the J rg Schilling award for free software project management. /copyrighteous/images/trophy.png Tuomo can console himself with his award while I console myself with Tritium. With the new dock feature announced today, I think it just turned into something I can switch to.

18 September 2007

Jeff Bailey: Weddings and Ordinations, biking home

This past weekend I did the absolutely insane and attended a wedding and an ordination in Vancouver, without taking any time off of work. I've finished two weeks at the new job (and am loving it! I'll post more when I have something more than "done a bunch of classes, learned confidential pieces of Google knowledge, ate great food") and didn't want to go to my boss and ask for time off in the first month.

So, Friday night, 9pm, caught flight from SFO to SEA, rented car. We were sitting in Heather's room at 4am chatting away, slowly passing out. Next day, up at 9, go visit Jamu, sort out suit rental, go for lunch, back to his moms to get dressed. I hope to link to a wedding album sometime in here. He got married by the paperclip behind the Planetarium in Vanier park. There were 4 weddings that I saw there, all peacefully contending for the various views and trying to stay out of one another's photos. =) Saturday evening, the DJ was great. We tried an experiment to see if we could leave Leif with Sandy, and whether the solid foods would be enough for a few hours. He made it a couple of hours, and then joined us at the dance, being happier knowing that we were around. It turns out Leif likes dancing! I was a little worried about the volume, and at various times several of us asked the DJ to turn it down when the music was creeping louder. It was also fun to see a whole pile of friend that I haven't seen in something like 10 years and see how we've all changed. Thanks to Facebook, at least we didn't have to completely rehash the last decade. =)

I think we turned in at 1 or 2. The next day, up at 10:30 so that we could pickup the van, pickup Katy, pickup our mail, go to the Naam to meet Ernie, Janet, and Anika, drop off the suit, pick up a snack, go to MEC, drop off Katy, and then head to the Vancouver Unitarian Church to see Laura's ordination and meet Jon.

Laura's ordination was the most amazing that I've been to. Her ministry is centered around the Faithful Fools, and the people that she's touched and been mentored by were woven throughout the ceremony. I was invited to play the recorder, so I did the last part of the prelude, and played along with the choir for "Rise up, oh flame". People were wearing silly hats, there were stories, and tears, and another pile of people that I haven't seen in ages from when I was a member at that church. I'm also not sure that I've been to that church since getting married in it, so it was nice to be in that space again.

The reason for the visit to MEC was that my goal has been to start biking home. I'd acquired a bike, helmet, lights, and lock, but wasn't happy with my visibility in black clothing on a black bike. I got ankle reflectors and a vest for the backpack, and I biked home yesterday. I'm surprisingly not that sore for the 10 mile ride home. We'll see how I'm doing in a few days. ;)

Benjamin Mako Hill: You Rule!

Inspired by Mitchell Charity's printable paper rulers and Steve Pomeroy's CSS ruler, I wrote a little python script to generate an on-screen ruler for the OLPC XO-1. The XO-1 screens are super high resolution (200dpi) and are each identical. This makes for a very accurate ruler. It's one of a few project I've done or am working on that tries to take advantage of the physical qualities (and physical consistencies) of the XOs. Also, a ruler is just a really useful thing for a school child -- or anyone else for that matter. Of course, different screens have different pixel sizes so the ruler for the XO won't work on another screen. This made some of my friends jealous. To appease them, I spent a couple hours and hacked up a little web frontend to my ruler generator which allows anyone to create custom on-screen rulers and to save them and share them with others who might have the same screen. I've called it YouRule. Please check it out or download the source and send me improvements.
http://projects.mako.cc/yourule

12 September 2007

Benjamin Mako Hill: Software Freedom Day Boston

This Saturday, September 15, is Software Freedom Day 2007. With more than 300 teams registered, there's a good chance that there's something going on near you. I'll be helping at the Software Freedom Day event in downtown Boston where I'll be giving a talk on a still undetermined topic. I'll also be helping out with GNU/Linux and RockBox installs and letting folks play with my XO and OpenMoko. If you are into free software, open source, or GNU/Linux, please show up to your local SFD event. Go ahead and bring your friends who are not yet familiar with free software -- this event is primarily for them. In Boston, there will be refreshments, talks, demonstrations, and installs. Bring your laptop, desktop, iPod, or other DAP -- or just bring yourself and a friend.

Scott James Remnant: Waybacking

I think I’ve just invented a new sport… Everyone knows the game of Googling your own name, and finding out all sorts of fascinating things that you have forgotten or didn’t realise had made it onto the Interwobble. Here’s a new twist, use the Internet Archive Wayback Machine instead and read through things like old versions of your homepage. I’m honestly shocked at just how much incriminating material I’ve found, both from my own website and segfault.org This comment on my site from Leonard Richardson and my reply especially amused:
What percentage of the time are you drunk? This is to settle a bet. Okay, well on an average week I guess I go out for 3 nights. Friday night starts at 5:30 and ends 12 hours later, the other two days would be probably from 9:30 to 2:30am, so 5 hours. So we can say I spend 22 hours innebriated. Just under a day, or 13% of the week. Some weeks that might be as much as 25% to 30% I guess tho. Who was the bet with, and more importantly, who won?
This explains a lot …

11 September 2007

Benjamin Mako Hill: Serious Limericks

Perhaps you want to both reflect on 9/11 and help demonstrate that limericks can be serious by writing some serious limericks about 9/11?

Benjamin Mako Hill: It's Selectric!

/copyrighteous/images/selectricity_logo.png Several months ago, I announced that I'd received a grant from mtvU and Cisco to work on a cool voting technology research project called Selectricity. A project in quotidian democracy, Selectricity attempts to apply some of the best voting technology and election methods research towards every-day decision-making. It takes research I did at the MIT Media Lab and packages it into a real, useful, application. I spent probably half of my time over the last several months managing a team of competent hackers and designers as we've built out the project. Last week, press releases and news stories went out as we launched our first production batch of features and a new design. You can check it out online at:
http://selectricity.org
There is a whole line-up of a groups and organizations, some high profile, that will be using the software in the coming months. There's also half a dozen killer new features that are built and waiting in the wings for a little polish and fanfare. We'll be testing and releasing those in the next couple months. No doubt, I'll be mentioning bits and pieces of my work on the project on my blog here. However, if you want to follow development, you should subscribe to the Selectricity News Blog where more full coverage will take place. You can leave feedback, suggestions, and bugs as comments on the blog or email it to team@selectricity.org. The election method code is already published and we'll be releasing the rest of the code under the AGPLv3 when the license is released by the FSF in the next few weeks.

10 September 2007

Benjamin Mako Hill: Debian Planet Administrivia

Last week, Rapha l Hertzog mentioned a transition in progress that was going to change the way that Planet Debian updates. As part of the plan to deprecate cvs.debian.org, Rapha l helped me move Planet Debian away from the old CVS repository and to a new Subversion repository in Alioth. Readers of Planet Debian should not notice any differences. When it comes time to change or disable a feed, contributors to planet Debian will have to update their feed slightly differently. Documentation on how the new method is now in the wiki and at gluck:/org/planet.debian.org/README. As Rapha l mentioned, all Debian Developers have write access to the configuration file in the Subversion repository through their Alioth accounts. Unlike the old setup, non-DD's who have blogs in Planet can have write access to it as well, but they'll need to have an Alioth account and they'll need to be added to the ACL by me. As before, it's only OK to modify one's one feed and anyone who violates this in bad faith will have their privileges to the repository removed. The old CVS repository remains crudely broken. Please help update any references to the old CVS-based method or alert me to documentation that's public and out of date that you don't have access to change yourself.

Scott James Remnant: Ubuntu Desktop Developer

Continuing my mission to put together a kick-ass team to develop the Ubuntu Desktop, the following position is now up on the website: Posting Date & ID: September 2007 UDD
Job Location: Your home with broadband. Some international travel will be required.
Job Summary: To adapt and develop the GNOME desktop to improve the Ubuntu user experience. Key responsibilities and accountabilities: Requirements skills and experience: How to apply Please send a cover letter and CV with references to hr@canonical.com. Please indicate in your submission the role for which you are applying. We prefer to receive applications and CVs/Resumes in either PDF or plain text format.

8 September 2007

James Morrison: Belo Horizonte

I finally made it into Brazil today. I have to say, the customs here was awesome. The guy looked at my passport, said "Yup, that's a work visa", stamped my passport and let me in without any other comments. Canadian customs is more annoying that that. My guess is that no one has authority in Brazil, so when something is actually accomplished there isn't any second guesses.

The flights over here were pretty good, I got a flight to Miami instead of NYC, then to Rio, then an early flight to Belo which landed 5 hours earlier than the flight I was expecting to take.

For my first night here, I am classing it up with a bottle of beer, a razor and a can of pringles. I think the beard has gotten way too scruffy, so I need to clean it up before I try to party with any Brazillians.

5 September 2007

Michael Janssen: Other Twitter Bots that I use

Earlier this year I blogged about using the twitter bot for Remember the Milk. I still use it fairly well, even though the SMS messages from the RTM come late a bit. It's working for me in order to get a good chain going for the thesis proposal. There are a couple other bots that I'm using which are on twitter as well.

The first bot that I use is the bot at timer. The timer bot will let you set a timer (surprisingly). You only need to send it a direct message with the amount of minutes as well as a reminder for you about what it was set for. For example, if you want to remember to plug the meter before it runs out in 40 minutes, just twitter 'd timer 38 plug the meter' to timer and in 38 minutes it will inform you that your timer is up. You can have multiple timers running at once, which is useful if you are perhaps having tea at a coffee shop while you are parked on the street.

Another bot I use is the gcal. Gcal is a connection to your google calendar through twitter. You can set up new appointments by messaging the gcal bot with something like 'd gcal Pick up joe at 7pm' or 'd gcal set up web application for judy tomorrow' and it will
add it to your calendar. I use it in the morning to track my weight. I just pull out my phone while I am at the scale and SMS 'd gcal my weight is XXX', and it adds the event as a day event on the day it was sent.

The last bot I will go over today is the mymm bot. It is slightly more complicated but still useful. When you're at the pump, you can direct message mymm a little info and get back the MPG that you have done since the last fillup. It helps me keep a tab on how good or bad I'm driving, which is a good thing. The car we drive usually gets about 24 MPG, but I learned through this that when I'm carrying a bunch of crap in the back, the MPG drops 3-4, so it's better for me to have an empty trunk.

I'm sure there are a bunch of other useful bots out there (ququoo is one, which I may cover in another post), but these are the most useful that I've found so far. Twitter is turning out to be much more useful than just random status updates.

30 August 2007

Russell Coker: Is SE Linux only for Linux?

I have just been asked for advice on whether SE Linux is Linux specific, and therefore whether code related to SE Linux should always be stored with other Linux specific code instead of being in the main branch of certain free software projects. One example of SE Linux access controls being implemented on a different OS is the work to port SE Linux to Mac OS/X. Here is a paper on the topic presented at the SE Linux Symposium 2007, and the main site is at http://sedarwin.org. One thing I have been doing is trying to get some friends interested in doing similar work for GNU Hurd (there are some similarities between Darwin and HURD so the work done on Mac OS/X “Darwin” will help the HURD effort). I believe that The HURD has the potential to offer significant security benefits due to the micro-kernel design. One significant problem area in computer security is kernel security flaws, if the kernel can be split into a set of independent processes that run with minimal privileges then the scope of such problems is dramatically decreased - and the possibility of upgrading parts of a kernel on a live machine is provided. As people such as Linus point out there is a performance overhead to micro-kernels, but most machines are idle most of the time anyway. I believe that reliability and security are more important than getting the last 10% of system performance for most machines. The success of Xen is evidence that features other than maximum performance are desired. Another example of SE Linux access controls on a non-Linux platform is the MAC framework in the TrustedBSD project. This implements SE Linux access controls on top of FreeBSD. From reading the documentation it seems that the amount of changes required to the SE Linux code base for implementation on TrustedBSD was significantly smaller than the changes required for Darwin. Sun is also apparently considering adding type-enforcement to Solaris. It’s yet to be seen whether this happens and if so whether it is compatible with SE Linux. So it seems that a significant portion of the SE Linux code base is portable, and in particular the user-space code should port well. The interfaces for and methods labelling files etc should port well between platforms. Therefore I recommend not having SE Linux code split into Linux specific trees and instead having a compile option to enable SE Linux support.

Next.

Previous.