Recently in Computer Category

For more than a week, my Palm Tungsten T3 has been laying the bottom of my backpack, instead of my pants pocket where it used to be. Upon writing this post, I recovered it to see if the battery had died, and it had not. palm.png It was very low, but I had not lost all my data, a nice change from a couple weeks ago when I went through several full restores after total data loss due to the battery running out.

This T3 is almost 5 years old. And for its age it's a very respectable little gadget. But I need something I can rely on. I'm using more and more my Moleskine notebook to take notes, but I don't store in it my often changing calendars, my growing list of contacts, and a lot of the information I want to keep handy. For this I still use the Palm, as a read-only data viewer. And it's of course not very satisfying.

The normal course of action would simply be to go and buy a new model. I started using Palms 11 years ago, and the T3 is my third one. There is room in my heart for a fourth! But the problem here is Palm, the company. None of their products is what I need. The Treo comes close, but it's using the same single-task OS as my old Palm. I could switch to Windows Mobile, but I really don't want too. And there is the question of synchronization as well: I really don't want to deal with MarkSpace anymore, after the fiasco that was the (lack of) free upgrade to use their software with Leopard. (If you're curious about it, go check the archives of their forums around November 2007.) So a new Palm is not a solution.

What's a little sad in this story is that they really had it, 5 to 7 years ago. They were making great innovative versatile devices, with a thriving community of developers. I've read books, listened to music, played games (even “Dungeon Master” on an Atari ST emulator), and kept track of many things on these little beasts. I quickly learned that a Palm was worth as much as one puts into it, and much I did! Lists of books, appointments, phone numbers, notes from meetings, recipes... It would be my small computer away from my real computer. The only thing it was lacking was some form of connectivity, in this very wired age. The other thing that was tiring was to carry a separate cell phone, and a separate iPod.

So I'm going to take the logical step. In a couple weeks, when the craziness has subsided, I'll go buy an iPhone. Till then, I may keep looking up a phone number once or twice a week, when I'm away from the computer. But most probably my T3 will run out of battery at the bottom of my backpack, forgotten.

Then it will really be “Goodbye, Palm.”

My trip to the US the last few weeks was not only about choosing papers for a great conference, or getting ready for presenting some recent works, but also some great hacking time on Unison with Benjamin Pierce.

The result is best summarized by this message Benjamin sent on the Unison-users mailing list:

Dear Unison Users,

During the past couple of weeks, Alan Schmitt and I have been doing
quite a bit of work trying to improve Unison's ability to deal with
large files and directories. This has required some major internal
changes, which will take a little time to fully stabilize, but we're
using it ourselves and it appears to be working. (Also, we believe
that we've left all of Unison's paranoid double-checking mechanisms in
place, so the new functionality should at least be fail-safe.) At
this point, we'd love to have some other courageous souls using it, to
help us shake out the last remaining bugs.

We've done two main things in this version:

  • Added support for resuming directory transfers if Unison is
    interrupted in the middle. This functionality is always on.

  • Added support for using an external utility for single-file
    transfers. (Unison's built-in transport mechanism is not very fast
    for this case, so an external program like rsync can substantially
    improve performance.) If the external program is able to resume
    interrupted transfers (as rsync is, for example), this will make
    things even faster.

This functionality is enabled by setting the flag "copythreshhold" to
something non-negative. Setting it to zero will use the external
program for all whole-file transfers (i.e., where the file has been
created on one host). Setting it to something positive will use the
external program for transferring files larger than this value (in KB).

The external utility is rsync by default. If you want to use a
different one, set the "copyprog" and "copyprogrest" preferences.
(They are described in detail in the Preferences section of the user
manual.)

You can find both sources and binaries (for OSX-Intel and Windows) on
the Unison download page. Please post a note here with any
experiences, positive or negative.

Thanks!

  • Benjamin (and Alan)

Don't hesitate to give it a test! I have OS X (Universal) and Windows (Gtk) binaries ready for you.

And for historical records: Unison was a stop-gap measure waiting for efficient and easy to use distributed file systems. Unfortunately we are still waiting...

Troy Kitch, from View From the Dock, has started a very interesting series of posts comparing some Personal Information Managers (PIM). As I'm committing more and more of my data to the digital world, this is a subject that is dear to my heart. Troy has planned to study Yojimbo, DevonThink, Together, EagleFiler, and VoodooPad. This is a very fine list. In fact, I'm currently using two of these (EagleFiler and VoodooPad), and I've used Yojimbo and KIT (the predecessor of Together) in the past. There is however a tiny thing that has been bugging me in this list, and after thinking quite a bit about it I've finally decided to write this post. What bothers me is that I don't think VoodooPad should be there.

