Zamansky 56: Dictionaries and Thesauri

Mike Zamansky has another video up in his Using Emacs Series. This time it’s about dictionary and thesaurus apps for Emacs. Like many of us—or, perhaps, most of us—Zamansky uses Emacs for almost every chore that involves text: he reads and writes his email with it, he reads his RSS feed with it, and he writes his blog with it. Up until now, he hasn’t integrated a dictionary app into his workflow. He usually just switches to his browser and looks up the word in one of the on-line dictionaries.

That, he says, is kind of lame so he wants to be able to look up words from Emacs. I’ve been doing that ever since abo-abo introduced his excellent define-word package. I use it multiple times a day either to check a definition or as a backup to flyspell, which on my machine takes a conservative view and often produces false positives. Its use is so integrated into my workflow that even when I’m not in Emacs, I’ll switch to it so I can look up a word. I get annoyed when I’m on my iPad or iPhone and have to use some other method of looking up a word.

Zamansky settled on the dictionary package. It’s a nice package and easy to use. It’s also more flexible than define-word because it can handle several dictionaries. You can even have a local dictionary server if you’re off-line a lot.

For his thesaurus, he looked at powerthesaurus and synosaurus. He settled on synosaurus while I’m using powerthesaurus. Either one seems a good choice. Synosaurus can use either a local thesaurus (Wordnet, which must be installed separately) or the on-line OpenThesaurus, which does not appear to support English synonyms.

I found this video particularly useful. In the first place, it reminded me about the try package, which is useful to easily experiment with packages before committing them to your configuration. Because Zamansky learned about powerthesaurus from Irreal, it’s a nice bit of what goes around comes around that I learned something about the package from his video. It turns out the powerthesaurus-lookup-word-dwim command is much more useful than the powerthesaurus-lookup-word command that I had been using.

Finally, no discussion of Emacs dictionaries could be complete without—again—mentioning Draft #4 and why you are probably using the wrong dictionary. If you do any type of creative writing you should definitely follow the above link and see what you’re missing. Pointers for installing the 1913 + 1828 Webster’s Revised Unabridged Dictionary and the necessary software is available here.

The video is just short of eleven and a half minutes so it should fit easily into a coffee break. If you don’t yet have a dictionary and thesaurus interface in Emacs you should definitely watch this video. Even if you do have apps installed, watch it anyway: you may, like me, learn something new.

Posted in General | Tagged | Leave a comment

The Emacs C API

As you probably know, Emacs now has a C API that allows you to write extensions in C or any language that provides C bindings. Via Wilfred Hughes we have a pointer to this excellent documentation on how to use the system.

The documentation is fairly long and detailed. There are examples of how to use some of the functions and how to initialize your module. There’s no point in going over everything in this post so I’ll just refer you to the documentation if you’re interested. Be aware, though, that this API does not mean you can now write your extensions in C and not have to know anything about Lisp. Emacs is a Lisp machine and you will still have to understand general Lisp ideas and how data is represented so that you can communicate with it from your C (or other language) module.

Posted in General | Tagged | Leave a comment

Freeing Space on Your Mac Development Machine

This post is nominally specific to Mac users but the same techniques, mutatis mutandis, could be used by developers on Linux and perhaps even Windows.

It’s a commonplace today that disk space is cheap and that we can operate—to a first approximation—as if we had infinite disk storage. The reality, of course, is a bit different. Our local disk space, while generous in comparison to just a few years ago, is anything but infinite and sooner or later we’re going to have to clean things up. That’s because crud—in the form of log files, old caches, and other such files—accumulate over time wasting space and making things slower.

There are, of course, programs to automate a lot of the cleansing but developers have special needs that most of those programs don’t know about. Gant Laborde has a nice post entitled How to free up space on your developer Mac that discusses some of the things developers can do to free up space on their Mac. As I said, most of his ideas translate to other Unix-like systems and perhaps—although I don’t know for sure—to Windows.

It’s surprising how many ways cruft can accumulate on your machine so it’s nice to see some techniques for getting rid of a bit of it. If you’re a developer, be sure to take a look at Laborde’s post even if you’re not a Mac user.

Posted in General | Tagged | Leave a comment

Having Org Notes Buffer Inherit Its Input Method

When it comes to eliminating workflow friction, few do it better than Matus Goljer (Fuco1). His latest post describes a fix for a problem that I didn’t even know existed: When Org pops up a log note buffer (after a change of task status, for example), the input method reverts to English. That’s fine if English is your native language and you’re shamelessly provincial like me. As I say, I didn’t even know it’s a problem. But English is not Goljer’s first language and he, of course, prefers to use an input method appropriate for his native tongue. The problem is, the log note buffer reverts the input to English.

As Goljer notes, that’s ironic given that the current maintainers are also not native English speakers. In any event, he put together a few lines of Elisp that solved the problem for him. As he says, he spent a total of about 2 minutes on it, far shorter than the time he spent searching for a solution in the manual.

If you also use a default input language other than English, be sure to take a look at Goljer’s post for an easy fix. If you are a native speaker, you might also want to check out his post just to see his code. I learned a couple of new Elisp functions that I didn’t know about so it was worth it for me.

Posted in General | Tagged | Leave a comment

Moving to Emacs

Continuing yesterday’s theme of moving to Emacs, let’s discuss some ways of easing the transition. Nikhil Soni has a nice post that describes how he got Emacs to provide the features he was used to from editors like VSCode, Atom, and Sublime.

