Fighting the Surveillance Economy

It’s no secret that we here at Irreal are adamantly opposed to surveillance. That includes the casual monitoring of our communications by the government but especially the hoovering up of our every actions by the malevolent adtech industry. It’s a direct corollary to the Iron Law of Data Collection that the government followed by divorce and tort lawyers will start demanding—if they haven’t already—this information from the private concerns that hold it.

Sadly, there not very much effective action that individuals can take to put a stop to this collection. It’s a sad commentary when our greatest hope for a solution to a market problem lies with the government. Viktor Vecsei over on Medium has a detailed post on some of the things companies and individuals can do to combat the adtech and surveillance industries.

Most of the advice is at once obvious and hard to implement. Unless you’re a social outlier like the minions at Irreal, it can be difficult to give up your Facebook account and stop using Gmail. Even Vecsei admits he’s not yet been able to divest himself of these services. Most people won’t bother trying.

The situation is worse for companies. Unless you’ve got the resources of Apple and are using the guarantees of privacy as a way of distinguishing and promoting your brand, it will be difficult to convince your Board of Directors and investors that foregoing adtech is a good choice.

This is why I’m not sanguine that anything other than government action will have any real effect. Sure, there are groups, like most Irreal readers, who understand the issues and are willing to make the necessary sacrifices to insulate themselves from much of the commercial surveillance but I suspect that if everyone of them got off the Internet entirely, no one would notice and the surveillance economy would keep chugging along. Vecsei feels differently and perhaps you’ll agree. His article is, in any event, a useful guide to what you can do right now.

Posted in General | Tagged | Leave a comment

Calc Tutorial

Longtime Irreal readers with good memories will recall that sometime ago I resolved to get better with Emacs Calc. Although I haven’t written much about it, I have been making progress. It’s now my go-to calculator and I’ve learned all the command keys for the things I do regularly. Of course, Calc is enormously flexible and complicated: it can even calculate indefinite integrals in closed form so there’s too much (for me) to remember. Fortunately there’s a nice cheat sheet, which I have bookmarked. That and the x command that I wrote about previously usually suffices to let me navigate the wonders of Calc.

Still, it’s nice to have a good tutorial to get you acquainted with what’s possible. Andrew Hyatt wrote a series of tutorials for the Google G+ Emacs Community but G+ is going away soon so Hyatt moved them to GitHub. There are 13 tutorials, all in the form of Org files. It’s easy and convenient to read them directly from the repository but if you want a local copy, just clone the repository and read them with Org-mode.

The tutorials are well written and I already learned something new: you can use Calc to generate high quality1 random numbers. Hyatt says he uses it every time he needs a random number. The tutorials are fairly short and it’s easy to read one when you have a couple of minutes. It’s a good way of getting more familiar with Calc

Footnotes:

1

See §8.5.1 of the Calc Manual for a description of what “high quality” means.

Posted in General | Tagged | Leave a comment

Run Your Life With Emacs

Over at the Keyhole Development Blog, Garrett Hopper explains why he runs his life with Emacs. Like many of us, he hates having to switch context when he changes the application he’s using. Each application has its own key bindings and ways of doing things. Hopper solves this by staying in Emacs as much as possible so that he can use the same bindings and configure everything to his liking.

That’s a familiar theme here at Irreal, of course, but Hopper’s post looks at the benefits with another pair of eyes. Two of the big reasons for him to stay in Emacs as much as he can are the consistent key bindings and not having to touch the mouse. He also lists some of the features and packages that he thinks make Emacs a real win for efficiency.

The post doesn’t discuss his configuration or any tricks he uses so it’s more of a “Here’s why I like and use Emacs” post. If you enjoy reading other Emacs users’ thoughts on their editor, you may enjoy Hopper’s post.

Posted in General | Tagged | Leave a comment

Just in Case You Still Thought “Google Is Your Friend”

Many years ago, when someone would ask some easily discoverable question, I would respond with “Google is your friend.” I haven’t said that for a long time now because Google most emphatically is not your friend.

If you think that’s hyperbole, consider that Google has quietly dropped its ban on linking user names and browsing history. They already have both pieces of data but have, in the past, promised not to link them. That promise has gone to live with their similarly retired motto of “Don’t be evil.”

