Boeing’s Suicide Mission

This is yet another post about Boeing and its troubles. I know I seem obsessive about this issue, and I am. It saddens me that a company known for—some would say who defined—engineering excellence has been hijacked by a pack of bean counters who care for nothing but its stock price.

Boeing’s senior management loathes experienced and competent engineers. Their CEO, Jim McNerney called them “phenomenally talented assholes” and encouraged his management team to ostracize them into leaving the company. They’ve been largely successful.

Over at The American Prospect, Maureen Tkacik has an excellent, if depressing, article on Boeing’s Suicide Mission. I challenge you to read it without becoming infuriated. The story is told from the point of view of a long time (30 years) Boeing quality manager, John Barnett. For the crime of refusing to look the other way, he was targeted and finally driven from the company.

The article claims that management had let their concern for the stock price lead them to ignoring safety concerns, covering up problems, and into actual criminality. Hundreds have died due to problems with the 737 Max but the problems are everywhere. One group of 15 Boeing line mechanics were asked if they would fly on a 787 Dreamliner. All but 5 said no.

Barnett was set to testify in a criminal inquiry concerning Boeing’s practices when he died—some would say mysteriously. His death was ruled a suicide but those who knew him are having none of that. One long term former executive, speaking of Boeing senior management, said, “I don’t think one can be cynical enough when it comes to these guys.”

Tkacik’s article is long but it’s a great read and I urge you to spend a few minutes with it. It’s saddening and infuriating to read about the suicide of a company that once defined engineering and manufacturing excellence. As Tkacik puts it, “[Boeing is] an institution that [is] in a perpetual state of unlearning all the lessons it had absorbed over a 90-year ascent to the pinnacle of global manufacturing.”

Posted in General | Tagged | Leave a comment

An Analysis Of The XZ Malware Injection Process

If you’re in tech and not in a coma, you will have at least heard of the recent attempt to inject malware through the xz (de)compression utility. The technical press, as is its wont, has been blasting the story all over the Internet. They have, of course, as is also their wont, got large parts of the story incorrect and pawned off speculation and misinterpretation as informed commentary.

Many stories stated that “unix-like” systems were affected by the exploit. Does that mean macOS users should worry? What about users of FreeBSD and the other BSD distributions? The short answer is no. Only x86-64 Linux systems are at risk.

Christian “naddy” Weisgerber is the maintainer of the archivers/xz port for OpenBSD so, of course, he was very interested in this and took a close look at the malware injection process. His TL;DR is that the injection script explicitly aborts if it’s not running on an x86-64 Linux system.

He has a long post on the openbsd-misc mailing list that details his findings. The malware author(s) went to great pains to hide what they were doing. The process proceeds in several stages with each stage removing the obscuration from the next stage. The malicious code was hidden in two “test” files that purportedly tested the decompression. These files, by themselves, seemed completely innocuous even when examined.

Weisgerber’s post is a good overview of what was going on and should interest any security nerds out there. The post doesn’t go into the low level details so it’s interesting even if your aren’t concerned with the nitty-gritty.

Posted in General | Tagged , | Leave a comment

A Deep Dive On Registers

Arialdo Martini is back with a very informative post about using registers to store buffer locations and other data. He starts with positing the need to store buffer locations by name rather than storing them in a ring buffer as he discussed in his post on the mark ring and then gives two possible implementations.

Of course, that’s not necessary because Emacs already has functions to do this. I generally use registers to store other information such as window configurations and text I need to insert repeatedly into a document but storing buffer locations can be useful.

It turns out that the Emacs implementation is much more robust than you might imagine. For example, if you close a buffer that is stored in a register and is displaying a file, Emacs will update the register to a file-query that will reload the buffer if you jump to the register containing the reference.

But it gets better. Martini shows how you can make registers persist across Emacs sessions. All of this is builtin to Emacs and available simply by invoking the requisite functions.

The only thing that Martini doesn’t mention is that the register keys aren’t stored as a single character but as a symbol reference.That means that you can name a register as a symbol (in Elisp), which makes it easy to store, say, window configurations without risking having it overwritten interactively. I use this all the time to run certain functions in full screen and then restore the previous window configuration when I’m done.

