Orgmode.org Has a New Look

Just a quickie today to note that the Org-mode site, orgmode.org, has a brand new look. That’s thanks to the work of Tecosaur who completely revamped the site. According to his announcement over at Reddit, the core pages are smaller and load faster, the site is more mobile friendly, and many of Org’s features now have animated demonstrations.

The site looks great and it’s much easier to find things than it was before. I especially like the Features page that gives an excellent introduction to some of Org-mode’s features. There are animated examples and explanations so it’s just the thing for a n00b trying to get oriented in the large and intricate Org universe.

Thanks to Tecosaur for his hard work. I’ve added him to the list of people I should buy a beer for if I happen to meet him in real life. You should do the same.

Posted in General | Tagged , | Leave a comment

The Danger of Web Forums

Karl Voit has an interesting diatribe on his Web site that really resonated with me. The TL;DR is that you shouldn’t commit anything relevant to Web forums like Reddit, Hacker News, or Facebook. What Voit terms as “relevant,” I would describe as important: something that’s worth preserving. If you’re posting something like, “Happy Programmers’ Day,” it hardly matters if it disappears tomorrow. If, on the other hand, you have an important lesson or insight to impart that’s important.

The problem, Voit says, is that anything you commit to one of these forums will disappear sooner or later. Look at the popular Google apps or the MySpace content that are no longer available. Right now, it’s hard to imagine a post-Facebook world but they too shall pass and anything important that you had to say on that platform will be lost.

Sadly, though, the problem is larger than just companies going out of business or dropping products. There’s also the problem of politically incorrect posts. You might think that that problem doesn’t apply to those of us in the sciences and engineering but there is case after case of posts on scientific or technical subjects that violate the current narrative being censored. Even if you embrace the current narrative, there are, as Voit explains, significantly differing laws among countries. For example, Germans consider being a Nazi a crime whereas in the US their beliefs are abhorred but still protected.

This is a smaller part of one of my favorite hobby horses: don’t commit your data to any platform that you don’t control. Ideally that means your data is in plain text and resides on a computer you control. That’s not always possible but it represents a goal.

What’s the answer? Voit suggest things like Usenet and personal blogs. Usenet seems hopelessly out of date but is still available. Personal blogs are an option available to everyone with a computer (hosting Irreal cost less than $10 a month). That’s why everything I have to say I say on Irreal. It’s my platform and will prevail as long as I do or at least as long as I want it to.

Take a look at Voit’s post. Perhaps it will make you rethink the way you contribute to the public discourse.

Posted in General | Tagged | Leave a comment

Zamansky 76: Bookmarks and Burly

Mike Zamansky is back with another video in his Using Emacs Series. This time he discusses Emacs bookmarks and the Burly package. You can set a bookmark for any file that you need often and use the bookmark-jump function to bring that file up quickly and easily. Burly does the same sort of thing but for window/buffer configurations. Take a look at Zamansky’s video to see it in action.

Bookmarks are one of those things that seem like a no-brainer yet many—or perhaps most—of us don’t make as much use of them as we should. That changed for me several years ago when I stole a bunch of ideas from abo-abo. First off was to install bookmarks+, which among other things lets me bookmark websites so I can go to them right from Emacs. This, along with abo-abo’s headlong package allow me to map the bookmarks to one or two letter sequences. Wrapping all this into a window configuration hydra allows me to enter Hyper+w m t to bring up my tax file or Hyper+w m b to open my blog in Safari. I wrote about all of that here.

Finally, it’s worth mentioning that any files you have in ~/.agenda-files will be loaded automatically when Emacs starts so I usually visit those by typing in the first letter or two of the file name and letting council-find-file load it for me. It’s just as quick and easy as using a bookmark and I don’t have to add it to my bookmarks file.

Emacs has a lot of ways of quickly loading files and happily none of them require the use of a mouse. Take a look at Zamansky’s video for one of them. The video is 17 minutes, 32 seconds so plan accordingly.

Posted in General | Tagged | Leave a comment

You Are Not Expected to Understand This Redux

Three and a half years ago, I wrote about what is arguably the most famous comment in computer history. That, of course, is the celebrated “You are not expected to understand this” comment in the V6 Unix source code. The comment appears in the process-switching code and was meant to convey that what was going on was particularly hairy.

I just came across a reference to a post from 2018 by Paul McLellan that also discusses the comment. What’s interesting about the comment is that it’s often interpreted as snark but, in fact, was simply meant to convey that the code was very hard to understand. Indeed, Thompson and Ritchie later confessed that they didn’t understand it either. It worked only because of peculiarity of the Unix PDP-11 compiler. When Unix moved to other architectures, the code no longer worked and was rewritten leading to the disappearance of the comment.

McLellan does a good job of explaining what was going on in the code and why it was so difficult to comprehend. If you think that none of this concerns you, you should think again. A necessary part of learning to write code is to read code and V6 Unix is some of the best code you can read. It will show you how the masters did it even if you aren’t writing an operating system.

Posted in General | Tagged , | Leave a comment

A New Organ?

If you’re like me, you probably think that medical science has long since identified all the organs in the human body. Indeed, no new human organs have been identified for about 300 years. Until now.

The New York Times is reporting that researchers from the Netherlands have discovered a fourth set of pituitary glands at the junction of the nasal cavity and throat. It seems nearly impossible that they could have been missed for so long but they are in an out of the way place and require particularly sensitive imaging to detect. Also the researchers, who are oncologists, have examined only a small set of people who are cancer sufferers and they want a larger and more diverse sample.

Still, the preliminary data is pretty persuasive that they have in fact found a hitherto unknown organ. It’s a good lesson: no matter how settled we think a field may be there’s always something new to learn.

Posted in General | Tagged | Leave a comment

