Comment Problems

Yesterday, a couple of readers emailed me that they were unable to post comments. When I tried to comment as someone other than me I had the same problem. After a little investigation I discovered that the problem involved the NuCaptcha plugin. I disabled NuCaptcha and everything started working again. The NuCaptcha plugin provides the Captcha challenge that tries to distinguish people from bots. It doesn’t always work but it’s pretty good at keeping spam off the site.

When I turned off NuCaptcha, I was astounded at how soon the scum spammers struck. In less than a minute after disabling NuCaptcha I had my first spam comment. From about 2:30 until I turned off comments at around 7:30 I had 25–50 spam comments1. As I say, astounding. Irreal is, after all, a small site catering to a small (but select) audience. Nonetheless, immediately after dropping our shields we were under sustained attacked by modern day Romulans.

I think the problem is that I haven’t been updating the Twenty Ten theme. That’s because I have some custom CSS markup in it and I didn’t see any reason to update and migrate my additions. Shows what I know. Later today I will create a child theme with my custom CSS and update the theme. If that doesn’t resolve the problem, I may have to change themes. In any event, please be patient while I resolve this problem. As soon as I have things working again, I’ll turn comments back on.

Also, since I turned off NuCaptcha I’ve almost doubled the number of user registrations on the site. Those registrations are almost surely phony and I’ll be deleting them tomorrow. If you registered in the last couple of days, you have my apologies; please register again after I give you the all clear. None of this would be necessary if it weren’t for the scum spammers and the low lives who employ them.

Footnotes:

1

I didn’t succeed in getting comments turned off last night and awoke to 78 more spam comments.

Posted in Administrivia | Leave a comment

Comments Temporarily Turned Off

I’m temporarily turning off comments. I’ll explain further tomorrow and, with any luck, have them turned back on by the end of Friday. Until then, please bear with me.

Posted in Administrivia | Leave a comment

A Lisp Overview

A few days ago I wrote about Simon Tatham’s overview of C. Today, I want to mention a very nice overview of Lisp. The overview is really a Lisp primer aimed at C/C++/Java programmers (it’s notes from the CSC330 course at Cal Poly meant to serve as an introduction to Lisp for students whose experience is limited to imperative languages).

If you’re a Lisper, it’s easy to nitpick the notes. Some areas you may think important aren’t covered, and others are covered in an idiosyncratic way. Still, it’s an excellent introduction to Lisp and how it’s different from and the same as the C/C++/Java environments.

If you’re curious about Lisp—even if you don’t want to commit to learning it—this is a good document to get a feeling for what it’s like. To be sure, it doesn’t come close to capturing the power and beauty of Lisp but it does give you a reasonable idea of what the excitement is about.

Definitely worth 15 or 20 minutes of time if you have any curiosity at all about Lisp. My own awakening came from a blog post that pointed me to Paul Graham’s Ansi Common Lisp. This may be a lighter-weight introduction to get you interested.

Posted in Programming | Tagged , | Leave a comment

Less Familiar Lisp Functions

A couple of months ago, I wrote about Christopher Neufeld’s series on the less familiar parts of Common Lisp. He’s up to the Fs now so if you’re interested in Lisp, you should check in with his latest posts.

One recent post concerns the fboundp function. You might think that there’s not much to cover. After all, a symbol is either bound to a function or not. But it turns out that there’s some edge cases and Neufeld uses those explore how