The thing about registers, as Martini says, is that they’re implemented using normal Elisp data structures that are available to end users to use in any way they see fit. It’s another example of how configurable Emacs is.

Posted in General | Tagged | Leave a comment

Writing With Emacs

This post is about another of my browsers tabs that I’ve had open seemingly forever. It’s a curated list of resources for writing with Emacs. As such, it’s a nice coda to my previous post on Emacs writing workflows.

It’s mostly a list of tips and how-tos rather than links to tools. Many of the links point to things that Irreal has covered before but there are plenty that are new to Irreal.

There are sublists for writing blogs, technical documents, screen plays, and books. There are also links for writing workflows and Emacs modes and configurations for writers. If you’re a writer, there’s a lot of good material on this site worth perusing and you should probably bookmark it for easy reference.

This site is a good demonstration of the fact that Emacs, as an editor, is useful for much more than just writing code. Lots of people, me included, use it for virtually everything we write. The same things that make it so good for editing text also make it ideal for writing prose or text of any kind. As I’ve said before, every time I write in something other than Emacs, I feel like I’m in Bizarro World where nothing works as it should.

Posted in General | Tagged | Leave a comment

An Emacs Writing Workflow

I’ve written before about Peter Prevos and his Emacs Writing Studio but here’s a bit more. I’ve had this article about the Emacs writing workflow up in my browser for a long while and decided the time had come to either write about it or delete the tab.

Prevos views writing as a five step process:

Ingestion
Reading, listening to, or watching content as a source of ideas. Emacs, of course, has extensive support for this.
Ideation
This stage involves taking notes about the content from the ingestion step. Emacs has exceptionally strong support for this with the Org package as well as other packages, such as Denote and Org Roam, to help you organize your notes. Prevos uses five types of notes that you can read about in his article.
Production
This is the step where you write your post, article, book, or whatever. It is, I think, the most enjoyable part of the process. Again, Emacs has our backs for this step. Unless you have special requirements, you almost certainly want to write your text in Org mode. The Org markup makes it easy to apply almost any formatting you’re apt to need for a writing project and the export system lets you deliver the final product in almost any format.
Publication
This is where you produce the final product. It could be a simple post, a longer magazine or journal article, or a even book. If you wrote in Org mode, you can produce a product suitable for any or all of these with the push of a button.
Communication
In this step, you tell the world about your product. Emacs has support for email, IRC, social media and other ways of communicating from inside the editor.

If you produce written output, you’ll probably recognize most of these steps even if you don’t follow Prevos’ workflow exactly. I use something vaguely resembling the first four steps but don’t do anything about communicating my daily Irreal output.

Prevos notes that his workflow is his workflow and others most likely do something different. Still, there’s some good ideas in his article that any writer can adapt for their own use.

Posted in General | Tagged | Leave a comment

Recover Session

I just came across a really interesting post from Tory Anderson. Like me, Anderson lives in Emacs. In fact, since he’s a Linux user and runs exwm, he lives in Emacs even more than I do. Anderson notes that sometime Emacs crashes or freezes and has to be restarted. We’ve probably all experienced this. It doesn’t happen very often to me but it does happen. I’m pretty conservative about Emacs and don’t run unreleased versions. Lots of people do, though, and they probably have more crashes and hangs than I do.

In any event, the question is what do you do about recovering files that were open and unsaved when the editor died? Emacs, of course, has us covered. The recover-file command lets you recover (most of) what was in the buffer when Emacs died. It gets that information from the auto save file for that buffer, which is why it may not have everything.

The problem is, you have to remember which files to recover. Anderson says he did this by going through his error log. It turns out, though, that Emacs has us covered here too. You can run the command recover-session and it will present you with a list of every session’s saved data that it knows about. You pick the one you’re interested—usually the most recent one—and then run recover-session-finish (bound to Ctrl+c Ctrl+c) and Emacs will query you for each file it knows about in that session and ask you if you want to recover it.

Anderson describes a slightly different process involving only recover-session-final that didn’t work for me so be sure to read the documentation too.

Posted in General | Tagged | Leave a comment

Emacs, Org, and Pandoc

I’ve been writing in Org mode for a long time. Every bit of Irreal began life as an Org doc and I have a huge collection of private documents that are also written in Org markup. The killer feature of Org is that I can export the same Org document to virtually any output format that I need. That’s mostly HTML and PDF for me but occasionally I’ll export to docx when I have to share with heathens.

