Marlinspike On What’s Wrong With Software Development

Moxie Marlinspike is a legendary figure in security and software development. I last wrote about him and his fight to keep our data safe from governments and other prying eyes 9 years ago. He’s still at it.

At the recent Black Hat Conference, Marlinspike took a few minutes to give his views on the state of software development. He blames its current deplorable conditions on Agile but what he really means is layers and layers of abstraction that prevent the developer from understanding what is really happening with their software.

His message really resonated with me. I have long thought the same, at least about the layers of abstraction (I have no experience with Agile). You see this dynamic with MIT abandoning their famed SICP course in favor of teaching about using libraries to control robots or something. My problem with that—putting aside the offense of getting rid of SICP—is that students aren’t learning the fundamentals of computer science and what the machine’s really doing.

I addressed this same issue in my Is C Useful For Understanding How Computers Work. If you only know how to use high level languages and libraries that are black boxes to you, you will never understanding what’s really going on with your software.

The difficulty is that our corporate industry leaders love this stuff because it enables them to produce loads of software faster and easier. The problem is that no one, including the developers, really understand what it’s doing. The result is exploit after exploit. And, as Marlinspike says, a lack of joy on the part of those writing the software.

Posted in General | Tagged | 1 Comment

WordStar

Those of us of a certain age will remember WordStar. It was the first hugely popular “word processor” and was used by almost everyone who wanted to write prose of any sort. It was the default word processor in the MS-DOS world and perhaps even for CP/M. It was mostly replaced by Word Perfect and Microsoft Word and faded into obscurity. I used it for a long time and wrote several articles with it.

Although those days are long gone and my memory is dim, I’m pretty sure that writing in Org mode is better. You have the same formatting that WordStar provided and you don’t have to worry about its proprietary file format.

Still, it lives on as the preferred writing platform for writers such as George RR Martin and Robert J Sawyer. I’m pretty sure that Martin continues to use MS-DOS just so he can have WordStar—that’s real devotion to an app.

Sawyer, on the other hand, isn’t giving up on WordStar but would like to live in the modern world. He has resurrected WordStar to run on modern systems albeit with a DOS emulator. That’s a road too far for most of us, of course.

But why go there? Professional writers are notoriously crabby about their writing platform. They want whatever they’re used to and don’t ever want to change. I love the process of writing in Org but professional writers don’t want to think about their platforms: they just want to write without thinking about the software they’re using.

That’s too bad because

  1. Emacs/Org mode has a clean, easy to learn interface, and
  2. Emacs is not going to be abandonware like WordStar. It’s going to be around for the foreseeable future.

Of course, some mainstream writers such as the recently deceased Vernor Vinge do use Emacs so perhaps others will join in.

Posted in General | Tagged , , | 0 Comments

Why Isn’t Lisp Used More In Production

nderstand2grow, over at the Lisp subreddit extols the benefits of the Lisp languages and wonders why it isn’t more widely used in production. It’s a question that all Lispers eventually ask themselves. Despite what people who don’t know Lisp tell you, it really is a better language that provides programmers with virtually unlimited flexibility.

There are a lot of suggested answers in the comments most of which have something useful to say. I subscribe to the cynical answer that other, lesser, languages won in the market place for the same sorts of reasons that VHS won over the technically superior Betamx.

I suppose the AI Winter also helped sink Lisp. It’s too bad. It really is a great language that is much better than its competitors. It’s too bad hardly anyone recognizes that.

Posted in General | Tagged | 1 Comment

Opening Links In Emacs

Nicolas Martyanoff has a really interesting post on Controlling link opening in Emacs. One of the things I like about Org mode is that you can put the point on a URL, type Ctrl+c Ctrl+o and Org will follow the link. You can also use Meta+o to choose any visible link in the buffer in an Avy-like way.

Sadly, this behavior is specific to Org and not implemented in other modes. Some modes do have a way of following links but there’s no standard method. But this is Emacs so Martyanoff decided to fix that.

It’s not as hard as you might think because all the methods end up calling browse-url so mostly what you have to do is set things up for the particular mode you’re in and call browse-url. Martyanoff shows how to do this for several modes as well as providing a way to choose between EWW and Firefox. He has several Firefox profiles so his code also provides a way to choose which profile to use for a given link.

He’s got all the code in his post so head other there if you’re interested. Even if you’re not interested in replicating his code, it’s worth remembering that you can always just put the point on the URL and call browse-url-at-point directly.

Posted in General | 2 Comments

Asking For Confirmation

Marcin Borkowski (mbork) has a really great post about arranging for certain commands to prompt for verification before executing. Usually, those prompts are simply annoying but sometimes they’re actually useful. For example, you can arrange for Emacs to ask you for confirmation before exiting. Normally that would be really annoying but after I accidentally exited Emacs several times by fat fingering some shortcut, I began to appreciate its usefulness.

Some, dangerous, commands always prompt for approval. Others, like kill-emacs don’t ask for approval by default but can be configured to do so to help those like me who are prone to fat fingering. But, of course, most commands don’t ask for confirmation and don’t have a configuration option to enable it.

Mbork gives an example of a command where he wanted approval before it executed. I have another: Several times I fat fingered the command to print the current buffer—which always seemed to send my printer into a schizophrenic fit—and finally decided to do something about it. But what?

Mbork has two suggestions. He first thought about advising the function he wanted to protect—that’s what I did with print buffer—but then it occurred to him there was a builtin solution. He realized that he could simply mark the function in question as disabled and Emacs would automatically prompt before executing it. Even better, you can also specify what the prompt will be.