One would hope that there’d be a backlash but of course there won’t be. Google, Facebook, and the other members of the adtech coven will go right on collecting all the information about us they can. Why not? That’s their business, after all. On a more hopeful note, I expect that just as an addict can’t resist one more hit, they will eventually go too far and rouse even a somnolent congress from their slumbers. They’re going to hate it when the GDPR becomes international law and they have to start living up to their promises.

UPDATE [2019-02-05 Tue 13:32]:
I just noticed that the ProPublica article linked above is from 2016. Nonetheless, everything I said in the article is still true even if Google’s comeuppance is taking longer than I hoped.

Posted in General | Tagged , | Leave a comment

Org 9.2.1

Bastien announces the arrival of a new Org-mode release:

It’s a bug release so it’s probably worth upgrading even if you don’t track Org more closely.

Posted in General | Tagged , | Leave a comment

Managing Dependencies

Russ Cox has an excellent post on managing software dependencies. He begins by describing the problem: we’ve gone from talking about but not implementing code reuse to the wholesale use of packages/libraries/modules that we often don’t know much about. Most often these dependencies are downloaded from the Internet. All too often, these dependencies are integrated into projects without any analysis or investigation. This is, Cox says, like hiring a programmer you’ve never heard of and about whom you know nothing. The results of this are well known within the programmer community and Cox mentions a few.

The rest of post concerns strategies for dealing with the problem. Sadly, the solutions are difficult to implement and require a large commitment of engineering time and resources. They involve things like:

  • Investigating the history of the project that produced the package.
  • Examining the code for obvious red flags and quality.
  • Making sure the project uses regression tests and running them yourself.
  • Identifying the package’s dependencies and iterating the process on them.
  • Writing and running your own tests that focus on your use of the package.

and other strategies.

The problem is ongoing. Every time the package is upgraded you have to rerun the regression tests and look at the diffs to make sure it’s still doing what you need it to.

Finally, Cox considers technical solutions to the problem. By this he means things like enhancing package managers to track subdependencies and enhancing compilers to embed a manifest of dependencies and their version numbers in the binary.

As usual with Cox, the post is interesting and thought provoking. If you’re working on large projects that use external libraries you should definitely read it. Of course, implementing his recommendations is hard. Even Cox admits that they often don’t so at Google because it’s so much work and takes so long.

Posted in General | Tagged | Leave a comment

Zamansky: Travis-CI

Mike Zamansky has a new video up but it’s not one in his Using Emacs Series. Zamansky is doing a miniseries (probably 2 or 3 videos) on GitHub Classroom and how he uses GitHub in his teaching. His first video is on Travis-CI and how it fits in with his overall teaching workflow.

If you’re in CS education, you will definitely want to follow this series but even if you’re not, there’s still something to learn from the videos. For example, although I was vaguely aware of Travis-CI, I didn’t know how it worked or all the things you could do with it. Zamansky’s current video fills in that gap nicely and even though it’s unlikely that I’ll need to set up a teaching environment, it’s entirely possible that I might find having a continuous integration environment of the sort that Travis offers useful. As usual with Zamansky’s videos, there’s always something to learn.

The video is 18 minutes, 45 seconds so plan accordingly. I’m looking forward to the rest of series not only out of curiosity but also to see what other useful things I can learn.

Posted in General | Tagged | Leave a comment

Using ed

About a year and a half ago, I wrote, somewhat disparagingly, about the idea of using the ed editor for every day work. The problem is that ed is a line editor meant for use with teletype-like devices. Because it can’t use cursor addressing, editing happens on whole lines. Although a few intrepid souls claim to use it for day-to-day work, it really has only two uses today:

  • Emergency fixes. Because ed is small and lives in /bin, it’s available even if Unix/Linux has problems coming up and wasn’t able to mount /usr/bin, the home of full screen editors such as Vi(m) and Emacs. Many developers and system administrators learn ed for just such occasions.
  • Scripting. Most editors can do some sort of scripting but they aren’t really that good at it. Scripting has always been an important ed use case.

