Zamansky: A Quick Review of Editors

Mike Zamansky posted a quick review of programming editors and IDEs. It’s actually intended to be about picking a Java Editor/IDE in support of Java programming courses for teachers but it’s more generally useful. Zamansky, of course, is an Emacs guy but thinks that Emacs is not a good tool for beginners.

I see that opinion a lot, often expressed as Emacs is too difficult to learn for beginners and it doesn’t make sense to try to learn it at the same time as a new programming language. I consider that attitude an example of the tyranny of low expectations and grumpily reply that most worthwhile things aren’t easy and if you’re not willing to put in some effort, find another occupation. Still, Zamansky knows better than I ever will how to effectively teach CS to his target audience so, of course, I defer to his judgment on the matter. That’s true even though I know he shares my opinion that Emacs is not really hard to learn or use.

Having decided to not start with Emacs, he considers what editor he should start with. He looks at

  • Emacs
  • Gedit
  • Vim
  • Sublime Text
  • Atom
  • Jedit
  • Eclipse
  • DrJava
  • Geany
  • BlueJ
  • IntelliJ
  • VSCode
  • JGrasp

I must admit that I hadn’t even heard of some of those so it was interesting to see what he had to say about them. Again, his evaluation is mostly in the context of teaching Java to teachers wanting to certify in Computer Science but his remarks are more widely useful even if they won’t necessarily help you choose an editor for your day job.

Posted in General | Tagged , | Leave a comment

Texting and Line Editing

In the past, I’ve written disparagingly about line editing as practiced with the ed editor. That’s not to say that ed isn’t a great editor or that it doesn’t have its uses even today, just that no one (in their right mind) wants to line edit if they don’t have to.

I still think that’s true but the other day, I had a mini-epiphany: almost all of us line edit everyday when we text: you enter a line (or block) of text and commit to it by sending it on its way. Once committed, you can’t cursor back to correct an error. That happens all the time to me when iMessage helpfully “spell corrects” a word changing it into something I didn’t intend. What to do?

I do what we all do: I issue a separate correction. If I’m chatting with a technical person, I even use the ed notation that all nerds know

s/us/use/

or, if I’m texting with a civilian

us → use

That’s pretty much the exact ed workflow.

None of this is has any great import or reflects deep thinking, of course. I just find it amusing that despite my demurrals, I, along with most of the rest of you, am still line editing.

Posted in General | Tagged | Leave a comment

Another Org-based Writing Environment

John Borwick was looking for a writing environment that suited him. He’d tried Scrivener and some of the other tools but they didn’t work for him. Then he saw Jay Dixit’s video that I wrote about back in 2015 and decided to adapt Dixit’s solution.

Borwick has an interesting post that describes his system for writing in Emacs. The heart of the system is the use of org-panes to provide three panes: a top-level outline of his document, a detailed outline, and the main pane for the actual writing. He also uses Olivetti, which many writers favor because it increases the margin sizes. He uses a few other convenience packages but the environment centers around the three views of the piece he’s writing.

His solution is, in a sense, the polar opposite of the blank page environment preferred by many writers. In that setup, there is nothing but an empty space that you can put words into. In the extreme case, even the mode line is eliminated. Bastien Guerry wrote a post about how to do this with Emacs. The nice thing is that Emacs can provide either environment—and many others, as well—so you’re covered whatever your preferences.

I do all my writing in Emacs—mostly in Org-mode—and wouldn’t consider using any other tool. It’s easy to adapt it to provide just what I want and if some other tool has a nice feature, it’s usually easy to add it to Emacs.

Posted in General | Tagged , | Leave a comment

UC Strikes a Blow for Open Access

The University of California has struck a blow for the Open Access movement by terminating its subscriptions to all Elsevier journals. UC and Elsevier have been in negotiation for some time trying to find a way to make UC research results—about 10% of all US research publications—available to everyone without cost. Sadly, those negotiations failed but UC stood by their principles and dropped their subscriptions.

That’s not like you or me dropping Amazon Prime or using DuckDuckGo instead of Google. Who would notice or care? UC on the other hand spent multiple millions of dollars on Elsevier subscriptions and as a leading university system stands as an example to the other big consumers of Elsevier publications. Their defection has to smart, especially if other universities follow their example.

