Archive for June, 2004

Renew! Renew! Renew!

Phew! I finally uploaded new versions of JujuEdit, BookReader and eLibrary, with mostly minor fixes. They seem good, although I had some last minute trouble building the installers [I ended up reverting to an old installer builder because the newest version of Ghost Installer seemed to bork the project files from the previous one.]


The whole download for just the C# Express package is still more than 50MB, so it’s not that lite really.

Microsoft are now providing Express versions of all their major programming languages in separate packages. The downloads are free, and they’re still calling it a beta [who isn’t?] but it sounds like a bloody good idea to me. A C# Lite is exactly the sort of thing I am looking for as a programmer, not really wanting to swallow the whole .NET/managed code/C# thing in one big gulp [and not wanting to shell out the bucks either].

Heat Vision and Jack

I can only pray that the damned BitTorrent seed I’m using doesn’t die [85% after 32 hours!] before I have successfully downloaded the pilot of Heat Vision and Jack, a show purportedly featuring Jack Black as a renegade astronaut with super mind powers caused by exposure to solar radiation, and his partner Doug, a talking motorcycle who was once a man [voiced by Owen Wilson]

Read the synopsis for more information and screen shots…

Art and Perfection[ism]

Currently reading Art and Fear, by David Bayles and Ted Orland. I first heard about this book on Robert Rodriguez’s Spy Kids 2 DVD commentary, wherein he paraphrased a wise little story about the perils of seeking perfection. Here is the original, from the book:

The ceramics teacher announced on opening day that he was dividing the class into two groups. All those on the left side of the studio, he said, would be graded solely on the quantity of work they produced, all those on the right solely on its quality. His procedure was simple: on the final day of class he would bring in his bathroom scales and weigh the work of the "quantity" group: fifty pound of pots rated an "A", forty pounds a "B", and so on. Those being graded on "quality", however, needed to produce only one pot – albeit a perfect one – to get an "A". Well, came grading time and a curious fact emerged: the works of highest quality were all produced by the group being graded for quantity. It seems that while the "quantity" group was busily churning out piles of work – and learning from their mistakes – the "quality" group had sat theorizing about perfection, and in the end had little more to show for their efforts than grandiose theories and a pile of dead clay.

This is such a valuable lesson, so well described, that there’s nothing I can really add. Instead I will go and do some work, and maybe some of it will be good.

Is Crooked Text sharper?

Today’s entry is actually vaguely related to work I am supposed to be doing! It occurred to me while I was tidying up Book Reader in preparation for a new version.

Just playing with a simple idea, and wondering if it could be of use for improving readability of text on computer screens. A big problem in computer graphics is interference patterns between a source image and the screen on which it is displayed. The result of this inteference is generally known as aliasing [imagine people on TV wearing pin-stripe clothing that shimmers wildly when they move].

The thing is, it doesn’t just apply to source images; it can relate to text too, because like pixels, lines of text are arranged according to regular spacings and intervals. This means you can get unsightly artefacts when the point size is quite small [only a few pixels]. I wrote some stuff about anti-aliasing text a while back in this article.

What I didn’t consider in that article is the possibility of improving readability by rotating the text so that its major axes no longer line up with those of the pixels on the screen. Visible interference [and hence aliasing artefacts] should be reduced by doing so, so I knocked up some samples to test the theory.

This is exactly the same source text, each time rotated and downsampled in a single step. The different angles are 0, 15, 30 and 45 degrees. To my strange wooden eyes, 45 looks the clearest, followed by 30, then 0, then 15. I think 15 looks the worst for the same reason that italics often look bad: the near vertical strokes within the letterforms are slanted just enough to reveal classic jaggies. Oh, for a 300DPI display! Still, if you concentrate on the baseline of the text, I think you will agree that it generally tends to get sharper as the angle gets bigger.

So is this any use in the real world? To be honest, probably not. No one wants to have to lean over to read text on a screen, and implementing a slanty text renderer complicates the programming side of things no end. Still, it’s interesting to think about [for people like me].

Pulp Fetish

All this reading and criticizing of books has me fevered up with the I-wanna-write-a-book bug. Problem is, writing a book is hard, and takes a long time. And I’m lazy, and I haven’t got any good ideas.

But I still wanna write a book!

Being Mr Computer Guy for so long is making me go strange for the corporeal. Since so much of what I do exists only in the form of bits and bytes, I feel a growing need to create something physical, something real that I can actually hold in my hands. Something that can continue to exist without a computer, without electricity. Unfortunately, in the real world I have no manual skills. Everything I know is in my head, and all my hands know how to do is type.

