Another Happy Journelly User

As you all know by now, I’ve become a huge Journelly fan. Its author, Álvaro Ramírez, thinks of it as Twitter for your private use. That’s a reasonable description given its user interface but it doesn’t begin to capture its real power.

As more and more users have started using the beta, I’ve come to realize that Journelly is a bit of a shape shifter that adapts itself to your needs. Ramírez, apparently, just wanted a simple app that he could use like a private Twitter. My use case is implementing my memo book. I want to capture entries on my phone and keep the results as a permanent record of my daily activities.

JTR over at The Art Of Not Asking Why has a different conception. He is using it as a sort of staging area for capturing notes that he then refiles to the appropriate Org files. That’s possible because one of Journelly’s strengths is that it keeps its data in Org format and can arrange to sync its files with your Mac and other iOS devices.

JTR explains all this in his latest post on Journelly in which he reveals himself as another happy Journelly user. It’s a nice post that recounts his experience with using Journelly. As I say, his use is slightly different from mine but that just speaks to the power and flexibility of Journelly. If you’re the slightest bit interested in Journelly, you should read his post.

About the only thing I don’t agree with is that JTR says that if you’re not an Emacs user, you should probably look elsewhere. Journelly is such a good fit for my memo book that I’d probably use it even if I weren’t an Emacser. But, of course, I am and the fact that its records are in Org format just expands its power for me. As Jack Baty says in a comment to JTR’s post,

I think he things of the .org thing as an implementation detail, so as to not limit his audience, but you’re right, for me it’s The Thing™.

The other thing that JTR mentions that I forgot to write about is that after tapping the big plus sign, you can enter your note orally in the usual iOS way. That’s really powerful, especially when you’re on the run.

Posted in General | Tagged , | Leave a comment

Twenty Years Of Git

Wait. What? Git is 20 years old? How can that be? I’m sure it was just yesterday that Linus announced the Git project after his arrangement with Larry McVoy’s BitKeeper imploded. That’s a sad story in itself but this post is just about how surprised I am that Git is 20 years old.

I started using Git fairly early on and soon after it became available, I moved to Magit. In the intervening years, Git has taken over the VCS mindspace. At this point, virtually everyone without very special requirements uses it.

There’s an argument to made that BitKeeper is the better solution and McVoy has made that argument in the past but BitKeeper was proprietary software in an age when developers pretty much insisted on open source tools. McVoy, to his credit, has accepted this and is devoting his time to fishing.

Whether or not Git is the best solution it has emerged as the default solution and that, I think, is a good thing. It’s definitely a good VCS and having a standardized VCS benefits us all. I have no doubt that its distributed nature is the correct answer and 20 years of Git and BitKeeper before it has proven that to be the case.

The article that I linked above has a nice history of Git and its origins. If you weren’t there to experience it, you may enjoy discovering some of that history

Posted in Programming | Tagged | Leave a comment

Emacs Startup Time

Bozhidar Batsov has a post that claims something I’ve often said: Emacs startup time doesn’t matter. No one is saying that your editor taking 30 seconds to start is acceptable but by and large the people you see worrying about startup times are obsessing over sub-second differences. That is, differences that are virtually imperceptible to a human at the keyboard.

Batsov and I say that if you’re using Emacs correctly, you hardly ever restart it. Unlike, say, Vim, you shouldn’t start a new Emacs session for each file you want to edit. When I switched from Vim to Emacs, this was one of the hardest things to get used to. Even if you do want to invoke Emacs for each file, you can simply use Emacsclient and get near instantaneous response.

Judging from the comments on reddit, you’d think Batsov had resurrected Swift’s Modest Proposal. He was accused of being arrogant and not understanding how “real” people use Emacs. If you know anything about Batsov, you’ll find that an amusing notion.

Sure, people do use Emacs in different ways and for different reasons. One commenter, for example, says he develops packages and often has to restart Emacs. John Wiegley does the same but he was a separate Emacs that starts quickly to deal with that: when you’re testing a package you probably want something approaching Emacs -Q anyway.

The TL;DR is that for almost everyone, Emacs startup time really doesn’t matter. I restart Emacs once a week when I upgrade my packages. Batsov says that he goes months without a restart. Even if Emacs did take 30 seconds to start, why would we care. One commenter complains that he has to restart Emacs every morning and, therefore, startup time really does matter. Sorry, but that’s just silly. If you have to spend 5 seconds—or even 30 seconds—starting Emacs in the morning, who cares?

And, by the way, if Emacs really is taking more than a few seconds to start, it probably means that there’s something wrong with your configuration. Mine has plenty of packages, hasn’t been refactored since I started almost 20 years ago, and it still starts within a couple of seconds. It’s hard to get a hard number because it stops to ask me for a password for my .authinfo file. I’m inclined to think of it like booting my machine: it’s not instantaneous but I don’t do it very often.

Posted in General | Tagged | Leave a comment

Setq Versus Setopt

Like most people, I use setq to set user options in my Emacs configuration. It’s the canonical way of setting a variable in just about any Lisp. But, as Bozhidar Batsov says, it’s not always the best way of setting a configuration variable in Emacs. He suggests using setopt instead.