(mapcar #'some-function some-list)

and

(mapcar 'some-function some-list)

differ. If you’re like me, the second case is a bit of a surprise. Forms like that are common in Emacs Lisp but, one would think, non-sensible in Common Lisp.

It turns out, though, that sometimes a form like that does make sense and the results can indeed be different from the first. See Neufeld’s post for the details.

Posted in Programming | Tagged , | Leave a comment

The Fate of Cursive in Florida

As long time readers know, I have a continuing interest in the state of cursive handwriting. See here, here, here, here, and here for some of my thoughts on the matter. One of the continuing threads in those posts is that cursive is dying a well-deserved death, that many school systems no longer bother teaching it, and that those still hanging on have deemphasized it.

In my state of Florida, for example, some counties have discontinued teaching cursive while others continue teaching it but spend much less time on it than before. Now Florida officials are considering eliminating it statewide. The proximate reason is that the new federal “common core” curriculum omits it. There’s some residual Florida crankiness about the matter and some want to continue teaching cursive if only to show that Florida won’t be pushed around by the Feds.

At least that’s a new reason for refusing to let cursive die. As I discuss in the posts linked above, none of the reasons given for maintaining the teaching of cursive make much sense and are mostly emotional appeals to “the way things were done when I was a kid.” If you want to get a feeling for the tenor of the arguments in favor of cursive, you need look no further than the remarks of state board member John Colon of Manatee County who supports retaining cursive: “Sooner or later people do run out of batteries, you know.” But not, apparently, non sequiturs.

Posted in General | 3 Comments

More Peeks at Emacs 24.4

Over at Emacs Redux, the ever informative Bozhidar Batsov has a couple more posts up in his series on the upcoming Emacs 24.4 release. The first concerns new string manipulation functions. It’s odd that Emacs has been historically deficient in this area. Magnar Sveen’s excellent s.el has helped fill in the gap and is still more comprehensive than the functions added to the Emacs core but it’s encouraging that new string functions are being included. I hope we see a unification down the road.

Batsov’s second post discusses a couple of additions to the hash table functions. These functions, hash-table-keys and hash-table-values, returns lists of the keys and values in a given hash table. As with Common Lisp, you could always get at these using the maphash function but it’s nice to have some ready made functions. A lot of Elisp functions take a list as input and these functions are a handy way of getting lists of hash keys or values directly without an intermediate step involving maphash.

As with Batsov’s previous posts, these make me look forward to the new Emacs release. We’re already in feature freeze and should be seeing the first release candidate shortly.

Posted in General | Tagged | 1 Comment

SBCL 1.1.15 Released

Steel-Bank Common Lisp 1.1.15 just got released. As usual, it built and installed without incident on both my Macs.

This release brings a new register allocation algorithm, some optimizations that increase the speed of make-array under certain circumstances, some enhancements, and a few bug fixes. Every month the SBCL team releases a new version with improvements and bug fixes. That’s a remarkable achievement and as I’ve said before, Lispers owe them a debt of gratitude.

If you’d like to get started with Lisp, I can’t recommend the SBCL/Emacs/Slime combination more. It’s hard not to grin like a fool when you’re using the environment. It’s just so much fun.

Posted in Programming | Tagged , , | Leave a comment

The Dangers of the Digital Life

I’ve written before about how I’ve embraced the digital life and pretty much given up dealing with paper, pens, and all the rest of the traditional record keeping methods. Almost everything happens on-line and whatever paper documents I get are scanned and saved to digital files. It’s tremendously liberating: no huge file cabinets bursting with impossible-to-find papers, no documents piling up waiting to be filed (probably in the wrong place), no searching through paper archives when the IRS or some other entity comes calling. It’s all there in my digital archive and easily accessed when needed.

It seems like a no lose plan. All your data instantly available with a minimum of effort. But what if those digital files were lost? Or stolen? Well, that would be disaster, of course, but, after all, those paper files could also be lost or stolen. Except that they’re not nearly as likely to be. Sure, the floods could come but that’s pretty unlikely and no one is going to bother stealing your huge filing cabinet. But suppose someone stole your computer that contained those digital records? Not nearly so unlikely.

Here’s a story of how that actually happened. The entire digital life and business records of someone whose laptop was stolen gone in an instant. The story is horrifying. An entrepreneur working all over the world returns to the safety of his home only to have all his electronics stolen. Everything, business records, copies of his passport, bitcoin wallet, password manager, and everything else were in someone else’s hands.

In this case the victim spent 12 hours changing all his account logins. That’s bad enough but what about all that lost information? In this case, the victim had a series of old backups so only his most recent information was lost. How can we avoid these problems? Read the post at the link for some ideas. The most important of those are to encrypt you data and have a robust backup plan that ensures your backups are never more than a day old.

If you have those precautions in place, loss of your computer will be annoying but not disastrous. There are plenty of services that will automatically backup and encrypt your data. It’s just asking for trouble not to use one. Read the post to see what can happen and what you can do to prevent it.

Posted in General | Tagged | Leave a comment

OS Security Appraisals

The United Kingdom’s CESG has published an appraisal the security of various operating systems. The TL;DR is that Ubuntu Linux is the “most secure” but Ubuntu is probably a proxy for Linux (no other Linux distros were profiled). Happily, the CESG analysis was a little more nuanced than “the most secure OS is…” They looked at several aspects of the OS and rated them as “significant risk,” “some concerns,” and “no risk.” The summary is useful no matter what OS you’re using.

Even more useful are links to a discussion, for each OS, of every aspect in the rating. This allows you to understand what the vulnerabilities for your OS are and what you should do to address them. Even if you’re not the type of person who cares about the relative standing of the various OS’s, you’ll want to know how your OS stands up and what you need to do to make it more secure.

Posted in General | Tagged | Leave a comment

An Overview of C

I spent so many years writing C code that I still tend to “think” in C when considering an algorithm. That’s true even when, as is mostly the case now, I’m going to write the algorithm in Lisp. A lot of that has to do with the fact that C is basically a universal assembly language. For example, when considering alternative Lisp strategies, I tend to think about the corresponding C code because it helps me understand what the machine will do for a given piece of code.

Time marches on, though, and many younger developers are unfamiliar with C—their experience is entirely with higher level languages such as Ruby, Python, or Java. Those languages are fine and, for most uses, a better solution than C. Still, those higher level languages do nothing to help you understand what the machine is actually doing. Even if you seldom use it, C is worth knowing because it helps you reason about what a given piece of code is actually going to do and how much it will cost in memory or time.

If you’re a programmer whose experience is restricted to languages like Ruby, Python, or Java and would like to learn some C—if only to help you understand what’s going on under the hood—Simon Tatham has a nice overview of C features and idiosyncrasies that may seem confusing as you dig into C. His purpose is not to teach you C but to give you a little context so you can understand why C is the way it is.

I used to say that everyone should learn assembly language so that they can understand what the machine is actually doing and how it is doing it. That ship has undoubtedly sailed but I do think having a working knowledge of C is useful for the same reasons. Read Tatham’s post for an idea of what I’m talking about. If you want to be the best possible developer, you have to have an idea of what’s happening on the metal.

Posted in Programming | Tagged | Leave a comment