Chocolat

Screen Shot 2014-01-07 at 4.46.16 PM
Chocolat is an ambitious programmer’s text editor, but it falls short (at least right now) in lots of little ways. E.g. integrating web-based documentation is a nice touch, but what about jQuery?

I discovered Chocolat by accident a month or so back. I can’t exactly remember how I learned about it — I saw a reference to it when reading the documentation of another product I use (I think it might have been Ulysses III) and so I gave it a spin. There was — and remains — a terrible problem with the way Chocolat identifies symbols in Javascript files, and I got into a bit of an argument with one of the developers on github over it, and set it aside. The thing is, Chocolat is an opinionated piece of software, and the downside of that is that one might not like all the opinions. E.g. in their FAQ is the question “will you add a minimap?” the answer to which is “Never!” That said, I like most of Chocolat’s opinions.

Well, there’s a new MacHeist “nano” bundle out and it’s particularly interesting for developers since it includes Hype (the would-be HTML5-based Flash replacement), Chocolat (a new programmer’s text editor which has a lot of potential), and — if some unknown number of people buy the bundle — PaintCode. I should mention that I bought the bundle for PaintCode and then realized it wasn’t actually included. Grrr. Oh well, Chocolat for $20 is actually a pretty good deal.

Here’s what differentiates Chocolat from my two favorite text editors (BBEdit and Sublime) right now:

Chocolat's symbol map is great when it works.
Chocolat’s symbol map is great when it works.
Chocolat tries to show a "symbol map" of your source file, but can't cope with code modules wrapped in anonymous functions (which unfortunately means most well-written Javascript library code). Note the empty rectangle where symbols should be.
Sadly, Chocolat can’t cope with code modules wrapped in anonymous functions (which unfortunately means most well-written Javascript library code). Apparently there are no functions in this source file.
  • Chocolat displays a symbol map (i.e. a list of object and function definitions you can use for quickly navigating source files) — the map is nice, but functionally it’s inferior to BBEdit (which can find symbols declared inside anonymous functions). Espresso remains the best in this respect, since it not only finds all the symbols you could ask for, it displays a nice symbol map too.

Screen Shot 2014-01-07 at 5.03.38 PM

  • Rather than giving you the choice of viewing two files side-by-side or one file, Chocolat lets you look at as many files as you care to side-by-side simply by selecting them.
  • Chocolat attempts to autocomplete Javascript (and does a pretty good job of it, including inferring the expected types for function parameters, and allowing you to tab around auto-inserted method calls TextMate-style). The only downside is that only works on currently open files. I imagine it’s even better with Obj-C (but haven’t tried).

