⋆Scratch⋆ For iOS

Alvaro Ramirez has a cute iOS application called ⋆scratch⋆. The idea is that it provides an Emacs-like scratch buffer on your iPhone. If you’re like me, your first reaction is, “why would I want this?” But the use case is those situations where you want to capture a note as seamlessly as possible. One reason you wouldn’t need it is that iOS has the Notes app that’s for exactly that purpose.

I use Notes all the time. In particular I use it for my Memo Book where I record the significant events of my day. But notes has a bit of friction. You have to choose the appropriate note or start a new one. The nice thing about ⋆scratch⋆ is that you just bring it up and write whatever you want. It’s got some simple Org-like formatting but that’s not really necessary.

I wasn’t really convinced I needed it but it was only 99¢ so I bought it on a whim. A couple of days later I was out to dinner with some friends who told me about a wine they really liked. I thought it was worth trying out so I brought up ⋆scratch⋆ to capture its name. It was seamless and easy and just like that I became a ⋆scratch⋆ fan.

I’ve only had the app for a few days so I am by no means an expert on its use but the nice thing is that there’s not much to know. Bring it up and capture your data. You can share it or erase it or start a new scratch buffer but all that is after that fact. When you want to capture some data, you just bring up the app and capture it. I recommend it to iPhone users who occasionally want to capture some data.

Posted in General | Tagged | Leave a comment

ChatGPT From Within Emacs

We Emacs maximalists are always on the lookout for tasks that we can integrate into Emacs in our never ending quest to stay in Emacs as much as we can. Vivek Haldar has added another task to the list of things we can do within Emacs. He has a short video demonstrating his code to access ChatGPT from within Emacs. His method depends on a Python script to do the heavy lifting and some Elisp to deal with the Emacs interaction. There are links to both pieces of the code with the video.

If you’re an Emacser and interested in experimenting with ChatGPT, this may be a worthwhile app to include in your setup. I still think, perhaps erroneously, of ChatGPT as a sort of magic trick. It seems magical when you see it but if you look under the hood, it’s actually fairly easy to see what’s going on. The key to the results—given how it works—is the training data. If you’ve ever noticed how much nonsense there is on the Web, you’ll also understand some of the anomalous results ChatGPT occasionally produces.

Regardless, ChatGPT can be useful if you keep in mind what’s going on in the background. And, of course, it’s going to get better. Probably a lot better so it’s worthwhile laying down some infrastructure for it in your Emacs configuration.

Haldar’s video is a couple seconds short of 4 minutes so you can watch it pretty much at will. It’s definitely worth a watch if you have any interest at all in the intersection of Emacs and ChatGPT.

Posted in General | Tagged | Leave a comment

EKG Version 0.2 Changes

Andrew Hyatt has a new video that describes the changes to EKG version 0.2. I wrote about EKG back in February. The TL;DR is that it’s a note taking app that links notes similar to, say, org-roam but with some interesting differences in operating principals. EKG is available on Melpa if you want to try it.

Version 0.2 adds a couple more functions, info documentation, and some general bolt tightening. The two most significant additions are

Templating
Templates are a way of adding text to any note sharing the tag of the templates. The implementation is different from other templating systems you may be used to. Take a look at the video for the details.
Embddings
This is the most interesting change. Embeddings are a way of capturing similarities among notes. It’s more general than notes sharing terms. Hyatt gives the example of noodles and pasta. The embedding functionality will consider these similar even though noodles and pasta are not the same thing. Generating embeddings is a complex operation beyond the capabilities to Emacs so the chore is outsourced to OpenAI. That fact has some possibly negative consequences that Hyatt discusses in the video.

The video is 17 minutes 27 seconds long so it should be easy to fit in but it won’t make any sense if you haven’t watched the first video that describes EKG and explains what it does.

Posted in General | Tagged | Leave a comment

Pretty Org Reports

Torstein Krause Johansen has a short video up on how he makes his Org reports pretty. It’s really pretty simple and not at all mysterious: he writes his Org as usual but adds a bit of CSS. Of course, that works only for HTML but you can do similar things with PDF and probably most of the other export formats.

