God’s Mechanics

My friend Michael Cleverly was kind enough to send me God’s Mechanics, by Brother Guy Consolmagno, S.J. Consolmagno is a Jesuit brother (not a priest); he’s also an astronomer, working at the Vatican Observatory. He describes himself as a “techie”; and he has lots of friends from MIT, the University of Arizona, and a wide variety of other places who are also techies—engineers, scientists, and the like. A fair number of them find his religious faith puzzling, and of those some are genuinely curious how a fellow techie can be religious. How does it work? What’s it all about? Why does he believe it, and what does he get out of it?

Brother Guy wrote this book to answer these questions, writing as a techie for other techies. As he’d be the first to admit (I know this, because he does so), he had to write it as a techie, rather than a theologian; as a theologian, he’s a good astronomer. More than that, he’s not writing to convince; he’s writing to explain.

The thing that surprised me most is how little I match the “techie” pattern that he describes. I mean, I’ve been doing software engineering for two decades, and I’m active in the Tcl/Tk community; surely this qualifies me? But my background is in mathematics and modeling, not in engineering or the hard sciences, and that’s the community he’s really addressing. Maybe it’s just that mathematicians are more used to dealing with eternal verities than engineers and scientists are, I dunno. More than that, though, Brother Guy was writing techies who aren’t religious, a group that I’ve never been in.

My only real complaint about the book is that I think Brother Guy is unduly harsh on Aristotle’s Physics. Newton’s physics are far more useful, but Aristotle wasn’t really addressing the same problem as Newton. But I digress.

If you’re a techie, and you don’t understand how I can possibly be religious, perhaps Brother Guy’s book will help you understand. How well, I’m afraid I really can’t say.

Uh, What?

My five-year-old daughter and her five-year-old friend Lucy just walked into the room where my older daughter was about to play a video game. Says Lucy:

I want to play a game with you. A queen and princess game. I’m the queen, and you two are the princesses.

To which my five-year-old adds:

And anyway, I have a bracelet.

Wait, what?

A Question

Q: How do soccer hooligans do the hokey-pokey?

A: You put the left boot in, you pull the left boot out, you put the left boot in, and you kick him all about…

Recent Search Queries

Here are some of the more interesting queries that have led folks to visit us here at the Foothills.

saxon algebra 1 an incremental development third edition answers: Not only don’t I have the answers, I don’t even have the questions. I’ve written about many books, but this isn’t one of them.

is there oil in the foothills: Yes, several kinds. We buy it in bottles at a place near our home. We call it a supermarket.

bundle of meanings: Well, we’ve got that all right.

Techniker Krankenkasse suspicious: Technically speaking, yes, there is oil in my car’s krankenkasse, just as you suspect. That comes in bottles, too, but we don’t get them at the supermarket.

battle of mohács anima: Who won?

what does foothills mean?: It means hills that aren’t too steep to walk up.

Reflections on the Joyful Mysteries

The Annunciation

Gabriel came to Mary, and announced to her that she would bear the Messiah; and she said, “Let it be done to me as you say.” In the same way, Christ comes to us, asking to come in; and we must choose to let him in or not. Sometimes we hear his knock, but do not go to the door; and all too often we do not even hear him, knock as he may.

The Visitation

Mary conceived; and shortly thereafter she went to her cousin Elizabeth, to assist her in the final months of her pregnancy. Just so, when Christ is conceived in our hearts he calls us to bear him to others in service as Mary bore him to Elizabeth.

The Nativity

In due course, Mary, a humble woman, gave birth to the Lord God Almighty. Just so, if we bear Christ in service to others as he directs, so will we bear fruit beyond all that we can imagine or understand. Christ is what we bear, and Christ is the fruit that results.

The Presentation in the Temple

Mary brought Jesus to the Temple; and there was met by Simeon. Simeon was a holy man who had been waiting patiently for his messiah for his entire life, trusting in the Lord to preserve him until that day. We must bear Christ to others; and among them will be those whom Christ has been preparing to receive us. Sometimes we will know those to whom we are going; but more often it will be a surprise. Indeed, often we will not know how others received Christ in us until we meet them again in Heaven.