Screen Shot 2014-01-07 at 5.07.14 PM

  • Chocolat attempts to integrate Safari (complete with debugging tools) by displaying it side-by-side with your code. This works pretty well.
  • Chocolat attempts to provide integrated documentation (e.g. select queryGetSelectorAll in a Javascript file and hit Command-Shift-J and it will look it up on MDN and show the documentation side-by-side with your code.
  • Chocolat does not attempt to integrate source control (git, hg, svn, p4, etc.) — I actually like this because I don’t want my text editor to do source control.

 

8 errors. Thanks.
8 errors. Um, ok. Thanks, I guess.

 

  • Chocolat is scriptable via Node.js. (Sublime is scriptable via Python, which is awesome too, but doesn’t happen to be the language I code in every day.) So far the available “mixins” seem pretty primitive (e.g. the jshint mixin tells me that there are “12 errors” in a file, but gives me no clue where or what they are).

For a while I thought Chocolat was a bit sluggish, so I started checking for signs of bloat. I did a quick comparison and BBEdit is actually the leanest of the three editors at 26MB on disk; Sublime 2 is 27MB, Sublime 3 is 28MB, and Chocolat is 34MB. Espresso, incidentally, is 18MB. But it turns out that the problem is I was using a “slow monitor” (i.e. my third monitor which is hooked up using one of those USB dongles). After comparing Chocolat, BBEdit, and Sublime on this display I concluded that BBEdit is even more awesome than I realized (because it appears to do minimal screen updates when scrolling), Chocolat is not bad at all, and Sublime is actually the worst. Again — avoid using USB-powered displays for editing text and you won’t care.

So here’s how it looks right now: Chocolat has the potential to become my favorite text editor since it’s heavily based on Javascript which means anything it doesn’t do well right now I can probably fix if I care to. BBEdit is the most polished, but the hardest to customize. Sublime remains — of course — the coolest, although given that Chocolat has support for both side-by-side editing, supports TextMate themes and snippets, and has “vim mode” it might take that crown, at least on Mac OS X.

But, Chocolat’s multi-file search is far inferior to BBEdit’s (it’s about on par with Sublime’s), its Regex support is also signficantly inferior to BBEdit’s, and it has no diff support (whereas BBEdit is my preferred tool for resolving differences between source files) — although I’m perfectly happy to use BBEdit as a dedicated diff front end, and do my text editing elsewhere.

Chocolat ★★★★ is $49 normally, currently available as part of Macheist Nanobundle 4 ($20).

I may review some of the other apps in the bundle later. In particular I have strong — mostly negative — opinions of Hype and Intensity Pro.

MacHeist Nanobundle 2

Well, Macheist has come and gone again, and now I have a couple of gigabytes of new software (mostly Monkey Island) on my notebook’s hard drive. The usual rule with Macheist (and similar deals) is that you only buy it if there’s a product you’d cheerfully pay the fee for in the bundle, and on that basis this bundle was a great deal for me: I’m a sucker for Monkey Island (even though I never really cared for the threequel). I’m also glad to see Telltale Games shipping Mac products (I hope they port the Sam & Max titles: I will cheerfully pay retail for any Sam & Max title until I become jaded, but I’ll probably buy the Wii version otherwise…).

I did end up installing all of the other programs, although some got uninstalled pretty darn quickly.

MacJournal is a really huge program for keeping a journal. I have a cloud-based solution for doing this called WordPress and — unlike MacJournal — it is accessible from anywhere (including my iPhone), it’s free (and open source), it lets me make some journal entries public while keeping others private, has a comment system, does version control, automatically backs up to the cloud, and doesn’t take up a metric buttload of hard disk space. (Uninstalled)

As a side note, MacJournal is a fine example of an attractive, functional, easy-to-use useless piece of software the like of which does not exist for Windows. If you found a niche product like this for Windows it would be a horrible piece of crap. MacJournal is quite lovely — it’s just not useful to me. All of the pieces of software in the Macheist bundle that I’ve installed and used have been very polished, stable products. It’s a testament to the quality of Apple’s indie software ecology, and I think it must be quite terrifying for Microsoft which cannot itself produce such polished products let alone attract third parties to do so.

Ripit is a program that does one thing (rip DVDs to hard disk) and does it very, very well. I have not quite reached the point of ripping my entire DVD library but when I do, I’ll be glad I got a license for this. (Installed but not used, yet.)

Clips is an intriguing little hack that monitors you clipboard and then automatically keeps the last N clipboards around for use at the touch of a key. I think this is a great idea and pretty well-implemented, but it just never occurs to me to use it. I’m running it though and maybe, one day, I’ll actually use it. It’s a lot like multiple-undo, I think — one day you’ll realize you (a) use it all the time and (b) get enormously annoyed by a program that doesn’t have it. (Installed, running, but not used yet.)

CoverScout is an intriguing iTunes add-on. I haven’t installed it yet but I have high hopes that it will actually help sort out my iTunes cover art situation (my wife and I ripped our entire CD collection two house moves ago, and many of the tracks have very odd cover art having been incorrectly identified by iTunes at some point. As I understand it, CoverScout’s sole purpose in life is to fix this kind of thing, so I’m hoping it’s good at it. (Not yet installed.)

Flow I’ve already discussed. I think I may be in love. At minimum, Flow makes Little Snapper irrelevant by doing what Little Snapper does for screenshots for — basically — everything. I still use Transmit without thinking, though. (Installed, used, kept.)

Rapidweaver is a program I’ve considered and rejected in the past. It’s a very similar program to Sandvox (which I also own and don’t use), perhaps a little better put together and with generally more attractive (and, as far as I can tell, flexible) themes. Unlike Sandvox, it seems to have built up a fairly solid third-party plugin ecology and might actually be a useful product for someone looking for a template-based web development tool. More attractive and flexible than Sandvox, produces much lighter weight pages than iWeb (although also much less flexible graphically). Rapidweaver has also been sitting at version 4.3.1 for a rather long time (it used to be one of those programs that would get revved every few weeks) — perhaps the developers are losing interest. (Installed, messed around with, probably will be uninstalled.)

Tweetie is one of those non-solutions to non-problems. Indeed, since it’s a desktop Twitter client it’s something of a meta-non-solution to a meta-non-problem. I installed it and played with it for a few minutes — the fact that it was not especially obvious how to make a new tweet was a very discouraging sign (I did figure it out…). But at least it’s small. (Installed, used, kept… for some reason. Oh, that’s right, it’s 2MB.)

The Macheist folks also snuck in three bonus programs for promoting them via Twitter (further alienating me from Twitter). One of the programs — Tracks (installed, used, kept) — is a very well thought out iTunes remote (in particular it offers Spotlight-like access to your iTunes library from a menubar widget) but the other two — Airburst Extreme (Uninstalled) and Burning Monkey Solitaire (Not downloaded) — are wastes of hard disk space as far as I’m concerned.