Monday, July 28, 2008

Sort-of Techical Problems, Sort-of Technical Solutions

I subscribe to the Boulder Linux Users' Group mailing list. It's my local LUG, it carries announcements of local events, and the posts are mostly technical.

Plus, when you know folks, it's fun to see what they think and how they write. I read the stuff Sean Reifschneider posts even when I have no clue what he's talking about.

The opposite's true, too. I started going to Dave Anselmi's Installfests just to meet him and Collins Ritchie. I'd been so impressed by their steady, helpful contributions to the mailing list that I wanted to see what they looked like.

Oh, sure, there's an occasional call to boycott a large company because they buy closed-source software.

In some cases, these move me to action. As soon as I learned Microsoft uses Microsoft products in-house, I stopped buying stuff from Microsoft.

In other cases, not so much. King Soops? I still shop there.

And, once in a while, some poster decides it's important we all read about their far-left political views. But what do you expect from the People's Republic of Boulder Linux Users' Group?

Mostly, though, the signal-to-noise ratio is high.

Just now, however, we've had a couple of back-to-back flamefests running that swamp out the parts I find useful.

At first, I thought, "Oh well. If this is going to turn into Slashdot, I'll unsubscribe."

Then I realized that I have a technical solution at hand. Gmail lets me, with a single keypress ('m'), mute threads I'm not interested in: they no longer show up in my mailbox. As long as no one hijacks the thread, by changing the subject line, I can go back to reading the stuff I'm interested in.

The thread, meanwhile, continues to go into my archives, so if I suddenly become passionate and want to flame, too, I can retrieve it.

I suppose there's a chance my mailbox will fill up with the stuff, but even if Google stopped giving me more space today, a quick back-of-the-envelope calculation says I'll be 72 before my mailbox fills up.

I can live with that.

I Need Google Gears, not Prism

The Lifehacker list of favorite software and hardware is mostly non-Linux or things like Gmail that I already use. Prism, however, is neither.

I've looked and I don't want it.

Prism, from Mozilla Labs, is a single-app browser. For example, it lets you create something that will run only RememberTheMilk. They call this a "customized webapp."

The advantage? It's distraction-free. The disadvantage? It's still a browser.

Unfortunately, mostly what I want isn't freedom from distractions, it's performance. My major annoyances aren't the icon that says I have new mail -- I put that icon there, after all -- but network slowdowns.

Unfortunately, the best solution I've seen, Google Gears, often isn't available for the webapps I use. I mean, there's no Google Gears for Gmail!

And often, it's broken. Every new Firefox seems to break Gears.

If Mozilla Labs wants to help me, I hope they put some time into fixing the last of these problems.

Sunday, July 27, 2008

Exporting HTML from Tomboy Notes

I've now tried Tomboy Notes, so I know what it can do.

spent part of yesterday fussing with a little Java/Design Patterns project. I made some progress, but the most practical benefit was taking notes on what I was doing with Tomboy -- not because the notes helped, but because I'd never really tried Tomboy out.

One useful feature is its "Export to HTML" option. I spent a few hours noting what I was doing, as I was doing it, then exported the note. Here's the result, with no editing. After the export, it puts up a web page in the browser. From there, getting it here took three keystrokes: mark all (^A), cut (^C), and paste (^V).

