Scaling Git at Microsoft

Brian Harry has a fascinating post that discusses Microsoft’s use of Git. At first blush that may seem profoundly uninteresting but consider: for various reasons Microsoft maintains very few repositories so, for example, all of Windows core is in a single repository containing millions of files. The scaling problems are obvious. Not least is the fact that Git wants to maintain a copy of the repository on each user machine, an obvious problem considering that the repository is held on more than 40 different Windows Source Depot servers.

They solved the scaling problems by implementing what they call the Git Virtual File System. That made it possible to provide the Git experience to their huge repositories with minimal changes to Git itself. Harry’s article provides more details so you should definitely take a look.

If, like me, your career has been spent with smaller or medium size companies, it’s easy to underestimate the problems that a huge code base can bring. Harry’s post describes some of those problems and what they’re doing to bring them under control. Even those of us who aren’t Windows users will find Harry’s discussion interesting. Read it and you’ll probably stop complaining about your own repository problems.

Posted in General | Tagged , | Leave a comment

Happy Birthday Ken

Today is Ken Thompson’s birthday. There are few people in our industry that have had a bigger effect. Unix, regular expressions, chess, UTF-8, Go: the list goes on and on. He’s a giant and at 74 still going strong.

Posted in General | Tagged | Leave a comment

Choosing Emacs

Chris Siebenmann has made up his mind1. He was deliberating whether or not to give up Emacs and switch to Vim. He does a lot of sysadmin work and prefers Vim for that (although I think Tramp would go a long way towards meeting the needs that he thinks Vim resolves). He decided to stay with Emacs for reasons that you can read in his post.

One of those reasons is that he really likes the ease and coverage of the package system and it’s hard to argue with that. Oddly, to my mind, he doesn’t mention Org mode, which just about everyone considers the killer Emacs feature. Still, it’s interesting to see his reasoning for sticking to Emacs.

If you’re currently using both Emacs and Vim regularly and, like me, two separate sets of key bindings makes your head explode, you may enjoy reading his post. As I’ve said before, they’re both really good editors but they meet two different needs. If you want a really fast editor and you want it to be only an editor, Vim is a good choice. If you’re looking for a programming (or work) environment—especially a Lispy one—then Emacs is the editor for you.

Footnotes:

1

Actually, he made it up six months ago but his post has been sitting in my blog queue for that long.

Posted in General | Tagged | 1 Comment

Dumb Phones and the New Luddites

Vlad Savov1 over at The Verge has another of those annoying articles in which he complains that smart phones are too distracting and considers dropping back to a “dumb phone.” I’ve seen a lot of articles like this lately and, really, they’re very tiresome.

If you think Twitter is too distracting, GET THE HELL OFF OF TWITTER. If you lack the will power to stop checking it, delete your account. Same with Facebook and all the rest of it. But please, I beg you, stop trying to drag the rest of us into your problems. Most of us are very happy with our phones and wouldn’t consider dumping them. I’m not on Twitter or Facebook but I use my iPhone all the time and it’s almost never to call someone. Don Knuth famously gave up email but he didn’t walk away from computers; he just stopped using email.

The New Luddites are always complaining about technology even as they use that technology to do the complaining. The first few articles on smart phones being distracting might have been marginally interesting as a study of peoples’ workflows and preferences but now they’re just old Mrs. Crabapple from down the street complaining that the kids are too noisy.

If you want to leave abandon the modern world in favor a kinder, gentler past that you think you remember, God’s speed but, please, don’t try to involve the rest of us in a co-dependency.

Footnotes:

1

I don’t know Savov and he seems sincere but, unfortunately, it was his article that made me snap. Consider this post an article complaining about the whole genre of “smart phones are distracting” complaints rather than an attack on Savov.

Posted in General | Tagged | Leave a comment

The auth-source Manual

Today, I saw this amusing, but doubtlessly true, quote in a tweet

The link points to the Emacs auth-source library manual from which Collins got the quote. If you’d like to automate password lookup in Emacs, this manual tells you how. Definitely worth a look.

Posted in General | Leave a comment

Mobile Org 1.7.1

Here’s some good news

The iOS version of Mobile Org has long been moribund so it’s great to see it being updated. Earlier this month, I wrote that there appeared to be movement with Mobile Org and here, at last, is the result.

I’ve downloaded the app but have not yet set things up. I’ll probably write more about it when I do. In the meantime, if you’re using it and have wisdom to share, leave a comment.

Posted in General | Tagged , | Leave a comment

Identifying an Emacs Commit

Marcin Borkowski (mbork) posted a handy bit of knowledge that I didn’t know about. If you’re one of the public benefactors willing to use the development versions of Emacs and report the bugs you find, you’ll want to submit the exact version you’re using so the developers have the right context. When you’re compiling from git source that means the git commit hash.

Mbork tells us that the emacs-repository-get-version function will return the commit hash and gives us a bit of Elisp that will insert the Emacs version and commit information into the current buffer. That’s just what you need when filling out a bug report.

Posted in General | Tagged | 3 Comments

Emacs Quotes

I don’t have anything interesting to say today so here’s some amusing Emacs quotes for your entertainment. I especially like Sean McGrathi’s.

Posted in General | Tagged | Leave a comment

An Overview of ASCII

Last Wednesday Eric Raymond (ESR) wrote a blog post noticing that younger engineers no longer understood the ASCII code set at the bit level and didn’t understand what many of the non-printable characters were for. He speculated that this was a result of the demise of RS-232 terminals in the early 1990s. When the traditional (not USB) serial interface all but disappeared the meaning of most of those special characters and how to generate them from the keyboard were no longer core knowledge that every hacker had to know.

As a followup to the post, ESR has written a short article on Things Every Hacker Once Knew that tells the story of what the various special characters were used for and describes their hardware context. If you don’t have a bunch of gender benders and a breakout box gathering dust in your (hardware) toolkit, you probably don’t know most of what’s in the article and you should definitely give it a read. Not only is it interesting, it’s a part of our culture and we should all be at least dimly aware of it.

As ESR says, although there are a few vestiges of things like the DLE character still being used mostly it’s not something today’s engineer will need to know. Still, it is worth knowing if only so you don’t have a moment like this

Posted in General | Tagged | 1 Comment

Zamansky 29: Using Shell and Eshell

Mike Zamansky has posted the latest video in his Using Emacs series. This time it’s about using shell and eshell from within Emacs. Like Zamansky, I’m an old time command line user—I even used the MKS toolkit—and before Emacs I did almost all my work directly in the shell. Since coming to Emacs, I’ve tried to train myself to use the shell from within Emacs. I had only partial success until I started using eshell.

While there are still some gotchas with eshell, it mostly works fine and, indeed, is often superior to a plain shell. Most of the problems involve things like cursor addressing but even there eshell can do the right thing by running the application in a term buffer. See this post from October for the details.

As Zamansky notes in his video, an advantage of eshell is that you can run Emacs command directly from the “command line.” There are other advantages as well. Try cding into a remote machine as Zamansky demonstrates and you’ll be convinced. Mickey, of course, has all the details in his excellent Mastering Eshell article. If you’re an eshell user, or would like to become one, you MUST read his article. I reread it periodically and I always learn something new.

Zamansky’s video is 8 and a half minutes so it’s perfect for a coffee break.

Posted in General | Tagged | Leave a comment