Jesus and the Teachers of the Law

Mary and Joseph brought Jesus to Jerusalem, to the Temple, when he was twelve. And later, having missed him, they found him there in his Father’s house, doing his Father’s business. When we bear Christ to others, he will act; and he need not act as we expect. Instead, he will do more than we can ask or imagine. We are his instruments; it is not for the hammer to decide where the nail shall go.

And yet, when Mary and Joseph called to him, Jesus came and was obedient to them. Christ will never override our wills. We cannot say to him, “Do this,” or “Do that,” but we can say to him, “I will” or “I won’t.” Because he wills to use us as his instruments, we can thwart his purpose in our lives by refusing to be used—or, by insisting on being used as we see fit.

It was proper for Jesus to be obedient to his parents, for they were in authority over him. Just so, it is proper for us to be obedient to our Lord and King, and to seek to be moved by his will in all things. We must bear Christ with us where ever we go; and if we are ready to his hand we will bear much fruit.

A Tale of Three Editors

A friend once told me, “Will, you can go from 0 to Geek faster than anybody I know.” Let the reader beware.

I’m a software engineer by profession. That means that my number one tool, the tool I spend hours a day using, is a text editor. Not a word processor (though I use those, too), and not just any text editor; a programmer’s text editor. Notepad is a text editor, but comparing it to a programmer’s editor is like comparing a letter opener to a Leatherman tool.

Some programmers prefer to use an Integrated Development Environment (IDE), that combines a text editor with all sorts of ancillary tools, including the language compiler. But long-time programmers tend to have an old favorite, the editor of their youth, that not only does everything they need but which is graven into their very soul. IDEs come and go, but the classic programmer’s editors live on. Better to stick with the tried and true than to master one set of quirks after another.

My favorite editor, the one that I’ve used since the early 90’s, is Emacs. I’ve used Emacs on Windows PCs, on Mac OS X, and on a variety of flavors of Unix. One of the things I like about Emacs is that it’s the same on all these platforms. If its conventions are different from those of most other applications, it’s because it’s older than they are; and anyway, I’m used to its quirks. That said, getting Emacs to run on OS X has always been a bit of a chore. I’ve generally had to find the Emacs sources, download them, and build Emacs myself; and then, when I upgrade my OS, my build always breaks and I have to download it again. Some while back, though, the Free Software Foundation finally produced an OS X-native version of GNU Emacs: a genuine OS X application. When I upgraded to OS X Leopard, this was the version that was available, and I downloaded it. And yea, verily, it stanketh. All sorts of little things didn’t work quite right; and maddeningly, the cursor would occasionally leave ghost copies of itself as I moved around a text file. And because there was now an official GNU pre-release, the sources I’d relied on for Mac-specific build instructions had all dried up.

To be fair to the FSF folks, the OS X release was alpha software; but it was the only release of GNU Emacs that was available, and it was a real pain to use.

This past October, a little after I started working on Robbie the Robot, I began looking at alternatives. Now, there are other versions of Emacs, but I discounted these immediately. I could probably have found an OS X-specific version of Xemacs; but I’ve never liked Xemacs. There’s another version called Aquamacs, which makes Emacs look even more like a standard OS X application; but it changes the standard behavior to do so. My goal is to use one and the same editor on every platform I use; and I use Windows, Linux, and OS X. So that was out.

Next, since I use a lot of ActiveState software, I decided to try KomodoEdit, the free version of ActiveState’s Komodo IDE. It’s available on all three platforms, and is pretty much the same on all of them. I used it for the rest of October and most of November, and I have to say that there’s a lot to like about it. I got comfortable with it, once I got all my quirky preferences dialed in, and was quickly productive. I have to give the ActiveState guys credit; they nearly got me long-term. In the end, I abandoned KomodoEdit for three reasons:

  • There are functions that I use regularly, such as incremental search, that are just slow enough to be annoying. I want my editor to be faster than I am.
  • Most programmer’s editors let you remap the keystrokes to do what you want, and Komodo is no exception. In fact, I really like the interface it uses for this. But Emacs lets you change the keystrokes depending on what kind of file you’re editing. For every kind of programming language, you can have the precise tools you need at your finger tips. If Komodo can do this, it wasn’t obvious.
  • Keystroke macros execute much more slowly than in Emacs (orders of magnitude more slowly!), and are buggy besides.

