text-align=”justify” in future xmlroff

One of the longstanding problems for xmlroff has been that Pango didn’t do justified text. Not anymore. The blog entry by Behdad Esfahbod at http://mces.blogspot.com/2007/05/justified-text-with-pango.html shows that it has been implemented, and once it’s in a Pango release, xmlroff will be able to use it.

I found that blog entry by looking for mentions of kashida support in Pango, and it looks like that could be in the works too.

xmlroff has moved

xmlroff development has moved to a Trac and Subversion at http://xmlroff.org/. The xmlroff-list mailing list has also moved. Hosting for xmlroff.org is kindly provided by Patric Stout of the ISeeR web hosting and IT service company in the Netherlands.

The new arrangement makes it easier for everybody (not just me) to update the xmlroff website, and it makes it extremely easy to link between the website, the tickets (i.e., bug reports and feature requests, etc.), and both the source code and the change logs in the Subversion repository. I am already using the Trac tickets more than I ever used SourceForge tracker items.

Goldratt’s “Student Syndrome”

While reading Steve McConnell’s Software Estimation: Demystifying the Black Art (ISBN 0-7356-0535-1, and excellent, BTW), I found a reference to the magnificently named “Goldratt’s ‘Student Syndrome'”, characterised in the book as:

If developers are given too much time, they’ll procrastinate until late in the project, at which point they’ll rush to complete their work, and they probably won’t finish the work on time.

It’s almost worth not finding out more about it just so I can invent my own inaccuracies. You can imagine the cooperative response of a teacher the first time the following note is received:

Please do not penalise Johnny for late submission of his assignment. He was unable to finish on time as he suffers from Goldratt’s Syndrome.

It might almost work, once. It obviously wouldn’t work if the rest of the class who also evince the syndrome tried their luck the same way.

(And if you do want to find out more, there’s Wikipedia and Google.)

…a linear syntax for unranked, ordered and labeled trees.

It’s often interesting to see people’s sound-bite definitions of XML. The following, from Section 2.2 of the Static Validation of XSLT Master’s thesis by Mads Kristian Østerby Olesen, isn’t as forthright as Richard Gabriel’s but is interesting for assuming that you know about trees (in the computer sense) even if you don’t know XML:

XML is just a linear syntax for unranked, ordered and labeled trees.

Book Design

I both enjoyed reading Andrew Haslam’s Book Design (ISBN 1-85669673-9) and found it useful. And I dare say that Andrew Haslam must have enjoyed making it, particularly the sections demonstrating paragraph styles and text alignment styles.

I like Book Design because it covers a lot of ground and covers it well. It provides more narrative and examples than, say, Pocket Pal from International Paper but more practical details than, say, Richard Hendel’s On Book Design (ISBN 0-300-07570-7) and covers more of the book than does the type of typography book that I more often read.

Firemacs

I installed the Firemacs Firefox add-on for making Firefox respond to Emacs shortcuts, but I ended up removing it: it seems that I’ve spent so long down-translating my fingers on non-Emacs applications like Firefox that it’s easier to continue that way than to change to using the keyboard properly (or “like god intended” as Norman Walsh put it at http://norman.walsh.name/2006/11/08/firefox20). Mind you, I’ll probably enable it again after the next time that I use C-n in a text box in the browser.

ECB, Semantic, and Emacs 22

When I started using ECB (http://ecb.sf.net) with the Ubuntu Emacs 22 snapshot (both X and GTK variants), the CPU usage soon shot up to 100% and stayed there.

The solution, posted at http://sourceforge.net/mailarchive/forum.php?thread_id=30578186&forum_id=1620, was to update the installed version of semantic-idle.el because of how Emacs 22 uses timers.

Unfortunately, I couldn’t find an easy way to persuade Emacs to load a version of CEDET built from CVS instead of from the Ubuntu Debian packages.

Ubuntu, Nvidia, and dual screens: what not to do

I spent far more time last week making two monitors not work than I did making them work, so here’s I few things I have learnt:

  1. Don’t use the “nv” driver. I couldn’t get it to drive two screens at once, much as I would have liked it to.
  2. Don’t use ‘Option “ConnectedMonitor” “dfp”‘ with the “nvidia” driver. I did RTFM rather too well and put that in as a hint to the driver. While ever it was in the xorg.conf file, only one screen at a time would work.

The eventual solution was, surprise, surprise, to download the latest version of the Nvidia driver — which was released partway through this epic battle — and follow its instructions to the letter — including removing existing Ubuntu packages as directed. I don’t know whether the driver had improved or my technique had improved by the time I tried that third version, but it worked for me.

Of course, the first thing I did when both screens worked was see how many 80-column Emacs frames would fill the screens: over 600 lines of Emacs visible at once, now that makes it all worthwhile!

I started out using the two monitors as separate X screens but I’m now using Twinview so it’s easy to Alt-Tab amongst the Emacs frames. The X startup log shows that X thinks the combined screen is too wide to be allowed, so it starts at a lower resolution, but once I’ve logged in, I can jigger the “NVIDIA X Server Settings” tool to get it back to it’s highest resolution.

In keeping with the long tradition of filling the Internet with example configuration files that are all purported to work but are all somehow puzzlingly different, here’s the xorg.conf file that’s working for me:

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 1.0 (buildmeister@builder26) Mon Feb 26 23:38:28 PST 2007

Section “ServerLayout”
Identifier “Layout0″
Screen 0 “Screen0″ 0 0
InputDevice “Keyboard0″ “CoreKeyboard”
InputDevice “Mouse0″ “CorePointer”
EndSection

Section “Files”
RgbPath “/usr/lib/X11/rgb”
EndSection

Section “Module”
Load “dbe”
Load “extmod”
Load “type1″
Load “freetype”
Load “glx”
EndSection

Section “ServerFlags”
Option “Xinerama” “0″
EndSection

Section “InputDevice”
# generated from default
Identifier “Mouse0″
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/psaux”
Option “Emulate3Buttons” “no”
Option “ZAxisMapping” “4 5″
EndSection

Section “InputDevice”
# generated from default
Identifier “Keyboard0″
Driver “kbd”
EndSection

Section “Monitor”
# HorizSync source: edid, VertRefresh source: edid
Identifier “Monitor0″
VendorName “Unknown”
ModelName “Apple Cinema HD”
HorizSync 49.3 – 98.5
VertRefresh 60.0
Option “DPMS”
EndSection

Section “Device”
Identifier “Videocard0″
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “Quadro FX 1500″
EndSection

Section “Screen”
Identifier “Screen0″
Device “Videocard0″
Monitor “Monitor0″
DefaultDepth 24
Option “TwinView” “1″
Option “metamodes” “DFP-0: 2560×1600 +2560+0, DFP-1: 2560×1600 +0+0; DFP-0: 1280×800 +1280+0, DFP-1: 1280×800 +0+0″
SubSection “Display”
Depth 24
Modes “1600×1200″ “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
EndSection