They Never Give Up

The Simple Analytics Blog has a disturbing post about Vodaphone and their reintroduction of persistent tracking. Vodafone & Deutsche Telekom are network providers whose job it is to send our data across the Internet and nothing more. They’re supposed to be a simple pipe that passes the data along without interference.

But there’s money to be made so of course they’re abandoning that role. They want to add a unique ID to each transaction so that Websites can query, and pay, them to see what other sites a user has accessed. Vodaphone, of course, is claiming that this is actually a privacy friendly policy but only the most naive will be deceived.

As the article points out, Apple is trying to circumvent this sort of move with their iCloud Private Relay service that encrypts your Web transactions so that Internet providers can’t spy on them. But you don’t need to rely on Apple. Just run a VPN and all your provider can see is that you are connecting to your VPN provider.

On a recent beach vacation with my family, I routed everything through my VPN provider, ExpressVPN, and was delighted at how transparent it was. Once I turned it on, it automatically reconnected each time I woke up one of my devices. There’s really no reason that you couldn’t just leave it running all the time. Indeed, I forgot to turn it off and after I got home I didn’t realize it was still running until a day or two later. As far as I can tell, there was no delay so there’s really no reason just to keep it running all the time. An added bonus is Vodaphone and their ilk will hate that.

Update [2022-08-06 Sat 12:55]: are → our

Posted in General | Tagged | Leave a comment

Changing How Emacs Works

Karthik has a nifty video on how to change the way Emacs works. We’re all fond of saying that Emacs is infinitely extensible and customizable but then we usually go out for a beer without saying how. Kathink remedies that by showing us how to change Emacs’s behavior even when we don’t know what we’re doing.

Kathink uses Notmuch to read his email from within Emacs but he’s got a problem. He’s a developer so a lot his email includes a patch or a diff as a MIME attachment. That’s fine but most of the time he doesn’t want to see large patches or diffs. What he’d like is for those two MIME types to be folded by default so that they don’t clutter up his emails but so that he can unfold them when he does want to see their content.

He begins by saying he has no idea how Notmuch works but he doesn’t let that stop him from resolving the issue. What follows is his step-by-step discovery of how to solve his problem. He beings with the usual checking of the documentation and customize subsystems but, sadly, that was of no avail. Instead, he had to turn to the source code.

Notmuch has a lot of code, none of which he’s familiar with so it seems like an impossible task but Karthik shows definitively that that’s not the case. He doesn’t use a debugger or any fancy tools; he just burrows around in the code until he zeroes in on the solution. His method resonates with me because it’s pretty much what I do. Most of the time I don’t really know exactly where I’m heading but just follow the clues until I arrive at the solution. That’s exactly what Karthik does.

The video also demonstrates somethings that I already knew but didn’t appreciate enough until I saw them in action. The first of those is using xref-find-defintions to navigate through the code. The second is setting what Karthik calls “pins” to remember locations so that you can return to them at will. He does that with point-to-register to set the pin and jump-to-register to return to it.

This is a really good video and I recommend it to all Emacs users. It’s 29 minutes, 44 seconds so plan accordingly but do try to find the time.

Update [2022-08-01 Mon 13:10]: Work → Works

Posted in General | Tagged | Leave a comment

Improvements to dwim-shell-command

Álvaro Ramírez has been busy making improvements to his excellent dwim-shell-command package. I’ve written a lot about this package recently but that’s okay because it’s something most Irreal readers would want to know about. The TL;DR is that the package provides a DWIM interface between Emacs and the shell making it easy to invoke various utilities from Emacs that would normally be started from the shell.

The new version allows dwim-shell-command to operate on a set of files in a region rather than having to be marked in dired. There’s also a marker to insert the contents of the clipboard into a command. That’s perfect for inserting a URL that you’ve clipped from, say, the browser and using it in a shell command.

Finally, Ramírez has added numeric and alphabetic counters that allow for names that are the same except for the counter value. That works just as you’d think it would. The package is, after all, meant to provide do what I mean actions.