KomodoEdit worked for me most of the time; but there were times when I found myself falling back to Emacs because getting the job done in Komodo was just too painful.

So what next? Alas, there was one obvious choice remaining…a name I shudder to speak. For an Emacs user to even think about it is rather like Luke Skywalker going over to the Dark Side. Yes, it was time to take a look at….Vim!

For those of you who came in late, the two (2) (count ’em, two) classic programmer’s are Emacs and VI. (The names stand for “Editing Macros” and “Visual Interface”.) Both were written to convert editors designed for use on teletype machines into something that was more pleasant to use on a CRT screen. In doing so, they took radically different approaches. And both have evolved considerably since then, meeting the needs of successive generations of programmers. The classic “vi” is still available on pretty much every Unix system, but most “vi” programmers these days use ViM (VI iMproved), which is has considerably more functionality.

I’ve never been a “vi” user; I know just enough to some very simple editing and save a program. But it’s the preferred tool of millions of programmers, and perhaps it was time to take another look. Like Emacs, ViM is an old-school editor, proven on the field of battle; like Emacs, it’s available on every platform; and, as I quickly discovered, the OS X version is compatible with the versions on the other platforms, and stable to boot. So I spent the second have of November giving ViM a try.

Much though it pains me to say it, it’s a good tool. I was able to configure it to work the way I wanted, and I was able to be productive in it. I got it to work identically on Linux and on OS X. It had some quirks that I didn’t like; but Emacs has some quirks that I don’t like. I’m just used to them.

In the end, though, I returned to Emacs. Not because it’s as familiar as an old glove, surprisingly, but because ViM was becoming too familiar. How can that be, you say? As I mentioned above, Emacs and VI took very different approaches to managing a screen interface. And the plain, simple fact of the matter is, Emacs won. The applications that you non-programmer types use that involve editing text—word processors, especially, but also e-mail programs and so forth—owe a lot more to the Emacs-style of editing than to VI. In fact, I can remember a number of applications in days gone by that took a VI-like approach to text; does anyone remember the “Select” word-processor? Ultimately they all tanked.

The basic difference can be described as follows. In Emacs, as in almost every other application, typing a letter on the keyboard inserts that letter into your document. You move around using the arrow keys and so forth. You use control-keys, function keys, and menus to perform more complicated operations. In ViM, your keyboard is like a giant game-pad of editing functionality. Every key does something amazing and magical. If I type “%d” on a line containing a left-parenthesis, for example, ViM will select and delete everything from the left-parenthesis to the matching right-parenthesis, taken into account any nested parenthesis, quotations, and so forth. In order to actually input text, rather than edit it, I need to type “i” (or any of a dozen other key sequences), enter the text, and then press Escape to go back to command mode.

Frankly, this odd scheme works. It works well. Once you become fluent, you can accomplish amazing things with much less typing than in other editors. But! It doesn’t work in anything else, no matter how often you try. It is very disconcerting to be writing an e-mail, need to edit something you’ve typed, and have your fingers try to use the ViM commands to get the job done. Cognitive dissonance, they call it.

So I decided, somewhat reluctantly, to give ViM a pass. I gave up on having the same editor on all three platforms; I’d use KomodoEdit on the Mac, and Emacs everywhere else, and maybe someday the FSF guys would release a stable, non-stinky version of Emacs for OS X.

And so, last week, just before implementing this decision, I did a quick web-search—and, lo and behold, there’s a new stable release of Emacs, 23.1. And it works just great on OS X. Glory, glory, hallelujah, I’m back in business. Bye, bye, ViM. Bye, bye, KomodoEdit. It was nice knowing you, but it’s good to be back home.