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

Zamansky 54: Org Tables

Mike Zamansky is back with another video in his Using Emacs Series. This time it’s about Org tables and their spreadsheet capabilities. One of Zamansky’s duties as a Hunter professor is to evaluate Macaulay Honors College applications. Like many of us, his first idea was to set up an Org table to help with the processing.

His input is a list of names and ID numbers. He began by importing the list into an Org table and then adding columns for the various rating criteria. He needed an average for some of the columns and a total score column to capture a summary of each student’s rankings. As Zamansky says, you could do this with a spreadsheet but Org tables have extensive spreadsheet capabilities built in so there’s no reason to leave the comfort of Emacs1.

The built in functions for Org tables are from the Emacs Calc utility and are quite extensive. However, sometimes you need something that’s not provided. Being Emacs, it is, of course, easy to do. You can evaluate Elisp in place of the built in functions and Zamansky shows how to do that.

As usual, the video is definitely worth your time. It’s 12 minutes 45 seconds long so it should be easy to find time to watch it.

Footnotes:

1

My record keeping and workflow uses several spreadsheet-like tables but I never fire up an actual spreadsheet. Everything is done in Emacs with Org tables.

Posted in General | Tagged , | Leave a comment