Oh, don't get me wrong, I love VoodooPad, I think it's a great application and I use it every day. It's just that I believe it's not the same kind of application than the other four. In other words, I don't think one should choose between VoodooPad and EagleFiler and may very well use both.

After thinking about it, I've realized that the problem may be that the name Personal Information Managers is not precise enough, and that it covers different approaches. My goal here is to propose a criterion one could use to distinguish things further.

Broadly, I see two main kinds of PIM applications: those that help you organize existing data, and those that let you create new data. I put VoodooPad in the second category, and the other four in the first.

Organizers are all about taking existing documents, and adding some information about them to link them together. This can be as simple as storing the documents in different folders, and as complex as adding tags, notes or labels to the documents. An organizer should also provide ways to use this metadata, typically by letting one search for it or by building smart collections, i.e. saved searches that update live. One of the simplest organizer I know of on OS X is simply the Finder: it provides hierarchical folders, labels, spotlight comments (where one can store tags or notes), and even arbitrarily extensible metadata. It also has a fairly complete search feature, through SpotLight, and saved searches. The main problem of the Finder is that this power is very raw and not made easily available to the user. Several applications have been developed to fix this, from simple tagging and searching application to full-fledged organizers, such as the ones Troy is looking at.

Creators, on the other hand, help one organize data that is being created. There is still the organization angle, but it does not apply principally to documents. I'll take three examples of creators that I actually use, going from the one using the most constrained structure to the least: OmniOutliner, VoodooPad, and Curio.

OmniOutliner is an outliner, that is an application that let you create lists containing sublists containing subsublists... Outliners typically provide additional features, such as ways to fold lists to only see their first element, additional columns containing extra information, and sometimes ways to embed or link to documents. Outliners can be great to structure notes, when the result must be something that has the shape of a list, and when one may have to move big list chunks from one place to another.

VoodooPad is a much more flexible creator, as it takes the form of a personal wiki. Here, the user creates pages containing text. Each page has a name, such as GiftsToBuy, and as soon as one types the name of an existing page, a link to this page is automatically created. A pad, a bunch of such linked pages, thus forms a web of text. I use VoodooPad a lot, as it's freeform enough to let me enter text without thinking about structure, yet I can easily create links to organize all this text. The first page of my main pad is in fact a list of links to the pages I access the most often, and where I store information about games I've played, recipes, tips for using tools (typically subversion but more recently git), and random bits of informations I still need to sort. What I really like about VoodooPad is how it's always in flux: as I enter and look at data there, I arrange it a little bit better, but it never has to be finished. And its good searching capabilities make sure that I always find what I need. VoodooPad also lets one create richer pages by embedding images and documents in the flow of the text.

