dive into mark

You are here: dive into markArchivesMay 2004Essentials

Saturday, May 1, 2004

Essentials

This should not come as a raging shock to anyone, but I am becoming a technological curmudgeon. I have developed ways of doing things with computers that work for me, and I find there are now a wide variety of things I am no longer willing to discuss doing differently.

  1. Text editing: GNU/Emacs. All non-cross-platform editors are out; I do serious text editing (read: writing 500 page books in Docbook for money) on too many platforms on a regular basis to learn new keyboard shortcuts and macros, or to try to remember where I am today. All editors that don’t work identically in console mode (over an ssh connection) are out for the same reason. All non-macro-customizeable editors are out. All non-syntax-highlighting editors are out (I work primarily in XML, XSL, CSS, HTML, Python, and recently Java).

    That doesn’t leave a lot. I know you can script vi with Python, and I know you can use real arrow keys now, and I’ve tried vi and vim and gvim and Lemmy and all the rest; they just don’t fit my brain. I’ve tried XEmacs, but its dired functionality works much differently than GNU/Emacs, and I use dired a lot, and I like how GNU/Emacs works better. I did steal a bunch of the packaged editing modes from an XEmacs installation and throw them in my GNU/Emacs site-lisp, though, so thanks for that.

    Reasons I would leave GNU/Emacs: XEmacs really is nicer in many ways, much more professionally packaged and maintained. If I’m feeling brave, I might give it another shot and see if I can get its dired to make sense to me. Oh, and an official Mac OS X port would be nice; I’m using this unofficial build of GNU/Emacs for Panther, which works well today, but it’s no longer being maintained. *sigh* There’s always nightly builds (thanks Michael).

  2. Web browsing: Mozilla Firefox. Again, all non-cross-platform browsers are out; I set up my preferences identically on all platforms and rely on those preferences wherever I am.

    Reasons I would leave Firefox: some important UI feature, or lack of support for some emerging web standard. I’ve seen all the emerging web standards, and I don’t see any must-haves.

  3. Mail: Mozilla Thunderbird over IMAP. Identical cross-platform functionality is less of an issue here, since I don’t spend that much time in my mail client (relatively speaking). But IMAP is essential (too many computers, and all webmail systems suck, and the ones that don’t suck have no data export), and Thunderbird’s IMAP support is top-notch. Mail.app is close, and it has better indexing and searching. Every few months I take all the messages I no longer care about having easy access to from anywhere, and download them to my Mac via Mail.app via POP, stick them in folders based on year (I have mail going back to 1993), and those mbox files get thrown into the daily backup rotation and archived in multiple places. A few times a year, I find a reason to search all my mail for something, and I do it in Mail.app. Of course if my Mac is not convenient, I can ssh into it and grep through the mbox files manually.

    Reasons I would leave Thunderbird: stopped being actively developed, while having showstopping bugs.

    Reasons I would leave Mail.app: when GMail supports bulk import and easier SSL support (yes I know you can get it by manually changing the URL… every time you log in), I would consider using it as a searchable repository. I would still use some local solution like Mail.app for permanent archiving. Even Google won’t last forever.

  4. XML parsing: libxml2. It’s faster than anything, has bindings for everything, and is insanely conformant to all specifications it claims to support. Also, it integrates with libiconv to handle every character encoding ever. Why doesn’t everyone use iconv? Character encoding is a solved problem.

    Reasons I would leave libxml2: none.

  5. Remote connections: ssh. An obvious one, but I’m surprised how few people know how much it can do. I set up SSH all the time to forward random ports from one machine to another. I tunnel rsync over ssh. I tunnel cvs over ssh. I send outgoing mail by forwarding port 25 to my mail server (this is in fact the only way to send mail through my mail server; I’ve set it up to only accept outgoing mail from local users).

    Reasons I would leave ssh: none.

  6. Backup and mirroring: rsync. rsync -essh -rtpvz rocks. Really, there’s nothing more to say. Learn it. Use it. Love it. Here’s a good rsync anecdote: in my last job, I worked on a project that was doing daily (and sometimes more-than-once-per-day) builds of a 100 MB installer. Near the end of the release cycle, we were putting each daily build on a private web server for the client to download and test. Uploading the entire build took over a hour on my capped DSL line. It turns out that the fastest way to do this is to ssh into the server, duplicate yesterday’s build to a file with today’s date, then rsync today’s build up to the server. rsync magically figures out which parts of the installer have changed (usually not more than a few KB) and synchronizes the build in under a minute. I have no idea how it does that. I read once that it was somebody’s PhD project. Thank God for smart people.

    If you’re mirroring stuff from one Mac to another, and you care about resource forks, install RsyncX on both machines and breathe normally.

    Reasons I would leave rsync: none.

  7. Web server: Apache. IIS is out because it only runs on Windows. I’m not interested in specialty web servers (I’ve tried, for internal projects, and always eventually needed enough functionality that we switch to Apache, or wish we had). I’m not interested in proprietary add-ons or derivatives of Apache, although if you have to extend a web server, Apache is a great choice. I just don’t need to.

    Reasons I would leave Apache: none.

  8. Server: Debian GNU/Linux. I’ve tried RedHat, Mandrake, Gentoo, and FreeBSD, but the fanatical devotion of the Debian package maintainers makes the difference.

    Reasons I would leave Debian: stopped being maintained.