And so, I want to write a book. More specifically, I want to make a book. With real pages, and a real cover.

So I have sort of made a book

Front coverYes, rather than writing a whole lot of new words, I thought my needs might be satisfied by collecting a whole lot of old ones together instead. This handsome one volume set comprises all JujuBlog entries from the before-time right through to my recent 32nd birthday [which seemed a fitting cutoff point].

That’s 266 scintillating entries crammed into 256 sizzling pages!

Of course, clicking on links won’t work [but isn’t this whole hypertext thing getting old anyway?] there is no color printing except for the cover, and it’s not searchable, except in the old-fashioned sense. On the plus side, it does have a table of contents, and it will continue to function even if you spill coffee all over it.

The cover design is a total knockoff of a 1963 edition of Fail-Safe. It only took me about fifty bajillion hours to create, so I’m very proud. Note that I avoided the temptation to add fake creases and scuff marks, since I want it to look like a brand new shoddy old book.

CafePress is the printer I am using, largely because they apply no set up fee. Read my previous post on their publishing service, as well as my first impressions of a test book I had printed. I won’t actually put up a link to the CafePress product page until I have received the copy I just ordered and verified that it’s all hunky dory.

How to make a book from a blog

  1. Pick a size and format. CafePress has only certain sizes and binding types available, and for this book I decided to go with perfect-bound 5" x 8".
  2. Create front and back cover art to desired size [at least 150 DPI]. Be sure to spend as much time as possible on this. Don’t finalize the spine yet, because unless you’re very smart you don’t yet know how thick the book will be.
  3. Create a special massive HTML page featuring every single blog entry. This was done using the same system I use to maintain the main page of this blog, so in this case it was a no-brainer.
  4. inside Import the HTML into to finalize print layout. This was not as much work as it might sound, with most tasks being in some way automatable.
    1. convert to native SXW format.
    2. set new page size [very important!].
    3. visually scan for pagination issues and manually change where necessary.
    4. add page headers and footers.
    5. add table of contents [automatically generated from headings within the entries].
    6. fiddle with margins and font sizes until page count is an exact power of two, giving you bonus nerd points.
  5. Export to PDF. PDF is one of my least favourite formats, because it is overhyped and overused [how many times have I jabbed at the stop button yelling "Cancel Cancel Cancel!!!" when I realize a link is taking me directly to some bloated PDF document]. But the one thing it is good for is creating a "ready for print" document, where the layout is effectively written in stone.
  6. Upload PDF to CafePress.
  7. Download image template for the cover’s spine, which is generated to match the number of pages in your uploaded document. Spend a few more hours tweaking the cover, then upload front, back and spine images to CafePress.
  8. Select CafePress price, category, title, blurb etc for the book.
  9. ???
  10. Profit!

I really love doing this kind of stuff, especially when I know that there are far more productive ways to use my time. The keen observer will have noticed that this entire blog is in fact a poorly disguised giant time-wasting machine, designed primarily to prevent me from focusing on the many tasks awaiting completion [eg updating all my beta software that expires at the end of this month!]

Review: The Da Vinci Code

Vitruvian ManI’m sure Dan Brown’s The Da Vinci Code is a cracking story [it had better be], but oh boy, does the prose stink! Here is the opening paragraph from the Prologue:

Renowned curator Jacques Saunière staggered through the vaulted archway of the museum’s Grand Gallery. He lunged for the nearest painting he could see, a Caravaggio. Grabbing the gilded frame, the seventy-six-year-old man heaved the masterpiece toward himself until it tore from the wall and Saunière collapsed backward in a heap beneath the canvas

I was going to explain why I think it stinks, but a quick google reveals that others have already done the same, notably Language Log. I’m not quite so finicky, but I still have a major beef with that last sentence, wherein the “seventy-six-year-old man” from the first clause is referred to by name [Saunière] in the last. The lack of a pronoun makes it sound like they are two different people, so then the reader [ie myself along with a small, randomly selected sample group] has to check it again to realize “Oh right, it’s the same guy”.

And this is in the opening paragraph, arguably the most important in the entire book!

If I’d had the sense to open this book before buying it [based on its incredible popularity] I would have read those first few lines, closed it again and chucked it back on the pile. And I am not exactly a literary snob; I like Harry Potter, I’ve never made it more than twenty pages into Ulysses, and I am embarrassed to admit that I have never read anything by Umberto Eco [although somehow I manage to admire his work]. But even I can say — with confidence — that this is a poorly written book.

