A Small Jinx Tweak

As I’ve written recently [1, 2, 3, 4], I’ve been changing the Irreal Bunker’s spelling corrector to Jinx. I’ve had a couple of issues—mostly with choosing the correction—but things have mostly been smooth and Jinx has a lot of nice features.

One thing I don’t like is the face that Jinx chooses for misspelled words. Ispell used red, which stood out and made it easy to pick out the misspellings. Jinx uses a color that is almost the same as the text and even though misspellings are underlined with a wavy line they’re harder to pick out. There are two colors: one for dark themes and one for light themes. Oddly, there are no options for changing the colors.

Happily, this is Emacs so the source code is only a click away. It turns out the color is defined by a defface in the jinx.el file. I copied that to my init.el and changed the color to red Here’s the result:

(defface jinx-misspelled
  '((((class color) (min-colors 88) (background dark)
      (supports :underline (:style wave)))
     :underline (:style wave :color "#d2b580"))
    (((class color) (min-colors 88) (background light)
      (supports :underline (:style wave)))
     :underline (:style wave :color "#ff0000")) ; <-- changed color
    (t :underline t :inherit error))
  "Face used for misspelled words.")

I was going to change the color for the dark theme too just for completeness but the Minions wouldn’t allow it. You know how they are about dark themes. If you want to change the color in your Emacs, just paste the above into your init.el and choose whichever color works for you. You can, of course, also fix things up for dark themes. Just don’t tell the Minions.

Posted in General | Tagged | Leave a comment

Reading

Elia Scotto has a very nice post on the reading habit. He says he’s been reading about a book a week for several years. The gist of the post is “how to read more books”. His advice for that is straightforward: read when you have nothing else going on. In particular, instead of reaching for your phone and doom scrolling, pick up a book and read a few pages. I agree with all that but not with some of his other recommendations that seem to me to border on the new Luddism.

For example, he considers it important to avoid using your phone. That means he wears an analog watch (so he won’t have to look at his phone), that he tries to carry a physical book with him at all times, and that when he can’t he uses a separate ebook reader.

I also read when I have a few spare moments but I do it on my phone. My iPhone is always with me so I don’t need to remember to bring along a physical book or separate reader. It’s all there on my iPhone. I always read for about an hour when I go to bed and for that I use my iPad. If during the day I find myself with nothing to do, I can always sync my phone to where I left off on the iPad and continue my reading.

Really, I don’t know why anyone wouldn’t do things more or less the way I do. You always have not only your current book but your entire library at hand. But then, I’ve never found doom scrolling—or social media, for that matter—attractive so I have nothing to resist.

In any event, the important thing is to find time to read. You don’t have to be an intellectual or read big, important books. Although I sometimes read books like that, I mostly read mysteries and science fiction. Some of them are as lowbrow as you can get. It doesn’t matter. The goal is to read and enjoy the content.

Finally, be sure to watch the short video of the late Umberto Eco’s library of about 30,000 physical books. Despite what I said above, I love physical books and found it awe inspiring.

Posted in General | Leave a comment

Embark

Some time ago, I installed Embark but I never got around to learning it and it has sat unused ever since. Then I saw this post by Bozhidar Batsov and decided to take another look. The problem with Embark is that it’s hard to understand and the documentation is long and complex. Too long, I discovered, to read and understand in one sitting.

I approached the problem by reading a section at a time and trying out examples in my Emacs. Even so, it still took some experimentation to completely figure things out. The process is ongoing but I’m making progress.

All of the above sounds pretty negative but I actually think Embark is a real win. Once you figure things out it’s really useful. For example, one of the things I’ve never been able to get working reliably is following a link in an arbitrary buffer to its target. Embark does that easily and if you use embark-dwim it’s a single keystroke. I use Hyper+. for embark-act and Hyper+, for embark-dwim. I have Hyper bound to the right ⌘ Cmd key so it’s very easy to invoke either of those commands.

Batsov is all in on Embark. He and I often share preferences and this is an example of that. The more I find out about Embark, the more I like it. The commands that work on a group of files can be difficult to grok but once you do they’re very powerful. I’ve resigned myself that learning Embark is an ongoing process but I think it’s worth it.

Posted in General | Tagged | Leave a comment

🥩 Red Meat Friday: The Apple TV Price Increase