Johansen adds a clocktable block to the end of his report so that he gets a nice report of the time spent on each of the items. The table in the pretty report ends up looking very nice.

Johansen doesn’t give a link to his CSS file but here it is. He uses the resulting prettified reports mostly to share with his colleagues. If you’ve been seeking an easy way to generate better looking reports, take a look at his video.

The video is only 4 minutes, 53 seconds long so it’s easy to fit in. The only problem with the video is the audio level. It was apparently recorded at low volume and even when played at full volume it’s hard to hear parts of it. Even so, it’s worth 5 minutes of your time. It’s a great example of how flexible Emacs and Org mode can be.

Posted in General | Tagged , | Leave a comment

SCO Twenty Years Later

It’s hard for those of us who were there to believe but there is a good number of practicing software engineers who not only don’t remember but perhaps weren’t even born at the time of the SCO/IBM lawsuit over Linux. The TL;DR was that SCO decided to rescue their failing company by suing IBM for misappropriating Unix trade secrets and giving them to the Linux project.

If you weren’t there, it’s hard to understand the profound effect the suit and ensuing debacle had on us and our profession. It consumed a huge proportion of our mental cycles and generated significant anger. I remember checking Groklaw several times a day, especially once the suit came to trial. Engineers volunteered to attend the trial and report back to Groklaw, which invariably had trial news first. Even the lawyers used Groklaw as a resource. Like Linux itself, Groklaw was crowd sourced and open source.

LWN has a nice article celebrating the twentieth year anniversary of the suit. It does a great job describing what the suit was about, the community reaction to it, and why it ultimately failed. As the article points out, the suit paradoxically turned out strengthening Linux rather than weakening it.

If you were there, the article is a nice trip down memory lane. If you weren’t, the article will give you an idea about an event that cornered the attention of virtually everyone in our industry for a long time. Even years afterward, SCO would manage to revive some aspect or other of the suit. SCO and their suit now seem suitably dispatched but like the undead, we can never be sure.

Posted in General | Tagged , | Leave a comment

Red Meat Friday: Low Contrast Themes

The minions, ever vigilant for opportunities to engage in another skirmish in the light vs. dark theme war, brought this to my attention and insisted that I run with it.

It’s not really a light/dark theme issue but it is related. It’s possible, of course, to have low contrast text with a light theme but you almost always see it with dark themes. A horrible example is dark gray on black or—even worse—dark blue on black. It’s essentially unreadable but some folks think it looks cool. Those of us with aging eyes are not as enthusiastic.

The minions are jumping up and down with glee about that tweet but maybe we should stop feeding the trolls: quit rendering low contrast text already.

Posted in General | Tagged | Leave a comment

Introduction to GNU Emacs

Keith Waclena has a great Introduction to GNU Emacs. It’s an ongoing project that started back with GNU Emacs 19.29 in 1997 and has been in continual development since. This latest version is for Emacs 28.2. Waclena works for the University of Chicago as an applications systems analyst but his tutorial reads like (in a good sense) it was written by a professor trying to help his students learn Emacs.

His view of Emacs is much like mine: it’s not really an editor but rather “the last remaining Lisp Machine”. This means, among other things, it can be usefully though of as an operating system in that there are applications to perform almost any task that you need to perform.

It’s pretty clear that Waclena intended this to be a book or at least book-like. In several places he refers to it as a book and it is pretty comprehensive. He even covers such esoteric matters as dealing with the Meta key, how many spaces there should be after a period, Emacs versus the Unix philosophy, and usual myths about Emacs being a resource hog and slow.

This is a large document that covers at lot of material. It’s the best introduction to Emacs for beginners that I’ve seen. The document is also available in PDF or EPUB formats. If you’re looking for a comprehensive introduction to Emacs, this is a good place to start. Some of the topics are still TBD—as befits a work in progress—so it will doubtless continue to improve. It’s worth a look even if you’re an experienced Emacser.

Posted in General | Tagged | Leave a comment

Jonas Bernoulli Needs Our Support

