Weekend reading #

Highway fonts #

I’m a font geek. I look at highway signs (in the U.S.) and think, “ick!” I’m really excited to see Clearview Hwy. It is much easier to read and much prettier than the usual font. Unfortunately it isn’t being used in California (yet). Also interesting is the story of how they got started with this project.

JotSpot #

Jon Udell takes another look at JotSpot.

It seems so simple. I really like what I see. Simple is good. I especially like the inverted creation pattern: normally you create some structure (a database table, a form, a class in object-oriented programming), create new objects using that structure, and then populate them. In JotSpot, you first create objects and can attach structure to them afterwards. I wonder if you can attach multiple forms to the same page. I wonder if the external objects (RSS feeds, Google search) are tied to pages only or if they can be attached to forms, so that they apply to all pages that adopt the form.

So far though JotSpot looks like it’s built for companies to buy. I would like something that I can use for keeping notes among friends, keeping track of my “to do” list (where other people can comment on it), or other lightweight non-commercial uses.

Labels:

WinFS, metadata, Mac resource forks #

There’s something that bothered me about the Squeak environment, and it’s the same thing that bothered me about LambdaMOO and OS/2’s Workplace Shell, and to some extent, about objects in general: the objects you create make sense in that environment but it is hard to remove them from that environment. There is an entire “world” there with objects depending on code in classes, which depends on code in other classes and so on. It’s all very nice while you are in that world. There are incredibly cool things that can be done. But it’s hard to interact with other worlds, especially when they have been customized (different versions, patches, optional packages, etc.).

The Mac community had this problem too. Resource forks are all very nice, but they only work while you live inside the Mac community. Once you step out, they are a mess. The resource forks didn’t work with ftp or http or gopher or other file systems. The Mac folk just blamed everyone else for being so primitive. But being primitive is good. I’m probably the only one in the world who thinks file extensions are good. Other sorts of metadata—unix file permissions, Windows file attributes, etc.—have the same problem. They live outside the simplest system (files have a name + data), so they get lost.

WinFS sounds like it will be very cool ... as long as I live within the Longhorn world. As soon as I step out, it’s all lost. These days I keep much more on the network than I did just a few years ago—blogger, web, gmail, network file server, multiple computers, cell phone, PDA, TiVo. Any solution that only works when I’m in a little part of that world is not very interesting except as a toy.

Any centralized storage of data/objects is just not going to work in my life. The more I think about it, the less I think object-oriented programming is as useful these days. Objects are about tying data to behavior. Behavior is code. Code is highly unlikely to work on all the different systems I work on. The most useful thing for me is to have data and code separated. And as I mentioned above, metadata is too messy. So I need to have data with no metadata and no code. It would be fine if the metadata lived in the same file as the data. This fits in with the Unix model: data and programs are separate, data can work with many different programs, and programs can work with many different types of data. It doesn’t fit well with the Windows and Mac application models: a file (data) has a certain type, which is associated with a particular application (code). Instead of a Word document, an Excel spreadsheet, a Photoshop file, I need file types that have data alone and work with many different applications: HTML, JPEG, PNG, Text, CSV.

For a while now I’ve been happy separating data and programs at the OS level. It buys me a lot of flexibility and power. I’ve been thinking about whether it makes sense to do the same inside a program. If encapsulation at the file system level (e.g. my inability to decipher a Word document without running Microsoft Word) is bad, is encapsulation also bad at the object level? Maybe it’s time to give up on object-oriented programming.

Text to HTML: libraries #

A few weeks ago I was looking for a way to convert my text notes to HTML and started looking at syntax used by other tools. Since then I’ve been liking Wikis more and more.

Radeox is a library that converts text to XHTML. It can be used in Wikis, and it is used in the SnipSnap Wiki. But more importantly for me, it can be used as a command line tool or as a library in Java applications. Radeox accepts this syntax by default, but is customizable to meet my needs.

Also interesting in the Wiki space: XWiki and JotSpot.

Gmail skins #

One of the neat features about Mozilla/Firefox/Galeon/etc. is that you can apply user style sheets to web pages. (Actually, you can do this in IE as well, but it’s not as well known.) Someone has figured out how to create “skins” for gmail. Gmail’s use of pastels looks bad on my laptop screen, with the pastel blue for “current message” looking almost like white, so I’m looking forward to skinning gmail.