As far as I can see, this package started out as a quick hack that allowed Ramírez to create an easy way of invoking frequent but complex shell commands. Once he’d laid down the framework, new applications kept suggesting themselves to him and the project has grown.

As I wrote the other day, the package is now available on Melpa so it’s easy to try it out if you’re interested.

Posted in General | Tagged | Leave a comment

Red Meat Friday: Commit Messages Don’t Matter

One of our sacred notions—never to be questioned—is the importance of writing good commit messages. There are hundreds of articles on how to write good messages and how to properly format them. Magit will even enforce a length limit on the first line.

But do those messages really matter? When you think about it, all the information that the conventional wisdom insists you include is easily available in finer detail elsewhere. In the case of Magit, it’s only a keypress away.

Matt Rickard makes the case that commit messages don’t matter and that our time is better spent elsewhere. My personal policy is to give a hint as to what the commit does and leave the details to diff or other appropriate commands. Once you get out of code police mode, it’s pretty clear that Rickard is right. But, of course, none of us want to get condemned for apostasy so we pretend to agree with the received wisdom.

Posted in General | Tagged | Leave a comment

Why Use Emacs in 2022

Torstein Johansen has a short video that addresses the question of why he uses Emacs in 2022. The backstory is that every time he takes a new job or consulting position, the incumbents—who all use things like IntelliJ, Eclipse, or even VS Code—stare in disbelief when they see he is using Emacs and lecture him on how much more efficient he could be if he was using a Modern Editor™.

Johansen disagrees. Maybe, he says, there isn’t a button in Emacs to automatically refactor a section of code—although such a thing could be, and perhaps has been, implemented by any user who feels the need—but what Emacs offers is speed. Speed in the sense of being the shortest path between your brain and what appears on the screen.

Johansen also makes the familiar point that Emacs has a consistent set of shortcuts that work for virtually all the packages that run inside it. Those shortcuts allow efficient navigation of editing of whatever buffer happens to have focus. He notes that this is so comfortable that Emacs users typically try to stay within Emacs as much as possible.

This leads to the well-known phenomena of Emacs users trying to migrate as many tasks as possible to within Emacs. Johansen considers himself “a bit out there” because he handles his email from within Emacs. I found that amusing since I do the same and more. As I said many times, virtually all my tube time is spent in either Emacs or the browser and I’ve migrated as many Emacs shortcuts as possible to the browser and other macOS utilities.

The kids can say whatever they want about their fancy editors but the fact remains most serious programmers use Emacs or Vim.

Posted in General | Tagged | Leave a comment

Spacing in Displayed Mathematics

Most Irreal readers probably don’t have much need to typeset mathematics but occasionally the need does arise and if you’re like me, you want it to look as good as possible. Most of us will never be as good as the people who do this professionally but LaTeX gives us a good head start and learning a few style rules means we can produce typeset mathematics we can be proud of.

Nick Higham has a short post on his guidelines for spacing in the typesetting of displayed mathematics. It might seem like this is not something we should concern ourselves with or even something we can control in LaTeX but there is plenty of ways to control such things. Consider, for example, two equations on the same line: \[ax+b=c \quad x^2+y-d=0\] and \[ax+b=c \qquad x^2+y-d=0\] The second looks better because I inserted a double quad instead of a single quad between them. Higham has other examples of small spacing tweaks that makes the final text look better.

Take a look at his post. It’s short and easy to read and may help you produce better mathematical output.

Posted in General | Tagged | Leave a comment

DWIM Shell Command On Melpa

A quickie with some good news. Álvaro Ramírez’s excellent dwim-shell-command is now available for download from Melpa. I’ve written several posts on this package [1, 2, 3] and really like what Ramírez is doing with it so I’m glad to see it’s now easily installable.