It’s more than just a convention. The setopt macro does a bit more than setq. In particular, it can arrange to call a setter function when you set a configuration variable. This can be useful for checking the prospective value or for performing some system adjustment when a parameter changes.

I’ve known about this for a while but my problem has always been when you need to use setopt instead of setq. Batsov’s recommendation is to use setopt unless the variable is not defined in terms of defcustom. That’s all very well but how do you know which variables are which? The online documentation isn’t much help so the best policy is probably to assume that any variable in your configuration should be set with setopt unless you have reason to believe otherwise.

Batsov says that setopt will work with regular (non-defcustom variables) as well but that it won’t be as efficient as setq. Really, who cares? The setopt macro will almost certainly not be in a loop so any inefficiency won’t matter much. Plus, as I always say, if you’re using Emacs correctly, you won’t be restarting it very often in any event.

Take a look at Batsov’s post to get an idea of the difference between setq and setopt. It probably won’t help you decide which to use but at least you’ll know what each does.

Update [2025-04-07 Mon 13:42]: In the Emacs subreddit, Batsov notes that an easy way to discover which variables are customizable is to check the documentation with describe-variable. Variables that are customizable will have the notation “You can customize this variable.”

Posted in General | Tagged | Leave a comment

TestFlight

I know you will all think I’m indulging my inner Apple Fan Boyzism but I want to say a few words in praise of an Apple app. As you likely know by now, I am involved in a beta test of Journelly. You can read about my experience with that app here and here.

But now I want to write about my experience with Apple’s support of app betas. As you probably know, Apple has its App store locked down pretty tightly. All apps have to be vetted before they can appear in the store. That raises the question of what to do about betas.

Apple has a great solution. They have an app called TestFlight to make all this seamless. The prospective beta tester gets an invite from the developer, installs TestFlight, and then simply clicks on the invite. TestFlight takes care of the rest. It installs the app beta, shows you the developers notes, and allows you to open the app. After that, you can use it until that version of the app beta expires—usually 90 days.

When the developer releases a new version of the beta, TestFlight notifies you and can optionally install it automatically. In either event, you are shown the current release notes. It’s hard to imagine a more seamless procedure. Basically, TestFlight takes care of everything from the tester’s point of view. I don’t know what it looks like from the developer’s point of view but I’d be surprised if it wasn’t similarly easy.

Posted in General | Tagged | Leave a comment

New Window Commands For Emacs 31

Being a basically boring guy, I almost always have a full screen frame with two side-by-side windows for Emacs. For some functions—Magit and Elfeed are examples—I temporarily pop up a single full frame window but the previous window configuration is restored when I finish. Some of you, I know, lead less constrained lives and have more complicated window configurations.

People with these more interesting configurations sometimes want to move their windows around. When you have two side-by-side windows, that’s trivial—basically Ctrl+u Ctrl+x o is all you have to know—but if you have different sized windows stacked both vertically and horizontally, things can get more complicated.

Pranshu has a nice post that describes the problem and what he’s done to address it. The changes won’t appear until Emacs 31 but for those of you with complex window configurations they will surely be welcome.

Take a look at his post to see the sorts of transformations that are possible and the commands that implement them. To tell the truth, they make me dizzy and I’m happy to stay with my simple configuration but as always Emacs is able to adjust to everyone’s needs.

Posted in General | Tagged | Leave a comment

Initial Thoughts On Journelly

Yesterday, I explained why I think Journelly will be useful to me. Today, I want to follow up with my initial impressions of the app. As I wrote before, I recently signed up for the Journelly beta and have been experimenting with it for the last 5 days.

As yesterday’s post discussed, Journelly uses standard Org mode to store its data and can, optionally, store it in the iCloud. Those two things mean that’s it’s possible to share the data between devices. Currently, I am sharing data among my iPhone, my iPad, and my MacBook. The iPhone and iPad are accessing it with the Journelly app and the Mac is using Emacs Org mode. This is really powerful. I can capture data on any of my devices and it appears and is editable on all the others.

As for Journelly itself, I like it. A lot. It sort of reminds me of one of Ramírez’s other apps, scratch. It’s not that they do the same thing, it’s that they’re both simple to use and do exactly what you think they will. Ramírez is scratching an itch and doesn’t have any suits pushing him to add useless features or release things prematurely. Journelly is still in beta and has no documentation but its interface is so intuitive that I figured how do everything just by playing around with it.

There are buttons to add a check list, a plain list, or a photo. They work exactly like you think they should. If you’re at a restaurant and want to capture a picture of your meal, you simply push the camera button, which takes you to the camera app. After you take the photo, it pops you right back to Journelly with the picture displayed in the entry.

My initial plan was to experiment with Journelly for a while and maybe move my memo book functionality to it when it was actually released. The problem is, it’s so easy and pleasant to use that I want to start using it right now. Currently, I’m using both Journelly and Notes in parallel but that’s a real pain and I’ll definitely move to Journelly exclusively when it’s released. One thing for sure, it’s much easier to integrate it into my Emacs workflow than it has been to do the same with Notes.