Brown’s aversion to the personal pronoun is intense; like he’s afraid that we will lose track of the characters if he doesn’t keep referring to them by proper name. The following extracts are from Chapter 16, at which point Sophie, the beautiful and gifted cryptologist, is still the only female character in the novel:

Sophie wondered how long it would take Fache to figure out she had not left the building. Seeing that Langdon was clearly overwhelmed, Sophie questioned whether she had done the right thing by cornering him here in the men’s room.

Sophie wondered if maybe he had fallen terminally ill and had decided to attempt any ploy he could think of to get Sophie to visit him one last time.

Brown obviously took it to heart when scolded as a child: “She’s the cat’s mother!” In chapter 16, the name “Sophie” appears 25 times within the first 21 paragraphs. Again, at this point in the book, Sophie is the only female character. There are no other characters who could be referred to as “she”.

When I bought this book, I was kind of expecting something somewhere between Michael Chabon’s utterly fabulous The Amazing Adventures of Kavalier and Clay and Neal Stephenson’s Cryptonomicon. Needless to say, I was rather disappointed; where there should be prose, I find only stinky cheese. Brown has a penchant for muddy descriptions of people and places, which read like something a high-school student might be chided for. Behold the opening paragraph of Chapter 10:

Silas sat behind the wheel of the black Audi the Teacher had arranged for him and gazed out at the great Church of Saint-Sulpice. Lit from beneath by banks of floodlights, the church’s two bell towers rose like stalwart sentinels above the building’s long body. On either flank, a shadowy row of sleek buttresses jutted out like the ribs of a beautiful beast.

Terrible similes abound. Since when do sentinels tower above their charge? And I don’t think it’s possible to imagine any beast whose ribs jut out as beautiful. Ribs traditionally go inside a beautiful animal. Also, I think he is using the word “either” incorrectly; literally, he is describing a church whose rib-like buttresses jut out on one side or the other, but not both. Again, this is a chapter opening paragraph.

Shouldn’t writing ability be a requirement for the best-selling author? Personally, I want to be able to lose myself within a book, but I find it very hard to do so when clumsy sentence construction and a superabundance of adjectives keep reminding me that it’s all just a bunch of crummy words on paper.


Baffling Codes!

The following coded message is introduced in Chapter 8 (accompanied by a reference to Da Vinci’s Vitruvian Man):

O, Draconian devil!
Oh, lame saint!

If you can decipher it, you are well ahead of the protagonist, who doesn’t crack it until chapter 20! Where’s Hermione Granger when you need her…


Passport Stereograms

three times meMy friend Shaun recently pointed something out to me about old style [non-digital 2×2] passport photos: They are ready-made stereograms! Since each of the four images is taken by a different lens [using a special passport camera], each one offers a slightly different viewpoint of the subject, enabling two stereoscopic images to be constructed [one from the top pair, and another from the bottom].

Here I have created an animation from the first two shots of my own most recent passport photo [circa 2000?] to illustrate the depth effect achievable.

If you’ve got two good eyes [I don’t] you should be able to get the effect manually simply by looking at either the top or bottom pair of images and crossing your eyes such that the left eye sees the right image and the right eye sees the left [a standard technique for viewing stereograms]. Unfortunately, because of my bad eye [nothing to do with color blindness] I am as incapable of this as I am of seeing those damn random dot stereograms that were so popular ten years ago.

Sadly, like so many twentieth century things, these kinds of photos are probably going to become very rare, as chemical photography is made redundant by digital technology. Powerful, ubiquitous and boring digital technology.

TUNE IN NEXT WEEK, when I lament that the words "ShELL OIL" and "BOOBLESS" will be virtually meaningless to future generations.

API Fatigue

Joel has some interesting thoughts about the Windows API and how Microsoft may have dropped the ball:

No developer with a day job has time to keep up with all the new development tools coming out of Redmond, if only because there are too many dang employees at Microsoft making development tools!

I’m glad to hear it from him, although I kind of knew it already [one of the few posts I got multiple responses/references to was this one]. It’s always reassuring to have your feelings reinforced by someone respected in the field. I recommend reading the full article of course.


Well, today I was 32 years old. Not atypically, this latest birthday finds me taking stock of my life [most of which has been spent in front of a computer monitor] and asking "What’s it all about?" and "Where did I put those chocolate biscuits?"

