The Only Computer Science Book Worth Reading Twice

Longtime Irreal readers know that I consider Abelson’s & Sussman’s Structure and Interpretation of Computer Programs (SICP) arguably the best computer science book of all time. There’s Knuth’s The Art of Computer Programming of course but for the average software engineer, I think SICP is more valuable.

Simon Dobson has a delightful post that agrees with my evaluation. He says that SICP is the only computer science book worth reading twice. Most of the post is a list of things that make the book so great. The list is so persuasive that I’m tempted to read the book for the third time. I don’t know if I actually will but it certainly deserves the attention. I still remember how much more I learned when I read it for the second time, Doubtless, a third reading would increase my understanding even more.

I’m sure rereadings would eventually reach the point of diminishing returns but the material is so rich that it seems there is always something new to learn. If you haven’t already read SICP, I urge you to do so. I didn’t read it until late in my career and it still changed the way I look at and practice programming. The first time I read it, I interleaved the reading with the video lectures that Abelson and Sussman gave at HP. You may find that a nice way to approach the material.

Reading and absorbing SICP doesn’t mean you have to start programming in Scheme—although it may make you wish you could. It’s more about learning the proper way to think about programming.

Posted in General | Tagged , | Leave a comment

Plugins Again

I thought we had settled this once and for all but apparently not. Over at the Emacs subreddit, sudhirkhanger asks about VS Code’s extension system as compared to Emacs’. He’s “blown away” at how great the VS Code plugin system is. He’s amazed at the integration and says it’s almost like using a native application.

Many of the comments make the point that VS Code is not really free software with all the problems that that implies but I don’t want discuss that aspect. What I’m interested in is the same thing that sudhirkhanger is: the relative merits of VS Code’s extension system versus what Emacs does instead.

Notice that I didn’t say “Emacs’ extension system”. That’s because Emacs doesn’t have an “extension language” as the term is usually understood. Rather, Emacs is a Lisp machine and that means that you can change or add to the core functionality on the fly. That’s different from being merely “open source”. You don’t have to edit and recompile. You just write some code, evaluate it, and suddenly the editor is doing something different. You’re not restricted to what some extension API allows. Your code has the same status as—and, indeed, is indistinguishable from—the code that ships with Emacs.

The takeaway is that if your insist on comparing VS Code and Emacs please don’t do so from the point of view of the extension system. Emacs doesn’t have one. You simply change or add to the base code without any “by your leave” from the developers. The way you “extend” VS Code and Emacs are not comparable. Your aren’t talking about the same thing anymore than you are when—to invoke a cliche—you compare apples and oranges.

Posted in General | Tagged | Leave a comment

Some Configuration To Solve Common Problems

Remember how, when you first started using Emacs, there were all those strange defaults that just didn’t seem right. The worst one, for me, was scrolling. I hated the way the screen would jump when you got near the top or bottom. That feature alone caused me to abandon Emacs more than once.

Of course, like everything in Emacs, that’s configurable but it’s hard for n00bs to know what to do about such things. Sooner or later we all discovered the magic spells to get things more to our liking.

Over at The Emacs Cat, there’s a nice post that shows how to configure things in what many of us consider a saner way. Decent scrolling is covered as is making Emacs Emacs talk UTF-8 exclusively. Both of those took me a long time and a lot of experimentation to get right.

There’s also a section on getting rid of the common annoyances such as having to type “yes” instead of simply “y”, making tabs sane, getting rid of the bell and tool bar, and—for those of you who love controversy—ending sentences with a period and single space.

There’s also a section on some useful modes that you can enable, such as winner-mode, global-hl-line-mode, desktop-save-mode, and help-window-select. I didn’t know about that last one but I’ve frequently been annoyed that I have to switch over to the Help window so it seems useful.

There are a few more useful tweaks that you may or may not want. I found it surprising how closely Emacs Cat’s choices echoed mine. We don’t agree on everything but it’s surprising how much we do agree on. In any event, take a look and see if there’s an answer to a problem you’re having.