Jason Snell has a few words to say about Dan Rayburns’s post on LinkedIn concerning the price increase for Apple TV and why it spells the end of the device. I, too, have a couple of things to say.

First, when did LinkedIn become a social network? I thought it was supposed to be a place where job seekers and employers could find each other. I first became aware of its descent into silliness last year when Watts Martin informed us that, according to “LinkedIn influencers”, real people don’t use em-dashes. Martin and I had a good chuckle but even at the time I wondered what a LinkedIn influencer could possibly be. Now, apparently, LinkedIn is a place where anyone can advance any nonsense they please.

Second, everyone writing about Apple’s recent price increases keeps ignoring the fact that they were driven by AI-fed RAM increases that are out of Apple’s control. You can argue that the 50% increases were out of bounds but, again: RAM prices.

Third, I think Rayburn’s whole argument is silly. If you belong to the Applesphere, you’re used to high prices. Some iPhones are approaching \$1,000, a top-of-the-line iWatch is about \$800, and even before the increases, MacBook Pros were pricey. I’m pretty sure few Apple users are going to complain about \$250 for an Apple TV.

Finally, Apple TV is more than just a streaming device. Here at the Irreal bunker we do little streaming but have a top-of-the-line Apple TV. Why? Because it’s the hub for the bunker’s Smart Home system. It basically runs the bunker’s nerve system1. If it didn’t stream at all we wouldn’t care. It still runs the household automation.

Footnotes:

1

Heh heh. OK, that’s a little overwrought but you get the idea.

Posted in General | Tagged | Leave a comment

The Computers Of Jurassic Park

Jurassic Park was released 33 years ago. If you were there or know anything the movie, you know that computers played a large role in making it. The most famous example of that was the CGI rendering of T-Rex. I remember reading that the animator started with a skeleton for the dinosaur to get the movements right and added the flesh and skin at the end. Spielberg was apparently blown away by the result. The story of how computers were used in the movie’s production is fairly well known and interesting for us nerds. There was even a book written about the making of the movie.

Fabien Sanglard examines the movie’s use of computers in a different way. He researched every computer and piece of software from the movie that he could identify. The result is a long and interesting post. The computers were mostly from Apple and SGI although the “supercomputer” was a cluster of Thinking Machine CM-5s.

The producers managed to get the loan of computers worth roughly $4,000,000 in 2026 dollars from Silicon Graphics and Apple. The post has some other tidbits like the loan of a Motorola Envoy. The envoy wasn’t released until 1995—a couple of years after the movie was released—so what you see in the movie was actually Motorola’s original mockup. The other interesting thing is the computer monitors in the movie and how much they cost. There were many different types and Sanglard notes them all. The most interesting aspect of the monitors is that they had to adjust their refresh rate to sync with the movie frame rate to avoid flickering. See the post for a bit more on this.

Posted in General | Tagged | Leave a comment

Update To Jinx Reconsidered

Yesterday I wrote that I had reconsidered my stance on Jinx and decided to give it a serious try. The only problem I had was that picking the correct spelling wasn’t working as advertised. I speculated that this was probably the result of some interaction between Jinx and Ivy and this, indeed, turned out to be the case.

Embarrassingly, mbork had already pointed this out in his post about Jinx that I linked to but since I wasn’t planning on installing Jinx, I hadn’t paid it much attention. His solution was simple: he merely disabled Ivy for Jinx by advising jinx-correct. That works fine but I’m not sure that I like that behavior either. You have to press Tab to get the list corrections and then it isn’t any easier choose the right one.

I’m sure there’s something simple that I’m missing so I’ll continue experimenting or perhaps one of Irreal’s more knowledgeable readers will tell me I’m just being stupid. In any event, I’m going back to the original behavior until I can figure out the correct way of fixing things.

Posted in General | Tagged | Leave a comment

Jinx Reconsidered

In a stunning case of the Baader–Meinhof phenomenon, I’ve been running across the Jinx spelling corrector everywhere. I had never heard of it until last week when I watched and wrote about Prot’s video on writing in foreign languages with Emacs. Then Marcin Borkowski wrote about it and I posted about that. In all those instances, I concluded that Jinx was interesting but mainly of use for those who regularly wrote in more than one language. Since I seldom do that, I decided I was going to stick with flyspell.

