Getting a List of Open PRs from Github (Part 2)

Three weeks ago, I wrote about Geoffrey Lessel’s video on writing an Emacs package to obtain a list of Pull Requests from a GitHub repository, present a chooser list, and then display the chosen PR in the default browser. That would be an interesting project in any case but it’s especially so in Lessel’s case because he’s an Elisp beginner; a rank beginner, really.

The thing with Lessel is that he’s relentless in leveraging Emacs’ documentation and discoverability to figure out what he needs to do next. He spends a lot of time finding functions with a keyword search and reading through them to find the one he needs next.

At the end of the video I posted about above, Lessel had written code to retrieve the PRs from GitHub and build a list of the results. In his latest video he finishes the package by writing code to select the desired PR and display it in the browser.

As in the first video, those familiar with Elisp may be frustrated with Lessel’s floundering around as he searches for the correct function but it’s worth watching as a wonderful example of how even a beginner can make significant extensions to Emacs in order to make it better fit his workflow.

The first video was quite long but this one is just 26 minutes. Still too long for a coffee break but short enough to find time for it.

Posted in General | Tagged , | Leave a comment

The Apple Ecosystem

Anyone who’s been around Irreal for any length of time knows that I’m an Apple user. I like the build quality of their hardware and macOS/iOS are generally good enough. But the thing that really makes it all work for me is the entire ecosystem. I have an iPhone, an iPad, and (at the moment) two MacBook Pros. That’s just me and doesn’t include other family members. The thing about this is that it all works together more or less seamlessly.

For example, I keep my memo book in the Apple Notes app. That means that I can make an entry from my phone, iPad, or Mac and have it appear on the other devices essentially instantly. The same is true of my calendar and contact list. The only thing that doesn’t work that way is, sadly, Emacs. If you don’t have this type of integration across your devices, it’s hard to describe what a boon it is.

Ali Abdaal, whom I’ve mentioned occasionally, has a really nice video up that describes the Apple ecosystem and how he uses it. It will be of interest primarily to Apple users but others may find it enlightening too. Even though I am all in on the digital lifestyle, Abdaal demonstrates a few things that I didn’t know you could do.

Most of the integration involves what Apple calls “continuity”: the idea that an action you take on one device is reflected on your other devices. The file syncing for things like the Notes app is one trivial example. Another, not so trivial, example is the “Universal Clipboard,” which makes anything you’ve copied onto the system clipboard on one device available for pasting on the other devices. Abdaal shows how useful that can be.

There are a bunch of other features that Abdaal explores so if you have interest at all in Apple devices—even if you think you’re a master of all things Apple—it’s definitely worth while spending a few minutes watching the video. It’s just over 12 minutes so you can probably squeeze it into a break.

Posted in General | Tagged | Leave a comment

Markup Languages Compared

There are several popular light weight markup languages for producing printed or displayed typeset output. I use “light weight” to distinguish them from heavy duty markup languages such as TeX, LaTeX, or Troff. One thing they all have in common is that they’re more pleasant to use and generally produce better output than Word and its evil siblings.

I just came across an InfoWorld article from 2019 that compares several markup languages for documentation. The article looks at

  1. Markdown
  2. reStructuredText
  3. AsciiDoc
  4. Org-mode

I’m vaguely familiar with Mardown and, of course, intimately familiar with Org-mode but have never used reStructuredText or AsciiDoc. They all have their adherents so a comparison can be useful for those looking for a tool to write their documentation or for other writing projects.

The advantages of Markdown are that it’s everywhere—especially for producing HTML—and is easy to learn. It’s problems are that it’s a bit feature-poor and has several slightly different versions.

reStructuredText, on the other hand, has more features and it has a specification. It began in the Python community so its syntax depends on white space. Other than that, it seems like a good solution. Indeed, Mickey Petersen used it to write Matering Emacs so it can take on large projects as well as simple documentation.

AsciiDoc is another nice solution. My impression is that it’s popular among more technical users.

Finally, there’s Org-mode. Here the article really falls down making the rest of their conclusions suspect in my mind. They say, for instance, that Org-mode is not suited for public documentation despite the fact that books, papers, and the (book length) Org-mode documentation itself is written in it. They seem to believe that its function is mostly restricted to supporting Org Agenda features. It is true, of course, that Org-mode, despite its spinoffs for other editors, is primarily restricted to Emacs but why would the enlightened care?1