Posted in General | Tagged | Leave a comment

Styling Text In Org Mode

As most of you know, I follow Charles Choir’s work and often use and recommend his apps. I especially like his Casual Apps, which generally make dealing with little used features easier. I was, therefore, eager to read his latest announcement about Styling Text via Keyboard in Org and Markdown. I have to admit, the whole thing left me scratching my head.

When I read the headline, I thought, “What do you mean via keyboard? Isn’t that what happens right now?” It turns out that what he means is specifying the styling markup with a word—“bold”, “italic”, “code”, etc—rather than the single character markup that Org already uses.

I’m not sure why anyone would want to do that. I suppose it’s marginally easier to remember “bold” than it is to remember “*” but not much. I can’t remember ever having a hard time remembering the single characters. Of course, different strokes for different folks as the hippies were fond of saying so I don’t really object to using the words instead of the characters.

What I do object to his having to interrupt my writing flow to bring up a menu for the styling. Take a look at the video to see what I mean. One his goals was to have his system figure out what to apply the styling to based on the position of the point. With the current system, I get to determine that exactly how I want it. I just surround the text I want styled with the appropriate markup character. Yes, there are some edge cases but they never get in my way and even if they did, it’s usually fixable by adjusting a regex.

Still, if you’re one of the people who like specifying your markup in longhand, Choi’s system looks worth checking out.

Posted in General | Leave a comment

Sorry, No Posts Yesterday Or Today

The Irreal bunker is in the midst of a family health emergency and I haven’t had time to prepare the usual drivel for your amusement. Everything seems to be settling down so I’m hopeful that the bunker and the Irreal blog will be back to normal soon.

In the mean time, please bear with me. We’ll get back to our regularly scheduled bloviating as soon as possible.

Posted in Blogging | Tagged | Leave a comment

Digital Vs. Analog Notes

Over at The Art Of Not Asking Why, JTR has a couple of posts that explore his struggle with deciding between digital and analog note taking. None of you will be surprised where I come down on the issue—I’m all in on living a digital life and eschew using pen and paper as much as I can—but it’s informative to read about JTR’s thought process about how he decides which method to use.

To be honest, I don’t understand his ambivalence about the matter. He lays out the case for both and shows that, except for a vague feeling of attraction to writing with pen and paper, the digital method is more efficient and satisfying. The digital product is so much more useful and flexible that it seems there should be no question as to which to use.

One thing he says that really resonated with me is that if he writes a lot with a pen, his hand cramps. That definitely happens to me too. Related to that is speed.

When I was still young and was hunt and pecking on an actual typewriter, an adult told me that it was really hard to type faster than you can write by hand. That seems laughable to me now. I can type much faster than I can write. A lot of that is probably because my handwriting is so bad that I print everything but it’s still a fact.

I, too, like the idea of sitting down with a beautiful paper journal and good pen but the results aren’t that useful. I can’t back them up. I can’t carry them on my iPhone. I can’t easily link them to and from other notes.

I write virtually everything in Org mode. The main exception is the memo book that resides on my iPhone and I simply import those notes directly into an Org mode table so that they, too, end up living in Org. All of this is automatically backed up, searchable, portable to my iPhone, and easy to link to.

If you really need the feel of pen on paper, take up calligraphy. It will satisfy your need for handwriting without sacrificing the usefulness of your notes.

Posted in General | Tagged , | Leave a comment

Getting Car Sick With Lisp

Just a quickie today. Over at the Lisp subredit, breck says that he used to program in Lisp but got car sick. It’s a pretty weak pun but the commenters took up the challenge and kept the ball rolling. DrownNotably says, “you cdr done better.”

The rest of the comments were similarly funny. If you have a couple of minutes free and want to spend them enjoying some humor, take a look at breck’s post. The whole thing, including the comments, is short so you won’t have to spend much time.

Posted in General | Tagged , | Leave a comment