But wait! There’s more. While researching that solution he discovered the command command-query that does exactly what he wanted. You can check out his post for the details but the TL;DR is that if you want a prompt before executing a given command, command-query is the solution.

Posted in General | Tagged | 2 Comments

The Beauty OF Vanilla Emacs

As all Emacers know, there are several premade Emacs configurations available that allow a n00b to start using Emacs with a complete system that includes practically every package that they could need. One often sees new Emacs users who started with, say, Doom Emacs, and decided to drop back to vanilla Emacs.

That brings up the question of what a new Emacs user should do. Should they start with vanilla Emacs or one of the advanced configurations. Chris Maiorana has some thoughts on this. He asks, is it better to start learning Emacs from the beginning or to jump into a package that has everything configured?

Maiorana posits that’s it’s better to start with vanilla Emacs even if you end up with something like Doom. His reasoning is that you learn the Emacs fundamentals and will understand how Emacs works and how configurations such as Doom modify that behavior.

He’s got a pretty good argument for starting out with a bare bone Emacs and only later moving on to one of the premade configurations. I agree with his suggestions. That’s what I did when I moved to Emacs. The difference is that I never moved off regular old Emacs and have been happy to stay with vanilla Emacs augmented with a few packages that I, personally, have found useful.

Posted in General | 0 Comments

32TB

A long (long) time ago when I was first adding hard drives to my systems—yes, there was a time when computers didn’t come with hard drives—the only choices available to “normal people” were 20MB or 60MB drives. That was the good news. The bad news was that they cost several hundred dollars and almost always broke within a year or two. If you reached 3 years, it was a real victory.

Happily, things are very different now. Consumer grade drives of a few terabytes are now commonplace and cost less than those 60MB drives I used to buy. Any self-respecting high end laptop probably has a at least a terabyte of disk storage. And did I mention the drives will probably live longer than the computers they’re attached to?

But things move on. Western Digital just announced that they are “sampling” 32TB drives. That seems like a lot of storage and it is. The drives are using a couple of cutting edge technologies but it won’t be long before the younger members of our community won’t understand how anyone got along with less than 32TB on their laptops.

There’s really no point to this post except to celebrate the ever increasing capability of the technology we use. Just a few years ago, what we have now would have been unimaginable even on a mainframe. It makes me wonder what we’ll using in, say, 20 years. What I’m hoping for is a “laptop” on my cell phone that I can plug into a real keyboard and screen to have what I now have on my MacBook but still use by itself when I’m away from home. I’m sure it’s on its way.

Posted in General | Tagged | 4 Comments

Magit 4.0

Jonas Bernoulli (Tarsius_) has just announced the release of Magit 4.0. The release, as he says, has been a long time coming: it’s been about 3 years since the last release. It’s great to hear about the new release and Bernoulli says that his goal is to make about 8 releases a year going forward. His announcement doesn’t list all the changes in the new release but you can take a look at the release notes if you’re interested.

Much of Bernoulli’s announcement discusses his plans for the future of Magit but he also mentions that he is a full time FOSS developer and community support is his only source of income. He says his income is about half of the median professional incomes in his area. That means two things for the rest of us:

  • We owe Bernoulli a huge debt of gratitude.
  • More importantly, we should try to support him as much as we can. For many of us, that probably means we are limited to occasional one time donations. Those all help, of course, but what he really needs is more significant, recurring corporate support. If you’re in a position to influence your company about this, please do.

Bernoulli has a list of several ways to support him at the end of his post. Take a look and please try to help him out if you can.

Posted in General | Tagged | 0 Comments

Tagging Tasks

David Wilson over at System Crafters has an interesting video that explains his system for using tags on his Org tasks. The nice thing about his method is that it’s easy to implement. The hardest part is choosing a list of tags that makes sense for your workflow. Wilson has some suggestions that he used to pick his list.

Once you have the list of tags, everything else is mechanical. The best idea is to add the tags to the org-tag-alist variable so that you enter them easily—with a single key— when you’re adding a new task. Wilson’s example has 3 different files that contain his tasks according to what type they are. I use a template for entering my tasks but Wilson shows how to do it by simply adding a new line to the appropriate file.

When you want to work on tasks with a specific tag, you need only bring up the agenda and filter by the tag(s) you’re interested in. Take a look at the video for the details and to get a sense of how using tags can improve your workflow.

The video is 20 minutes, 36 seconds long so you’ll need to schedule some time but you’ll probably find it a worthwhile investment. As I said, the method is pretty simple and easy to implement. And using templates to enter your tasks will help even more.

Posted in General | Tagged | 0 Comments

An Update To Casual Calc

Charles Choi has made another update to Casual Calc. This time it’s to provide a more contextual workflow. The idea is that that the Casual Calc menus should reflect the current context.

I haven’t yet had a chance to play with this latest update but I can say that Casual Calc has made it a lot easier to deal with calc. Instead of trying to remember a bunch of obscure calc commands, I can simply call up the Casual Calc menu.

If you aren’t familiar with calc, you really should be. I’ve described it as a sort of light weight Macsyma that is surprisingly powerful. The problem with it is that it’s virtually impossible to remember all the commands. Choi’s Casual Calc menu helps a lot with that.

I use Calc as my (only) calculator and have always been happy with it. The addition of Casual Calc makes it even better. You should really give it a try.

Posted in General | Tagged | 0 Comments