HFP-July 26

  • Unpacked a bunch of stuff from the book's web site. It includes code for all examples.
  • Learned, from one of the downloaded textfiles, that I can run using a classpath with java -cp.
  • Hacked their ant build.xml file to works with my weatherstation data.
  • Verified that ant, like make, notices times.
  • Fixed an eclipse installation hiccup by paying attention to eclipse's output, which told me how to fix it.
  • Put weatherstation under git, and tried out git commit --interactive
  • Put all this into Tomboy Notes in a notebook called hfp-diary, for an excuse to play with TN. Tried out fonts, exporting to HTML, navigating menus with the keyboard.
  • Successfully, though unintentionally, removed my entire project, including the git repository. :-( After my hacking build.xml, ant clean wiped the entire directory.
  • Copy the code over from the book, and experiment with various things in git, to try to keep from wiping out the code again.
  • Get rid of the project lines, so that the sucker will compile and run.
  • Figure out how to get a run configuration set up. This is tedious, but I suppose I'll get used to it.

Saturday, July 26, 2008

Character Mis-placement in Firefox

Can anyone tell me why the diacriticals in Hebrew-character fonts, like the ones in this article, are misplaced, when I look at it in Firefox?

If you look at words containing alephs, you'll see that most of them have a little mark underneath the character to its left. The mark should be under the aleph itself. This makes the words hard to read, and is a bit like having the dots on every 'i' appear over the following character.

Background info, not directly relevant.
  • The text is in Yiddish, not Hebrew. Yiddish is a Germanic language, like English, but uses the Hebrew alphabet for the same reason we use the Latin alphabet: the people who started writing the language picked an alphabet they already knew. Hebrew-language text has the same problem.
  • The diacriticals are under the following character, not the preceding one. Hebrew script, like this, is written right-to-left, not left-to-right.
  • The diacriticals change the character -- just like drawing a horizontal line across the top of an 'l' turns it into a 'T'. One of the characters is silent, a second is an 'o', a third is an 'a'.

Friday, July 25, 2008


ReviewBoard seems to be getting some interest as an open-sourced code-review tool. I like the slogan:

Code reviews are fun again! ...almost.

Wednesday, July 23, 2008

3 Things

Get CC stuff reproducible.
Fix LF build.
Read through Randy's document.

Monday, July 21, 2008


The newest "Plutoid" (almost a planet) is called makemake. The claim is that it's named after "a Polynesian creator of humanity and god of fertility."

Oh, nonsense.

Eclipse and Design Patterns

I'm learning design patterns. Frank Stahl told me, about a similar subject, "You sure do know how to have fun."

Marcia Derr and I went to Caffe Sole yesterday, in the heat, and tried to slog through the very beginning of Head First Design Patterns by Eric Freeman, et al. (O'Reilly and Associates).

The book is a little verbose and cutesy for all our tastes, but it's what we had. Mostly, we just tried figuring out how to compile and run Java programs and how to use Eclipse.

In the end, we got an example to run. The second example, we're still stuck on; they seem to use a class they don't supply a definition of.

Still, it was a pleasant way to spend a Sunday afternoon. Frank Stahl told me, about a similar subject, "You sure do know how to have fun."

Sunday, July 20, 2008

Command-Line Tricks

I got diverted by a presentation by Simon Myers this morning and have spent time messing around with the shell.

I've used these before, and particularly like shell-expand-line for editing my path.

Put this into ~/.inputrc and arrange to re-read it (say, by starting a new shell).
$if Bash
Control-x: shell-expand-line
Now you get this behavior from the shell (which is giving you command-line editing throug readline(3) ).
# now type control-x
$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/jsh/bin/bash_functions:/home/jsh/bin:/usr/local/libexec/git-core:
# and the path is there, ready for editing
I can get a lot of his tricks to work, but I can't bind "yank-last-arg" in vi mode. Works fine in emacs mode (Meta-.), but I'm a vi guy. I'm doing something wrong, but I don't know what.

Friday, July 18, 2008

A Tool With Many Uses: The Local Yum Server

I've set up a yum server, at work. This achieves several ends:
  • It lets us mirror the Fedora distro we're using locally, so we can pull and update packages faster.
  • It gives us a single place to stick third-party rpms. No more asking developers to "go out and get package X from web site Y."
  • It gives me a single distribution point for things I produce. I don't have to give developers a login on my box, or find a common server to ftp things to and from, I can just stick an rpm on the server and have them install it with yum.

Thursday, July 17, 2008

Expanding Windows, a Mouse-Click at a Time

I accidentally learned how to maximize my windows in just one direction: click a different mouse button.

At least in Gnome, clicking the "maximize window" decoration with the left mouse button expands it to the size of the screen (if the app permits).

However, clicking the same decoration with the right mouse button expands it horizontally, to the width of the screen, and clicking with the middle mouse button maximizes it vertically.

Paired, sequentially (right click, middle click) they act like a single left click. Indeed, they work the way you'd think in all combinations.


Wednesday, July 16, 2008

Setting Defaults Properly

Problem: I have a new developer who wants to check something into Subversion. He tries, and is mystified by svn's message, telling him he has to set the environment variable $EDITOR.

Solution: I tell him to set the environment variable.

(Okay, this should read "Problem: My software developers can't read." It's still a problem.)

git, in contrast, has this one figured out. From the git-config man page:
Commands such as commit and tag that lets you edit messages by
launching an editor uses the value of this variable when it is set,
and the environment variable GIT_EDITOR is not set. The order of
preference is GIT_EDITOR environment, core.editor, VISUAL and
EDITOR environment variables and then finally vi.
Yes, it isn't quite grammatical. The author's Finnish. Give him a break. "... and then finally vi." This because every Posix-conforming system is required to have a text editor named vi that acts according to the IEEE spec. (It can be a superset, like gvim, but it has to respond correctly to the basic commands.)

Richard Stallman and the FSF were asked for an emacs spec to put into Posix (Stallman named Posix, by the way), but they refused, so there's no guarantee that a Posix-conforming system will have it, out of the box.

A Twisty Maze of Symlinks, All Different: readlink -f

Which of the vi clones on your system are you using? Do you know?

In Linux, when more than one installed executable could reasonably have the same name a common solution is to make the executable in /bin or /usr/bin a symlink to an entry in /etc/alternatives.

The /etc/alternatives entry, in its turn, symlinks to the real executable. Or, maybe to another symlink to ...

Finding the ultimate executable in this twisty maze of symlinks, all different, can be an Adventure. The solution? readlink.

Here's an example, with java:
$ which java
$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 2007-11-05 15:14 /usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 36 2008-04-26 07:10 /etc/alternatives/java -> /usr/lib/jvm/java-6-sun/jre/bin/java
$ ls -l /usr/lib/jvm/java-6-sun/jre/bin/java
-rwxr-xr-x 1 root root 47116 2008-03-25 03:01 /usr/lib/jvm/java-6-sun/jre/bin/java
$ readlink -f /usr/bin/java
$ readlink -f $(which java)
Beware: readlink won't warn you if something's not a symlink (okay) or doesn't exist (not okay):
$ ls -l /home/jsh/java
ls: cannot access /home/jsh/java: No such file or directory
$ readlink -f /home/jsh/java
$ echo $?

Friday, July 11, 2008

Tom Tromey and Stormy Peters

Tom Tromey did a fun BLUG talk about emacs last night, with slides he did in, well, you know, emacs.

As you can see from the pictures, it's all downhill from here.

He recommends the emacs wiki, which is created with EmacsWikiMode.

Tom's worked on a pile of stuff over the years, including the Gnu Java compiler, and both automake and autoconf.

Perhaps the video will be up soon. I hope it does as much for his career as her recent talk at BLUG did for Stormy Peters.

What's the hardest thing about switching from emacs? Getting the deposit back when you return a garage full of empty Alt-Meta-Cokebottles.

Wednesday, July 9, 2008

It's Dead, Jim

When one of my machines, at work, died, I announced, "It's dead, Jim." (Damnit, Jim, I'm a doctor, not a system administrator!)

Bob Percival said, "... and it wasn't even wearing a red shirt."

Well, I knew how to fix that.

Seeing Colors when Colorblind, and an Admonition on Bug Reports

Here's a site that lets you fix your color presentations so the colorblind can see them, too.

Many folks don't realize that 8% of northern-European, white males are red-green colorblind. One in thirteen.

When I worked for a printer company, I tried to persuade them to make a color space that would transform images in the way this site does, but didn't make any headway. With frequencies like that, I figured we could make sales just by showing large-company CIOs the results. Once in every dozen or so, we'd get a guy who said, "At last!"

A former co-worker, Gary Stormo, got so fed up with presentations he couldn't follow that he made his point in a talk he was giving about his research. He put up a complicated graph, with half a dozen lines, all the same color, and said, "The red line shows ...."

I pointed some of my friends at "Daltonize," and Tom Schneider immediately found and reported a bug.
Here's his note.

Unfortunately, the image, which accompanies this post, bounced because their mail system decided it was too big.

Always make your mail system limits big enough to accept bug reports.
Dear Vischeck:

I tried your nice Daltonize program at

and was surprised one time to get the top two images from some other image, while the bottom two were from my image.

Looks like a bug where your system got the images confused.

Since this doesn't always happen I assume it means that two requests can end up in the same image space sometimes if they are made nearly at the same time. My guess is that this will be easy to fix in your code.

Tuesday, July 8, 2008

Hyperlinks to the CPAN

My resume now has hyperlinks.

My pal, Marcia, observed that now that you can put resumes on-line, you can have links in them.

I have one on Google Docs (not available for public consumption), so I spent time last night playing with that. In the process, I was pleased to discover that someone has put a few things I've done up on the Comprehensive Perl Archive Network.

Makes me think I should put more things on-line so I can link to them.

Monday, July 7, 2008

Portland Pics

I just went to visit my sisters, in Portland, for their birthdays. Hooray.

Here are some pictures. The first two are poppies. The next two are roadside weeds.