Archive for August 2004
Monday, August 30, 2004
BBEdit
8 is now shipping, and there are copious
release notes, far too many to discuss. If I don’t mention one of
the new features, it doesn’t mean that I dislike it (or that like it),
just that I didn’t have anything in particular to say about it.
BBEdit’s interface, long derided as behind the times, has been re-done
using Nib files, and it uses sheets and drawers—where they make
sense—as well as the font panel. The spelling checker is now non-modal.
Although under the hood the changes were likely major, on the surface
the differences are minor. Overall, BBEdit 8 still feels like BBEdit, only
better.
There is one major interface change, though: BBEdit can now open more
than one document in the same window. This is similar to how Xcode and
tabbed browsers work, and I’ve never really been a fan of this kind of
interface. I think that’s because I’ve never seen it done right. BBEdit
8 gets it almost right, though, and as a result this feature has been
growing on me. I often have many different documents open in BBEdit,
from different projects, and grouping them into a few windows makes
them easier to manage. There’s less overhead than in using BBEdit’s
File Groups, and as a result I am using the Documents drawer more
often. The main problem is that the resulting window arrangements are
too ephemeral. They should be saveable, along with the palette
positions, in Workspaces, or else someone should write an AppleScript
that saves and restores window states. Also, I can’t tab into the
Documents drawer; I have to click in it, which almost defeats the
purpose of type-selecting.
Codeless Language Modules are here at last. There is already a module
for Apache
Configuration Files. BBEdit still uses its code-based language
modules for most of the built-in languages, and so it kind of offers
the best of both worlds: speed and accuracy for the common and
difficult-to-parse languages, and easy extensibility for languages with
standard tokenization. However, we’re not quite there yet,
because the codeless language modules are a little under-powered. They
don’t support regular expressions so, for example, the Apache module
can’t color the pseudo HTML tags. Only one set of keywords is supported
per language. And there is no way to take advantage of BBEdit’s
existing language modules, e.g. to embed your new language (or one of
the built-ins) into HTML. Language modules are still limited to
coloring and the function pop-up; there is no language-sensitive
indentation or navigation assistance, as in Emacs.
Other notes:
- Language guessing is much better. CVS integration is improved, with
support for Perforce added, and Subversion on the way.
- Preferences are now stored using the defaults system.
- It’s nice that the HTML checker can ignore parts of documents and
also check partial documents.
- Multi-file Find and Replace is much improved, with more flexible
folder selection and background processing. Whenever I hear about a new
text editor that’s “better than BBEdit,” the first thing I do is open its
Find and Replace window. Then I run back to BBEdit.
- Text Factories are kind of neat, but BBEdit was already
scriptable.
- Reopen Using Encoding, Compare Front Documents, and the new
bbdiff tool obsolete similar home-grown scripts that I’d been using.
- State is now stored in a property list, keyed by path, rather than
in resource forks. As a result, when I move my files around (or just let them sit around for a few weeks), BBEdit
forgets minor state, like the window position and insertion point, and
major state, like the encoding and tab settings.
- The Convert to ASCII command is gone. Straighten Quotes is a poor
substitute.
- If only Apple would let third-party developers display Xcode
compilation errors and access CodeSense.
The move to Subversion was pretty smooth (though I haven’t yet switched
to Trac), and I am in general very happy with it. I was finally able to
do some folder and file restructuring, which I had been putting off
because of CVS.
One of my favorite features of Subversion is that it stores checksums
of each revision of each file in the repository. It can actually
verify the contents of the repository, and I’ve written a
little shell script to do this regularly. Sounds pretty basic, but I’ve
had problems with parts of CVS repositories going bad, and not noticing
until months afterwards.
In order to speed up network operations, Subversion keeps pristine
copies of the checked-out files in its .svn/text-base folder. When you
commit a file, it sends the database the differences between the
pristine file and the one that you’re checking in. It seems like this
could lead to repository corruption if the pristine copy gets damaged,
but Subversion protects against this by not letting you check in a file
if its pristine copy has the wrong checksum.
The one snag I ran into is that the default settings of cvs2svn corrupted some of my Localizable.strings files and that I was later unable to check in changes to these files. When committing, I would get this error message:
Transmitting file data .svn: Commit failed (details follow):
only Subversion wouldn’t print any further details. The problem was that, by default, cvs2svn sets the svn:eol-style property on text files, and that it thought my UTF-16 .strings files were text. From now on, when I use cvs2svn, I will invoke it with these options:
cvs2svn --no-default-eol --keywords-off --cvs-revnums
Morbus Iff:
There are just as many sites out there that don’t have disclaimers on them, yet are used for reference far more often than not.…I’d much rather be able to correct an error right now then to contact a supposedly or admittedly authoritative site, inform them of an error, and receive no response, lackluster hubris, or worse yet, blanket acceptance
SpamSieve 2.2, released last week, includes many improvements.
SpamSieve
Monday, August 23, 2004
Tim Bray:
There are all sorts of variations around I/O and so on, but my finding is that for this problem, the Java 1.4.2 regex processing is somewhere around twice as fast as Perl 5.8.1. Frankly, I’m astounded.
Friday, August 20, 2004
Brent Simmons discusses NetNewsWire 2.0 and mentions that he prefers fixing bugs:
This, luckily for me, is my favorite part of software development. I enjoy fixing bugs much more than I enjoy adding big new features, probably because I can fix a bunch of bugs in a few hours. It’s like eating chocolates throughout the day instead of eating one big steak once a week.
Ned Batchelder:
Looks like the venerable MD5 cryptographic hash has developed a
crack: A
real MD5 collision. A team has published two different input
streams which hash to the same MD5 value. Of course, because of the pigeonhole principle, everyone knew this had to happen. But no one had ever found a pair
before.
Update (2024-03-22): Marc Stevens (via Hacker News):
Here is a 72-byte alphanum MD5 collision with 1-byte difference for fun[…] This is the first md5 collision with only printable ascii that I know of.
David Buchanan (via Hacker News):
The image in this tweet displays its own MD5 hash.
[…]
This was particularly tricky to make work because the image data in a PNG needs to have a valid adler32 checksum, and a valid crc32 checksum.
MD5
Thursday, August 12, 2004
Adam Swift writes about how to set up a Subversion server using Mac OS X’s Apache (via Bill Bumgarner). I opted instead for the simpler client installation, and for the past week or so I’ve been getting ready to migrate to Subversion. It’s a rather involved process, because cvs2svn requires a newer version of Berkeley DB than ships with Mac OS X, and newer Python bindings to go with it. CVSTrac doesn’t work with Subversion, so I will simultaneously switch to Trac, which is considerably more complicated to install and has no import script for CVSTrac.
Wednesday, August 11, 2004
Raena shows how to make WordPress search results more user-friendly.
Monday, August 9, 2004
Dan Sugalski has posted annotated slides from his recent Boston ACM talk.
Monday, August 2, 2004
Lambda links to a scan and an HTML conversion of Alan Kay’s paper, written while he was at Apple.
Alan Kay History Language Design Smalltalk
Sunday, August 1, 2004