Of course, there are also a wide variety of things for which I have no strong allegiance to one tool over another.

  1. instant messaging (Currently using Trillian on Windows, GAIM on Linux, Adium on Mac OS X.)
  2. IRC chat (Currently using Chatzilla, which sucks because it means installing the entire Mozilla suite and throwing away 60 MB for an IRC chat client, but my new laptop has more then enough memory, so what the heck. Update: Chatzilla on Firefox. Woohoo! Gotta love a domain name like hacksrus.com. And with a tilde in the URL to boot!)
  3. photo editing (Currently using GIMP and Paint Shop Pro on Windows, GIMP on Linux, and an old version of Photoshop on Mac OS X. I have very light photo editing requirements, so it’s not worth upgrading to the latest version of Photoshop.)
  4. music management/ripping/burning (Currently using iTunes on Windows and Mac OS X, but I’ve never bought anything from the iTunes Music Store, so no lock-in.)
  5. syndicated feed reader (Currently back to using Bloglines after paying for FeedDemon and being underwhelmed by its Atom support and the general lack of development… yeah I know that’s rude, and I wish Nick the best, and I hope he’s back on his feet and improving what could be the best feed reader in the world.)
  6. weblog publishing tool (Currently using Movable Type 3.0 beta, plus lots of macros and customizations like a custom URL scheme, so there’s a relatively high switching cost.)
  7. source control (Currently using CVS, looked at Subversion last November, and again when it hit 1.0, and they had showstoppers like the inability to use digest authentication, forcing me to choose between basic authentication (which is no better than CVS pserver) or giving all my CVS users local accounts and tunneling over ssh (which is no better than CVS ext). Yeah, I know about atomic commits, and they’re nice, but I’m not doing large-scale development, and rollbacks and tagging are a low priority for me.)
  8. scripting language (Currently using Python, but I’m bored, or maybe just exhausted from writing a book on it, so I’m idly looking around for My Next Programming Language.)

Filed under , , , , , , , , , , , ,