Curio, finally, is the most flexible creator. A new Curio document is just a blank canvas, like a white board, where you just drop stuff. It's not even constrained as text, it's really a free two-dimensional area. One can add lists, mind maps, documents, images, text, drawings... I use when I'm researching a subject, such as a long blog post or an article: I drop ideas, web links or images of related information, and create (and very often draw) links between the different parts. I then rearrange them, as I would rearrange a bunch of index cards on my desk, to uncover some relation or highlight them. When I'm done with this phase I often move to a more structured or specialized creator, such as OmniOutliner, LaTeX, or KeyNote (if I'm doing a presentation), and I archive away the Curio document.

You may have noticed that all these creators are fairly generic: they may offer some constraints in the way data is entered or managed, but the data could be about and for anything. Specific creators, such as MarsEdit to create and manage blog posts, or Scrivener to write long texts, do not fall in the generic “Personal Information Manager” category. They are very useful tools, and I use some of them, but for me they belong to the same category than KeyNote: I start using them when the research has much progressed.

The difference between organizers and creators is of course not so clear cut, and most of them provide features from the other category. Most organizers let you create notes, which are typically simple RTF files, from within the application. Organizers may also extend the notion of documents, like Yojimbo with its storage of serial numbers, or EagleFiler with its mail archival feature. Symmetrically, most creators let you attach or link to files, thus letting you organize them. But even though their feature sets intersect, I find them complementary. To prepare for a course I've recently given, I've used Curio to brainstorm what I would be talking about, linking to web pages, dumping pictures, makings lists and mind maps. But I've stored the Curio document, along with many slides I was given and some web archives I wanted to use in a folder in EagleFiler. My final slides were also stored there, and I may not have used the Finder at all to navigate this data. The great thing is that if I ever need it again, it's all tagged and labeled, ready to be found.

To summarize, I'd say that creators let you manipulate data, whereas organizers let you manipulate metadata. And VoodooPad is mostly a creator, not an organizer. But a real good one, for sure!

One of the things I do is maintaining the web site of Notre Dame de Clignancourt, a church in Paris. I'm not going to give the link to the site because its design has not changed since I've started it, back in December 1999, and it's ugly hand-coded html (I did not know CSS existed at the time). But it does the work.

My work flow for this site is fairly simple: every week, I receive the newsletter from the church, which I then basically convert to html and put online. And every year I update the information about the different services that the church offer. I've never really bothered about keeping an history of the site as it corresponds to the newsletter, which I archive. And I was also thinking that since I'm now using Time Machine, it would keep the history of my local version of the site in the future.

But for some reason, maybe the warning that my Time Machine disk was getting full and old backups would be erased, this has started to bother me. So I've looked at what I could do to keep an history of the site, starting from now. I realized that this could also be a good occasion to learn git. (Why git and not subversion? As you'll see next, there was no copying to do, just a couple commands to run.) As I could not find any tutorial explaining how to do this (blame my lame google fu) and had to resort to git's manual, here is a quick post on how to do this.

First, get git. There are installers of recent versions for Leopard. I did not use their script for adding the paths, I simply created a file in /etc/paths.d and /etc/manpaths.d with the correct paths. (See man 8 path_helper on Leopard for more information.)

Second, initiate and populate the repository. I simply followed the manual, and did a

$ cd project
$ git init
$ git add .
$ git commit

Third, remove any unwanted files. (There may be a clean way to do this in step two, but I did not think about it. Maybe creating the .gitignore file before the initial add would help.) I simply did a git rm thefile for each file, and added a .gitignore file specifying the files to ignore later on.

Then any time you change files, simply tell git that you want to commit the changes: git add file_changed followed by git commit. See the relevant section of the manual for more information about this.

And this is it. Pretty simple, isn't it? The price: the size of the project has about doubled. But now I have history, without relying on Time Machine!

Next

| | Comments (2)

I was going through my old MarsEdit drafts, when I saw this one. I realized it was almost a post, so here it comes!

If you like computer archeology, you'll love this video from the early 90s of Steve Jobs demonstrating NextStep. What I find amazing is how much of OS X is already there, and it is also somehow sad that so little has changed. Where are virtual reality, visual programming by example, voice driven interfaces, jet packs, and flying cars! Is it the year 2000 yet?

Seriously, it seems that the only recent real improvement in the interface of computers is the iPhone. Multi-touch screen and position sensor are a great way forward. But it still feels like a very small step, after all this time.

Beautiful interfaces

|

Following a link from I forgot where, I read this amazing article on MagicInk by Bret Victor. I really recommend that you read it too, maybe just to look at the pretty interface pictures. This article made me realize how important interface design may be, both for the pleasure of using the interface as for the clarity and amount of information it may convey. This also reminded me why I've loved using Macs for the last few years: for most software on this platform, it seems that a lot of thought and polish is given to the interface. It's usually very small things, but the whole point is that it's small things, and that the interface quickly goes away by becoming intuitive. (And I mean becoming intuitive even if it sounds contradictory.) As a related aside, I heartily recommend watching this amazing video by Edward Tufte on the iPhone interface.

As I wanted to see what other things Bret Victor might have written, I decided to visit his web site. And there ... waouh. I was floored. I just love his design. Because it's fresh, because it's fluid. Because it's dynamic and it pulls you in. And because I lost too much time diving into it.

And going back to the initial article, to check a couple things, I noticed this quote in the About the author Section:

I currently work at Apple, creating things I can't talk about.

Nice. Very nice. Can't wait to see what they are.

I discovered Evernote a few days ago, thanks to a post from ViewFromTheDock, and even though I'm not fully convinced yet, they do have a strong point to make. So why not try it out? (And I'm not getting anything out of this... content.gif).


Get your Evernote invitation. Time's running out.: "

Clocks

Our friends at Give Away of the Day are running a 24-hour Evernote invitation giveaway-a-thon. Get yours before it's too late.

