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

Parentheses, Elisp, and Other Things That Aren’t Going Away

It appears that I’m temporarily at the end of the Internet: I can’t find anything interesting to write about today. Instead, here’s a rant.

I’ve written before that the Lisp Community’s well-known crabbiness with n00bs is probably the result of having the first thing said n00bs do when joining the community is to suggest some scheme or other for doing away with parentheses. If you’re a Lisper, you know how quickly that gets old. If you’re not a Lisper, you can take my word for it.

Sadly, I recently noticed a parallel offense on the part of Emacs n00bs. Many of them come to Emacs, notice that the extension language is Lisp, and suggest that we rewrite Emacs in a “modern” language such as JavaScript, Python, or Ruby. Here’s a recent example that inspired this rant. As you can see, the poster has no idea of the architecture of Emacs or why things are the way they are. That’s alright: he’s a n00b and no one expects him to understand that stuff out of the box. That said, it’s a good idea understand a subject before you start agitating for wholesale changes.

Here’s a bit of truth for all the n00bs out there: Parentheses, Elisp, and plenty of other things you don’t like or understand aren’t going anywhere. You can make whatever suggestions you like but if you want to be received cordially and have your suggestions treated with respect, take some time to understand the community and whatever it is the community was formed to support.

Postscript: I’ve mentioned this before but it bears repeating. Notice how gentle and respectful those responding to the poster were. The Emacs community really is a friendly and welcoming group of people.

Posted in General | Tagged | Leave a comment

Multics Emacs

Back in 1979, Bernard Greenberg wrote a long document about Emacs on Multics. If you’re interested in the history of Emacs and how it evolved, you’ll probably enjoy reading through the document. It’s fairly long and detailed but all that detail is revealing.

It’s hard today to appreciate how difficult it was to implement Emacs—or any video editor—on a large mainframe like the H6000 system that Multics ran on. The problem was that the hardware didn’t really support per-character input and processing—let alone echoing the characters to the display—so special effort, including patching the OS, was necessary to make it work.

Multics was written in Multics PL/I, which despite being a complete, well designed language was not suited to incremental development. It was, therefore, a poor choice to implement Emacs with its extensibility. Instead, the controversial decision to use Lisp was made—remember that the original ITS Emacs was built as a set of macros on top of the TECO editor. That fateful decision with its profound effect on Emacs extensibility is still with us today. It’s success should give pause to those suggesting alternative languages such as Python, JavaScript, Ruby, or whatever as the Emacs’ implementation/extension language.

By reading Greenberg’s account, you see why Emacs is the way it is today. Although the text representation was different from today’s gap buffer, many of the original implementation details can still be seen in the current versions of GNU Emacs.

As I said, it’s a long document but worth reading if you’re interested in Emacs’ history and beginnings.

UPDATE [2019-01-19 Sat 15:10]: Goldberg –> Greenberg

Posted in General | Tagged | Leave a comment

The Loneliness of the Lisp Programmer

This struck me as funny. And all too true.

Posted in General | Tagged | Leave a comment

Parsing Org Files

Xah Lee has a new and useful tutorial out. It’s about the APIs available for parsing Org files. None of the information is new—it’s all documented somewhere—but it’s very useful to have everything in one place. As Lee discovered, it can be hard to get a complete picture.

Of course, most of us won’t need these APIs for our everyday work with Org-mode but if you want to deal with Org files programmatically, his tutorial will be a real help. He considers three APIs:

  1. The Mapping API
  2. The Property API
  3. The org-element API

Lee gives examples of their use and shows the output you can expect for some of the functions. He also gives pointers to the official documentation in case you want more details. It’s a nice tutorial and worth bookmarking if you think you may need to write some code that deals with Org files and their structure.

Posted in General | Tagged , | Leave a comment

Detangle

For some reason I haven’t been following Yisrael Dov’s Emacs is Great series of videos on Emacs. That was definitely a mistake and I’m going to start paying more attention from now on. In the meantime I’d like to mention his video on detangling.

What’s detangling? You probably already know that Org-mode will let you tangle parts of an Org file in the Literate Programming sense. The common example is to write a literate Emacs init file in Org-mode and tangle the actual Elisp into an init.el file for Emacs to use during initiation. Dov shows how you can use the :comments keyword to insert comments in the generated file that are Org links back to the places in the source Org file that produced the Elisp in the generated file. You may or may not think that’s useful but the :comments keyword also enables the capability to make changes in the tangled file and have them inserted back into the source file. Hence detangling.

I had no idea this capability existed but I can see how it could be useful. Dov suggests that you can use it to help debug your init.el file if you keep your configuration in an literate Org file. Take a look at the video for the details.

The video is only 8 minutes long so you can easily watch it during a coffee break.

Posted in General | Tagged , | Leave a comment