Another Org Workflow

Wai Hon has thought carefully about his workflow and how he can leverage Org-mode to make it as efficient and seamless as possible. He’s concerned mostly about task management so of course Org-mode is a perfect fit. He’s published a blog post that describes his workflow and his rationale for the choices he made.

He begins by listing the principles that he believes should govern his workflow. These include

  • Be discriminating in what gets added as a task.
  • Not every task needs to be completed.
  • Minimize the number of “active” tasks, that is, those that are currently being worked on.
  • Make deciding what task to do next as easy as possible.

The rest of his post describes how he uses these principles to build an effective Org strategy. Some of the details are interesting so it’s definitely worth taking a look at his post but there’s nothing that an experienced Org user will find surprising. An important part of the process is that he has a strict procedure for reviewing his tasks, deciding what to do next, and reviewing the results.

If you’re looking for ways that Org can help you get organized, take a look at Hon’s post; it’s got some good ideas that may help you out.

Posted in General | Tagged , | Leave a comment

Reproducibility

I’ve written several times about the reroducibility crisis. That crisis is the fact that an astoundingly large percentage of scientific experiments can’t be reproduced by other researchers. That, of course, calls into question the validity of the original results.

My traditional poster child for this is Psychology where the irreproducibility rate is around 40–50%: essentially a coin toss. But that’s Psychology and for most studies it doesn’t matter much whether the results are right or wrong. Sadly, the problem is much more serious:

If you click on the tweet and follow the thread, you learn, among other things, that only 11% of cancer studies are reproducible. 11 percent! That’s not only shocking, it’s terrifying. The Nature article that Lehmann refers to is here.

Posted in General | Tagged | Leave a comment

The Trial

It’s like something out of Kafka. C. awoke one morning to find that after 15 years, all of his Google accounts were locked. He’d been accused of violating the terms of service. What violation? They wouldn’t tell him. He didn’t think he’d done anything wrong but since the charges were secret, how could he know? All he knew what that all of his data was unavailable. The link above has other, similar stories.

It’s not like these people haven’t been warned. There’s story after story about people having their accounts locked for some unspecified transgression. Sometimes, if they make enough noise, Google will admit that, oops, there was a mistake. They’re sorry. The account has been restored. Usually, the victims just lose their data.

I’ve stopped feeling sorry for these people. The warnings were there, screaming from all sides as Pink Floyd put it, but they chose to ignore them and believe that since they weren’t doing anything wrong, everything would be okay. Until it wasn’t.

I’m a fan of Uses This, a series of short interviews that ask various nerdy people what they do and what hardware and software they use. In interview after interview I see people proudly proclaim that they have their whole life in Gmail, Google Docs, Google Drive, and the rest of it. I cringe every time. These people have a tiger by the tail but believe this is fine.

Let me say it again. Do not commit your data to any system you don’t control. Keep a copy of everything that matters on a machine you physically control and make sure it’s not in a proprietary format. As you all know by now, I live an almost exclusively digital life but have no trouble keeping a copy of everything important on my laptop. You can too. You just have to abandon your belief that Google or whoever will always be there for you and take control of your own life. Because that’s what all that data represents: your life.

Posted in General | Tagged | Leave a comment

Unix Pipes

This post is a blast from the past \(\times 2\). One reason it’s a blast from the past is that it discusses the Unix V6 code. The other reason is that it discusses some of the code that first helped me understand what was going on with Unix.

One of the real wins in Unix is the notion of pipes. Not even Ken Thompson or Dennis Ritchie understood this at first. It was Doug McIlroy, who insisted that the ability to link processes be implemented, who was responsible. One of the things that everyone in the labs say about them is that they were all astounded how quickly the ability lead to a whole new way of thinking about computation. Once pipes were implemented, it was almost trivial to make applications talk to each other and build up the modern notion of pipelines.

The thing about pipes is that despite their power, they have a fairly simple implementation. Abhijit Menon-Sen has an illuminating post that explains how pipes are implemented. If you go through his post, you will see that there’s not that much code in the pipe implementation and that it’s pretty easy to understand. I started with the V7 code base but it’s not much different and after I understood that, most of the other things in the kernel seemed to come easily.

Since the early days, there have been alternative implementations. BSD used Unix domain sockets for a while and later AT&T Unix versions built them on top of the STREAMS mechanism. BSD, at least, found the socket implementation too slow and reverted to the traditional mechanism. Linux, of course, never implemented the STREAMS paradigm so most extant Unices are using the traditional implementation.

If you read and understand the pipe implementation code you will find that you understand many of the important Unix kernel mechanisms and will be able to understand the rest of the kernel fairly easily.

Posted in General | Tagged , | Leave a comment

James Bond

In the end, there can be only one.

Posted in General | Leave a comment

The Map

Although I’ve never lived in New York City, I love being there, have family who are lifetime New Yorkers, and visit regularly. One of the things I love about the city is that I can walk to most places I want to go. Of course, I mostly stay in Manhattan when I’m there and that means I seldom need to take the subway and don’t know the system the way a New Yorker does.

The MTA system is large and complicated and can confuse even residents. One of the problems is the system map. There have been several iterations of the subway maps using different layout philosophies but none of them seemed to work very well.

Recently, New York in conjunction with the digital agency Work & Co have produced a new digital, real time map that has different layouts as you zoom in, shows up-to-date schedule changes, and even shows the locations of the trains. The map is online so you can see it from anywhere in the world by going to https://map.mta.info.