Hardware vs. Software

Everyone who’s been around for a while recognizes that computing has gotten more powerful. Problems that were once intractable now seem almost trivial. It’s not really surprising; it’s progress. It’s what we expect. But it does suggest the question: is the progress because of advancements in hardware or because of improved algorithms being brought to bear on the problems.

It turns out that some researchers have looked at the question scientifically and written up their results. Even better, Vivek Haldar discusses the paper in one of his “Read A Paper” videos. Johannes Fichte, Markus Hecher, and Stefan Szeider have a paper that Haldar discusses that studies the problem of SAT solvers. SAT solving is a notoriously hard NP-Complete problem but we’re now routinely solving problems that were impossible 20 years ago. Is that because the hardware is so much better or is it because the algorithms are so much improved?

To answer that question, the authors ran today’s algorithms on 20 year old hardware and algorithms from twenty years ago on today’s hardware. It’s a clever experiment. If you don’t already know the answer, take a second to guess what the answer is before you watch Haldar’s video or read the paper. If you need a hint, the answer is just what you’d expect it would be.

Posted in General | Tagged | Leave a comment

The Wizard Book Cover Explained

A lot of you probably know that Structure and Interpretation of Computer Programs, SICP, is also called “The Wizard Book.” A glace at its cover explains the alternate name but Conor Hoekstra has a more thorough explanation of the cover:

It’s all tongue-in-cheek, of course, but it does provide an opportunity to once again urge any of you who have not read it to do so. I promise you that no matter how experienced you are, SICP will teach you new things and change the way you think about programming.

You can read the book for free and if you prefer a more passive experience, there’s a complete set of lecture videos that Sussman and Abelson gave at HP in 1986. Both are very much worth your time.

Posted in General | Tagged , , | Leave a comment

Programmatic Programming with Graphviz

Correl Roush has a very nice post that beautifully illustrates the idea of writing code to write code. It’s a tremendously powerful idea because it lets you leverage some other program or programming language to do a task that requires specialized knowledge to code or is otherwise too hard to do directly. Examples that I’ve used are writing code to generate troff source as an intermediate to producing typeset output and code to generate graphviz source as an intermediate to generating a graph.

Roush gives us a nice example of generating graphviz (dot) source code to produce a nice looking graph. The particular problem she’s addressing is building a tool that you can point at a git repository and have it produce a nice graph of the commits. That seems unreasonably hard if you approach the problem ab initio but is very tractable if you leverage git and graphviz to do the hard work. Git can produce a topologically sorted list of commits and graphviz can do all the drawing of the graphs. All Roush has to do is add some glue code.

Roush decided to work in elisp and builds up her application step by step. She starts by showing the dot input she wants to produce and then writes the code to produce it. By iterating through more complicated graphs until she gets the final result, she shows to build the application iteratively, a programming method that I especially like.

I also like the way Roush uses data abstraction. Her list-based implementation may or may not scale to huge git repositories but her use of data abstraction makes it almost trivial to move to a more efficient implementation if required.

Posted in General | Tagged | Leave a comment

Emacs Shells

One of the things that’s harder than it should be in Emacs is embedded shells. You can type Meta+x shell and sort of have a shell. Except it doesn’t work very well. There are other options but it can be really confusing for the n00b or even a semi-experienced user not familiar with invoking shells from Emacs.

Derek Taylor has a video that explains and compares Emacs shells. He—rightly in my opinion—rejects the shell and ansi-term command as basically unusable for non-trivial commands. Until fairly recently there wasn’t a good solution if you wanted a traditional shell.

As Taylor says, that has recently been remedied by the introduction of vterm. It requires the relatively new module system but solves most of the problems for those who want to have a “normal” Unix shell. It solves all the problems with shell and ansi-term and lets you run a full-function shell from within Emacs.

But that’s not all, of course. There’s also eshell. It’s both less and more than a Unix shell. Some things don’t work as well but eshell has capabilities well beyond those of traditional shells. Taylor demonstrates some—but not all—of those capabilities. There are others that he doesn’t demonstrate.

The video is 17 minutes, 20 seconds long—a bit shorter if you skip the shoutouts at the end—so you’ll have to schedule some time. If you’ve been confused by Emacs shells, take a look at Taylor’s video. It’s a good summary.

Posted in General | Tagged | Leave a comment

Voting in Estonia

Almost every expert says that you can’t vote online safely. You see the opinion so often it’s become received wisdom. Yet that’s exactly what happens in Estonia. Estonians can vote from anywhere in the world and can vote as often as they like—only the last vote counts, of course. To Estonians, this only makes sense. All their interactions with the government can be performed digitally.

I’ve written about digital life in Estonia before. It is, I think, something we should all strive for. In Estonia, you don’t have to fill out the same personal information over and over again as you deal with different government agencies. And you certainly don’t have to spend hours at the DMV to renew your driver’s license. Everything is linked to a digital ID that is used to mediate all those transactions.

Of course, that sounds like it could be a dystopian nightmare. The government has all your information conveniently linked by that ID. On the other hand, things are not much better in, say, the US. The government still has all your information, it’s just spread out among many agencies. It may take a little effort but they can certainly pull together all your information when they need to. Estonia, for its part, has taken pains to protect their citizens’ data and to guarantee that it belongs to the citizen not the government.

I don’t have enough data or expertise to evaluate how well they meet that goal but Estonians seem happy with the results. It would probably be hard for any Western country to replicate what they have. They started out fresh when they Soviet Union fell and they’re a relatively small country. Still, they have a system worth emulating to the extent we can. In the US that would require ironclad constitutional guarantees of privacy and ownership of your data for a start. That would be hard and probably won’t happen but it’s a worthy goal.

Posted in General | Tagged | Leave a comment