This is a great app and if you want to capture data on your iPhone and be able to see and edit it on your Mac or other devices, you should definitely check it out.

Posted in General | Tagged | Leave a comment

Why I’m Interested In Journelly

Over at The Art Of Not Asking Why, JTR suspects that I may be an apostate, or at least that I’m inconsistent. He notes, correctly, that I’m all in on Emacs in general and Org mode in particular, and yet I’ve lately expressed enthusiasm for the non-Emacs app Journelly. He wonders why. It’s a good question and an honest one that deserves an answer. I’m sure others are wondering too.

I explained my initial attraction in my first post on Journelly. The TL;DR is that I use the Apple Notes app to keep a running memo book of each day’s events but that I was looking for something a bit better. Journelly seemed like it might be an answer so I resolved to keep an eye on it. Shortly afterwards, Ramírez started a formal beta program and after some initial dithering I signed up and started playing with Journelly.

I will shortly write about my experiences with it but in this post I want to address why a dedicated Emacs/Org mode user, who writes virtually everything in Org mode, might want to use Journelly. The thing is even I am not always on my computer. Sometimes I’m out and about, and sometimes I’m just doing other things. That means that I’ll be using my iPhone. Apple’s policy prohibiting apps with interpreters means that Emacs will never be on iOS but even if it were, I can’t imagine that the experience would be very pleasant. What I need is a way of easily adding entries to my Memo Book and having those entries sync across all my devices, including my Mac.

That’s where Journelly shines. Although the beautiful iPhone display doesn’t suggest it, the records are actually recorded in standard Org mode. Since it’s also possible to store the Journelly files in the iCloud, you can get access to them with a Mac, iPad, or, I suppose, another iPhone.

Jack Baty has a nice post that describes how he’s sharing data between his iPhone and his Mac. He even has an Org template to capture entries on his Mac. It’s actually trivial and at this point I’m sharing Journelly data between my iPhone, Mac, and iPad.

Finally, Álvaro Ramírez also saw JTR’s post and wrote his own answer. The TL;DR there is, “Why not both?” Like me, he was looking for an easy way to take notes when he wasn’t at his computer but wanted to be able to access and edit them in Org mode as usual when he was. That’s why he arranged for the records to be kept in Org mode format.

Sure, as JTR says, there are apps like Beorg but they, while great, aren’t targeted at my—and presumably Ramírez’s—needs. It’s not a matter of choosing between Org and some proprietary app; it’s about choosing a useful Org front end for your iPhone.

As a coda to this post, JTR notes in a subsequent post that he didn’t realize that Journelly kept its records in Org format and now that he does, he better understands my attraction to it.

Posted in General | Tagged | Leave a comment

Use GNU Emacs : The Plain Text Computing Environment

I just came across a link to this recently updated book on the plain text computing environment. It was, apparently, first written to describe Emacs 19.29 around 1997. That was a long time ago and Emacs has evolved considerably since then. Happily, the book has recently been updated to Emacs 29.4. It’s over 600 pages so there’s a lot of content.

You can see the book here, There’s an interactive menu on the left that will give you an idea of what’s available. Besides HTML, it’s available in PDF and various EPUB formats. At more than 600 pages there’s obviously lot of content but the author, Keith Waclena, says that while you could read it straight through, he doubts many people will. Rather, it’s designed to enable you to skip to any topic you’re interested in.

Obviously, I haven’t been through the book in detail—having just discovered it—but it seems like a useful resource, especially for users new to Emacs. Take a look, especially if your a n00b.

Posted in General | Tagged | Leave a comment

Emacs Redux On Flyspell

Here’s yet another post commenting on something that Bozhidar Batsov wrote on Emacs Redux. I like to write about his posts because they typically look at some Emacs functionality that we all thought we knew about and tells us things about that functionality that we didn’t know.

His latest post is about flyspell. I’ve been using flyspell for so long that I have no memory of when I started or how I discovered it. On the other hand, my sole use of it is to invoke flyspell-auto-correct-previous-word with its default binding of Ctrl+;. I was vaguely aware that you could do manual checks or even check a whole buffer but I never used them.

Batsov’s post discusses some of those other commands. You can, for example, use Ctrl+, to move to the next misspelling. Then you can use Ctrl+. or Ctrl+; to correct it.

I like Ctrl+; because the point doesn’t have to be on the misspelling; it corrects the previous error wherever it is. Batsov, on the other hand, likes Ctrl+c $ because it gives you a menu of possible corrections as well as options to accept it in the current buffer, accept it in the current session, or add it to your dictionary. The key binding is—for me—significantly more awkward so I’m going to stick with Ctrl+; unless I want to add the word to my dictionary.

But Batsov is a serious Emacs user and his recommendations shouldn’t be ignored. Read his post and see what you think. As usual, Emacs has got you covered whatever your preferences.

Update [2025-04-01 Tue 21:29]: Fix link.

Posted in General | Tagged | Leave a comment