Thursday, 9 October 2008

There is no way to peace; peace is the way. --A.J. Muste


Day24 Year2, originally uploaded by Tanzbar.

Nic is not usually one for politics, but she's doing some interesting things in her second year of dayshots. I like this a lot.

Thursday, 25 September 2008

Cool Clock


Day10 Year2, originally uploaded by Tanzbar.

Long time no post.

I don't have much to say right now, but Nic made this wonderful clock picture, and I think we should make it :)

Tuesday, 26 August 2008

What's next? Ypsilon

So...

For a good long while I have been tracking the Ikarus Scheme implementation. I like it because it tries to comply with R6RS, compiles to some pretty quick code and recently added 64bit support. I like it so much that I even package it and a number of related libraries for Arch Linux.

However, Ikarus has a single annoyance for me - it is not easy to extend it with C libraries. You can of course do this by running a C program that allows calls to the library in question via socket or pipe communication - but I don't really like that model. For this reason I am quite excited to come across Ypsilon, an R6RS compliant Scheme implementation with a Multi-Core optomised garbage collection routine, simple FFI and support for Linux, Mac OS X and Windows.

As soon as I have found time to have a play I will write more!

Thursday, 14 August 2008

The danger of superfluity

There is an application that I have been working as an employee and a consultant for five years now. In the course of development I routinely run into a dialog in this application that handles errors at a global (or at least global to the GUI) level.

This dialog is very useful, it stops the GUI bombing out totally and presents the user with the sad news that something has gone wrong and allows them to report such an error. If you are a developer it even lets you enter debugging land. Today however I came across a subtle issue with this dialog that I believe has been there for several years. The dialog is headlined with the phrase "Unknown Error".

"Unknown Error?" "What's wrong with that?" I hear you cry. Well, we're all accustomed to seeing such messages, indeed I believe this text appears in this dialog because someone (possibly even me) saw it in other examples, and I wouldn't bother to post here if this problem wasn't one that extended beyond the domain of a commercial app in a very limited market. My issue is this, what is the value of the word "Unknown"?

Does it reassure the user? No, quite the opposite.

Does it distinguish the error case? No, if it were a known error then we should either have handled it of at least linked the user back to some information about the bug (for various reasons this isn't possible in the real world scenario for this application). In practice if a user reports this bug however they will often find out that this really is a "known error" from the support staff.

So what does the word "Unknown" get us? At best it adds nothing, at worst it scares the users and can even be plain wrong. Perhaps we would all do well to think a little more about what we say to the users

Friday, 4 July 2008

On the subject of Bill Gates retirement

I've waited a long time to talk about this. I was all ready to rant and rave about the torrent of lies that the media would put out. As it turned out, however, one of the nice things over the last couple of weeks is that there have been pockets of journalists who've have taken the time to actually accurately portray Bill Gates career in the computer industry. In the past journalists and news outlets have seen fit to repeat the myths that Bill and Microsoft have propagated. On his retirement though they seem happy to point out that Microsoft is not responsible for most of the innovations it gives it self credit for, and even fewer that the general public give it credit for, and contrary to popular belief Bill Gates is not one of the greatest technical minds of his generation. What he is a great business man, and his company has succeeded by putting business first, often at the direct expense of innovation and technical improvement.

However you feel about the man however he is one of the defining figures of his generation and as an economic entity he has the power to change the world, and I'm glad to say in his retirement he intends to spend more time using his fortune to rid the world of some of it's real problems through the Gates Foundation.

As for the computer industry, well the era of Microsoft's domination is slowly ebbing away, but I'll leave it to Richard Stallman as ever to present the ethical compass for the industry in this rather nice piece at the BBC:

http://news.bbc.co.uk/1/hi/technology/7487060.stm

Thursday, 3 July 2008

In this new fangled age of TrueType support in Emacs it's really useful to know the names of the Monospace fonts installed on your system in the format that Emacs understands. If you are on a Linux/UNIX system running Xorg with fontconfig installed then add this function to your .emacs file


(defun list-monospace-truetype-fonts ()
"Provide a list of available monospaced truetype fonts on this
machine"
(interactive)
(set-buffer (get-buffer-create "Monospaced Fonts"))
(call-process-shell-command "fc-list :spacing=mono:scalable=true family | sort" nil t)
(setq buffer-read-only t)
(switch-to-buffer-other-window (current-buffer)))


You can set these fonts in a number of ways, currently I am getting the most joy using this form:

(defun safe-set-initial-font (fontstring)
"Set the default frame font"
(interactive "s")
(setq initial-frame-alist
`((font . ,fontstring)
(background-color . ,(face-background 'default))
(foreground-color . ,(face-foreground 'default))
(horizontal-scroll-bars . nil)
(vertical-scroll-bars . nil)
(menu-bar-lines . 0)
(height . 40)
(width . 80)
(cursor-color . "red")
(mouse-color . "green")))
(setq default-frame-alist (copy-alist initial-frame-alist)))



That's pretty nasty, but it gets round a bug where opening a new frame results in a different font being used.