Running Emacs as Your OS

I somehow missed the videos by Emacs Guy in which he records his experiment in running Emacs as his OS. Sort of. The idea is to install a minimal Linux system along with an X-server and try to do everything from within Emacs There are going to be some exceptions for things like browsers because, really, eww doesn’t match up to a full blown browser. The use of extra software is mitigated by using exwm so that everything runs in an Emacs window.

So far there are three videos. The first video, which runs about 18 and a half minutes, covers the installation and set up of Arch Linux and Emacs. Once that’s done, almost everything can be done from within Emacs by using eshell to run Linux core utilities when necessary.

In the second video, which runs 12 and a quarter minutes, Emacs Guy configures the Emacs package manager and arranges for it to use John Wiegley’s use-package macro. With that accomplished, Emacs Guy can get down to the job of configuring his Emacs to that the system meets his needs.

The third video, which is just over 16 minutes, begins the Emacs configuration with “making Emacs look nice.” That involves choosing a wall paper and making the Emacs windows a little transparent so that it shows; choosing a font (Source Code Pro); and choosing an Emacs theme (Nord). At this point, Emacs Guy has a nice looking desktop and basic functionality to build on. Presumably he’ll continue the buildout in subsequent videos. I’m looking forward to those but he’s been doing about 1 video a month so we’ll have to be patient.

Posted in General | Tagged | Leave a comment

A Nice Linux Desktop Setup

Dennis Felsing over at HookRace Blog has an interesting post on his Linux desktop setup. He’s a Vim user so he doesn’t have the advantages that Emacs brings for integrating common tasks into a consistent framework. Still, he has built a very nice environment.

One of the most interesting aspects of the post is his discussion of the tools he uses and how he fits them together. Even if you’re an Emacs user, you may find some of the tools he describes useful. One example of that is Unison, a sort of bi-directional rsync that is perfect for the intermachine synchronizing of files that you don’t want to keep in your version control system.

I must admit that I found his solutions for calendaring, scheduling, and TODO lists to be a bit clumsy but that’s doubtless because I’ve been spoiled by Org-mode. It’s easy to forget what a really great solution Org is. On the other hand, Felsing likes light weight tools that don’t consume a lot of resources so perhaps his solutions are best for him.

He’s also got a very nice home-grown backup system. If you’ve got a remote server anyway, his solution may be cheaper and more flexible than a backup service. Felsing likes to keep everything under his control so doing his own backups is a win for him.

If you’re looking to build a good development environment under Linux, you will probably find this post useful.

Posted in General | Tagged , , | Leave a comment

Running a Bakery with Org-mode and PostgreSQL

Piers Cawley used to be a programmer. Now he’s a baker. Following a longtime dream, Cawley opened a bakery and is now happily turning out bread instead of code. Running a small bakery doesn’t seem to offer a lot of opportunities for software to help out other than the usual accounting type operations that any business needs. In a delightful post, Cawley shows that that isn’t true.

It’s easy to imagine that you just knead some dough, pop it in the oven, and a sometime later a loaf of bread appears. Of course, it’s much more complicated than that. A typical “baking” spans two days and exactly what happens depends on how big the order is. Just one example of the things to be considered is how much of each ingredient to include given the final amount of product. That’s basically a simple calculation, of course, that bakers have been making for millennia but it’s important to get it right so that you end up with a consistent product.

After messing up the calculations a few times, Cawley turned to his programming background to automate the process. His solution uses PostgreSQL to hold his recipes and other data and Org-mode and Babel to make and display the calculations. It is, in one sense, a trivial application but I love how he leverages two powerful software tools to solve a problem in an unexpected domain. At the end of the post, Cawley lists some enhancements that he’d like to make to the system.

It’s an interesting post and well worth a read if only to see how a programmer’s editor can help bake bread.

Posted in General | Tagged , | Leave a comment

Reason Number Googol To Avoid Google

Most people think of Google as an advertising company—and that is how they make their money—but I think it’s more accurate to describe them as a surveillance company. The surveillance is in service of the advertising, of course, but if you look at almost any of their products, you’ll see that its real function is surveillance.

What to think, then, of Google’s doe-eyed explanation for the hidden microphone in their Nest security device? It was, they say, an error. A mistake. The microphone was never supposed to be secret, they just forgot to mention it in the specs. Not to worry, though, they absolutely cross-their-heart-promise that it’s never been turned on. As Tom Zeller tweets, “…consumers should probably be forgiven if they don’t trust the company’s after-the-fact promises that it never spied on them.”

Google can, at least, say that they’re not as bad as Facebook but that’s not much of a recommendation. Like Facebook, their intent is to accumulate as much information about you as they can. How much do you think it costs Google to run Gmail? Why do you think they provide it for free? Those are good questions to consider if you’re still telling yourself that your private information is boring and not worth anything.

