loading...

acme/acme2k: A lesson in sane IDE defaults.

tux0r profile image tux0r ใƒป3 min read

If your IDE requires you to use the keyboard for switching between "modes" instead of just letting you type your code; if your IDE has more colors than your television; if you find yourself configuring your IDE more than once a week: your IDE is probably not the one you should use.

I have commented that I like the acme (resp. the slightly more flexible acme2k) IDE under some recent articles. Let me explain shortly why I like it. I won't waste your time by explaining the installation process here. If you are on Windows (or Debian Linux), you might be interested in my lengthy article on DonationCoder about just that, including some Plan 9 history.

What follows is a screenshot of my minimalistic acme2k setup at work. I usually use Acme's default (yellow/blue) colors instead.

Yep, I made a typo in the first draft. Can you spot it?

As you can see, acme is not your typical IDE: No giant buttons get in your way, no wonderful colors make you think a unicorn had puked into your computer, there is no "intellisense", no "syntax highlighting" (which is a good thing), no obvious integration of compilers, linters et cetera - but in fact, you can integrate any tool, any compiler, even a shell right inside Acme.

However, two things are entirely different from Vim, Emacs, Atom, VS Code, Sublime Text or whatever "IDE" or GUI text editor you might or might not use:

  1. There are no configuration files.

    Why would you need them? As Acme can interact with everything that is "executable", you could easily write an application which interacts with everything inside the editor window. There are people who already prepared that for you.

    Your advantage: You won't waste time configuring (or: misconfiguring) Acme until it fits you. You just can't.

    Your disadvantage: If you don't like the defaults, Acme is not for you. (acme2k adds themes though - to be configured at compile time.)

  2. The mouse is your command mode.

    Just like vi and its spiritual successors (and, to a lesser extent, "modern" editors which have Ctrl key chords for their "command mode"), Acme has an "insert mode" and a "command mode". However, Acme is different in one important aspect: Anything that is not directly related to typing text into your current buffer needs to be done with the mouse, either with mouse chords or with middle-clicking the matching command in the toolbar.

    FAQ: "Wouldn't that slow you down?" - No, not really. Being a productive developer, you probably spend most of the time writing new code instead of changing existing code. Even if you need to do that, clicking directly where you want to type is notably easier than instructing your cursor to go two lines up, five columns to the right and then enter the Insert mode.

    Your advantage: You'll have a clear distinction between editing text and handling your buffer. The latter is done without your keyboard. (acme2k adds a couple of key bindings to make it easier for those who come from other editors though.)

    Your disadvantage: You'll need to open your mind a bit. This is not like "moving from Sublime Text to Atom", this is like "moving from an IBM PC to a PlayStation". You need to forget everything you knew about using an IDE. But there is a chance that this is exactly what you needed - just because other people are fast with their keyboard-controlled IDE, that does not mean that you will be too.

I will probably reference this article in the future. I hope that anyone cares at all.

Posted on by:

tux0r profile

tux0r

@tux0r

File manager and text editor fetishist, code minimalist with a soft spot for C and Lisp. Strongly dislikes Git, Python and Linux.

Discussion

pic
Editor guide
 

FAQ: "Wouldn't that slow you down?" - No, not really. Being a productive developer, you probably spend most of the time writing new code instead of changing existing code. Even if you need to do that, clicking directly where you want to type is notably easier than instructing your cursor to go two lines up, five columns to the right and then enter the Insert mode.

What do you mean by a productive developer? In my opinion, a productive developer actually might have to change a lot of code, more than he/she writes new blocks. And a really productive developer will remove more code than he'd write.

I read a really interesting article which claims that the more experienced you become, the more bad code you will have to fix - and the more frustrated you will get.

Now, here is the question. Can we consider a developer with little experience, who writes a lot of not-so-clean code a productive developer?

Many people do, I think. Mostly non-technical (project) managers. Those who will actually have to deal with the mess, much less.

 

I disagree on almost every point. The "productive developer" bit about mostly writing new code is a pipe dream. It is well understood that more time is spent reading and editing exieting code than developing new code. Also, syntax highlighting absolutely helps with code readability, but I will give you that much of the benefit comes from emphasizing keywords and de-emphasizing comments. A good syntax highligting colorscheme with a good font does wonders when you stare at text most of the day.

