From Unix Command to Startup

Matt Rickard has a whimsical post that really appealed to me. The idea, according to his title, is that every Unix command becomes a startup. His first example is grep. Grep’s a utility to search for a particular string in a series of files. That, of course, when extended to the Internet, became Google. He’s got a bunch of similar examples.Here’s another: rsync begot Dropbox.

As I said, it’s a whimsical but amusing post and it does make you think: perhaps all those successful startups really are merely extensions of Unix utilities from file systems to the Internet.

In any event, take a look at the post to see where all the popular Web sites really came from.

Posted in General | Tagged | Leave a comment

D. J.Bernstein on the NSA Corrupting Crypto Standards

J. Bernsein is my type of guy. He’s opinionated, crabby, curmudgeonly, and brilliant. He’s particularly brilliant when it comes to matters of cryptography. One of the things about being curmudgeonly is that you have little tolerance for lies and nonsense so of course he’s a regular antagonist of the government and, in particular, the NSA.

These days, nobody trusts the NSA but NIST is supposed to be different. Their job is to promulgate standards that benefit commercial entities and private citizens. In the cryptography realm they’re supposed to develop, test, and standardize cryptography primitives that allow companies and citizens to protect their private—predominately commercial—interactions from criminals and fraudsters.

It hasn’t always worked out that way. After getting caught conspiring with the NSA to corrupt the Dual Elliptic Curve Deterministic Random Bit Generator, NIST promised to clean up their act and be more transparent. It was an important promise because their credibility with the crypto using public was on the line.

I, naively, took heart with their promise to be honest brokers going forward. Sadly, according to Bernstein, it hasn’t worked out that way. It appears that they are once again conspiring with the NSA to compromise to corrupt crypto standards and doing everything in their power to cover up that fact.

After having several Freedom of Information requests ignored, Bernstein finally resorted to filing suit to force NIST to reveal their collaboration with the NSA. Follow the link for an excellent history of NIST/NSA collusion from the early days of DES to the current debates about post-quantum algorithms.

It’s sad that the public can’t trust their government to have their backs on cryptographic matters but as Bernstein demonstrates, that’s where we are. I don’t know the answer. I just wish the NSA would put the pubic above their own convenience.

Posted in General | Tagged | Leave a comment

Paul Graham on SciHub

Paul Graham remarks on SciHub and how broken our current system is that everyone’s advice for getting research results is to use a pirate site.

There’s not even a pretense that the proper method is find a library that has access to the needed journals. That doesn’t make sense even in a first world country but imagine you live in a third world country. It’s basically something like SciHub or go without.

Smart people who can change the world live everywhere—even in third world countries—and it’s simply crazy to deny them the resources they need to help humanity. Our current system is completely dysfunctional and just doesn’t make sense. That’s especially true when almost all of this research is being financed with public funds.

Sadly, the university system is collapsing and, even now, many researchers are choosing to publish in open access journals so things may improve but it’s too bad that it takes the destruction of our educational system to bring a little rationality to scientific publishing.

Posted in General | Tagged | Leave a comment

A Graduate Student Research Workflow

Koustuv Sinha is a PhD student in machine learning and natural language processing. Because much of his time is devoted to reading research papers in his field, he’s devoted significant effort into optimizing his workflow.

The TL;DR is that he’s used Emacs and Org-mode to develop an efficient method of discovering and curating interesting papers. It starts with the discovery. For this he uses Elfeed to subscribe to various Arxiv feeds in his areas of interest. He uses the elfeed-score package to rank these papers in the approximate order of his interest in them.

When he reads an abstract in the Elfeed results that seems interesting, he fires off a process that captures the paper’s metadata to his bibliography file; grabs a copy of the paper, renaming it to the bibtext key, and storing it in a central repository; and adds it to an Org file listing the papers we wants to read.

A lot of this is accomplished by leveraging John Kitchin’s org-ref. He calls org-ref functions directly to get and store the paper’s data. It’s a nice example of reusing someone else’s codebase in your own.