This latest incident is just another reason, if you needed one, to avoid Google whenever you can. That’s especially true of any in-home device they’re offering. A useful rule of thumb is that Google devices are surveillance devices. If you like the idea of being on the Truman Show, by all means put Google’s microphones all over your house. If you don’t, don’t.

Posted in General | Tagged | Leave a comment

Emacs 26.1.92 Is Out

Nicolas Petton has announced that the third pretest for Emacs 26.2, Emacs 26.1.92, is out. I compiled and installed it yesterday and have been using it as my default Emacs since then. I haven’t encountered any problems so if you can, install it and help with the testing.

As usual, thanks to John, Eli, Nico, and the others for their hard work in getting Emacs 26.2 ready.

Posted in General | Tagged | Leave a comment

Some Words of Wisdom from Tim Bray

Via Karl Voit I found a link to an interesting post from Tim Bray in which he discusses a variety of technical issues. I especially liked his take on Open Offices in which he says

All the high-tech companies I’ve worked for have resolutely ignored the research I hear about that seems to say putting expensive engineers out on the floor with no separating walls leads to grievous productivity losses. Isn’t this biz supposed to be data-driven?

Sadly, the short-term thinking by bean counters and those under their sway will continue to favor the immediate savings on office configuration to removing the on-going costs of lost productivity, all-the-while insulting everyone’s intelligence with their cant about “increased communication.” They deserve the losses they’re going to suffer; it’s just too bad their employees also have to suffer in the mean time.

Posted in General | Tagged | Leave a comment

Stephen Wolfram’s Personal Infrastructure

Over at his blog, Stephen Wolfram writes about his personal infrastructure and workflow. Wolfram, of course, is the CEO of Wolfram Research, the company behind Mathematica and Wolfram Alpha. He describes himself as a very hands-on CEO but what’s surprising is that he does it remotely. He works almost exclusively out of his home, which is about 1,000 miles away from the company headquarters.

The blog post is mostly about how he does this: what equipment he uses, his procedures for communicating with other Wolfram workers, how he handles virtual meetings, and what technology he takes with him when he travels. I really enjoyed the post because it covered two topics that I’m really interested in: procedures for remote work and the recording of personal and other data for historical and analytical purposes.

I like to gather data too but I’m a tyro compared to Wolfram, who has been collecting and saving information his whole life. He still has files from the fourth grade. The blog post talks about how he manages this information and what his file structure looks like.

All of this is organized around the Wolfram Language, which he uses to process and curate the data. I was struck by how similar his procedures are to mine even though I use Org-mode to deal with my data. Rather than a fairly fine-grained file taxonomy that he uses, I prefer to keep my data in just a few Org files. Of course, I don’t have nearly the amount of data that Wolfram has so my method might not scale to a data set the size of his.

The post is long but interesting. Wolfram is a famously productive guy and this post describes some of his strategies for being so. It’s definitely worth a read.

Posted in General | Tagged , , | Leave a comment

What wc Means by Lines

Every Unix/Linux user (and maybe Windows users too) is familiar with the wc command that counts characters, words, and lines. It an easy way to see how large a text file is and is often useful in scripts when you want to capture how many words or lines a file contains. I’ve been using it for decades and never thought too much about it.

Now Stefan tweets something about wc that I didn’t know:

I immediately checked this on my Mac, which uses the BSD version of wc, and got the same result. As Stefan says, it’s easy to get an off by one error. If you’re using wc for anything other than casual information—a script, say—you should take this quirk in wc’s behavior into account.

Posted in General | Tagged , | Leave a comment

Inserting the Current File Name

Marcin Borkowski (mbork) has a very useful tip and piece of Elisp that many of you will find useful. The problem is how to how to insert the current file name at point, even when the point may be in the minibuffer. Borkowski solves this problem with a bit of Elisp that you can insert into your init.el.

Take a look at the post for a typical use case and the code.

Posted in General | Tagged | Leave a comment

Elisp Cheat Sheet

Musa Al-hassy has a very nice Elisp reference sheet. It doesn’t cover the Elisp run-time system so such as general Lisp constructs as used by Emacs. His table of contents gives a good idea of what’s covered:

  1. Functions
  2. Variables
  3. Block of Code
  4. List Manipulation
  5. Conditionals
  6. Exception Handling
  7. Loops
  8. Records
  9. Macros
  10. Hooks

Each of the sections has some explanatory test and sample code. It’s to the point and easy to read. There’s also a nicely formatted PDF that you can download or bookmark.

If you’re an Elisp n00b or want to learn it, this is a useful resource.

Posted in General | Tagged , | Leave a comment