Despite the article’s failure in accurately evaluating Org-mode, you may find its comparison of the other systems helpful. Give it a look if you’re interested.

Footnotes:

1

And it’s not even Friday.

Posted in General | Tagged , , | Leave a comment

Corruption in Academic Computer Science

According to a shocking Viewpoint article in the Communications of the ACM, there’s corruption in the computer science community. I know, I know: film at eleven. But this corruption involves cheating by academic computer scientists. Cheating is never okay, of course, but as with certain public officials—the police, say—we expect actual scientists to be held to a higher standard in their professional role. Even petty violations can’t be tolerated. That’s why it’s so disturbing to discover systematic, intentional cheating.

The TL;DR is that one or more small group(s) of computer scientists have colluded to game the paper review process—read the CACM article for the details. That’s important to all of us because it means that important results may not get published due to the cheaters’ papers being published instead.

It’s also important to the computer scientists because their publication history is vital to their tenure and promotion. That’s the point of the cheating. It’s also a consequence of the time honored but probably outdated university incentive structures that prioritize publishing in prestigious journals. As Goodhart’s law predicts, any metric used to determine an outcome becomes useless as a metric. That’s because it will be gamed just as in this case.

This is the same dynamic stemming from the same root cause as the current contretemps involving journal publishers. The academic community complains and rends their garments about the cost of buying the journals but it’s their own rules that enable the publishers’ rent seeking. Don’t look for anything to change soon.

Posted in General | Tagged | Leave a comment

How The Package System Works

Jiacai Liu over at Keep Coding has an interesting post on the Emacs package system. The post is nominally about maintaining your Emacs configuration but is actually a quick overview on how the package system works.

The problems that he’s trying to solve is that of version control. Sometimes an update for a package will appear in Gnu ELPA or MELPA but will turn out to be broken. It’s pretty hard to recover from that so Jiacai uses the Git submodule system to help solve the problem.

In order to do that, he needs to manage the package configurations manually and that means understanding how the package system does it. Jiacai explains the autoload system and how the require command works.

If you’re a bit fuzzy on how package loading works, take a look at Jiacai’s post.

Posted in General | Tagged | Leave a comment

Washington State Sues a Patent Troll

As you all know, Irreal doesn’t think very highly of patent trolls. Of course, nobody (except patent trolls) thinks very highly of them. Some organisms that might be characterized as parasitical actually enjoy a symbiotic relationship with their hosts. Patent trolls, however, are simply parasites. Full stop. They’re scum that bring nothing but harm to the society they infect.

Their means of entry into the host is always the same. They leverage the fact that it’s always cheaper to settle a bogus patent claim than to defend against it. That’s true even if the victim wins. What can be done? A good start would be to make the loser pay all the costs. Of course, the pathogens known as non-practising entities would doubtless evolve to leverage that defense too.

Washington State is pushing their own solution. They’ve passed a law outlawing bad faith patent claims and are suing Landmark Technology for patent trolling. Irreal wishes them luck but as the article says, they have their work cut out for them. The courts have set a very high bar to establish that a patent claim is in bad faith and there are constitutional issues with seeking to limit legal regress. Still, Landmark’s claim is extraordinarily weak—anyone with a commercial Website could be said to be in violation—and experts say it would certainly be invalidated if litigated.

One can only hope that Landmark will decide to sue Cloudflare. They know how to deal with patent trolls. As I said before, these trolls and the bridges they hide under need to be smashed to pieces. More companies should man up and follow Cloudflare’s example.

Posted in General | Tagged | Leave a comment

Google Channels Lucy

Almost every fall during its 50 year lifetime, the Peanuts comic strip would run a variation of the Lucy and Charlie Brown football gag. The basis of the gag is that every year Lucy would talk Charlie Brown into trying to kick a football that she was holding and every year she would yank it away at the last second causing Charlie Brown to land on his butt.