Fonts: Arial vs. Arial Unicode MS #

I really don’t like Arial. But I like Arial Unicode MS. I would have thought they would be the same for all the Latin-1 characters, but they aren’t!

ArialArial Unicode Ms
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sapien pede, vestibulum at, sollicitudin quis, sagittis in, leo. Suspendisse scelerisque, lorem at molestie eleifend, augue felis varius sapien, quis facilisis enim purus eget pede. Morbi bibendum, odio eget ornare mattis, tellus eros cursus quam, ac placerat leo justo sed wisi. Nunc lobortis gravida dui. Aliquam semper, quam id consequat aliquet, velit magna convallis lorem, nec porta mauris lacus vel nunc. Sed tempor sem a tellus. Integer at lectus. Proin condimentum neque ut nunc. Pellentesque suscipit elit sed magna. Pellentesque mi. Cras at ante non diam pharetra sollicitudin. Integer lectus mi, blandit eget, scelerisque sed, sagittis et, nibh. Nullam et purus. Suspendisse placerat ipsum id leo. Suspendisse potenti. Sed imperdiet. Etiam non metus. Aliquam erat volutpat. Maecenas leo est, eleifend sit amet, lacinia elementum, ullamcorper non, libero. Donec convallis, purus a condimentum egestas, arcu purus ullamcorper wisi, id rhoncus erat diam quis leo. Fusce scelerisque, augue eu faucibus condimentum, est elit rutrum ligula, a suscipit nibh mi commodo ipsum. Aliquam et dolor. Donec vitae dolor ut lacus ullamcorper venenatis. Cras ornare dolor a ipsum. Suspendisse ornare. Quisque interdum elementum nunc. Proin adipiscing accumsan nisl. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sapien pede, vestibulum at, sollicitudin quis, sagittis in, leo. Suspendisse scelerisque, lorem at molestie eleifend, augue felis varius sapien, quis facilisis enim purus eget pede. Morbi bibendum, odio eget ornare mattis, tellus eros cursus quam, ac placerat leo justo sed wisi. Nunc lobortis gravida dui. Aliquam semper, quam id consequat aliquet, velit magna convallis lorem, nec porta mauris lacus vel nunc. Sed tempor sem a tellus. Integer at lectus. Proin condimentum neque ut nunc. Pellentesque suscipit elit sed magna. Pellentesque mi. Cras at ante non diam pharetra sollicitudin. Integer lectus mi, blandit eget, scelerisque sed, sagittis et, nibh. Nullam et purus. Suspendisse placerat ipsum id leo. Suspendisse potenti. Sed imperdiet. Etiam non metus. Aliquam erat volutpat. Maecenas leo est, eleifend sit amet, lacinia elementum, ullamcorper non, libero. Donec convallis, purus a condimentum egestas, arcu purus ullamcorper wisi, id rhoncus erat diam quis leo. Fusce scelerisque, augue eu faucibus condimentum, est elit rutrum ligula, a suscipit nibh mi commodo ipsum. Aliquam et dolor. Donec vitae dolor ut lacus ullamcorper venenatis. Cras ornare dolor a ipsum. Suspendisse ornare. Quisque interdum elementum nunc. Proin adipiscing accumsan nisl.

(Text generously provided by Lipsum.com.) Notice that Arial Unicode MS has rounder, wider glyphs. It’s more pleasing to my eye. It’s also bigger. But when I try reading the text, it seems that Arial is easier to read than Arial Unicode MS. I wonder if Arial is better hinted.

Firefox customization: tabs #

I love Firefox 1.0 (PR). One of the things I tried was this tip for customizing tab colors. I wanted the active tab to look more ... active. Instead of choosing some colors manually, I used the (now deprecated) CSS 2 “system” colors in my chrome/userChrome.css file:

#browser tab {
  -moz-appearance: none !important;
}

#browser tab[selected="true"] {
  background-color: ActiveCaption ! important;
  color: CaptionText ! important;
  border-color: ActiveBorder ! important;
}

#browser tab:not([selected="true"]) { 
  background-color: InactiveCaption ! important;
  color: InactiveCaptionText ! important;
  border-color: InactiveBorder ! important;
}

These make the tab colors match your window colors: Active Windows/Tabs and Inactive Windows/Tabs. So now when I change my Windows color scheme, Firefox’s tabs will change color too.