Writing A Book

Over at Parenthetically Speaking, there’s an interesting post on why you should write a book. It’s mainly aimed at academics but its lessons apply to anyone who has something to share. That’s actually a lower bar than you might think. You don’t have to have a PhD to have something worth saying. Most practicing engineers with a bit of experience have things to say that would be useful to other, especially younger, engineers.

The post is is divided into three parts:

  1. You can write a book
  2. You should write a book
  3. Mechanics

The first two parts are written specifically for academics but can, as I say, can apply to anyone with something to say. The interesting part, to me, is the mechanics. “Mechanics” in this context means not so much the tools you use as the actual means of publishing. The idea is to eschew “professional” publishers and make your material available for free.

I published both my books through a publisher and although it can be a bit more work, you do have the cachet of having an actual publisher putting out your book. On the other hand, making your text freely available gets the word out to more people more efficiently.

Currently, it’s easier than ever to write a book. These days, I prefer to write everything in Org mode. With Org, it’s easy to rearrange material and edit your text. When you’re happy with what you’ve written, you can export to HTML, PDF, or even Docx with a simple key press. The process could hardly be easier. The writing part is still hard, of course, but the mechanics are easy, especially if you leverage Emacs and Org.

Update [2024-11-18 Mon 12:16]: Added link to post.

Posted in General | Tagged , , | Leave a comment

On Standing Desks And Received Wisdom

Some of you may have noticed that I can occasionally be cantankerous—I prefer to think of it as being charmingly eccentric—about certain topics. Whatever you call it, there’s no denying that I’m inclined to view any subject that could be described as “received wisdom” through nasty, suspicious eyes.

It all began with chocolate. When I was a child, I was told not to eat chocolate because it caused cavities. When I was a teenager, they told me it caused pimples. As a young adult, they said it was full of fat and would cause heart problems. All those claims turned out to be false and now they’re telling me that all that sugar will cause my liver to fail. That claim will probably turn out to be false too.

If you were lucky enough not to have suffered from the chocolate myths, here’s another: the food pyramid. For my entire life and almost certainly yours, the food pyramid was received wisdom and everyone was encouraged to eat what turns out to be an unhealthy diet. Fifty years of bad diet because, you know, the food pyramid. It was received wisdom so it must have been true.

That brings us to today’s topic: standing desks. I don’t use one and I’ve never thought much about them but every time I saw something about standing desks and their putative benefits I got that little tingling that is my received wisdom alarm. Now from Science Alert we have this article claiming that standing desks may be less healthy than sitting. When you do actual studies, you find that

  1. Standing desks are no better for cardiovascular health than sitting
  2. Standing desk may actually be more harmful than sitting

Like all such examples, this conventional wisdom make sense. It seems like it should be true. Only like chocolate and the food pyramid it probably isn’t.

So what’s the takeaway? View all instances of received wisdom through skeptical eyes. Then maybe you can be a curmudgeon too.

Posted in General | Tagged | Leave a comment

M-x Occur

Kristoffer Balintona has a nice post on Emacs occur. If you have moderate familiarity with Emacs, you have probably used occur on occasion. I use it all the time but still wasn’t aware of everything it could do.

Happily, Balintona is here to fill in the blanks. The information is all there in the documentation, of course, but it’s easy to miss it when skimming through the doc looking for the information that you need.

The first significant thing is that you can restrict the action of Occur to a specific region of the target buffer. You probably won’t want to do this very often but it’s easy to see how it could be useful. The second significant thing is the number of lines of context.

You can specify how many lines of context before and after the matching regex to include but you can also specify a string in which case what is displayed acts as a replacement string. You certainly won’t need that capability a lot but when you do, it’s perfect.

Take a look at Balintona’s post or the documentation for the details. This is another example of how learning Emacs is a lifelong endeavor. You learn bits and pieces of a certain functionality but later discover that it’s much richer than you believed.

Posted in General | Tagged | Leave a comment