Search Results: "nate"

15 August 2007

Robert Collins: 15 Aug 2007

When are two identical changes the same, and when aren't they? Theres a little bit of debate started by Andrew Cowie posting about unmixing the paint. Matt Palmer followed up with a claim that a particular technique used by Andrew is dangerous, and finally Andrew Bennetts makes the point that text conflicts are a small subset of merge conflicts. That said, one critical task for a version control system is the merge command. Lets define merge at a human level as "reproduce the changes made in branch A in my branch B". There are a lot of taste choices that can be made without breaking this definition. For instance, merge that combines all the individual changes into one - losing the individual commit deltas meets this description. So does a merge which requires all text conflicts to be resolved during the merge commands execution, or one that does not give a human a chance to review the merged tree before recording it as a commit. So if the goal of merge is to reproduce these other changes, then we are essentially trying to infer what the *change* was. For example, in an ideal world, merging a branch that changes all "log messages of floating points to 6 digit scale." would know enough to catch all new log messages added in my branch, regardless of language, actual api used etc etc. But that is fantasy at the moment. The best we can do today depends on how we capture the change. For instance, Darcs allows some changes to be captured as symbol changing patches, and others as regular textual diffs. So the problem about whether arriving at the same result can be rephrased 'when is arriving at the same result correct or incorrect'. For instance, if I write a patch and put it up as plain text on a website, then two people developing $foo download it and apply it, they have duplicate changes but its clearly correct that a merge between them should not error on this. On the other hand, the example Andrew Bennetts quotes in his post is a valid example of two people making the same change, but the line needing a change during the merge to remain correct. Here's another, example though. If I commit something faulty to my branch, and you pull from me before I fix it. Then while I fix the bug, you also fix it - the same way. That is another example of no-conflict being correct. If its possible for either answer - conflict, or do not conflict - to be correct, then what should a VCS author do? There are several choices here: I think that our job is to assess what the maximum harm from choosing the wrong default is, and the likely hood of that occuring, and then make a choice. Short of fantasy no merge is, in general, definately good or bad - your QA process (such as an automatic test suite) needs to run regardless of the VCS's logic. The risk of a bad merge is relatively low, because you should be testing, and if the merge is wrong you can just not commit it, or roll it back. So our job in merge is to make it likely as possible that your test suite will pass when you have done the merge, without further human work. This is very different to trying to always conflict whenever we cannot be 100% sure that the text is what a human would have created. Its actually harder to take this approach than conflicting - conflicting is easy.

Bastian Venthur: My top 5 Firefox/Thunderbird annoyances

Firefox is constantly gaining marked share (especially here in Europe) and it’s little not-yet-so-popular brother Thunderbird is evolving too. While I’m happy that they’re contributing their part to bring Free Software to the masses, I’m concerned that the quality of their software (especially Firefox under Linux) has decreased in the last months. Here are my top 5 annoyances for Firefox and Thunderbird. Some of them only apply to Debian’s version others are more visible on my fairly old and “slow” (1.5GHz/512MiB) Laptop than on current and therefor faster machines: Firefox Thunderbird While I’m still happy with Thunderbird (or Iceddove as we call it here) I’m really searching for an alternative to Firefox (Iceweasel). Unfortunately there is currently no alternative available which fits all my needs. Firefox has two extensions no other browser seems to provide and without which I wouldn’t want to work anymore (I wonder if that was a proper English sentence…): While other browsers have some ad-blocking functionality too, they all seem to lack the filter set updater. The next best alternatives are Konqueror and Epiphany but besides the lack of the above features every one of them has it’s own little quirks which doesn’t really motivate me to make the switch yet. But Konqueror is making progress and I’m really looking forward to KDE4 which will hopefully bring a usable web browser so I can finally get rid of Firefox. Update: Ooops, I nearly forgot my favorite pet annoyance of Firefox under Linux: Why does it have to insult the user’s eyes with this ugly toolkit when drawing check boxes, line edits, buttons etc? Firefox under Windows paints stuff like that according to Windows’ current theme, Konqueror under Linux as well, but what does Firefox for years?

Russell Coker: IT Recruiting Agencies - Advice for Contract Workers

I read an interesting post on Advogato about IT recruiting agencies (along with an interesting preface about medical treatment for broken ribs). Their report closely mirrored my experience in many ways. Here are what I consider to be the main points for a job applicant dealing with recruiters:
  1. Ask more than you believe that you are worth - the worst they can do is say “no” (and you will feel like a fool if the agency pays you less than half what the client pays because you didn’t ask for enough).

  2. Put lots of terms in your CV that will work for grep or other searches. A human who reads your CV will know that if you describe 3 years of Linux sys-admin experience that you can do BASH shell scripting and sys-admin work on other versions of Unix. But if a search doesn’t match it then the typical recruiting agent won’t offer you the position. I have idly considered saying things like “Perl (not Pearl) experience” to catch mis-spelled grep operations.

  3. Recruiting agents will frequently demand that you re-write your CV to match a position that they have open, they will say things such as “you claim 3 years of shell scripting and Perl experience but I don’t see that on your CV” and insist that you re-write it to give more emphasis to that area.

  4. Most recruiting agents are compulsive liars and don’t understand computers, you have to deal with the fact that to get most of the better paying positions you need to have an incompetent liar represent you. Avoid the stupid liars though. For example I once refused to deal with an agent who told me about his plans for stealing the CV database from the agency he worked for and selling it to another agency - not because he was shifty in every possible way, but because he was so stupid as to boast about such things immediately after meeting me on a train.

  5. Expect that recruiting agents won’t understand the technology. If you politely and subtly offer to assist them in writing a letter to a client recommending you then they will often accept. Why would they go to the effort of assessing your skills and writing a short letter to the client describing how good you are when you can do that for them? On one particularly amusing occasion I was applying for a position with IBM and the recruiting agent had been supplied with a short quiz of technical skills to assess all applicants - they gave me the answer sheet and asked me to self-assess (I got 100% - but it was an easy test and I would have got the same result anyway).

  6. Some levels of stupidity are so great that you should avoid dealing with the agent (and possibly the agency that employs them). Being unable to view a HTML file is one criteria I have used since 1999 (every OS since about 1998 came with a web browser built in). Another example is an agent who tried to convince me that “.au” is not a valid suffix for an email address (I was applying for a sys-admin job with an ISP). Job adverts that mis-spell terms (such as Perl spelled at Pearl) are also a warning sign.

  7. Gossip is important to your business! Some agencies will pay you what you earn and merely terminate your contract when things go wrong. Other agencies will refuse to pay you when things go bad, or even demand that paid money be returned and threaten legal action. Talk to other contract workers in your region and learn the goss about the bad agencies. Also track agency name changes, when a bad agency changes name don’t be fooled.