After writing the above post and another that looked at a scripting application of ed, I went back to not thinking about it. Then, I saw the coda to Brian Kernighan’s video about where the name “grep” came from. In it, Kernighan was asked what editor he uses today. He mostly uses either Vi or Sam but said that he occasionally fires up ed for a quick editing job or when he wants to script. For some reason that inspired me to take another look at ed.

I’d never bothered to actually learn ed but I knew enough about it from Vi—which is built on top of ed1—that I could use it in an emergency. There are only a handful of commands to learn (remember there are no cursor movements) so it was pretty easy to get up to speed. Almost all the action is in the line addressing, which, again, is almost the same as that in the Vi(m) ex commands.

I have a log file that I edit everyday—mostly just deleting certain lines that match a regexp—so I’ve taken to doing that in ed. That helps me remember the ed commands and various line addressing functions. Occasionally, I’ll do some other (really unnecessary) edits just for practice. The next time I have a boot emergency, I’ll be ready. Of course, I haven’t had to worry about that in some years but if the day ever comes…

If you’d like to come up to speed with ed (it probably takes less than an hour), here are some resources:

  1. The Gnu ed manual. It’s sort of like an extended man page and covers all the commands.
  2. Kernighan’s ed tutorial which covers just about everything you need to know about ed.
  3. Kernighan’s Advanced Editing on UNIX tutorial, which covers some of the more advanced ed features.

Realistically, you’ll probably never need to use it in anger but if you do learn it, you can tell everyone that you can use the standard Unix editor, and as Eric S Fraga says, familiarity with ed makes using sed scripts easy.

NOTE (Added after this was written but before it was published): Despite popular belief, ed is far from dead and is, in fact, still being actively maintained as a GNU project. Here’s the announcement of the release of GNU ed 1.15. It’s 2019 and the standard Unix editor just keeps on keeping on.

Footnotes:

1

Or actually ex, which is a slightly improved version of ed.

Posted in General | Tagged | Leave a comment

Glass Panel Keyboards

This post may seem Apple-centric but it’s not. Even though it’s Apple that is patenting this idea, it’s the technology itself that I find interesting and want to discuss.

According to AppleInsider, Apple has applied for a patent on replacing keyboards with a glass panel having raised key sections. Once can see why, after the keyboard disaster of the penultimate MacBook release, Apple would be interested in such an idea. It would certainly prevent crumbs and dust from jamming things up as well as making keyboard cleanup easier. It would, I suppose, even protect against the occasional coffee spill.

According to the article, the raised key sections and a small amount of give provide tactile feedback to the user, making it easier to touch type on the keyboard than it is with the virtual keyboards of the iPhone and iPad.

This seems attractive to me but I’m not convinced that it would provide a good “typing” experience. Of course, Apple patents all type of ideas but only actively develops a few of them so there’s no guarantee that such a keyboard will ever become a reality.

Many developers, myself included, prefer mechanical keys and a few us diehards still swear by the IBM Model M and its Unicomp progeny. It’s hard to imagine that cohort accepting a keyboard where the keys are not only not mechanical but don’t move at all. Still, I love a chance to tryout such a thing. What about you?

Posted in General | Tagged | Leave a comment

Howard Abrams’ GTD Workflow

Howard Abrams is rethinking his GTD workflow and has written a three part post that describes his evolving scheme. The first part is here; there are links to the next part in each post.

The basic idea is that every new task or idea is initially put, as an Org file subtree, into an inbox that he reviews everyday. Upon review, each item is moved to an intermediate destination that reflects its status. For example, items that can be acted on immediately are placed in his task file; items that are more complicated to complete are placed in a project file. Similarly, reference material is filed away in an appropriate file. The exact scheme is shown schematically in his second post. Finally, when a task is completed it is archived in his journal.

As you can see, there’s a lot of data moving involved with all this so Abrams has written several helper functions to easily move the Org subtrees among the various files that make up his taxonomy.

Not everyone is a GTD adherent, of course, but if you use Org-mode to track and schedule your tasks and ideas, Abrams’ post has a lot of good ideas that you may find useful. He’s made the code easy to understand and modify so you can directly use some of his helper functions if they fit in with your workflow.

As always with Abrams’ posts, there’s a lot of good ideas worth stealing in the post so you should definitely take a look.

Posted in General | Tagged , | Leave a comment