Cliff has an absolutely wonderful post about “egg and daughter night” in his hometown in Nebraska. A great read.
Saturday evenings used to be quite the occasion around here too, from what I’m told. But nobody can tell the story like Cliff.
Cliff has an absolutely wonderful post about “egg and daughter night” in his hometown in Nebraska. A great read.
Saturday evenings used to be quite the occasion around here too, from what I’m told. But nobody can tell the story like Cliff.
We love to hear from you. I’m sure that’s what you’re thinking, anyway, as you prepare volumes of paper to send to our mailbox.
But just so you know, let me explain just how much we love the material you send us.
When we get one of your catalogs, it will get added to the junk mail pile. Every so often, I will go through this pile. I will contact the company behind each and every mailing, asking them to remove me from their list and not rent my name further. If I have extra time, I will probably also write that note on your postage-paid envelope and pop it in the mailbox. I will also add your name to my list of companies that send me junk mail, so I can avoid doing business with you in the future. If you have sent me junk mail in the past, rest assured that I will find some creatively enjoyable way of dealing with your refusal to honor my removal request.
After I have processed your piece of artfully-crafted handiwork, possibly trying to sell me pink laptops or a shirt with the word “femail” on it — whatever that means — I will deposit your catalog, along with dozens of other similar catalogs, on the kitchen floor.
This is when the real fun begins, because now it’s Jacob’s turn to process them.
He will usually start by ripping out every page from the catalog. He’ll start slowly and carefully, ripping out pages one at a time, savoring the wonderful rrrrriiiiippppp noise as he goes. But then he’ll get faster, going for two pages at a time, then more, until finally he just will lunge for paper by the handful to crush, tear, or otherwise mutilate.
After that, there are many things he might do to your fine piece of unsolicited advertising. Perhaps he will enjoy drooling on it — a satisfying fate for your 4-color catalog, don’t you think? Or perhaps he will grab some of your pages, carefully emblazoned with your logo, and tear them into as many tiny bits as he can. Or maybe he will simply gather your work together on the floor, then spin himself around on top of it, scattering the remnants as far and wide as possible, cackling all the while. He may also smear bits of food on them if he ate recently, or perhaps he will simply resume tearing pages apart.
But whatever he does, rest assured that he will treat your catalog with the care and attention it deserves. No catalog will survive intact, and as many pages as possible will be ripped apart and left in bits. He does, after all, have a great attention to detail.
After Jacob is done, we will gather up what remains and put it all in our recycling container.
Oh, and under no circumstances will we actually make a purchase from your catalog.
Here are two pictures of the scene.
Notice the careful concentration in this photo. Obviously he knows that Dell has been ignoring my removal requests for some time, and is taking note to tear their pages into the smallest possible bits.
But it’s not all hard work — processing your catalogs is fun, too.
Number of people killed on Sept. 11, 2001: | 2,974 |
Number of suicides in 2004: | 32,439 |
Number of people killed on American highways in 2006: | 38,588 |
Annual deaths from obesity: | 300,000 |
Total deaths from cancer in 2007: | 559,650 |
Total deaths from heart disease in 2004: | 871,500 |
Total military spending in FY2008: | $1228 billion |
Funding for health research & improvement (NIH): | $29 billion |
Total support of Amtrak (safer, cleaner than highways): | $1.6 billion |
National Highway Traffic Safety Admin. spending in FY2008: | $0.8 billion |
WHAT IS WRONG WITH THIS PICTURE?
Well, now this is quite the experience.
I’ve been trying Viper for the past few days. Viper, for those that don’t know, is usually described as a set of Vi bindings for Emacs.
After reading the nearly 100 pages of documentation and trying it a bit, I have realized that this is not really an accurate description. Viper is a port of vi to Elisp.
But that doesn’t really do it justice. Viper seems to have pretty much everything going for it that Vim does, and then some. It is extensible with Elisp, and works with all the Emacs major modes (indentation and so forth). Yet it also is a very authentic Vi implementation, yet more customizable than Vim. And, in my opinion, more capable than Vim too.
On the one hand, this is a really neat combination: the power of the vi editing commands with the power of Emacs and Elisp for indentation, customization, etc.
On the other hand, it makes my head hurt. While Viper and Vim both are supersets of the vi command set, they don’t always implement extensions (such as multiple windows) the same way or with the same keys. Of course, you could remap them in both, but it’s a bit jarring to run Viper in expert mode, press C-w to start creating a new window, and have it run the Emacs cut command. (You can run Viper in a more limited mode where it does not recognize any regular Emacs keys if you don’t want that)
It’s just weird. It mostly looks like Emacs. It is modal like Vim, and responds to all Vi and most Vim commands. It has an additional mode: the Emacs mode. Also if configured to run in expert configuration, Emacs commands are accepted most places. Yes, you can move with h, j, k, l and C-n, C-p, C-f, C-b all at the same time.
The main drawback I can see is that Viper mode doesn’t work well with Info mode, which has other bindings for keyboard shortcuts… so all of a sudden, hjkl don’t work in info mode.
I don’t know yet if I’ll use viper much, but it is a slick program.
Seen on CircleID
Yesterday’s post about switching back to Emacs saw quite a few comments from people (most of them useful, even). I learned a few things.
My biggest gripe about Vim was that for the file types I worked with most, its indentation and syntax highlighting was inferior to that of Emacs. I’d like to illustrate that with an example.
Let’s consider one of those file types: XML containing DocBook markup.
Vim has a DocBook mode. It doesn’t autodetect DocBook files, so I have this at the top of each one:
<!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
Now, why should Vim need a separate DocBook mode? DocBook is just XML or SGML, and these things have a well-formed nature. Well, part of the reason is that /usr/share/vim/vim71/syntax/docbk.vim has a ton of lines like this:
syn keyword docbkKeyword chapter citation citerefentry citetitle city contained
Yes, they are hard-coding all the DocBook element names into the editing mode. It’s probably used for completion, highlighting, maybe indentation. I’m not sure, really. I remember that editing these files without the DocBook mode was much more painful anyway, but that was 8 months ago and I can’t quite remember why.
Now, what about Emacs? I don’t know if Emacs even has a DocBook mode, mainly because I don’t have to care. The Emacs psgml mode actually parses the DTD for your XML or SGML files. It knows exactly what the valid tags are from doing so. This means it has full functionality not just for DocBook, but for any XML or SGML file with a DTD.
Not only that, but it knows more about the files than Vim does. For instance, both Emacs and Vim can do completion of various things. Vim </ C-x C-o (ooo, sounds like Emacs!) can complete my closing tags. But it can’t autocomplete my opening tags, and it certainly isn’t aware
Not only can Emacs autocomplete opening and closing tags, but it knows exactly what tags are valid at a given place in the document (thanks to the DTD) and will only consider those tags for completion. Moreover, depending on how you have configured it, it could also insert spots for you to add any required attributes. So, for instance, if you’re editing XHTML and autocompletion gives you an <img> tag, it would add src="" in it for you, as a reminder that src is required.
There are a host of other smart things that Emacs can do with XML or SGML documents. For instance, you can get a list of all tags valid at the current point with C-c C-t or Shift-RightClick — useful if you’ve forgotten the name of a tag for a moment.
The difference isn’t as great with everything. But it sure is noticable as I work with XML and Haskell files.
I’d been using Emacs for quite awhile, and about 8 months ago I decided I would try using Vim. I’d only used vi for system emergency work, but knew a number of people that swore by it for regular work. So I decided I would learn Vim and use it for my regular work. I figure that with things like this, I don’t get a real feel for how well they work unless I use them for all my work. So I haven’t really opened Emacs at all in the past 8 months.
Yesterday I finally decided that Vim was not living up to my expectations and I’m in the process of switching back to Emacs. I thought I ought to write down why I’m doing that, for my own future reference… and since nobody has ever written about Emacs vs. Vim, I might as well post it where everyone can see it.
So here we are.
It would lead to more comfortable typing. Lots of Vim users mention that you don’t have to hold down keys while hitting other keys as much in Vim as in Emacs, and that the movement keys are all on the home row. That’s true, but I didn’t find it to be that big of an improvement, since Esc is a farther reach than anything in Emacs, and let me tell you, you’re hitting Esc all the time in Vim. I found that removing the armrests from my chair made my hands happier than Vim ever did, and swapping Ctrl and CapsLock in Emacs will probably help there too.
It starts faster. I’m not sure if that really was true even when I switched, but it certainly isn’t true on any of my machines today. Both Vim and Emacs have had major version upgrades (v7 and v22, respectively) since I started using Vim. People seem to say that Emacs 22 feels faster, though I don’t know if that’s true. The startup times of the two, if they’re different, are imperceptible.
Vim would use less RAM. Frankly, these days, both Emacs and Vim are way down on the list of things that use up RAM. Heck, kmail has 141MB resident, and each of its two IMAP processes is using more than 30MB. Emacs in X right after start has 16MB resident, 10MB of which is shared, and 25MB VSS. gvim right after start has 8MB resident, 5MB of which is shared, and a 43MB VSS. Emacs tends to use fewer processes for things that vim. So they’re not all that different, and Emacs could come out smaller in certain situations. But the difference is irrelevant on today’s machines, and modern Gnome and KDE apps are many times larger than both of them.
It will make me more comfortable in rescue environments where I have only traditional vi available. Actually, the vi on AIX is so different from modern Vim that this didn’t really help.
It would make me more productive. There are some editing commands that did, but as you’ll see below, it was more than balanced out by other problems.
The commands dt, dT, df, dF. Wonderful little things those. Emacs now has M-z (Zap), which is similar to df but can actually go to other lines (a nice addition). And there are easy ways to bind keys to the others as well, though that doesn’t make it a pervasive convention like it is in Vim.
Antialiased fonts. It’s crazy that Emacs doesn’t have this yet. But not a showstopper; I still like good ole 10×20 just fine.
Regexp search-and-replace. Emacs actually has this now, and maybe it had it back then too. M-C-%. Apparently in Emacs22 the replacement expression can also have lisp code in it, which sounds really slick but I can’t see myself using it regularly.
Syntax highlighting. The syntax highlighting for most languages in Vim felt like it was about as smart as it was in Emacs about 10 years ago. Strings like "Hello!\"" (in languages where \” inserts a literal “) often confused it. Sometimes quotes within comments confused it. Sometimes it would be confused permanently. Other times, just until I scrolled around in the file or reloaded it.
Indentation. This is much more annoying than the syntax highlighting, really. In many languages — and especially the two modes I’ve used most recently, XML and Haskell — it really, really stinks. The indentation there isn’t aware of syntax, or not very much. Sometimes it is smart enough to know that if an XML line starts with </ that it moves left and if it starts with an opening tag, that the next line moves right. But it’s not smart enough to do this reliably. Not only that, but indentation is not handled with consistent configuration between languages. And even though Vim ships with a ton of language modes, the central docs only cover indentation for C.
I’ve asked Vim experts about this, and have tried all sorts of various tweaks, have read through Vim indentation mode source files, etc. There is just no way to get it anywhere near the intelligence of Emacs for most languages, short of writing my own mode, it appears. This is even worse because when using the backspace key in insert mode, for awhile it deletes individual spaces, and then all of a sudden deletes a big chunk of whitespace back to the beginning of the line. (And no, the insertion of Tab characters is disabled.) Indentation is my #1 complaint about Vim, and something that shows no progress towards being fixed any time soon.
And forget about anything like Emacs M-x reindent-region. This is a syntax-aware indenter. You can write out an entire source file with no indentation whatsoever, and it will indent the entire thing according to the indentation rules you’ve defined and the syntax of the language you’re using. The best I’ve seen in Vim are commands that add or remove space at the beginning of every line in a region.
In short, Emacs seems to “understand” the file format on a much deeper level than Vim, and can automate things to a much better extent because of it.
Too many things disrupt the paste buffer. I can use Y or y to yank some text in Vim, and it’s really, really easy to overwrite that buffer with other things. Yes, I know that I can yank it into a named buffer, but that’s inconvenient and I don’t usually know in advance that I’ll have that need. In Emacs, only C-k and other “large area” commands disrupt it.
Vim doesn’t like you having lots of files open at once. It’s surprisingly convoluted to do this. If you use the basic documented command to edit another file, :e, it closes the file you’re working on. The normal way to open multiple files at once is to use split windows. Well, I don’t like split windows all that well, and often just want to make a quick change in one file — in full screen — and then go back to another. Even though I use set hidden in my ~/.vimrc, it still is annoying and more convoluted than it should be.
Vim can’t create new top-level X windows. In Emacs, I can press C-x 5 2, and poof, I have a second Emacs window in X, and it’s tied to the same editing session and Emacs process. Not a new process, with a different set of files, its own buffers, etc. The same process, same set of files. Just like a split window, but with a new top-level X window instead. gvim simply has no way to do that. This is also a large annoyance.
gqap stinks. This has burned me more than once. I’ll be editing an XML document, and insert some text in the middle of a paragraph. Now I have a really wide line. So I type gqap to reformat the paragraph. My cursor is near the bottom of the screen, so I don’t really see much past the current line. I then save the document and exit. Later I discover that vim considered the entire rest of the document part of the single paragraph, and removed all the different indentation levels at </para> and the like, so it’s completely messed up. Emacs is smart enough to know what is a paragraph in XML mode, and M-q does the right thing. Oh, and Emacs reindent-region can fix the Vim gqap-induced mess.
The Sith arrive at last, courtesy of the British government. (Watch the first 30s)
Seen today in #haskell:
<newsham> you see an opening to the north. The light shining through reveals a small booklet near the base of the door. There is a small compiler here.
Last year, as we were planning our move, I knew we would need to buy a new TV antenna. According to AntennaWeb (a very useful site), we are in the violet (or “fat chance”) zone for several TV stations. Add to that the fact that we have a tin-covered building pretty much in the direct path to several of the transmitter. Metal buildings often cause “multipathing”, where a signal bounces off buildings and arrives multiple times at the antenna. This causes ghosting on analog signals and can cause problems getting a signal lock on digital ones. We also have a fairly long run from the antenna to the receiver (a MythTV box) and are wanting to receive digital signals. Not only that, but the TV transmitters are in different areas about 40 degrees apart, and most high-gain antennas are also highly directional. So it’s a difficult situation.
So in our situation, an outdoor antenna is a must. At our old place, we had used the best outdoor antenna Radio Shack sold. Despite having more friendly reception conditions, it didn’t work well.
After a good deal of research, I bought a Terk TV38 outdoor antenna from Amazon. It comes with:
It comes with the hardware you need to mount it in an attic or attach it to an exterior wall or chimney in most situations. However, we wanted to attach it to the roof directly, so we purchased a tripod mount from RadioShack for that purpose. I had also purchased some quad-shield RG6 coax from Cat5ECableGuy.Com.
I assembled the antenna on the ground. That took some time, but wasn’t difficult. But this was in winter, a fairly wet winter, and I knew that weather wouldn’t cooperate well enough for us to get the antenna up on our roof safely some Saturday for a few weeks. So I thought I’d just leave the antenna on the ground for a little while, hook it up, and see if we get anything. I put it on the ground, aimed it about in the middle of the TV transmitters, and went to set up the MythTV.
I was shocked to discover that, even with the antenna on the ground, I got a perfect digital picture on all channels but one. Once we got the antenna mounted on the roof, reception has been perfect. I’ve had no need for actuators (to rotate the antenna) or amplifiers. Just the antenna itself, even with the long coax run, has performed quite well.
For anyone that needs an outdoor antenna, I highly recommend the Terk TV38.