I’ve just finished reading Paul Brickhill’s Reach for the Sky: The Story of Douglas Bader, a smashing rollercoaster of a biography, which can be summarized thusly:

Douglas was born a jolly fine chap, quickly learning to savour adversity as a series of challenges to be overcome. As he grew up, he became truly great, excelling at all things, and even when he was behaving like a reckless idiot endangering others he was great, because you could see it was merely his indomitable spirit emerging. Arrogance, vanity and petulance were all just different ways of expressing his all round British greatness. He lost both legs in a plane crash while showing off, and his triumph in learning to walk again rendered him even greater still. Then to his relief the war started, and he proved himself the best of pilots, and he shot down loads of Germans, and everyone thought he was invincible, which it turned out he was, so that was lucky. Then he got shot down and locked up in Kolditz for three years but that was ok, because he made up for it by being even more indomitable. Even the Germans had to respect his greatness.

If you were to assume that my summary is ironic, you would be only half right. Reach for the Sky is a story that unsettles me, because in spite of the unabashedly rose-tinted adulation which the author lavishes on his subject [almost embarrassing at times], it is nevertheless clear that Bader truly was an extraordinarily impressive self-made man. I read about someone like this, and I ask myself: "Am I even a tenth of what this guy was?" … and I figure I already know the answer.

But hey, what is greatness anyway?

Bloody PAL & NTSC

I received a much anticipated DVD set in the mail last week, The Directors Series, showcasing the work of Michel Gondry, Spike Jonze and Chris Cunningham. Gondry’s work was what I was most interested in, having been a fan of his videos since long before I knew who he was.

MUCH TO MY DISTRESS as I starting watched them, I found that they looked "bad" somehow, with strange video artefacts and jarring motion, especially in Chemical Brothers’ Star Guitar and Bjork’s Joga. Then I realized that my new [cheap] DVD player must be forcibly converting the 60Hz NTSC signal [the TV standard in the USA] to a 50Hz PAL signal [the TV standard here in Australia]. Yikes!

Luckily it turned out that the player was simply defaulting to "safe" mode, and could easily be configured to output whatever signal the DVD was encoded as. Since most TVs are multi-system these days, this worked fine, and the clips now look great in NTSC mode.

Read more…

Another Illustration of Color Blindness

Further to my previous post on the subject of red/green color blindness, I’ve attempted to create a more everyday illustration of how I see the world.

The following two images look pretty much the same to me:

I’m pretty sure that a normal sighted person should be able to spot the badly drawn red flowers on one of these two shrubs. Several times in my life people have drawn my attention to the "beautiful flowers" on some tree, and I have just stared like an idiot going: "What…? Where…?"

And perhaps you can imagine how annoying and embarrassing it was for me back in the sixth grade, playing cricket and searching for the ball [red] in thick grass, before I knew I was color blind. Wicket keepers would angrily shout across the field: "IT’S RIGHT IN FRONT OF YOU!" as the opposing team racked up the runs. Maybe that’s what put me off sport…

Simple is better, isn’t it?

As of today I have changed the whole look and feel of the blogsite. Gone (for now) are:

  1. The Georgia font, which although very readable is a real pain in the ass for its ridiculous digits where the zero looks like an o. The font now defaults to whatever your browser is set to use, which means good ol’ Times New Roman if you’re on Windows with default settings. Compare TNR’s sensible uniformly sized digits: 0123456789 with Georgia ‘s pretty but jumbly ones: 0123456789
  2. Sidebars, with junk that added too much visual clutter. I figure that anything really important can just be added at the top. Also sidebars make life difficult for handheld devices and other alternative browsing platforms.
  3. Scripts. Why use Javascript unless it’s necessary? I was using it for dynamically updatable sidebars, but since they’re gone, there’s no need for scripts.

I have also added an index page linking to all online entries [2 years’ worth] by title, so that should be useful for those that like to browse.

I’m still unsure about issues like fixed-width vs variable. I really like the idea of a page collapsing as much as possible to fit the browser width, but I really really hate trying to read text that extends all the way across a high resolution full screen window. All I really want is the ability to set a maximum width proportional to the font size, but to the best of my knowledge this is impossible with vanilla HTML/CSS. For now I’ll go with variable width.

Hopefully I will continue to like this new minimal styling, and hopefully my visitors will too. I’ve tried this approach before, and it always ends up growing complicated again, but maybe I’m finally over the desire to add more-more-more and can keep things simple from now on. We shall see.