I have always found that the native export functions work well for me but some people with special needs or especially complex documents find that they need more. Not to worry, Emacs, as usual, has you covered. You can also export to Pandoc and let it convert your Org document into virtually any format you can imagine.

İsmail Efe Top is one of those people who uses Pandoc for his exports. To be honest, it’s not clear to me that the native exporters wouldn’t work well for him but he certainly knows his requirements far better than I. Regardless, he has a useful post that shows you how to use Pandoc for exports if you need to.

As far as I can tell, Pandoc is mostly needed when exporting to docx but I’ve heard of some folks who feel that it does a better job of exporting to PDF than the native exporter. If you have to export to docx or feel that you need something more for PDF conversion, take a look at Top’s post to see how easy it is to add Pandoc into your exporting workflow.

Posted in General | Tagged , | Leave a comment

WiFi In The Rain: An April First Story

I may have mentioned before that I always dread April Fools Day. The web is inevitably full of silly stories that start off making a bit of sense but quickly degrade into farce. Predrag Gruevski brings some welcome relief with his April Cools feature. It’s an April 1st feature that tells a typical April Fools Day story with the twist that it’s true.

This year’s story is about a WiFi connection that only worked when it rained. At the time of the story, Gruevski was a student who had come home between semesters to spend some time with his parents. When he got there, the Internet wasn’t working. When he asked his father about it, his dad told him that the WiFi only worked when it was raining. The story gains interest when we discover that his father is not some geezer with a flashing DVR clock but is, in fact, an engineer with extensive networking experience.

Gruevski solved the problem with a flash of inspiration. You’ll have to read his post to find out what was going on but it’s a good story and worth a couple minutes of your time.

I love stories like this. It reminds me of the 500 mile email limit. They’re unbelievable stories that you immediately write off as the ravings of the technologically illiterate but which turn out to be true.

Gruevski’s April Cools feature is a welcome respite from the usual April 1st nonsense. It’s almost enough to make me stop dreading the day.

Posted in Blogging | Tagged | Leave a comment

Compiling

I’m an old guy and I’ve been programming for a long time. Virtually all of that programming has involved using a compiler or an assembler. Until I dabbled in AWK, Perl, and Python and started using Giuile, my only use of an interpreted language was some early recreational use of BASIC.

From my very first programming language—FORTRAN (gasp) as an undergraduate Math student—I have been fascinated with compilers and the compiling process. In my career, I’ve implemented a bunch of little languages and even worked on a large scale compiler.

It would, therefore, never occur to me that any programmer would not understand what a compiler is or does. Not how they work—that’s a bit of a dark art—but just what they are and what they do. Apparently, in this as in so many things, I’m wrong.

Nader Naguib says that he’s seen a lot of beginners who don’t know about compilers so he published a short video on what they are and what they do. It’s doubtful that any Irreal reader is confused on the matter but if you have a junior colleague who is, this is a good two minute introduction. The video is biased towards the C/C++ languages but really applies to any language even if it doesn’t need a preprocessor.

Posted in General | Tagged | Leave a comment

The Reddits

As many of you know, I’m a big fan of Paul Graham. He’s the guy who got me interested in Lisp and, by extension, Emacs. There’s a bit of irony there considering that Graham is a Vim user and his writings are the proximate cause of me leaving Vim for Emacs.

These days, he apparently thinks of himself primarily as an essayist. You can check out many of those essays here. I just ran across another of his essays/posts on Y Combinator. It’s a sort of history of reddit as told from the Y Combinator point of view.

It’s an engaging tale. One surprising aspect of the story is that Y Combinator hated the first proposal from the two founders, Steve Huffman and Alexis Ohanian, and rejected it. But both Graham and his wife really like them and encouraged them to come up with another idea. Graham apparently suggested the reddit idea because of his experience with Delicious, a site that was a distant cousin of what reddit would become.

The rest, as they say, is history. Within a matter of weeks, reddit starting gaining users who regularly returned to the site. If you have a couple of minutes to spare, reading Graham’s post would be a good use for them. As I say, it’s an engaging tale.

Posted in General | Tagged | Leave a comment