Digital Payments in Developing Countries

As all of you know by now, I’m a big fan of the digital lifestyle but I have a first-world perspective. I want to be able to use Apple pay because it’s easier and I don’t have to carry around a bunch of cash or credit cards. Those are legitimate reasons given where I live but in some parts of the world, digital payments are the difference between being stuck in debilitating poverty and the chance to better your circumstances. For many people in developing countries, digital payments offer bank-like services to those who would otherwise have to rely on cash and a chance to start small businesses and escape from poverty.

Now Google, the Gates Foundations, and other charities are trying to spread digital payments to developing countries. That’s a good thing, of course, wherever you live but it’s worth asking what implications it has for the world at large.

In the near term, it’s a direct challenge to those resisting cashless business practices by bleating the abhorrent neologism “unbanked.” As the developing countries show, far from holding the disadvantaged down, digital payment methods, properly applied, offer a way up. More generally, movements like these will help to normalize the idea of digital cash.

As I’ve said before, I’m not advocating for a cashless society but I am in favor of having the universal ability to make payments digitally. For me, that’s a selfish desire to be spared the burden of having to carry around a wallet. For many of those in developing countries, it’s a matter of survival.

Posted in General | Tagged | Leave a comment

Better Emacs Configuration with use-package

Menno Finlay-Smits has an interesting post on using John Wiegley’s use-package package. It’s a fairly short post but Finlay-Smits makes a good case that the package make Emacs configuration cleaner and easier. As he also points out, it’s easy to arrange to have use-package defer loading of packages until they’re needed. If you’re the type of person who starts and stops Emacs a lot, that’s a win because it makes Emacs load faster. A feature that I really like is the ability to cause the installation of any packages not already present. I have my init.el set up so that I can create my entire Emacs environment just by loading a new Emacs with it. That’s great for moving to new machines.

Finally, although Finlay-Smits doesn’t mention it, another reason that I like use-package is that it’s a wonderful example of an Elisp macro. If you’ve used it, you know that use-package has many options that can operate in complex ways. If you want to see how a complicated macro is built, use-package is a good place to look.

Posted in General | Tagged | Leave a comment

Zetteldeft

This is another entry in my series of posts on the idea of a Zettelkasten. Although I’ve mostly written about and am planning to use org-roam, that’s not the only possibility. Elias Storms built his own Zettelkasten by leveraging the Deft package and Org-mode. He built the system, which he calls Zetteldeft, for his own use but is sharing the code on GitHub.

Deft is a good starting point for a Zettelkasten because it stores each Deft note as a file in a flat hierarchy. That takes care of a lot of infrastructure for a Zettelkasten; the main thing that needs to be added is a way making and maintaining links between the notes.

Unlike org-roam, Zetteldeft does not maintain a database of backlinks. Instead, it has a function that will add a list of notes that contains a given search term. By calling this function with the ID of the current note, you can add a list of all notes that link to the current note. As far as I can tell, there’s no easy way to maintain this list other than deleting and rebuilding it.

Zetteldeft is written in a literate style so it’s easy to understand and hack on if you want to adopt it to your workflow. It’s a nice light-weight solution for implementing a Zettelkasten and provides an excellent starting point if you want to build your own unique implementation.

Posted in General | Tagged , , | Leave a comment

COVID-19 and Open Offices

There’s not many beneficial outcomes from the current COVID-19 crisis but The New York Times suggests one possibility: the end of open plan offices. The Times doesn’t say that open plan offices will go away because of the pandemic but does note that they are no longer tenable in their present form.

As Irreal has preached repeatedly, open plan offices are a monstrous scam perpetrated on luckless employees—but somehow never their bosses—in the name of all sorts of fairy tail benefits but are really about saving money. COVID-19 will make it difficult for management to maintain the fantasy that such arrangements are a net benefit. What will happen instead?