When applying for a position advertised by an agency you will ideally start by seeing an advert with a phone number and an email address. The best strategy in that case seems to be to send your CV with a brief cover letter and then about 5 minutes after your mail server sends the message to their mail server you phone them. I found that I got a significantly higher success rate (in terms of having the agent send my CV to the client) if I phoned them when my CV arrived. Sometimes a fax number is advertised, unless there is some problem that prevents sending a document via email (such as the agency having a broken mail server) then do not FAX them. A faxed document will have to be faxed on to the client and will look bad after the double-fax operation and will prevent the agent from grepping it. Rumor has it that agents will often post fake adverts for the purpose of collecting CVs (so that they can boast to clients In most situations a recruiting agent should insist on meeting you for an interview before sending your CV to a client. The only exception is if you are applying for a job in another country. Meeting an agent at a restaurant or other public place is not uncommon (often they want to meet you while travelling between other locations and sometimes their main office is not in a good location). I suspect that some agencies start with a “virtual office” and perform all their interviews in public places (this doesn’t mean that they will do a worse job than the more established agencies). If an agent is prepared to recommend you to a client without meeting you then they are not doing their job properly. It used to be that there were enough agencies pretending to do their job that you could ignore the agencies that will recommend any unseen candidate. But now an increasing number of agencies do this and if you want a contract you may have to deal with them. When an agency has a fancy office keep in mind that they paid for it by taking money from people like you! For contract work a recruiting agent is not your friend, they make their money by getting you to accept less money than the client pays them - the less they pay you the more money they make. A common claim is “we only take a fixed percentage of what the client pays”, but when you ask what that percentage is they refuse to answer - I guess that the fixed percentage is 50% or as close to it as they can manage.

Russell Coker: IT Recruiting Agencies - Advice for Contract Workers

I read an interesting post on Advogato about IT recruiting agencies (along with an interesting preface about medical treatment for broken ribs). Their report closely mirrored my experience in many ways. Here are what I consider to be the main points for a job applicant dealing with recruiters:
  1. Ask more than you believe that you are worth - the worst they can do is say “no” (and you will feel like a fool if the agency pays you less than half what the client pays because you didn’t ask for enough).

  2. Put lots of terms in your CV that will work for grep or other searches. A human who reads your CV will know that if you describe 3 years of Linux sys-admin experience that you can do BASH shell scripting and sys-admin work on other versions of Unix. But if a search doesn’t match it then the typical recruiting agent won’t offer you the position. I have idly considered saying things like “Perl (not Pearl) experience” to catch mis-spelled grep operations.

  3. Recruiting agents will frequently demand that you re-write your CV to match a position that they have open, they will say things such as “you claim 3 years of shell scripting and Perl experience but I don’t see that on your CV” and insist that you re-write it to give more emphasis to that area.

  4. Most recruiting agents are compulsive liars and don’t understand computers, you have to deal with the fact that to get most of the better paying positions you need to have an incompetent liar represent you. Avoid the stupid liars though. For example I once refused to deal with an agent who told me about his plans for stealing the CV database from the agency he worked for and selling it to another agency - not because he was shifty in every possible way, but because he was so stupid as to boast about such things immediately after meeting me on a train.

  5. Expect that recruiting agents won’t understand the technology. If you politely and subtly offer to assist them in writing a letter to a client recommending you then they will often accept. Why would they go to the effort of assessing your skills and writing a short letter to the client describing how good you are when you can do that for them? On one particularly amusing occasion I was applying for a position with IBM and the recruiting agent had been supplied with a short quiz of technical skills to assess all applicants - they gave me the answer sheet and asked me to self-assess (I got 100% - but it was an easy test and I would have got the same result anyway).

  6. Some levels of stupidity are so great that you should avoid dealing with the agent (and possibly the agency that employs them). Being unable to view a HTML file is one criteria I have used since 1999 (every OS since about 1998 came with a web browser built in). Another example is an agent who tried to convince me that “.au” is not a valid suffix for an email address (I was applying for a sys-admin job with an ISP). Job adverts that mis-spell terms (such as Perl spelled at Pearl) are also a warning sign.

  7. Gossip is important to your business! Some agencies will pay you what you earn and merely terminate your contract when things go wrong. Other agencies will refuse to pay you when things go bad, or even demand that paid money be returned and threaten legal action. Talk to other contract workers in your region and learn the goss about the bad agencies. Also track agency name changes, when a bad agency changes name don’t be fooled.

When applying for a position advertised by an agency you will ideally start by seeing an advert with a phone number and an email address. The best strategy in that case seems to be to send your CV with a brief cover letter and then about 5 minutes after your mail server sends the message to their mail server you phone them. I found that I got a significantly higher success rate (in terms of having the agent send my CV to the client) if I phoned them when my CV arrived. Sometimes a fax number is advertised, unless there is some problem that prevents sending a document via email (such as the agency having a broken mail server) then do not FAX them. A faxed document will have to be faxed on to the client and will look bad after the double-fax operation and will prevent the agent from grepping it. Rumor has it that agents will often post fake adverts for the purpose of collecting CVs (so that they can boast to clients In most situations a recruiting agent should insist on meeting you for an interview before sending your CV to a client. The only exception is if you are applying for a job in another country. Meeting an agent at a restaurant or other public place is not uncommon (often they want to meet you while travelling between other locations and sometimes their main office is not in a good location). I suspect that some agencies start with a “virtual office” and perform all their interviews in public places (this doesn’t mean that they will do a worse job than the more established agencies). If an agent is prepared to recommend you to a client without meeting you then they are not doing their job properly. It used to be that there were enough agencies pretending to do their job that you could ignore the agencies that will recommend any unseen candidate. But now an increasing number of agencies do this and if you want a contract you may have to deal with them. When an agency has a fancy office keep in mind that they paid for it by taking money from people like you! For contract work a recruiting agent is not your friend, they make their money by getting you to accept less money than the client pays them - the less they pay you the more money they make. A common claim is “we only take a fixed percentage of what the client pays”, but when you ask what that percentage is they refuse to answer - I guess that the fixed percentage is 50% or as close to it as they can manage.

13 August 2007

Romain Francoise: Shared links for 2007-08-13

Benjamin Mako Hill: Ubuntu Book Translations

It's been fun to see a stream of translations of the The Official Ubuntu Book coming in. I now have copies of El Libro Oficial de Ubuntu and Das Offizielle Ubuntu-Buch on my bookshelf. I'm particularly happy about Ubuntu The Official Ubuntu Book , the Japanese translation. It was coordinated by the Ubuntu Japan community, looks great, and has won me all kinds of brownie points -- and a congratulatory bottle of top shelf sh ch -- from Mika's family members.

Uwe Hermann: Linux on the Fujitsu Siemens Lifebook S-4572 Subnotebook

I recently bought a Fujitsu-Siemens LIFEBOOK S-4572 (sub)notebook on eBay for less than 150 Euros, a really great little machine. It's a Pentium III, 750 MHz, 256 MB RAM (the chipset cannot handle more than that unfortunately), 12.1" screen, ethernet, 2x USB 1.1, CD-ROM/DVD reader + CD-ROM writer, PCMCIA, IrDA, modem, and a 15 GB hard drive. No floppy, no serial ports, no parallel port. There's no wireless builtin, but I use a cheapo PCMCIA adapter. The greatest feature compared to all other laptops I previously owned is that the battery life is really great, it lasts almost 3 hours (compare that to 45 minutes on my current "main" laptop). I'm running Debian unstable on the box (of course). Here's the Linux support status as far as I have tested things: Networking Works out of the box using the e100 driver. Sound Works out of the box using the snd_intel8x0 driver. X11 Works out of the box, using either the vesa or the ati driver (at a max. resolution of 1024x768). Touchpad Works out of the box. Using the Option "SHMConfig" "on" line in /etc/X11/xorg.conf's InputDevice section (using the synaptics driver) also works fine and allows you to scroll using the touchpad, e.g. in a browser. More info in the SynapticsTouchpad page on the Debian wiki. CDROM, DVD Reading CD-ROMs and DVDs as well as burning CD-ROMs works fine. I don't think the drive is capable of writing DVDs. External VGA Displaying the screen contents on an external VGA monitor (or beamer) works just fine, switching is done using Fn+F10. PCMCIA Works fine, tested using the Sitecom WL-112 wireless card. The driver installation for that is straight-forward, too:
$ apt-get install rt2500-source
$ m-a a-i rt2500-source
$ dpkg -i /usr/src/rt2500*deb
Special keys All the Fn-keys work fine (brightness, volume, etc.). There are five other special keys (for starting a browser or something) which I haven't tested, but I don't really care... USB Works fine, but it's only USB 1.1, so some higher-speed devices will not work (DVB-T USB devices for example; PCMCIA DVB-T adapters might work). IrDA, Modem Untested, I don't care. Powersaving, Suspend to RAM It seems this CPU (Pentium III, Coppermine) doesn't support frequency scaling, so cpufreq-set doesn't work. I'm using laptop-mode-tools to improve battery life a bit more, though. Also, Suspend-to-RAM works fine out of the box:
$ apt-get install hibernate
$ hibernate-ram
I haven't tested Suspend-to-Disk yet, but I'm not sure it'll work anyway, as I'm using a dm-crypt'ed disk (+ LVM), as with all my boxes. lspci
00:00.0 Host bridge [0600]: Intel Corporation 82440MX Host Bridge [8086:7194] (rev 01)
00:00.1 Multimedia audio controller [0401]: Intel Corporation 82440MX AC'97 Audio Controller [8086:7195]
00:00.2 Modem [0703]: Intel Corporation 82440MX AC'97 Modem Controller [8086:7196]
00:07.0 Bridge [0680]: Intel Corporation 82440MX ISA Bridge [8086:7198] (rev 01)
00:07.1 IDE interface [0101]: Intel Corporation 82440MX EIDE Controller [8086:7199]
00:07.2 USB Controller [0c03]: Intel Corporation 82440MX USB Universal Host Controller [8086:719a]
00:07.3 Bridge [0680]: Intel Corporation 82440MX Power Management Controller [8086:719b]
00:12.0 Ethernet controller [0200]: Intel Corporation 82557/8/9 [Ethernet Pro 100] [8086:1229] (rev 09)
00:13.0 CardBus bridge [0607]: O2 Micro, Inc. OZ6933/711E1 CardBus/SmartCardBus Controller [1217:6933] (rev 02)
00:13.1 CardBus bridge [0607]: O2 Micro, Inc. OZ6933/711E1 CardBus/SmartCardBus Controller [1217:6933] (rev 02)
00:14.0 VGA compatible controller [0300]: ATI Technologies Inc Rage Mobility P/M [1002:4c52] (rev 64)
01:00.0 Network controller [0280]: RaLink RT2500 802.11g Cardbus/mini-PCI [1814:0201] (rev 01)
Other resources I'm really considering making this my "main" box even though it's a bit older/slower, as my current laptop with 45 minutes battery life is a major pain when travelling...

12 August 2007

Per Olofsson: Xorg and widescreen

When I got myself a widescreen LCD monitor, it didn't quite work as expected. The image showed up on the screen, but squeezed down to the wrong format. Fixing it was not trivial. Apparently, X uses the video mode supplied by the monitor through EDID, but the video mode is wrong. Whether this is because the monitor sends the wrong information, or because of a limitation in the EDID format, I don't know. Anyway, here's how I got it working. Note that I have an Intel graphics card and I use the new "intel" video driver. It might not work for your particular configuration. First, I generated a modeline with the cvt command. CVT means "Coordinated Video Timing", and it's some kind of VESA standard. Run the cvt command with the horizontal and vertical resolution as arguments:
$ cvt 1680 1050
# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
Now, put the modeline in the Monitor section of /etc/X11/xorg.conf:
Section "Monitor"
    Identifier  "Generic Monitor"
    # 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
    Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
    #
    Option "Preferred Mode" "1680x1050_60.00"
EndSection
The Preferred Mode option is needed so that the mode is actually chosen. In my case, I have a laptop, so there's also a built-in display, but the mode will not be used on it (the card knows the supported resolutions somehow). In order to be able to switch to a higher resolution when initially using a lower one, the framebuffer needs to be initialized to be big enough. This can be done in the Display subsection:
Section "Screen"
    ...
    SubSection "Display"
        Virtual 1680 1050
    EndSubSection
EndSection
Here's an interesting thing: the old Modes directives are not needed anymore. They are ignored by the intel driver. You only need one generic Display subsection. That's about it. The display should work automatically if it is connected when X is started. If it is connected afterwards, you can enable it with:
xrandr --output VGA --auto
It can be disabled with:
xrandr --output VGA --off
At least when running Gnome, the window manager automatically fits everything to the right screen size. See the xrandr(1) manual page for more options.

Bernhard R. Link: Using Xephyr

When debugging window managers or testing your X applications in other window managers, running them in an dedicated fake X server can be quite nice. While every reasonable complete window manager (even the old twm and vtwm can, and of course all of fvwm, qvwm, wmaker, ratpoison, ...) can replace itself with any other, running a window manager in a window of its own makes many things easier: single-stepping a window manager within a debugger when that debugger runs in an Xterm on the same server is no fun. And if some testing needs a more complicated setting, switching may destroy that. And it is just more comfortable to have the editor handled by your favorite WM, while you need another WM to test some aspects of an program. (It&aposs hard to see if inital sizes and layouts work well, when your WM does allow windows to choose their size. And if your WM does not have a bug another has, it&aposs easier to test a work around in the other than trying to port the bug ;-> )

So, here is some example invocation I use:
     #!/bin/sh
     Xephyr :2 -reset -terminate -screen 580x724 -nolisten tcp -xkbmap ../../../../../home/brl/.mystuff/dekeymap -auth ~/.Xauthority &
     export DISPLAY=:2
     icewm
     


Which Options are useful depends on what to use it for:

-reset -terminate means to terminate when the last child exited. This is usefull if you want it go away fast. Not usefull if you want to switch window managers without other clients running.

-screen 580x724 tells how big the window should be. This is just the size of one of my working frames, so it integrates well into my workspace. (It would be nice if Xephyr could change its resolution uppon resize of the window, though i fear programs will either be confused when the size of their X server changes unadvertised or because of too many advertisements of its changing).

-nolisten tcp as there i no need to let the world speak to your X server

-xkbmap ../../../../../home/brl/.mystuff/dekeymap I gave up figuring out how to select a German keyboard, so it justs gets 8 lines of fake description only specifing German keyboard.

-auth ~/.Xauthority tells Xephyr to require authentication. Without this everyone is allowed to control your sub X-server and all programs within it. Don&apost forget to create an token before with xauth add, though.

11 August 2007

Brice Goglin: Debian/X.org notes - Where are Compiz shiny effects?

Several people complained that Compiz 0.5 did nothing for them, while it is supposed to bring lots of shiny effects. The reason is that most plugins are disabled by default. They should be enabled using gconf (for instance using gconf-editor or gconf-tool), in key /apps/compiz/general/allscreens/options/active_plugins. One correct config may be set with
    $ gconftool --set /apps/compiz/general/allscreens/options/active_plugins --type string
    '[gconf,decoration,wobbly,fade,minimize,cube,rotate,zoom,scale,move,place,switcher,screenshot,resize]'
At least png, svg, cube, rotate, place, plane, wobbly, scale are usually interesting. But, there are dependencies between plugins, so you need to place them in a correct order in the list. Each plugin has a require option which tells you which other plugins should be loaded earlier. There are many other options. Fortunately, some graphical configurators are supposed to arrive in the near future...
(Permanent link) 

9 August 2007

Evan Prodromou: 21 Thermidor CCXV

So, a few weeks ago (Journal/22 Prairial CCXV) I expressed some discomfort about the Mister Wong logo. I'm very happy to see that the company has taken my and other people's uneasiness into consideration and removed the logo from their site. They've started a new Mister Wong logo contest with a grand prize of $6000 (American, assumably) and two second prizes of $3000. That's a pretty good cash-out for a logo contest; Mister Wong is also a high-profile and growing site. I hope some of my designer friends and colleagues decide to jump in. (Yeah, Brigitte, Marie-Claude, Patrick, and Mark, I mean you!) I think it's definitely an interesting challenge for someone doing identity work. I'm not going to join the contest, though. My only idea right now is to do a copy of the current Mister Wong logo (same gray suit and tie) but with a Caucasian man's face instead. The sub-title? It can't be Wong when it feels so white. Yeah, that's why I don't get the big bucks in the corporate identity biz. tags:

Back on Planet So, I got a lot of feedback about removing my blog from Planet Debian -- all of it bad. People really felt that it was important for all Debian developers to be able to say their piece on PD. So, I re-instated it this morning. I'm going to try to make some changes to fix the main thing that seems to bother people: that my post titles are the current date in the French Revolutionary Calendar. For some reason, that really gets under people's skins. Unfortunately, a few things on my (hand-coded) wiki-blog site expect that format, so it's going to be a little tricky. One thing I might do is create and distribute a Greasemonkey script for planet.debian.org (and p.d.net) that seeks out titles that look like French revolutionary calendar dates and replaces them with a random selection from an array of more typical blog post titles:
  • "Some thoughts"
  • "A funny thing happened today"
  • "What I've been doing lately"
  • "Depressing thought"
  • "Haven't blogged in a while"
  • "WTF!?!?!"
  • "My opinion"
  • "Random notes"
  • "IMHO"
  • "Snapshots from my life"
  • "Further proof that we live in a crazy world"
  • "Memo to myself"
Any other suggestions for all-purpose blog-post titles to add to the array are welcome. tags:

Michael Janssen: UI Peeves: Locking, Proximity and Purpose

I have had, on occasion in the past, a reason to use the wonderful TortoiseSVN software. It is, by all standards, a really great solution for someone wanting to use SVN in a MS Windows environment, and uses the official svn client in order to leverage open source as much as possible. Recently I have been using it a bit more as I work at Honeywell as a programmer. I've come across a couple things that bug me about the interface.

The first is that some actions inexplicably lock the place that initiates that action. The best example I have of this is when I am looking at the window for an Update, and want to see what happened in the log, I click the button to open the log, and I can't use the window while the log downloads. Sometimes this can be an issue because the server is pretty slow at producing logs for some reason (it's beyond me, and NotMyProblem(tm) because I'm not in charge of the admin). This makes it irritating because I can't inspect other files while the log is downloading. Strangely, the server actually will return other requests quickly, like the request needed to see the diff between the working copy and the tree. It would be much better if the windows were separate - they're not related to each other in effect, so the locking of the initial window is completely useless. I could have called up the log from another action, that would leave the update window perfectly usable, so I know it's possible.

The second problem that I have run across more than once relates to the proximity of actions in the right click menu while committing a change. Take a look at the screenshot of this menu.
TortoiseSVN commit context menu

There have been many times when using this window that I realize that I forgot to add a file that I need to commit, so I right click on the file and move down to the "Add" menu item, only to miss and click on the "Delete" item. "Delete", when used on a unversioned file, performs a windows delete, causing me to curse at the (now missing) entry in the commit log and go running to the recycle bin to retrieve this temporarily lost file. These two options in the context menu are entirely too close to each other. The "Delete" and "Add" actions have completely opposite meanings and effects, and having the program do exactly the opposite of what you expect is what I consider to be a Very Bad Thing. I would move the "Add" action up to the top of the list (it is, by far, the most common reason for me to use the context menu), or at least place another menu item in between.

I'm feeling like I'm being very unhelpful here, complaining about these issues in an open source project and not producing a patch to fix these issues. I may produce one in the near future - unfortunately when I'm not at Honeywell, I don't really have a Windows development environment setup.

Comments: (1) Trackbacks: (0)

Comments
  1. JD: The reason diffs are quick is because svn keeps a copy of the original file in the checkout, so diffs and reverts don't need to hit the server.
Trackbacks
  1. No Trackbacks

8 August 2007

Russell Coker: Tactical Voting

In response to a blog conversation on Planet Debian, Wouter Verhelst writes about voting tactics in which he claims that Instant-Runoff (wikipedia) (the method used in Australia to elect members of the house of representatives) is broken. I have read the Wikipedia review and neither it nor my previous understanding of Instant-Runoff leads me to believe that it is broken or prone to tactical voting problems. The main tactical voting issue in Australian elections is to give first preference to a small party (such as The Greens) in a seat where there is almost no chance of the small party winning. The idea is to have the vote effectively be a vote for whichever of the two major parties the voter prefers while also sending a message (by the first-preference votes which are widely publicised) as to their desires. If a major party wins a seat while 20% of the first preferences went to the Greens then they might find it an incentive to try and get some Green policies adopted if they want to win the next election (whether this actually works is debatable but it is a fact that people try it). There are many people who don’t understand how the Australian voting system works and believe that they have to vote for one of the major parties to avoid a “wasted vote”. This is not due to the voting system but due to American media - and ill-educated Australians who can’t work out which parts of the news apply to them. Wouter has an advantage in living in a country where English is not the primary language - English news does not directly concern him and his country-men can probably work out that English-language voting instructions should not be followed! The condorcet.org site has a useful analysis which demonstrates one theoretical flaw in IR, but realistically getting the average voter to use Condorcet would essentially be an IQ test as a pre-requisite to voting (numbering all the candidates in order for IR is difficult enough). The fact that an election system is not theoretically fair is not a valid criticism unless there is a viable alternative which is better. If the lower house is to actually represent the people of each electorate (which is rarely the case nowadays) then IR seems to be the best option. If members of the lower house are not expected to represent geographic regions then Wouter’s advocacy of proportional representation makes sense. As for the Australian Senate, the voting system for that is far too complex and I think that as a matter of principle any voting system which can not be understood by the majority of voters is wrong. A good case could be made for proportional representation in the senate. Update: In response to Wouter’s post - tactical voting that doesn’t change the outcome of the election and merely sends a message to a political party is OK IMHO. But if you convince enough people that tactical voting is the only option in the US then the result may change.

7 August 2007

Lars Wirzenius: Random thought: Productivity fear

Every time I do a "Getting Things Done" weekly review, I am amazed at how easy it is, and also how much it energizes me. Yet every time it is time to start one, I fear it, and procrastinate, sometimes for several weeks. Obviously I have a deep-set fear of being productive.

Neil McGovern: And the winner is...

MJ Ray posted a couple of short summaries as to how the election would have turned out if alternate voting systems had been used. A couple of people asked about others, so here's a nice long list:

Borda,
Borda Elimination,
Minmax,
Nanson,
Ranked Pairs,
Condorcet (SPI),
Condorcet (Debian):
Bucklin:
IRV,
Pluralty:
Most of these seem to come out in favour of the result we achieved with Condorcet. Plurality (aka: First past the post) and IRV put heavy emphisis on the voters first choice. It doesn't really make sense to compare results from a condorcet ballot with either of these methods. Bucklin is rather meaningless in a multi-winner election.

In answer to "is this type of Condorcet ever likely to elect someone who polarises views", it's possible, but unlikely. IRV and Pluralty are the ones to go for if you want the majority of people unhappy, unlike the others, which produce the majority of people happy.

Andrew McMillan: Really Simple CalDAV Store - August 2007 Status

Having taken time out to go to the other side of the world to attend DebConf 7 in Edinburgh, and then after spending some time with my family, I have been somewhat distracted from things CalDAV for a wee while now. There are signs that I will be able to put a few more evenings and weekends into it in coming months. Current Status With the release of 0.8.0 I believe it is quite a usable application for shared group calendars. We use it at Catalyst for about 80 staff and, while we're not heavy calendar users, it manages without any noticeable performance problems. There have been an impressive number of downloads from Sourceforge, as well as substantial downloads from my Debian repository, and I believe that the program is in tens, if not hundreds, of installations. Future Plans In the immediate future I want to get the basic framework for querying properties about the owner of a calendar or a set of calendars. This will be used by Mozilla soon during their configuration of a new CalDAV source, and I think that Apple iCal probably uses them already. This is partly done, but it's implementation has been slowed by the necessity to refactor the handling of the REPORT method in general to make the code more modular and readable, and to support queries and properties in a more general manner. The refactoring of the REPORT method handling is in place now, so moving on to the handling of DAV:principal objects should become fairly straightforward. I may end up with a fair bit of quiet, undistracted time over the coming weekend so if I can get in the 'zone', it may get done, and we can start rolling towards a release 0.9. Release 0.9 will have a new name. One from the cast of thousands that have been submitted to me so far, or one that I will hastily think up in between, but the next released version will not be called RSCDS any longer. The main goals for further into the future are: Interoperability I think that RSCDS does fairly well on the interoperability front. Unfortunately I have no access to the preview of OS 10.5, with it's native CalDAV client (though I have been told that it works with RSCDS). Likewise, other commercial CalDAV clients aren't available to me for testing either, so I have concentrated my efforts on supporting the featureset used by the various free CalDAV clients. My initial work focused around supporting Evolution, in particular, but with the recent effort put in by the Mozilla Calendar team the primary interoperability challenge is to enhance RSCDS to support their areas of development. If I could see how the OS 10.5 client behaves, too, I believe that would help identify a few points to extend, as well as suggesting some future directions. The best place to review interoperability would probably be at the CalConnect Roundtable 10 but I think that without some sponsorship for airfares I probably won't be able to make that. Maybe next time. Specifications Compliance As I read, and reread, the CalDAV (and DAV, and HTTP, and ...) RFCs the compliance with the various specifications improves. Recently I have put a lot of work into the calendar-query report, in particular, which means it now supports querying against arbitrary properties much more comprehensively. This is important because some of the client software is starting to do arbitrary queries also, and it is inevitable that queries for the classification of events, or the percentage completion of todo items will become more common. And now I notice that there is a new version of DAV in RFC4918, though not too many changes as far as I can see. The intent of this release is mostly to clarify, and slightly to extend, primarily in order to improve client interoperability. Coverage of Related Specifications In terms of general calendaring activities, the biggest hole in the CalDAV specification at present is standardisation around the location of other people's schedules. The current draft of the Scheduling Extensions to CalDAV appears to address that, and a lot more besides. I expect to start working on parts of this at some point, but perhaps not sooner than I see a client which starts using it, or when it is ratified, whichever occurs soonest. Documentation The documentation is OK. The wiki, in particular, is a reasonable resource for resolving problems (I believe), but it would be good to have some documentation of other things. One area that could do with enhancement is some documentation of how to check out a copy of the code, and how to provide patches back to me. Even better if other people can maintain their own trees which I could pull patches from, since we're using a distributed version control system (Git) to start with. Configuration The administration interface for RSCDS is OK, but could do with a few improvements to make it more usable. Really there are not a lot of reasons to be in the administrative interface, so these improvements should be relatively few, and relatively easy. This would be a good area for someone interested in helping out to become involved, because it does not entail reading large reams of RFCs, or watching tcpdumps scroll past for the debugging. Installation One thing that I have done right, I believe, was to provide the software from the beginning in a packaged form to make the installation easier. Although the software is packaged for Debian, however, it has not yet been uploaded to the archive because I have been waiting for the webapps-common package to enter Debian so I can use that for configuration. I think I have waited long enough though, so I will upload the next version to Debian for use by a wider audience. Security Security has always been a focus for me and I have had the code reviewed for any obvious security flaws. If any particular vulnerabilities are found they will be addressed with appropriate haste. Retrospective I've been working on this for a little over a year now, and I think I have largely met my goals for the project. It has certainly been an educational experience for me, and the effect of this work on other projects that I also participate in has also been valuable. Any new open-source project is always at risk of the developer losing energy and interest, but I believe this one has made it to a state where the bulk of the infrastructure effort has been done, and there are enough interesting challenges in the future to continue to keep me (at least) working on it into the future. The scope of this project is good, in that it is not at risk of expanding to take over the world. The intention behind this is simply to provide a back-end service for client software which should be very much Someone Else's Problem. In reality there have been times when I have had to get to grips with some of that client software in order to resolve problems, but those have by and large been good experiences.

MJ Ray: SPI Election Results

I wasn't elected to SPI's board. I didn't think I would be once I saw all the other candidates (I nominated before all declared), but it looks like I would have been elected with those votes under some other common systems. I think both first-past-the-post and alternative vote (also known as instant run-off voting, reportedly recommended by Robert's Rules for election-by-mail) would have resulted in this same board:
  1. Bdale Garbee
  2. David Graham
  3. Joshua D. Drake
  4. Martin 'Joey' Schulze
  5. Luk Claes
  6. MJ Ray
Instead, the results were:
  1. Bdale Garbee
  2. David Graham
  3. Luk Claes
  4. Joshua D. Drake
  5. Joerg Jaspert
  6. Martin Zobel-Helas
Nevertheless, well done to the new members. On one hand, I'm happier, because there's still two of my top four there and now I've less required work. On the other hand, I would have liked a crack at it myself and both boards are disappointing because there's no Ian Jackson. An interesting thing is how many times I appear in each position in voting lists: (5, 1, 2, 1, 9, 6, 6, 3, 3, 4, 2, 9, 37), or as a bar chart:
  1. st
  2. nd
  3. rd
  4. th
  5. th
  6. th
  7. th
  8. th
  9. th
  10. th
  11. th
  12. th
  13. th
A fairly acceptable middle-of-road candidate for most of it, but then a huge spike at the low end. Note that a majority of voters put me in positions 11-13. There wasn't much warning of that one coming during hustings. WTF? There seem to be some 30 or 40 voters who really dislike me, but didn't tell me that straight, preferring to be silent then vote me down. Are you cowards, or what? More generally, is this type of Condorcet ever likely to elect someone who polarises views, or who many inexplicably dislike? What does this say for any plan to use a Condorcet for debian's social committee? Could majorities always prevent minority reps? Update: Neil McGovern posted a few comparisons of more complex systems (I only did the easy ones) and AJ posted STV results which completes the main systems, I think. It seems Condorcet-SPI wasn't as unusual as I first thought. Finally, as I understand it, turn-out was 25% of voting members (not the 25% of SPI members that some press reported). Why was turn-out so low? (2007-08-08: 1 pingback, 3 comments)

Thijs Kinkhorst: Feeling sorry

Today I tried to cancel my phone line from KPN, the national phone company. First, their website has this text:
Misschien ben je teleurgesteld of vind je een dienst te duur. Dat vindt KPN erg jammer, maar vooral vervelend voor jouw.
Apart from the blatant spelling error, it says that "KPN regrets this, but especially feels sorry for you." The pretense that their services are so great, they need to feel sorry for me canceling... Next up I call the mentioned number. After selecting the right option, the voice tells me: "An error has occurred." (in English!) and the connection is terminated. This is a reproducible problem. As a telephone company, they cannot make their own voice response system work. I'm not sure who they should be feeling sorry for...

6 August 2007

Julien Blache: Good bye Linbox

As some of you may know, I’ve been working with Linbox for the past 3 years, on and off, part time and full time, depending on the time of the year. I won’t be working with Linbox anymore after Mandriva, which has bought Linbox back in June, decided Linbox wouldn’t go ahead in the Enterprise VoIP business. I have been, for the past 2 years, the architect of Linbox’ VoIP solution. This unfortunate and ill-advised decision of stopping the development of a successful product at its beginning will effectively leave the current customers out in the cold, as technical support will probably be erratic at best. Looking back in the mirror, I’ve done a lot of things, small and big, during these 3 years: And, more importantly: I’m especially proud of that; the solution was ready for that moment, and my deployment plan proved to be the right one and flexible enough to account for everything that wasn’t ready in time (missing network infrastructure, things that had been forgotten on the client side, things that didn’t go as planned and last minute changes to accommodate users’ needs). The customers were very happy and enthusiastic with regard to their new VoIP infrastructure - so much that there was more to come. And more to come means more business for a company that definitely needs it, and is now turning that business down. So it’s all over now, and overall I’ve had a good time working there with the technical team. They’re all very talented, and we were 3 DDs working there - that figure is now down to 1 (yes, one, as in 3 - 2 = 1). I’ve been able to produce a really great free (as in speech) Enterprise VoIP solution that I liked quite a lot. I had great plans for the LIPS, but couldn’t carry out much of that until it was integrated into the Linbox Management Console. In the last weeks, I’ve had confirmation that my plans were right and I was going the right way. That’s history now, and I’m looking at what I’ll be doing next. It’s good because I can look for a job that either involves VoIP or not; it’s good to change after a while. It sucks because looking for a job sucks.

Uwe Hermann: Rebuilding the whole Debian archive using the Open64 compiler

I got bored recently, so I rebuilt the whole Debian archive on one of my machines. To make this not a completely useless excercise, I used the Open64 compiler instead of gcc and created build logs for your perusal. So what is Open64? From the Wikipedia page:
Open64 is an open source, state-of-art, optimizing compiler for the Intel IA-64 (Itanium), AMD Opteron and Intel IA-32e architecture. It derives from the SGI compilers for the MIPS R10000 processor. It was released under the GPL in 2000, and now mostly serves as a research platform for compiler and computer architecture research groups. Open64 is licensed under the GPL. Open64 supports Fortran 77/95 and C/C++, as well as the shared memory programming model OpenMP. It can conduct high-quality interprocedural analysis, data flow analysis, data dependence analysis and array region analysis.
Open64 installation The installation is pretty easy fortunately:
$ wget http://ovh.dl.sourceforge.net/sourceforge/open64/open64-4.0-src.tar.bz2
$ tar xfvj open64-4.0-src.tar.bz2
$ cd open64-4.0
$ export TOOLROOT=/opt/open64
$ make
$ make install (as root)
I think you need gcc-3.4 (gcc 4.x is not yet supported), and for some odd reason you also need csh as one of the install scripts seems to use it. It would be nice if someone could package Open64 for Debian, I definately don't have the time to maintain such a huge package (a whole maintainer team would probably be good here). Rebuilding the Debian archive There are several possible ways (and tools) to rebuild the Debian archive; I've used pbuilder/cowbuilder with the rebuild scripts from Bastian Venthur, which are now included in pbuilder. First we need to install the required packages, setup a cowbuilder base chroot, and get the list of packages:
$ apt-get install cowdancer grep-dctrl wget devscripts sudo
$ cowbuilder --create --distribution lenny --basepath /var/cache/pbuilder/testing-base.cow
$ cp -r /usr/share/doc/pbuilder/examples/rebuild .
$ cd rebuild
$ ./getlist lenny
Now we add Open64 into the cowbuilder chroot and fix up the chroot by pointing the gcc/g++ symlinks to Open64:
$ cp -a /opt/open64 /var/cache/pbuilder/testing-base.cow/opt
$ chroot /var/cache/pbuilder/testing-base.cow
$ cd /usr/bin
$ mv gcc gcc.orig
$ ln -s /opt/open64/bin/opencc gcc
$ mv g++ g++.orig
$ ln -s /opt/open64/bin/openCC g++
$ exit
In addition, we set the CC and CXX environment variables to Open64, which will make 90% of all (autoconf-using) packages automatically use Open64. We need a small script for that:
$ cat c.cfg:
export CC="/opt/open64/bin/opencc -m32"
export CXX="/opt/open64/bin/openCC -m32"
Now edit the buildall script. Change the Debian mirror used there (optional) and make it use our c.cfg script by adding the --configfile /path/to/rebuild/c.cfg option in the "pdebuild" line. We can now finally start building the archive:
./buildall list.lenny.i386 lenny
You can also run multiple buildall instances at once to speed up the archive rebuild on SMP/multicore machines, and you can even abort the command and simply restart it later. The script will continue where it left off. Results The whole rebuild (with 2 instances of buildall running at the same time) took ca. 9 days on an AMD64 Athlon64 X2 (dual core, 1.8 GHz each) machine with 1 GB of RAM. I really should have used something like apt-proxy to speed up the rebuild and save some bandwidth, but I read about apt-proxy too late... All log files from my rebuild are available for detailed analysis if anybody is interested (you can browse the logfiles online or download all of them as tarball). I didn't perform any detailed analysis, just some rough numbers here: If anybody does some more elaborate analysis, please let me know.

Next.

Previous.