As I’ve said before, journal publishers are solving a problem that no longer exists. Research can, and should be, distributed on line. That’s mostly what Open Access is all about. The publishers continue to exist and thrive only because universities continue to base their tenure and promotion decisions on a faculty member’s record of publishing in “top flight” journals, which, of course, means that junior faculty must publish in such journals if they want to survive.

Already, though, many senior faculty are refusing to publish in, or referee for, journals that don’t make the research available to anyone without cost. Once the tenure and promotion committees get onboard, it’s hard to see how big publishers like Elsevier are going to survive with their current business models. Of course, there’s hardly any institution more stodgy and resistant to change than such committees so who knows what will happen.

Regardless, we can all cheer UC’s decision and hope that other universities follow suit.

Posted in General | Tagged | Leave a comment

Today I Learned…

…about the delete-horizontal-space command (bound to Meta+\). It deletes all spaces and tabs around the point. You can delete just the white space before the point by specifying the universal argument. I learned about the command from a reddit post by rmberYou that listed some useful Emacs packages.

The post suggested hungry-delete but then added a note about delete-horizontal-space. The suggestion for delete-horizontal-space came from a comment where the command cycle-spacing (bound to Meta+Space) is also discussed. One invocation of cycle-spacing deletes all the spaces but one. Two invocations deletes all the spaces, and three invocations puts things back the way they were.

I use the cycle-spacing command all the time (although only in its single invocation mode; I’d forgotten about the rest) but delete-horizontal-space is new so I’ve learned another useful Emacs command. The day has not been wasted.

Posted in General | Tagged | Leave a comment

Org-mode 9.2.2 is Out

Bastien tweets that the latest Org-mode is available:

After the recent problem with the agenda being broken, I decided to stop living on the bleeding edge and started getting Org from GNU ELPA. Confusingly, the current release there is labeled 9.2.2 but when I run org-version is reports 9.2.1.

I’m a big time user of Org-mode, of course, so I like being up to date but because I am a big time user, I can’t tolerate having it broken so I’m trying getting it from the GNU repository for the time being. If that gets too far behind, I can always go back to using the Org repository.

Posted in General | Tagged , | Leave a comment

Some Wisdom on Pipelines

Over at his blog, Ted Dziuba has posted a valuable piece of wisdom that is easy to forget. The TL;DR on the wisdom is that many tasks for which we instinctively turn to heavy-weight, distributed tools are more easily and safely accomplished with a pipeline of standard Unix utilities.

That can be a hard lesson to learn. When I was young and foolish I would often throw together such a solution but because I was silly would think of it more as a proof-of-concept and go on to build a “real” solution, usually in C. And that was true even though the original solution solved the problem perfectly well and had a perceived run time that was virtually indistinguishable from the one written in C.

Doubtless, I’m still doing silly things but at least I’ve gotten over that particular brand of it. Not all jobs are amenable to a Unix pipeline, of course, but many are and it’s worth looking at each task to see if they qualify before renting a bunch of virtual servers and firing up Hadoop.

Back in the Old Days™, resources were more limited so solutions like those recommended by Dziuba were more natural and pipelines were the go-to tool. That’s less true today where resources are plentiful and the command line is often looked at the same way we look at COBOL. Still, even though it’s an old post it’s nevertheless worth reading and taking to heart.

Posted in Programming | Tagged , | Leave a comment

Refugees

As documented in my last two posts, the editor holy wars wage on. Meanwhile, the ed partisans that you didn’t even know existed are inviting refugees from the war to come home to the Unix standard editor. They even have their own Twitter feed, which although low traffic is still active—as of this writing there are 3 tweets within the last 24 hours.

Posted in General | Tagged , , | Leave a comment

That Didn’t Take Long

The battle is joined. Guess where emacs.dev takes you.

Posted in General | Tagged , , | Leave a comment

International Beat Up on Vim Day?

It’s Friday so let’s have a bit of whimsy. This morning, I ran across two separate items poking gentle fun at Vim. First up is the fact that someone bought the vim.dev domain and immediately pointed it at the Emacs site:

Right now, lots of people are tweeting about this so it’s little more than a weak joke but consider what will happen in a few months when some unsuspecting prospective user goes looking for information about Vim.

The second item is a Vim plugin that exits Vim as soon as it’s started. It’s a trivial one-line hack written by a Vim lover who did it as a joke. The project’s README is witty as well so give it a read if you’re amused by the Emacs/Vim holy wars.

Emacs partisans can, I’m sure, expect retaliation shortly.

Posted in General | Tagged , | Leave a comment