Ramírez’s post says that the package should soon be on Melpa and when I checked, it was already there. Ramírez has links to his previous posts on his announcement so if you aren’t already familiar with it, you should take a look. His posts give you a good idea of what it can do. If you’re like me and want to make Emacs the nexus of your computer activities, this package is a boon.

Posted in General | Tagged | Leave a comment

Programmers and the Flow

Every programmer knows about the flow. They know about it even if they don’t know the word “flow”. Sadly, most other people are not familiar with the concept. Especially members of the management class. This cartoon captures the idea perfectly.

But there’s a practical matter. What should a programmer do about the clueless manager (or colleagues) who think nothing of toppling the carefully constructed tower of cause and effect?

Erik Dietrich has an answer. The TL;DR is that you should present your manager with a list of numbers and offer to buy lunch if he can add them up in his head within 30 seconds. Once he starts, you interrupt him with random questions and observations until he gives up in despair.

It’s a delightful idea and seems attractive but I’m not sure it would work. The problem with the type of interrupter we’re talking about is that they think whatever they imagine their current problem is, it’s special so the usual rules don’t apply. That’s true even if their current problem is, “when do you think you’ll complete that task I asked you to do.”

Still, it’s an amusing idea and worth a read even if you probably wouldn’t use it yourself. The hard truth, though, is that the only real solution is probably working late where there’s no one around to bother you. Perhaps working from home will be the ultimate solution.

Posted in General | Tagged | Leave a comment

Digital Nomads in 2022

Long time readers know that I’ve been fascinated by the idea of digital nomads since reading Mike Elgan’s article on The New Bedouins in 2007. Back then, it was mostly journalists and a few IT people who were able to live the life of the digital nomad. Since then, the practice has become much more common and there are now many companies that operate exclusively with remote employees.

The practice has become so mainstream that even Bloomberg has taken notice. They’ve published an article that serves as an update on digital nomadism. Being a digital nomad is a little different from what’s become known as “remote work”. The digital nomads don’t want to work from home; they want to go to exotic, usually warm, places. They’re very apt to move on after a few months for somewhere new so they’re not digital expats either.

Of course, being Bloomberg, the article makes the point that the digital nomadic life may not be for everyone and can be fraught with difficulties. There are local laws and tax issues to deal with and as the article observes, the beach is just about the worst possible work environment.

If, like me, you’re fascinated with the idea of working from exotic, pleasant places, take a look at the article. They even have a list of the top five destinations (for various values of “top”).

Posted in General | Tagged | Leave a comment

The Case for Emacs, Vim, and Nano

Over on the Red Hat site there’s a post that makes the cases for the Emacs, Vim, and Nano editors. That may seem like blasphemy to some but different people do have different needs and expectations from their editors.

The first problem is that the post begins with the quote, “Text editors. They aren’t something that most users put a lot of thought into.” Huh!?! Sometimes it seems like that’s all we think about. As ESR once said, programmers spend most of their tube time in their editor so of course we spend a lot of time thinking about them.

I’ve used all three of those editors, although I’ve used Nano only when building a Gentoo Linux system until I could get a real editor installed. The section on Nano pretty much supports this: It’s a simple, straightforward editor that’s intuitive and easy to use. I’m not sure why any serious developer would use it other than to bootstrap a system where other editors aren’t available.

I thought the section on Vim was the best and most compelling. The writer, Ricardo Gerardi, makes a good case for Vim and details all its advantages. It’s fast, light weight, and has the wonderful composable command set.

Sadly, the Emacs section was the least persuasive. As I’ve said many times before, if you want a fast, flexible, intuitive editor, Vim is for you. If you want a programming environment that serves as a sort of operating system—or more to the point, a sort of Lisp Machine—then Emacs is for you.

As for Nano, I suppose you could think of it as a replacement for ed in those situations where you need an extremely lightweight editor to get things going but I can’t imagine using it in my day-to-day work. Of course, other folks disagree. The nice thing is that there are plenty of editors that will meet almost anyone’s needs.

Posted in General | Tagged , | Leave a comment