In particular, he wanted Emacs to give him these functionalities:

  1. Duplicate current line
  2. Move a line up or down
  3. Multiple cursors
  4. Auto-completion
  5. Fuzzy search for file name
  6. Project tree view
  7. Go to function or class definitions
  8. Return to previous cursor position
  9. Find all function references
  10. Markdown preview

Most serious Emacs users already have solutions for these but Soni goes through them one-by-one and shows how he implemented them. Almost every item was implemented by loading a package or with a (very) few lines of Elisp. Soni shows the Elisp in his post but also provides a pointer to the file in his configuration that provides them.

It’s a nice post that demonstrates that there’s nothing—other than bling—keeping you from upgrading from VSCode, Atom, or Sublime. Or so I say. Some partisans of those other editors will doubtlessly strongly disagree. That’s alright. As I’ve said before, the choice of an editor is a personal, not a moral choice. Of course, if you want the best editor…

Posted in General | Tagged | Leave a comment

Why You Should Buy Into Emacs

Christoffer Stjernlöf over at Two Wrongs has a very well done post on Why You Should Buy Into the Emacs Platform. Posts on “Why I moved to Emacs” are common, of course, but Stjernlöf has written a comprehensive post that recognizes Emacs as more of an environment than just an editor.

He notes, for example, that you can edit code with any old editor but only Emacs can give you Magit. He says that Magit alone is reason enough to adopt Emacs but there are many other applications available with the Emacs platform. You can even write your own applications for Emacs if you like.

There’s no point in me listing all the Emacs features and packages that Stjernlöf admires; you should go read his post. Nonetheless, it’s worth noting that in keeping with his holistic view of Emacs, Stjernlöf lists many ELPA packages that he finds useful. Evaluating a piece of software by taking into consideration addons that third parties wrote my seem like cheating but it isn’t. Almost all of us have several packages installed to make our editing easier or to deal with tasks such as Email or RSS. It’s the packages that make Emacs an environment worth spending the time to explore and learn.

In any event, Stjernlöf’s post is interesting and worth a read.

Posted in General | Tagged | Leave a comment

Does Behavioral Advertising Even Work?

Techcrunch has published an excellent article that explores the case against adtech. It’s remarkably fair and balanced but concludes that the case against behavioral advertising is stacking up. One of their key pieces of evidence is that the New York Times has stopped using ad exchanges and user tracking in Europe due to concerns about the GDPR while at the same time their ad revenue has increased.

I mentioned this in a comment and Phil remarked that not all publishers have the resources of the Times and that perhaps ad exchanges could be viewed as providing a service for small publishers—or even bloggers, I suppose—who want to advertise. That’s a fair point but doesn’t address the larger question: is behavioral advertising the best way, or even a good way, to spend your advertising budget?

Techcrunch says that the adtech industry is facing increased pressure from above and below. From above because the GDPR is an existential weapon in the hands of regulators concerned with privacy. Even in the U.S., the government is making more and more concerned noises about adtech’s abuses.

The pressure from below could also be existential. Users are awakening from their slumbers and seeking to put an end to the snooping into their activities. They have a formidable weapon: ad blockers. Already, about a third of users have deployed ad blockers and their use is increasing. Some advertisers have responded by refusing to serve content to sites with blockers but if blocker usage increases much more that will cease to be a reasonable strategy.

If you’re at all interested in or exercised by advertiser tracking, you should definitely take a look at the Techcrunch article. It’s a good summary of where we stand.

Posted in General | Tagged | Leave a comment

Test Drive Programming Fonts

Programmers, it seems, are always looking for the perfect programming font. Years ago, I settled on Inconsolata and haven’t looked back. A lot of that is probably laziness: it can be a pain to track down fonts to see what they look like.

Now there’s a handy way to try out a bunch of programmer fonts and download them if you like what you see. Over at programmingfonts.org they have a nifty page that lets you test drive 50 programming fonts. You can even type in your own code, if you like. Each font has a link to further information and a download page. It’s a nice resource and easy to use.

UPDATE: Reformat to eliminate line breaks.

Posted in General | Tagged | Leave a comment

Zamansky 55: Irony Completions

Mike Zamansky has posted another video in his Using Emacs Series. This time it’s about configuring Irony to get completions for C++. Personally, I don’t use things like company-mode and irony-mode because I don’t like having random buffers pop up offering to complete whatever I’m writing. That’s a minority position, I know, so if you do like the idea of completions and you write in C++, you should definitely take a look at Zamansky’s video on how to get things working.

The video is only 3 minutes, 48 seconds so you should be able to sneak it in no matter how busy your day. As always with the Using Emacs videos, it’s well worth your time even if you aren’t particularly interested in completions.

Posted in General | Tagged | Leave a comment

Planning Your Life with Org Mode

Mats Tage Axelsson over at Linux Hint has the first in a series of posts about planning your life with Org Mode.

This first post focuses on scheduling and capturing with Org-mode. There’s not anything new for those already using Org-mode but it’s a good introduction to Org. I’ve written before that Org is so big and complicated that it can be intimidating for new users and that the optimum strategy is to begin by learning and using just one or two of its features. This post is a good introduction to some of Org’s most popular functions: scheduling, capturing, and the agenda.

If you follow Axelsson’s sample setup, you’ll have the beginnings of an excellent TODO application that can be expanded to many more functions as you get familiar and comfortable with it.

Posted in General | Tagged , | Leave a comment