Sinha provides a huge number of details in his post so be sure to take a look. If you have similar needs, this is an excellent starting point for your own workflow or even something worth stealing wholesale.

Posted in General | Tagged , | Leave a comment

Remote Work At The Doctor’s Office

If you’ve been reading Irreal for more than the last 5 posts you know that I’m a big supporter of remote work. There are many many jobs that can be done remotely and there’s no reason for many employees to be on-site. Still, there are some jobs that intrinsically require an on-site presence. It’s hard, but not impossible, to imagine a store clerk working from home. Some jobs, though, just seem to require an in-person presence.

One such job is medical provider. To be sure, COVID-19 has seen the rise of virtual appointments but sometimes doctors really do need to be able to put their hands on you to do their job.

The other day, I went to one of my doctors for a yearly checkup and when the doctor came into the examining room, he had an iPad with an active video session. He told me that that the woman at the other end was a medical transcriptionist who was based on the other coast of Florida. During the exam, the transcriptionist reminded the doctor of past findings from tests and recorded the current findings.

If the transcriptionist had been in the exam room, I wouldn’t have thought twice about it but the fact that she was far away made the process seem unusual and strange. But that’s just silly. She could see and hear everything that was going on—we even waved goodbye when the exam was over—so was able to capture all the relevant data just as well as someone who was in situ.

There isn’t anything really surprising about all this. It’s just that we don’t often think about medicine as a field ripe for disruption by remote work. It is, however, already happening.

Posted in General | Tagged | Leave a comment

Org-mode Versus Jupyter Notebook

John D. Cook, a consulting mathematician, who runs the TeX and Typography Twitter feed as well as several similar—mostly mathematically focused—feeds has two posts that consider using Org-mode instead of Jupyter Notebook. It’s interesting because it comes from someone who is neither a developer nor a dedicated Org user.

The first post considers Org-mode as a light weight Jupyter Notebook. It stresses how easy it is to mix text, LaTeX markup, code, and the results of running that code in a single file. That’s a real win if you’re trying to do reproducible research or simply trying to simplify your workflow. Since everything is text, it’s easy to integrate it into your version control system.

The second post is reminiscent of Mike Hamrick’s video of using Org and Org Babel to create documents that automatically maintain their consistency as parameters change. Cook’s post covers exactly that: how to specify parameters separately from their use in order to maintain consistency as things change.

If you’re a hardcore Emacs/Org user or even a long time Irreal reader, none of this will be new to you but it’s a really excellent introduction to one tiny aspect of Org’s power. It’s definitely worth your while if you’re new to this aspect of Org-mode.

Posted in General | Tagged , | Leave a comment

Red Meat Friday: PHP Is The Right Choice

One thing you have to say for Daniel Abernathy is that he’s not afraid of the heavy lift. He’s got a post that presses the claim that PHP Is the Right Choice in 2022 and Beyond. It’s hard to find more people than you can count on one hand who will admit to liking PHP but, of course, its popularity gainsays that popular wisdom. Still, it’s fair to say that PHP is the Rodney Dangerfield of programming languages.

Even Abernathy admits the post’s title may be a little overstated but he does make the case that there’s a lot to like about the language and ecosystem and that it’s not like it used to be.

Manuel Odendahl seems to agree but some reddit commenters are less obliging. One comments that “As much as I despise java, at least a group of allegedly competent engineers took the time to actually design the language and its type system, as opposed to hacking together a bunch of stupid shit workarounds on top of an already hacked together brain-damaged non-designed crap, which is the case of php.”

I’m completely agnostic on the matter because I don’t know the language at all. I’ve written exactly one line of PHP and that was because of exigent circumstances. I only got away with it because it’s sufficiently C-like that I could fall back on my mental muscle memory.

Regardless, hating on PHP is well entrenched and nothing Abernathy or Odendahl can say will do much to change that. That’s why Abernathy’s fearless, if ultimately futile, defense of the language has earned him a coveted spot on Irreal’s Red Meat Friday.

Posted in General | Tagged | Leave a comment

Mickey on Evaluating Elisp