Charles Schultz, who wrote the strip, died in 2000 but Google is apparently trying to keep the gag going. RSS users will undoubtedly recall Google’s abandonment of Google Reader, which powered most RSS readers. Google reportedly did this to drive acceptance of their new, since abandoned, social media platform that was so unsuccessful I’ve already forgotten its name. Google’s action was temporarily devastating to RSS. Many went so far as to declare it dead. But the thing is, unlike social media platforms, RSS solves a real problem so it bounced back with new readers that didn’t depend on Google.

Now Google is inviting RSS users to have another go at the football. They’ve announced that they’ve added an experimental feature to Chrome that is, in effect, an RSS reader. And you can trust them, they say: this time they won’t yank that football away. Before you become dependent on this new feature, you might want to ask Charlie Brown what he thinks.

Posted in General | Tagged | Leave a comment

Magit 3.0 Released

Jonas Bernoulli has just released Magit 3.0. It doesn’t appear to have reached MELPA yet but will doubtless appear shortly. The new release contains over 1,200 commits and comes two and a half years after the last feature release.

Bernoulli’s announcement lists the major user-visible changes but you can also check out the Release Notes if you want the details. The main changes are to the menus, integration of spin-off packages such as Transient, and a relaxation of assumptions about the names of repositories and branches. Again, see Bernoulli’s announcement for the details.

Just about everybody agrees that Magit is one of Emacs’ killer apps. Along with Org-mode, one often sees it cited as the reason for moving to Emacs. If you believe in supporting free/open source authors, Bernoulli is certainly deserving of that support.

Posted in General | Tagged | Leave a comment

Sudo

Anyone who works in a Unix or Linux environment is familiar with the sudo command. Sudo allows the user to execute a command as root. That’s sometimes necessary even for the most basic users who aren’t operating on a locked down machine controlled by a system admin. Back when I was learning Unix, everyone just used su to become root but security concerns lead to the use of sudo instead.

The problem with sudo is that it’s good for one command only. That’s great if all you want to do edit a system file or copy a file to one of the system directories but it gets to be a pain when your task involves several commands. Very often, you really do want a root shell.

It turns out that the sudo command can do that too. If you invoke it with the i or s flags, it will give you a root shell. There’s a subtle but significant difference between the two flags. Fortunately, Derrik Diener over at maketecheasier explains all this in his article The Differences between Su, Sudo Su, Sudo -s and Sudo -i. It covers everything you need to know but the TL;DR is that you usually want sudo -i although sudo -s is also useful.

Apple doesn’t reveal the root password on Macs but it’s easy to reset using sudo. When I got my first Mac, I did that but now I don’t bother; sudo does everything I need. By using the i or s flag, I can also get a root shell when I need one. If you’re a sudo user, be sure to take a look at Diener’s post.

Posted in General | Tagged , | Leave a comment

Mechanical Keyboards

I’m a huge fan of mechanical keyboards. Back in the old days that meant the IBM Model M and its latter day incarnation from Unicomp. I’ve had both—although I foolishly left my Model M behind at my last job—and there’s nothing more satisfying than their solid, tactile, clicky feel as you type. Of course, the Model M and its Unicomp offspring are pretty noisy with their clickity-clack sound but that can also be satisfying (although perhaps not to your colleagues).

These days, there’s an embarrassment of riches. The point of mechanical keyboards is, of course, their key switches and modern mechanical keyboards usually come with a choice of switch types. You can get noisy, clicky ones like on the Model M or quiet clicky ones, or a softer feeling switch without the tactile feedback. The problem now is not getting a mechanical keyboard but deciding which one to get.

Wirecutter has an excellent review of mechanical keyboards with their recommendations on which to choose. It’s a long and comprehensive review. It doesn’t cover every choice, of course, and although it mentions wireless mechanical keyboards it doesn’t have much to say about them on the grounds that they’re not yet as good as their wired brethren.

Ali Abdaal also has an interesting video in which he compares several mechanical keyboards in terms of which allow him to type the fastest. Ironically, he gets his best results with the standard, nonmechanical Apple keyboard but he considers a different selection of keyboards from Wirecutter so its a useful companion to the Wirecutter article.

If you’re in a mechanical keyboard, these are two great resources. If you’ve never typed on one, you should give it a try. They really make typing much more enjoyable.

Posted in General | Tagged | Leave a comment