No one knows, of course, but the Times says that at a minimum workers will be isolated by “sneeze guards” (tall translucent barriers between desks) that look an awful lot like cubicles. Another, better, alternative is to institutionalize working from home for many or most employees. That has the benefits of reducing the number of people crowded into an office and also saves money on rental space. The transition to work-from-home hasn’t been entirely smooth but for most it’s shown remarkably good results. Many, if not all, employees like it and feel more productive and efficient. There’s every reason to hope that work-from-home will be continue to be popular with companies after the current crisis and that the detestable open plan offices will fade into oblivion.

Posted in General | Tagged , | Leave a comment

Zettelkasten Explained

I’ve finished reading Sönke Ahrens’ How to Take Smart Notes and, as promised, I’ve started exploring Jethro Kuan’s Org-roam as a way of implementing my own Zettelkasten. I’ve downloaded and installed Org-roam and am currently going over the documentation.

In the mean time, I’ve been doing some further reading on the Kettelkasten concept. I’m really excited about the idea and am looking forward to starting my own Zettelkasten. If you think the concept may be helpful in your own work or would like to find out, David B. Clear has an excellent article that explains the Zettelkasten idea and compares it to other ways of taking notes. He even shows you how to implement an index-card-based Zettelkasten similar to Luhmann’s original.

I don’t want to deep dive into the details of a Zettelkasten in this post but the idea that makes it work is the idea of linking notes that are somehow related. Rather than keeping the notes in some sort of hierarchy, they’re kept in a flat store and linked together by concept. Thus a given note might be linked to several other notes and the links might represent different concepts. The closest familiar idea is probably tags, which the Zettelkasten idea also supports, but tags are too coarse a discriminator. The goal is to start with an idea and be able to find all the notes that are relevant to that idea. You can think of the result as a graph where the notes are the nodes and edges are concepts.

That’s a simplified version, of course, so you should really take a look at Clear’s article if you want a more substantial explanation.

Posted in General | Tagged , , | Leave a comment

Red Meat Friday: iPhones and Sanity

The other day, I wrote about Aaron Ogle’s experience in de-Googling his workflow. Although I didn’t mention it, he wrote that part of his de-Googling efforts were to replace his Android phone with an iPhone. It was, he said—undoubtedly tongue-in-cheek—an insane decision that probably cost him 99% of his readers. I thought at the time it was an odd thing to say.

I’m a paid up member of the Apple Cult so suspicions about my objectivity are warranted but I just can’t see Ogle’s point. A case can be made, I think, that iPhones are technically superior even though on any given feature the iPhones and Android phones often trade places for top billing. But put that aside: No reasonable person can doubt Apple’s story on security and privacy is better. The point of Ogle’s journey was to increase his privacy, which is why I don’t understand his remarks on the iPhone.

I’m bringing this up now because of this horrifying story on “Xiaomi Recording Millions Of People’s ‘Private’ Web And Phone Use.” Xiaomi, for its part, isn’t the least bit repentant. When they’re not flat out denying the charges—despite overwhelming, documented evidence—their attitude pretty much boils down to “so what?” You can mock Apple all you want but you know this wouldn’t be happening with the iPhone.

Sure, iPhones like every computer based product have bugs that occasionally lead to data leaks but with Apple, it’s a bug not a feature. Arguably, if you’re concerned about privacy, you shouldn’t have a smartphone at all. I wouldn’t go that far—you all know how I love and depend on my iPhone—but one thing for sure, if you care about your privacy, you shouldn’t have an Android phone and you certainly shouldn’t have any phone or software developed by Xiaomi.

Editorial Afterword:
After I wrote this but before I published it, Josh Rollins commented on my original post that replacing the Android phone would be the hardest part of de-Googling. If I read his comment correctly, he thinks there’s no replacement for the Android and its ecosystem. That goes to show that even though I think the iPhone and its ecosystem is obviously superior (a no-brainer, really) reasonable people can disagree. Of course, that’s what Red Meat Fridays are for.

UPDATE [2020-05-09 Sat 11:54]: should → shouldn’t

UPDATE [2020-06-01 Mon 12:45]: Read → Red

Posted in General | Tagged , | Leave a comment

Learning Emacs with Macros 2–5