Mickey from Mastering Emacs has an excellent post on the various ways of evaluating Elisp in Emacs. As Mickey says, there are several ways of doing it depending on the context and it pays to be familiar with them all.

The most familiar way is probably eval-last-sexp (Ctrl+x Ctrl+e). It’s really useful because it will evaluate almost anything: s-expressions (of course) but also numbers, strings, and most special forms. The situation for special forms has improved a bit in Emacs 28 so be sure to take a look at Mickey’s post to get the details.

There’s also eval-buffer and eval-region, which do as their names suggest. These commands generally don’t evaluate special forms such as devar, defface, and defcustom. That’s generally what you want so it’s a feature instead of a bug. Again, see the post for the details.

The method that I always tend to forget about is eval-defun, bound to Ctrl+Meta+x. It’s especially handy for evaluating functions because, unlike eval-last-sexp, you can call it from anywhere within the function instead of needing to be at the end. If you call it with the universal argument, it will turn on debugging for the function. It’s worth reading Mickey’s article just for the section on this command.

Finally, there’s Eshell and IELM. Most Eshell users know you can evaluate many Elisp expressions there but when you want a real Elisp REPL, IELM is what you want. It’s perfect for experimenting with code that’s longer than a single expression. I use it fairly often and love it.

Like all of Mickey’s posts, this one is definitely worth your time and effort.

Posted in General | Tagged | Leave a comment

Thoughts On Thoughts On RSS

Matt Rickard has a—at least to me—provocative post on RSS. As I’ve said many times, I’m a big believer in and user of RSS. Google did its best to kill it off but it turned out to be too useful to discard. Along with the excellent Elfeed it’s my main way of discovering and curating interesting blog posts.

That’s why I disagree with several of Rickard’s points. Rickard appears to take the point of view of a content creator interested in monetizing content. That’s a valid viewpoint, of course, but I look at it from a user’s point of view and very much like the way it works.

Rickard notes that the typical RSS entry is much like an email. It doesn’t render HTML very well and certainly doesn’t support Javascript. Rickard says that’s okay for email but not for general blog content. Perhaps, but I use RSS to point me to interesting blog posts—that I read with my browser—not as the primary way to consume a post. Indeed, many of the RSS entries don’t have the whole post and some have only the title. I like the primarily text based entry that renders quickly and helps me decide if a post is interesting enough to read.

At the other end of the spectrum, Rickard says “discovering a feed and seeing raw XML was too technical for the average user.” Well yeah but who reads the raw XML? I’d guess virtually no one. There’s nothing hard about subscribing to a feed either. Usually it’s just clicking on a link. It’s true you have to already know about a site to subscribe but that’s true no matter how you consume it.

Rickard doesn’t seem to be against RSS. He just notes that it’s not ideal for commercial content creators and doesn’t look as nice as a blog post rendered in a browser.

Although those who want to hoover up your Web activity or sell you things have done their best to put a full stop to RSS, users love it and keep it going. As the name suggests it’s a simple protocol and doesn’t require much maintenance. I, for one, hope it’s with us for a long time.

Posted in General | Tagged | Leave a comment

Dired-rsync

Yi Tang has an interesting post on the dired-rsync package. It’s been around for a while, apparently, but I hadn’t heard of it before Tang’s post. The TL;DR is it allows you to use rsync in dired in the same contexts that you would otherwise use Copy.

Tang lists all sorts of reasons why he believes rsync is superior to cp and scp but, oddly, doesn’t mention the major one: rsync only send the parts of the file that are different from the target. It is, in short, a tool optimized for copying an updated file.

Much of the post is devoted to explaining how Tang has integrated the package into his workflow. It’s perfect for downloading large data files from a server to his local machine where he can manipulate and analyze them. He explains how he set everything up in case you have a similar use case and want to recreate his workflow.

It’s a nice post that also explains some of the gotchas if you want to use dired-rsync yourself. It’s on Melpa and setting it up is simple. You can simply copy Tang’s use-package configuration for an excellent starting—or permanent—setup.

Posted in General | Tagged | Leave a comment