When people talk about the killer apps of Emacs, they always mention two: Org Mode and Magit. They’re both uniquely Emacs apps—even though Org is seeping into other environments—and an essential part of the Emacs experience. For the working developer, Magit is a must-have. These days, Git is the default VCS and the absolute best interface—porcelain in Git-speak—is Magit.

Magit is maintained, and constantly improved, by Jonas Bernoulli (tarsius) who, unlike many open source developers, has no other job other than supporting his open source projects and who is completely dependent on community support for his livelihood. Due to a change in policy from GitHub, he is losing many of his supporters and is desperately in need of our assistance.

There are several ways of supporting him. He prefers, of course, a continuing pledge that you can arrange here but if you feel more comfortable with a one-time contribution—especially if you want to use PayPal—take a look at this page for some of the options.

It’s a scandal that large organizations that depend on Magit don’t step up to provide Bernoulli with a living wage but the majority of them don’t so it’s up to us. Most of us can’t afford significant recurring donations but we can make a one-time contribution even if it’s minimal. If you’re able, try to do that.

Posted in General | Tagged | Leave a comment

Is Remote Working Bad For Developers?

We here at Irreal strive for equanimity and maybe even a laid back attitude but sometimes the silliness just gets to be too much to bear. Case in point: Is Remote Working Bad For Developers? I’ve written many times that remote work isn’t for everyone and that some people really, really don’t like. I know some of those people and although I don’t understand it, I accept it as a fact.

But choosing not to participate in remote work is a lot different from claiming it’s harmful for all developers. Ben Hosking, in the above linked post, comes perilously close to making that exact claim. After listing the benefits of remote work—most of which are either scientifically measurable or at least involve asking actual developers—Hosking moves on to the “problems”. Some of them are just silly like the claim that remote work leads to a hamster wheel life of eat → sleep → code → repeat instead of the office work cycle of eat → sleep → commute → code → commute → repeat cycle.

A more substantive set of objections involve not leaving time for human interactions. That argument reminds me of the angst-ridden whining of the new Luddites about smartphones. The answer is the same: pull on your big boy/girl pants and show a little discipline. If you need time after work to decompress, there are other answers besides a commute. You could, for example, take a walk, pick up the kids, or stop into the local bar for some R&R.

Every hacker knows that if you want to get real work done you have to have uninterrupted time to do it without meetings or listening to Bob’s story about last night’s date. That’s why in the past—before remote work—they so often worked odd hours when other people weren’t there and now embrace remote work.

Most folks feel the need for contact with other people but, again, it’s just a matter of a little discipline. Arrange to have lunch with some friends or colleagues or even just hang out at the mall. Believe me, your life is not going to made better by a commute.

None of this is to beat up on Hosking who often posts interesting articles. It’s just that Irreal is over articles on remote work that sound like they were written by middle managers desperate to preserve their jobs.

Posted in General | Tagged | Leave a comment

Debugging With Org-babel

Wade Mealing has an interesting article on using org-babel for the analysis of Linux kernel bugs. Mealing is a Red Hat engineer and involved with tracking down problems in the Linux kernel. He has a more-or-less fixed procedure for doing this that is captured with Org-mode. The skeleton of the Org file is set with a template ensuring that he doesn’t forget anything and that the solutions to any past problems with the format of the file are carried forward.

His process reminds me of Howard Abrams’ Literate DevOps process (post, video) in that they both use an Org Babel file to capture both a narrative about the issue as well as the (executable) commands used to investigate/fix/implement whatever problem is being addressed.

Mealing’s problem is that each problem he investigates is tied to a particular Red Hat release and version so things like the file locations and build parameters vary between problems. Using a standard Org file helps him track all this, set the parameters once, and have their values propagated throughout the file automatically.

This is another great example of how you can use Emacs Org-mode and Babel to capture repetitive processes and, at the same time, document them, and make them exactly reproducible. It’s beneficial even for personal use. When you investigate how to do something complicated, you can document it as well as make what is in essence a script to repeat the process when the need arises again.

Posted in General | Tagged , | Leave a comment