After I wrote about the first Learning Emacs with Macros video, I kept an eye out for subsequent episodes because I really liked the first. I didn’t see any but in the latest edition of Sacha’s Emacs News I saw that Subramanian was already up to episode 5. I watched episodes 2 through 5 and can recommend them too.

At first, learning keyboard macros and Emacs at the same time seems odd. How can n00bs possibly understand macros at the same time they’re learning basic Emacs editing? That was my first thought but then I realized that most people learning Emacs are not like my Aunt Millie. Almost all of them are probably developers with experience using another editor and bring a certain sophistication to the endeavor. By combining elementary Emacs actions with keyboard macros, Subramanian helps the new Emacser understand one reason why learning Emacs is worthwhile: it makes it easy to perform complex actions.

These videos carry on with the same base file that the first one produced. Subramanian shows how to perform various transformations on the file using macros and the new Emacs commands that each video introduces. In Video #5, he shows how to generate the original file from scratch using macro counters.

If you’re an experienced Emacs user but you’re not used to using keyboard macros or use them only in an elementary way, you’ll probably learn some useful techniques from these videos. And they’re enjoyable to watch. Definitely recommended.

Posted in General | Tagged | Leave a comment

Vivek Haldar on How Unix Won

Vivek Haldar has an interesting essay on How Unix Won and it why it may now be entering its end phase. From a technical standpoint, the main reason Unix fared so well is that it was written by programmers for programmers. After AT&T pulled out of the Multics project, Ken, DMR, and the others who would go on to build Unix were missing the interactive, programmer-centric environment they’d been used to so the Skunk Works project that later became Unix was born. Programmers everywhere embraced it as a comfortable and productive environment and shepherded it into their companies.

The political reason Unix became preeminent was that, being a monopoly, AT&T was prohibited from selling anything that wasn’t “telephone service” so they basically gave Unix away for the price of the media. Haldar reports that for tax purposes AT&T reported Unix as industrial waste. I hadn’t heard that before but you have to love the irony.

The reason for Unix’s impending eclipse, Haldar says, is a change in hardware capabilities. While it used to be that the CPU was orders of magnitude faster than I/O, that has largely been reversed and server installations, where Linux reign supreme, are interested in getting the most I/O speed they can. The need to maximize I/O throughput argues against the Unix abstraction model. Haldar discusses this situation in one of his read a paper videos.

If you’re a Unix head—and if you’re using Linux or macOS, you probably are—take a look at Haldar’s post. It’s an interesting and entertaining read.

Posted in General | Tagged | Leave a comment

Minibuffer Help

Just a quickie today. Marcin Borkowski (mbork) has a useful post on providing help in the minibuffer. It turns out that you can always type Ctrl+h when responding to a prompt in the minibuffer. If you have some code prompting for input using read-string you can specify what that help will be, either as a string or some other form based on context.

Take at look at mbork’s post for the details. If you’re taking input from the minibuffer it’s a good thing to know.

Posted in General | Tagged | Leave a comment

Compiling Elisp to Native Code

Even if you don’t obsess over Emacs like, ahem, some people, you’ve probably heard about the project to compile Elisp to native code. The idea is that the Elisp byte code would be compiled to GCC IR (intermediate representation) code and then fed to GCC to compile into native code for whatever platform Emacs is running on. This has exciting implications for Emacs’ performance, of course, but it also opens the possibility of replacing some of the C code with Elisp.

Andrea Corallo gave a talk on the project at the 2020 European Lisp Symposium that discusses how the compilation works and where they are right now. It’s currently a feature branch on the Emacs git repository. This is definitely an exciting development for Emacs end users and developers alike. I’ve been trying to maintain my composure about this project in case it fizzled out but now it appears to be a real thing and perhaps we’ll see it appear in Emacs as soon as Emacs 28.

Corallo’s talk is interesting and well worth watching. It’s just short of 27 and a half minutes so you’ll have to put some time aside. The slides for the talk are also available so don’t worry about trying to absorb everything on them during the talk.

Posted in General | Tagged | Leave a comment