26 comments

  1. For example, it would be nice to have a publishing tool that generated valid markup for the new MTCommentFields template tag. Grr.

    Comment by Mark — Saturday, May 1, 2004 @ 1:17 pm

  2. Or updated the comment count on the home page when I approve a new comment. Or remembers my URL between comments.

    Comment by Mark — Saturday, May 1, 2004 @ 1:30 pm

  3. What is your all-platforms solution to filtering your mail? Do you duplicate all the rules in each of your mail clients?

    I have a similar setup, except in addition I use Horde’s IMP to read webmail (I can’t make an IMAP connection from computers at work).

    Comment by Stewart Johnson — Saturday, May 1, 2004 @ 2:11 pm

  4. http://extensionroom.mozdev.org/more-info/chatzilla
    (Chatzilla plugin for FireFox.)

    Comment by Anne — Saturday, May 1, 2004 @ 2:34 pm

  5. Re: mail filtering. I do it on the server (I run my own mail server). The only major thing I need to do on each client is train the Bayesian spam filtering (which I use as a fallback after using SpamAssassin on the server).

    Comment by Mark — Saturday, May 1, 2004 @ 3:06 pm

  6. I hope you discover Ruby as your next language if you still feel like using a scripting language. It would be nice to have another book about Ruby.

    But, please, not another book about Java.

    Maybe if you are more for a statically compiled language have a look at D. It is very promising too, but has almost no media coverage.

    http://www.digitalmars.com/d/

    Comment by ILikeRuby — Saturday, May 1, 2004 @ 3:10 pm

  7. I’d like to see more people post like this and maybe even have a machine-readable version of this information. A “digital life colophon” if you like. see http://jtauber.com/blog/2004/05/01/digital_life_colophon

    Comment by James Tauber — Saturday, May 1, 2004 @ 3:23 pm

  8. Hi Mark, you might want to try Miranda (miranda-im.org) for instant messaging on Windows. It has built-in support for ICQ, MSN, AOL and IRC (the IRC client rocks on simplicity). And you can get a Yahoo plug-in too…

    http://jonasgalvez.com/unsorted/mirandarocks.gif (recent screenshot)
    http://www.coincoins.net/index.php?id=50 (Yahoo plug-in for Miranda)

    Comment by Jonas Galvez — Saturday, May 1, 2004 @ 4:03 pm

  9. Pretty much agreeable, anyone that doesn’t use IMAP is a fool but GNU/Emacs, I feel naked without my two modes a la Vim.

    I’m still amazed by the amount of people using bloglines, I’m surprised you haven’t commented on the inaccessibility of the design bloglines uses Mark. Plus I’ve always felt you miss something by not visiting the website your reading the post from, but that’s personal thing.

    You may be bored of Python Mark, but spend ten minutes writing something in PHP and I’m sure you’ll find your way back :-)

    Comment by Neil Dunn — Saturday, May 1, 2004 @ 4:44 pm

  10. Mark — I don’t know how much of your IRC time is spent on OS X, but I’ve fallen in love with Colloquy (Les Orchard has a nice summary of what’s nice about it here (http://www.decafbad.com/blog/2004/02/12/colloquy_irc For cross-platform IRC, I like X-Chat. For cross-platform text editing, there’s also jEdit.

    Comment by d.w. — Saturday, May 1, 2004 @ 6:45 pm

  11. Yeah, I’ve tried X-Chat and wasn’t that impressed. Colloquy is sweet, and I have it installed right now, but earlier versions tended to chew up a phenomenal amount of memory if you left a channel open too long. Dunno if this is fixed yet.

    The biggest feature I’m looking for in an IRC client is support for /ignore. Chatzilla just added it relatively recently, and it still doesn’t persist across relaunch. Feh.

    Comment by Mark — Saturday, May 1, 2004 @ 7:25 pm

  12. Not that using iTMS results in lock-in: http://nanocrew.net/blog/apple/huntingplayfair.html

    Comment by TRS-80 — Sunday, May 2, 2004 @ 2:12 am

  13. Mark,

    What problems did you have with Feed Demon’s Atom support? I’m using the current beta and it works pretty much how I’d expect it to. I’m sure Nick would appreciate bug reports, and I’d be happy to provide them for him.

    Oh, and it’s good to see comments back!

    Comment by Koz — Sunday, May 2, 2004 @ 3:01 am

  14. This little extension for Firefox is a godsend:

    http://cgi29.plala.or.jp/~mozzarel/addon/firefox/bookmarksftp/bookmarksftp.xpi

    It’ll keep all your bookmarks synched across all your PCs without you having to lift a finger.

    Comment by Chris — Sunday, May 2, 2004 @ 8:10 am

  15. re: lock-in. I’d rather not have to break the law and hunt down illegal 3rd-party apps on underground sites to preserve my investment. Which is not to say I support Apple’s jihad against PlayFair (and going after the site in India was *really* stretching it), and not to say that I think PlayFair shouldn’t be legal, but the fact remains that it’s *not* legal, at least not in the U.S. That needs to be solved in law, not in code. I’ve written about this before.

    Meanwhile, Apple just changed the rules (and applied them retroactively on already-bought music) about what you can and can’t do with things you’ve already purchased. Man, if that doesn’t give you the willies, I want what you’re smoking.

    Then I look at the list of new “features” in iTunes 4.5, and I see the writing on the wall. More and more tie-ins the the iTMS, fewer and fewer useful features that don’t involve lock-in to Apple’s “DRM-for-the-rest-of-us”.

    When a majority of your time after an upgrade is spent restoring functionality, or hiding unwanted “helpful” features, you know it’s time to switch tools. I felt this way upgrading from Windows 2000 to XP. I’ve written about that too.

    Comment by Mark — Sunday, May 2, 2004 @ 9:21 am

  16. re: FeedDemon. Well, you can start with my b-links feed, which is Atom now, and just about the simplest Atom you’ll ever find: [entry]s with [link]s and plain-text [summary]s. FeedDemon doesn’t display the summary. (Making it an HTML summary doesn’t appear to help; it just never displays [summary].)

    http://diveintomark.org/xml/blink.xml

    This was reported in the forums almost 2 months ago.

    Comment by Mark — Sunday, May 2, 2004 @ 9:45 am

  17. Re: bookmarks. I don’t keep bookmarks. Well, I keep them until the end of the day, when I either b-link them or delete them.

    Comment by Mark — Sunday, May 2, 2004 @ 2:24 pm

  18. Regarding Your Next Programming Language: Have you looked at Ruby? No? Yes? Have a look at Ruby. Being a beginner with Python, I’d value anything you have to say about Ruby, as compared to Python, quite highly.

    Nice to see that the comments section is open around here again.

    Comment by T. Jogin — Sunday, May 2, 2004 @ 3:35 pm

  19. I had a long period in which I was obsessed by the magical rsync. I recommend Andrew Tridgell’s thesis (at http://samba.org/~tridge/phd_thesis.pdf ), which describes rsync in detail to anyone with an interest in networking or data structures, and an interest in rsync in particular. It’s a remarkably clear, engagingly written document.

    Comment by Paul Ford — Sunday, May 2, 2004 @ 3:36 pm

  20. I’d actually recommend against learning Ruby, unless your goal is to make a concerted effort to knock Sam Ruby down a few rungs in Google.

    This isn’t to say I don’t like Ruby: it’s my scripting language of choice. But I suspect you’d have exactly the same problems moving to Ruby that I did whenever I tried to learn Python. The languages fill an identical niche, but are different enough that someone proficient in one will feel uncomfortable and unproductive in the other, _without_ the benefit of feeling they’re doing anything novel in the process.

    If you’re going to switch scripting languages, pick something alien enough that the struggle seems worthwhile.

    Comment by Charles Miller — Sunday, May 2, 2004 @ 5:37 pm

  21. I’m not sure how much instant messaging you do, or how important certain features are to you with mediums like aim (such as profiles), but it would probably be a good idea to check out Gush - http://www.2entwine.net . It’s a neat application that allows you to read RSS feeds as well as interface with Jabber, AIM, MSN, and Yahoo.

    Comment by Mark Elliot — Sunday, May 2, 2004 @ 7:54 pm

  22. For what it’s worth, the problem with digest auth and Subversion was an Apache bug, not a Subversion bug, and it’s been corrected in recent versions of Apache 2.

    Comment by Garrett Rooney — Sunday, May 2, 2004 @ 11:24 pm

  23. I’d always read good things about rsync. I knew that it was uber-fast. I knew that I should be using it. But I wasn’t. This post finally gave me that kick in the pants that I needed to get started with it. The simple syntax you posted worked perfectly for me since I already had key-based ssh authentication running. Thanks for that, Mark!

    Comment by Scott Johnson — Monday, May 3, 2004 @ 9:38 pm

  24. Re: Colloquy and memory usage

    I think newer builds of Colloquy do *much* better on memory usage. Plus, I threw together a style that limits the message scrollback, which helps keep down memory usage too.

    Eh, but if you like what you’ve got, this is probably not enticing :)

    Comment by deusx — Tuesday, May 4, 2004 @ 12:07 am

  25. Even though you say you would never leave rsync, you should at least take a peek at rdiff-backup if you want to be able to restore from incremental backups:

    http://rdiff-backup.stanford.edu/

    Comment by BiteyMcStink — Tuesday, May 4, 2004 @ 12:54 pm

  26. For IM on Windows, I’d suggest you look at the win32 builds of gaim ( http://gaim.sf.net/win32 ). Supports just about everything that the Linux version of gaim can do (though some features, like spellcheck, TCL plugins and Perl plugins require installing additional software).

    Gaim actually makes a passable IRC client, too. IRC’s really nothing but an older IM and chat protocol (though it’s a little weak on the presence notification part of IM).

    Gaim is possible on Mac OS X, but only through X11, which means no dock (or menubar) stuff and otherwise not quite interacting well with the rest of the desktop. (I really want an IM client to interact well with the desktop, since 95% of the time it’s in the background and out of my way)

    Comment by Freiheit — Tuesday, May 11, 2004 @ 4:16 pm

Respond privately

I am no longer accepting public comments on this post, but you can use this form to contact me privately. (Your message will not be published.)



Recent Stuff For You, Special Price Stay Here
  • Greasemonkey Hacks
Good Stuff Buy The Cow Go Away
Dive Into Python
Powered by Google Drink The Milk Don't Steal

 

posts / comments
© 2001-8 Mark Pilgrim