The map and its creation is beautifully described in a 10 minute movie by Gary Hustwit. Unless you do this type of thing for a living you’ll probably be surprised at how difficult the project was. After all, what could be so hard about producing a map of a subway system. Watch the video and find out. It’s very illuminating.

Posted in General | Tagged , | Leave a comment

Taking Math Class Notes With Emacs

A year and a half ago, I wrote about Gilles Castel’s video on taking math class notes. I found his workflow astounding. He was able to take LaTeX notes in Math class at speed. By “at speed” I mean he was able to keep up with the instructor. If you’ve ever written in LaTeX you know that Castel’s feat is pretty impressive. His secret sauce was the Vim UltiSnips snippets package.

At the time, I speculated about doing the same thing with AUCTeX and yasnippets. Yasnippets aren’t as powerful as UltiSnips but I felt Castel’s workflow could be more or less translated to Emacs.

I just saw this post by karthink that explains how he does the same thing in Emacs. His secret sauce is AUCTeX, Yasnaippets, and CDLaTeX. He doesn’t have a long video like Castel’s but there are some shorter GIF animations that show his system in operation. The real winner here is CDLaTeX, an Emacs package written by Carsten Dominick, that allows the fast and easy entry of LaTeX input. I didn’t know about CDLaTeX but it turns out to be really useful. You can use it anywhere in Emacs but there’s also a special interface for it in Org-mode.

If you’re like me and need to write occasional mathematics in Org, it’s just what you need to make it as painless as possible. It even has a which-key-like hinting system so you don’t need a cheat sheet to get going. Take a look at karthink’s post or the Org manual to see how to enable it.

If you’re taking mathematical notes or even if you merely need to write some occasional mathematics, you should definitely take a look at his post. There’s also a pointer to some of the snippets he uses.

Update [2020-11-05 Thu 14:02]: ACUTeX → AUCTeX.

Posted in General | Tagged , | Leave a comment

The NSA Stonewalls Congress

I don’t get this. Reuters is reporting that the NSA is refusing to tell congress about its seeking of back doors. It’s certainly true that an argument can be made that the NSA should be seeking back doors but how is it okay for them to give congress the finger? If you look at what the NSA is saying, it’s pretty clear they’re either incompetent or lying. They say they have a “lessons learned” document about the fallout from the Snowden revelations but that they can’t find it.

In any event, it’s worth taking a look at the premise that the NSA should be seeking back doors and actively trying to get companies to install them. The usual argument against back doors is that others will find and exploit them. That’s not just a theoretical concern. In the real world there have been many (embarrassing to the NSA) instances of exactly that. The primary (known) example of that is the Juniper exploit in which an NSA backdoor in Juniper equipment was modified to provide a new back door for unknown actors.

Every expert who doesn’t work for the NSA or one of its siblings agrees that back doors are a bad idea that will be exploited. The NSA thinks the use of back doors make us safer but the evidence suggests otherwise. The real problem, I think, is that the NSA hasn’t internalized the reality that they’re no longer the best cryptologists in the West and maybe the world. They aren’t and just because it’s hard doesn’t mean that the bad guys won’t find and exploit whatever back doors they manage to install. Just ask Juniper.

Posted in General | Tagged , | Leave a comment

Literate Calc Mode

Robin Schroer has an interesting project that recently landed in MELPA. Many of you know that I’m a big fan of reproducible research and its handmaiden literate programming. Schroer’s project is a sort of light-weight Jupyter Notebook that’s integrated with Emacs. He’s got a post that announced the project and explained what it’s about.

There’s a video with his post but I couldn’t get it to play. That may because I’m on macOS or perhaps because of my anti-tracking software. In either case, the README at the Git repository provides some nice examples of how it works. If you can’t play the video either, take a look at the repository. It will help you understand the project and its aims.

I’m really comfortable with calc and don’t feel the need for an infix calculator but literate calc mode does have some nice features. For instance, you can capture the result of a calculation in a variable and if you change any constituent part, all the results are recalculated. Even better, it’s possible to capture the whole thing to a text file so it can be published or reloaded later for more work.

It’s still early days and Schroer has some enhancements planned. I think this is going to be a really useful project for Emacs users.

Posted in General | Tagged | Leave a comment

Algol 68, Pascal, C, and All That

Apropos of nothing, here’s a really nice short video by Professor David Brailsford of The University of Nottingham about the days when Algol 68 and Pascal were in contention for the language to be taught in various computer courses. Some of those courses were for hardcore Computer Science students and others were for people in other disciplines who needed some computer and programming knowledge.

It’s hard to appreciate from today’s world of multiple industrial strength compilers for every language imaginable but in those days the decisions tended to be made on pragmatic grounds. In particular, Brailsford and his colleagues were concerned that whatever language they chose it should have a competent compiler with good diagnostics. Because this was all taking place in Nottingham in the UK, the situation was further complicated by the type of hardware that was available due to budget concerns.

In the end, they chose Algol 68 for the Computer Science students and Pascal for the others. Neither language has much of a mindshare today. The story that Brailsford tells takes place in the late sixties to the early seventies so Unix and C were on the horizon and would soon be recognized as the proper solution.

The video is only 10 minutes, 12 seconds long so it should be easy to find time for it. You won’t learn anything actionable from it but it’s a really interesting peek back to the early days that only a few still have first hand memory of. Those memories should not be lost so I urge you to take a look.

Posted in General | Tagged | Leave a comment