Then Omar commented on my Borkowski post saying that Jinx was a better solution than flyspell even if you used it with only one language. I thought that perhaps I should reconsider my decision about sticking with flyspell. Finally, I saw this post by Bozhidar Batsov on why he has recently switched from flyspell to Jinx and became convinced that I should give it a try.

I installed it without difficulty and am writing this post with it as a sort of maiden voyage. So far, everything seems fine. By default, jinx-correct is bound to Meta+$, which I find a little clumsy so I changed that to Ctrl+;, which is where my muscle memory thinks it should be.

The only problem I’ve had is quickly choosing the correction. The documentation says that you can do that put typing the number of the correction but that simply exits the correction leaving the old spelling in place. The problem may be some interaction with Ivy, which I’ll investigate as soon as I get some time.

Posted in General | Tagged | Leave a comment

Gruber On Apple Advertising

John Gruber over at Daring Fireball has an excellent article about the slippery slope Apple is on with their embracing of advertising. I’ve written about this before. For a company like Apple, advertising is deeply corrupting and inevitably ends with the user being replaced by the advertiser as the customer.

As Gruber points out, Apple really does care about their customers’ privacy and puts in extraordinary effort to preserve it. The problem is, he says, that other than a few technically competent folks, like Irreal readers, people don’t believe it because any semi-sentient person has learned to equate advertising with surveillance. It’s mostly a good assumption even if it doesn’t apply to Apple.

Gruber’s worry is the advertising will erode the perception of Apple as a company that cares about their customers’ privacy. It’s something to be concerned about but my worry is that it will corrupt Apple’s values to the point that they, in fact, no longer care about privacy.

As Gruber says, Apple doesn’t need the extra money that advertising brings in and, in fact, earns far more—greater than 20 billion dollars annually, apparently—from their deal with Google to make their search engine the default on Apple products. It seems foolish to tarnish their brand for what, in Apple terms, is small change.

Gruber hopes, as I do, that John Ternus will reverse Apple’s descent into the fiery pit of online advertising. Whatever extra dollars they reap from advertising won’t be worth it in the end. They will lose far more in customer goodwill and trust.

Posted in General | Tagged , , | Leave a comment

Jinx For Spell Correction

Marcin Borkowski (mbork) has a nice post on the Jinx spell corrector. Mbork has tried fly-spell but found it too laggy for his purposes. That was back in the days when he had a Pentium class machine running at 100 Mhz so he thought, in view of his more modern hardware, that it was worth trying out fly-spell again.

He still found it too slow and decided to try Jinx instead. I’ve always found fly-spell snappy and I hadn’t heard of Jinx until I read Prot’s post on writing (and spell correcting) foreign languages in Emacs but mbork wasn’t satisfied until he tried Jinx. He found that it was fast enough for his use cases and decided to embrace it as his spell corrector.

He discovered that Jinx interfered with some of his work flows but it turned out to be pretty easy to fix those. You can check out mbork’s post for the details.

If you are writing in multiple languages with Emacs, then Jinx may be an excellent solution as a spell checker. If, like me, you mostly write in your native tongue, you’ll probably find fly-spell is all you need. As I said above, it’s more than fast enough for me and provides a wonderfully interactive spell correction system.

Posted in General | Tagged | Leave a comment

Highest Org Priority

If you’re an Org user, you probably know that you can assign a priority to TODO items. By default, the priorities are A, B, and C but with a bit of trickery you can extend the ranges to 0–9 and A–Z.

I never use priorities but Raymond Zeitler does and after figuring out the above trickery he thought it would be useful to have an ultimate priority a sort of “drop everything and do this immediately” priority. He decided to make this priority 100 times the highest priority and to designate it with !.

The solution wasn’t straightforward but it wasn’t too difficult either. The thing about Emacs is that it’s easy to check the source code to see how things are done. It turns out that Org has a org-priority-get-priority-function variable that contains a function that Org calls to get the priority from the priority cookie. Zeitler wrote his own version to check for a ! and return the high priority if it’s found. If not, then it calls a slightly modified version of the normal function.

As I say, I don’t make use of the priority mechanism and have no idea how many people do but if you’re one of them and are looking for a way to specify an extraordinary priority, take a look at Zeitler’s post. You can cut and paste his code if you’re interested.

Posted in General | Tagged , | Leave a comment