I do slightly agree about configurability, but from the viewpoint of a vimmer. Emacs is a great concept, but the configurability makes it almost like a custom-built editor. Vim can be the same way with some people, but the core modes and navigation/editing "language" are fairly universal. I may not be able to use custom key bindings and plugins on your vim, but at least I will be able to get the job done with the standard commands. Vim has a greater focus on providing the same interface, regardless of all the configuration.

I'm sure people can develop just fine without mastering vim/emacs, but mouse liberation has been nothing but an enhancement for me.

 

The "productive developer" bit about mostly writing new code is a pipe dream.

Depends on the project, I guess...

 

Do you really think you write code more than you read it? I suppose if you mainly work solo on projects you might do "write only" programming. I'd still think that later on in he project you would be editing more than writing brand new code from scratch. I work mostly in embedded C, so ymmv, but even when I'm doing python scripts I edit way more than I write.

 

I passionately disagree with the notion that syntax highlighting is a bad thing. Those who argue against it always use the worst colors as an example of why it would be bad.

A good color scheme turns comments into background information, and highlights the structure of the code โ€” with good colors, your eyes can quickly isolate all the method names from a class, and combined with an IDE which understand the language it should identify unused imports and variables. A random color scheme is indeed not useful, but using color to signal structure and semantics is extremely useful.

 

I passionately disagree with the notion that syntax highlighting is a bad thing.

It was not meant like that. Personally, I made the experience that I can work without it in languages which are not JavaScript or C#, but I can also see why some people wouldn't touch an editor without syntax highlighting.

In VS Code (one of the text editors I'm using - yes, I'm definitely using too many editors...) I have a very simple theme: Comments are light grey, code is dark grey, keywords are italic.

 

FAQ: "Wouldn't that slow you down?" - No, not really. Being a productive developer, you probably spend most of the time writing new code instead of changing existing code.

Exactly. And this is where an IDE that understands your code and allows you to quickly navigate and detect problems comes in.

 

A real, living, breathing ACME user??? ๐Ÿ˜ปAmazing๐Ÿ˜ป. I've wanted to meet one for forever. Pretty much since I tried to run Plan 9 and Acme on my Mac through some sort of emulation / port project that I can't name now.

OK - actual question!

The mouse! The three button mouse! Do you have one? Where did you get one? If you don't have one, how do you deal with chords? And... same question but for using a laptop touchpad - does it work, can you do it?

What sort of workflow do you find yourself using? What activities are easier in Acme than in the other editors you use? Which are harder?

I'll think of more questions later on.

 

I know it's almost a year late, and I don't currently use acme, but I've found the Logitech T400 to be a really good three button mouse. It has four actual buttons (left, right, middle, middle-bottom), but the middle buttons are on top of an XY touch/scroll surface.

The most disappointing thing is that they decided to do some weird Super-d combo as the default middle click action (instead of an actual middle click). Fortunately, it's easy enough to remap with their official app in Windows, with Karabiner in macOS, or keymap and udev rules in Linux.

I'm pretty sure that the mouse is out of production, so if you get one and like it, buy a couple more to see you though.

If you're like me, you'll probably also want to swap scroll axis (to natural scroll).

 

A real, living, breathing ACME user???

Or so they say. ;-)

The mouse! The three button mouse! Do you have one?

I have a Logitech G402 which has an acceptably clickable (and durable) scroll wheel. I admit that Acme would be worth getting that old Pilot Mouse from the store room, but I won't do that.

same question but for using a laptop touchpad - does it work, can you do it?

Ha, I can't even use laptop touchpads for anything else. They are a nuisance to me. :-)

What sort of workflow do you find yourself using?

It depends. Sometimes I use Acme (acme2k, that is) for simple note taking (or writing articles), sometimes I use it to fix and compile code.

What activities are easier in Acme than in the other editors you use? Which are harder?

Multi-language compiling is notably easier as I can just replace the command in the tag bar, so is calling any other external commands. I especially like that I can jump directly to erroneous lines. Using the terminal itself is harder than in (let's say) Emacs because the win command is rather conservative in some ways. :-)

 

How do I block users on this site?

 

I think ultimately this question comes down to what makes you happy as a developer. If Acme works for you great, if Atom works for you also great.

Me personally, I started coding with notepad so I like minimal bells and whistles in my IDE. But I know that doesn't work for everyone.

 

I am currently using six text editors on different systems for different tasks. If there was that one perfect editor, everyone would use it everywhere...

Notepad is good enough for surprisingly many things!