Click here to get your invitation

"

(Via Evernote Blog.)

My audio setup

| | Comments (2)

We don't live in a huge flat, far from it. But we have two computers: the main family computer, an iMac G5 in the big corridor, and my laptop, often in the living room.

For a while, we would listen to music on the iMac, and when Hermine is sleeping, the music would play on the laptop through iTunes sharing. But there was one main drawback to this approach: if we're moving a lot, there is no way to listen to the same music synchronized on both computers.

A couple weeks ago, I decided to try to remedy to this. I quickly discovered Airfoil and Airfoil speakers: Airfoil runs on the iMac, sending its music to the local speaker or to the laptop, and sometimes, like right now, only to the laptop. To control iTunes remotely, I'm using iTRC which is ugly but works great (I tried TuneConnect but it kept crashing or not refreshing). What prompted this post was an enthusiastic comment by Christelle, earlier today, when we were listening to synchronized music loudly on both computers. Moving from room to room and having the music follow you is just great! And both Airfoil and Airfoil speakers have a Windows version. Two thumbs up!

One final note: I could not make Airfoil connect to Airfoil speakers initially, and even though I had not yet bought the product, the support at Rogue Amoeba was amazing: they answered very rapidly (on a Sunday) and we finally found out what was wrong (one computer had IPv6 turned off).

Next week, I will start teaching a course on type systems. As I will give it in English to Italian students, I thought it would be better to use some slides instead of just writing on the white board. So I have been working on these slides, basing them on Benjamin Pierce's great book on type systems.

I did not dive immediately in the slides, I first tried to get an idea of how I would start the course. To do so, I searched for some course notes online, did some lists of concepts I wanted to convey, and dropped all this in a Curio idea space. I then crafted a more detailed list of this first course outline, which I then transferred to Keynote.

Why Keynote you may ask (maybe wondering when I'll get to the point of this post)? Well, I have grown fond of it, and it prevents me from writing slides that are too technical (or too much like a copy and paste of a research paper). I really like LaTeX, and I cannot imagine using something else to write papers, but I am less sure about slides.

In any case, having chosen Keynote, there was still some technical content to typeset, as type systems are all about things like "Γ ⊢ λx:T. t : T → T'". One solution would be to use LaTeXiT, a great small free utility to produce PDF images out of LaTeX, which when combined to its LinkBack support makes it play great with Keynote. I however see several drawbacks with this approach:

  • one would have to work hard to make sure the text fonts in Keynote and the generated fonts by pdflatex for the mathematical symbols are close enough for the result not to be ugly;
  • if some mathematical symbol occur inline some text, then either all of it has to be done in LaTeX, or editing the text becomes a bit painful (as images have fixed positions and cannot be anchored at some point in the text);
  • similarly, if coloring needs to be done, it has to be done and edited in LaTeXiT;
  • LinkBack works great, but I've found that going back and forth between LaTeXiT and Keynote to tweak things takes some time.

So I searched for an alternative solution. As Keynote is using Unicode fonts by default, there are many many characters available. And by many I mean this

Special_Characters.png

This palette is accessible in many applications, using the Edit → Special Characters... menu. However, I quickly found tiring to go to this menu, double-click on the wanted character (which I usually put in the "Favorite" tab using the gears menu on the bottom left), and going back to editing. Even assigning a shortcut to invoke this palette would not speed things enough. Which is when I thought of using TextExpander.

TextExpander is a preference pane that lets you assign things (that can be text, but also images or even the result of some AppleScript) to abbreviations. When the abbreviation is typed, it is immediately replaced by the corresponding text. I use it for fairly mundane things, like salutations at the end of an email: when I type cdt, I get

Cordialement,

Alan

I have many of these abbreviations defined, for website addresses I often go to, for my phone numbers, for salutations, for the current date in ISO format... and now for special characters

TextExpander_LaTeX.png

Creating these abbreviations was very easy: just create a new snippet, and in the text field simply use the Special Characters palette to enter the character wanted. And this is how I now easily enter these strange Γ and λ without leaving the comfort of the current application, be it TextMate (as of right now), Mail, or Keynote.

I've just heard this just after the 22:50 mark in the latest MacBreak Weekly podcast.

So maybe you should check Unison out too clin_oeil.gif.

About this Archive

This page is a archive of recent entries in the Computer category.

Blog is the previous category.

Culture is the next category.

Find recent content on the main index or look in the archives to find all content.

Recently Played Games