04.10.08
Posted in Programming and People at 1:48 pm by Brooks
So, earlier today, Jeff Atwood wrote a rather interesting post about people who aren’t willing to pay money for software. And in there, he made this comment:
It’s tempting to ascribe this to the “cult of no-pay”, programmers and users who simply won’t pay for software no matter how good it is, or how inexpensive it may be. These people used to be called pirates. Now they’re open source enthusiasts.
And there’s been the predictable outcry of blog posts reading that as saying that open source enthusiasts are pirates, and saying things like this:
Jeff Atwood’s blog Coding Horror is one of my favorites. Until yesterday, I’d been recommending it unreservedly. Jeff’s made a big stumble, and I hope he corrects it soon….
Right. First off, anyone who’s read Jeff’s blog and is halfway observant knows a couple of things about him. He’s intelligent, and he’s outspoken about his opinions. If he wanted to say that open-source enthusiasts were the same as pirates, he would come right out and say it, and give you several paragraphs of reasons why he thought that. He wouldn’t just imply it in a throwaway sentence like that. So it ought to be obvious to any reasonable reader that that’s not what he intended, regardless of how he worded it.
More than that, though, I find the reaction of “I can no longer unreservedly recommend this blog” to be quite interesting. Suppose that Jeff did intend to say that open-source enthusiasts were pirates? I don’t agree with that, obviously, but so what? I don’t think I’ve ever read a blog that I completely agree with; that’s what makes conversation worthwhile, and if he has a good argument to back it up, it’s probably worth reading even if I think it’s erroneous. To me, what makes a blog worth recommending is when it presents intelligent arguments based on reasonable facts, in a way that I find interesting and thought-provoking and on subjects that I think are worth reading about. Making a “stumble” doesn’t change any of that.
Permalink
03.14.07
Posted in Assorted Tinkering at 9:37 pm by Brooks
I just found out today, when I turned my laptop on, that Microsoft’s “Windows Update” updates for Windows 2000 do not include a fix to make it compatible with the new version of Daylight Saving Time. (And, yes, apparently “Saving” is correct and “Savings” incorrect. I didn’t know that before.) Apparently since it’s not a security issue, they feel no need to actually do anything much about it.
There are, however, solutions. First, there’s the semi-official Microsoft solution, which involves some really hairy poking around in the system registry. (And, by “really hairy”, I mean that it looks signficantly more so than poking around in the system registry usually is.)
There’s also a handy little freeware utility that does those changes for you automatically, created by the fellow who runs IntelliAdmin.com. His blog post describing it is here, and the actual download is here. I tried it out, and as far as I can tell it worked perfectly (aside from not actually closing the window when done). He suggests setting your clock ahead to November to watch the time flip over to see if it worked, but it’s easier just to go into the “Time” control panel that you get from right-clicking on the clock and selecting “Adjust Date/Time”, and looking at the “Time Zone” panel to make sure it says “Pacific Daylight Time” (or whatever) rather than “Pacific Standard Time” for the time zone.
For those of you still running Windows 98, he also wrote a fix for that, even though there isn’t an official Microsoft solution at all. The blog post about that one is here, and the download is here.
It’s an interesting observation on advertising, too. It probably took him a day or so to code up this program and test it, and he’s now got a first-page Google hit for people looking for a solution to one of the bigger problems of the month — and people like me are passing around links to his blog, too. You just can’t buy advertising that good.
(The rest of his blog looks fairly interesting, too, if you’re doing Windows administration. This little trick for automatically putting the current date in a filename is particularly neat, for instance.)
Permalink
03.07.07
Posted in Assorted Tinkering at 1:11 am by Brooks
For a lot of the GCC and GNU Fortran development work that I’m doing, it’s much more convenient to work on a GNU/Linux box — the compilation process is set up in a way that is rather slow on Windows (even under Cygwin), and so testing changes is much quicker under Linux. On the other hand, my main computer runs Windows, and I don’t want to be running two computers all the time, much less be rebooting all the time. Thus, I’m running a GNU/Linux installation — Debian stable, to be precise — in a VMWare virtual machine. I can access the files on it via Samba and Windows file sharing almost as easily as files directly on my disk, and PuTTY is one of the nicest terminal windows I’ve used, and it generally is quite a nice way to do things.
One particularly nice feature is that, since all of the GNU/Linux stuff is operating in a single process on the Windows side, it’s easy to set the whole thing to a priority of BelowNormal, and thus even when I’ve got a compilation running and taking up as much CPU as it can hog, it doesn’t slow down anything else I’m doing at all. And it turns out that there’s enough slack in the system that this doesn’t give it any noticable lag in the terminals, even.
The one problem with that is that it completely confuses the software clock on the operating system in the virtual machine, though. When I’ve been using the CPU heavily on the Windows side of things, I’ve seen the GNU/Linux time lose 10 minutes out of 15! VMWare does a nice job of keeping the hardware clock up-to-date, but Debian is set up so that everything depends on the software clock, which only gets synchronized to the hardware clock on bootup. It’s not a critical problem, really, but it’s somewhat annoying to have to remember that a file date of three days ago (or whatever) means “a minute ago”.
The right solution to this is not ntpdate or some other NTP solution. The Windows clock is already synchronized over the network, and the VMWare virtual hardware clock is synchronized to that (I presume), and so there’s no need for adding extra traffic to the network. (Especially since it’s dialup, and disconnected from the internet and any NTP servers half the time.) Nor is the solution something like adjtimex, which tweaks the speed of the software clock; the time skew is a function of Windows-side computer load, and thus quite random, and a static speed tweak is not much of an improvement.
Instead, a better solution is hwclock –hctosys, which synchronizes the software clock to the hardware clock. Because the skew is quite large and needs correction quite often (and because cron is using the skewed software clock for timing, and thus loses time), I added the following to my root crontab:
* * * * * /sbin/hwclock –hctosys
So far, it seems to be working beautifully.
Permalink
02.27.07
Posted in Tex, LaTeX, and ConTeXt at 1:16 am by Brooks
I sent off the tarfile for the listings 1.4 distribution to CTAN this afternoon. It should be posted to the official mirrors within the next day or two.
This marks the first significant bugfix release in nearly three years; I took over the official maintenance of this package early last year, after the previous maintainer simply disappeared. It feels good to have this back in the realm of actively-maintained packages again, even if I am a little slow about replying to bug reports sometimes.
Also, although this doesn’t show in the release, I was for a few hours this afternoon completely caught up on listings-related email. (I got another bug report this evening, though.) One of the perks of having one’s email address at the top of the documentation is that one gets a lot of questions as well as things that are truly bugs in the package; cases where someone wants to do something like highlighting parentheses and brackets and numbers, which the package doesn’t directly support, and so I spend 15 minutes or so hacking up a workaround for them. Sometimes these questions result in new functionality, too — the old versions assumed that if \chapter was defined, the user wanted the listing-number counter to reset at each chapter, and the only way I could find to change that on the user side was to temporarily undefine \chapter around the \usepackage{listings} macro. Now, there’s a numberbychapter key that can be set to “true” or “false” in the preamble.
This release also has the usual selection of small fixes to handle newly-discovered and newly-created conflicts with other packages, and I particularly want to thank Markus Kohm for his bug reports, which always contain an insightful analysis of whatever is conflicting with his KOMAscript document classes this year, and a small piece of code that I can copy in to make things work right again.
There’s also a new \lstMakeShortInline macro, which defines a character as an equivalent to \lstinline with the appropriate user-specified options. This is a pleasant case of unintended consequences; a couple of years ago, I was corresponding with Frank Mittelbach (of the LaTeX3 project) about some suggestions I had for making the LaTeX Project Public License — which is essentially the TeX-world equivalent of the GPL, used by nearly everything on CTAN — more appropriate for cases where one’s borrowing a bit of code from one project to use in another rather than distributing a slightly-modified version of the original project, and I believe a few of those ideas made it into updated versions of the license. (At the least, Frank clarified that the intent of the original license allowed that sort of copying, even if the wording was arguably unclear.) And it turned out today that implementing this bit of functionality was almost trivial to do, because I could copy an equivalent implementation for inline verbatim environments from the LaTeX documentation classes.
This post also wouldn’t be complete without thanking Carsten Heinz, the original author of the package. Although the code is deeply arcane and complicated in places, in the way that only a general-purpose parser implemented in TeX could be — which is not to be confused with the way that a TeX output routine to handle three levels of cross-referential footnotes in scholarly editions of originally-footnoted books can be, and I am glad David Kastrup is writing that piece of code and I am not! — it has quite a significant amount of documentation, including several chapters on the high-level design and implementation which are almost completely useless to anyone who’s not working on the internals of the package. There’s a line at the beginning of them, saying, “First I must apologize for this developer’s guide since some parts are not explained as well as possible. But note that you are in a pretty good shape: this developer’s guide exists!” And every time I read it, I smile, because he’s right: I am, and it makes a tremendous difference.
Permalink
01.09.07
Posted in Academia at 1:46 am by Brooks
I’ve been spending most of today catching up on a huge backlog of journal citation alerts and downloading the relevant articles to read before I start writing the “other work” section of my dissertation in the next week or two. So I’ve been noticing a few things about the websites of various journal publishers.
One of the things that I’ve noticed is how different websites handle feedback from their customers—and, in particular, bug reports (and feature requests).
For example, the American Institute of Physics has direct links to an online “submit query” form directly off their help page, and also has a prominently-featured email address—which was quite useful, since I got a server error when I tried to use the online form. We’ll see how quickly they reply (if they do; bug reports don’t really need replies), but in my opinion, that page is pretty much how things should be. It would be nice if they had an explicit mention of “bug reports go here”, but “Technical Support Query Form” is close enough.
Contrast this with the Wiley “Contact Us” page, which I’ve been dealing with for the past fifteen minutes or so. Why have I been dealing with it for fifteen minutes, for what started out as a trivial feature request? Well, first off, at the bottom of the How To Contact Customer Support page (yes, that’s a different page, which you get to by clicking a link on the “Contact Us” page), it says, “We regret that Wiley InterScience Customer Support does not accept queries by email.” That, of course, means that the only option to actually say anything to them is through their web system, regardless of whether or not it happens to be broken.
So, consider the web form. That “Contact Us” page has a couple of links to customer support: one labeled “Online Customer Support” promising FAQs and so forth, and one labeled “Contact Customer Support” and noting that one should use it if “unable to log in”. Despite the appearance of being different things, they both go to the same page, which is a login form, with a place to register an account in the fine print at the bottom. Now, I don’t have a personal account here, since I’m using a university site license for the content, so it looks like they’re asking me to go through the whole process of creating an account on the site just to file a simple bug report.
Eventually I noticed, down at the fine print on the bottom of that page, the link for “if you don’t want to register, click here”. Good. No, I don’t want to register; I want to file a bug report and be done with that.
That gets me to the main customer service web page, which then has a link to “Ask A Question”. It does not have a link to “File a Bug Report”, or to “Make a Feature Request”, or to anything at all which would be an appropriate phrasing for any problem that would require them to do anything whatsoever about it, but that sort of implicit assumption that it’s the customer’s problem seems to be the style these days, so I dutifully clicked on the “Ask A Question” link, and got presented with a web form.
This web form has a fair bit of clever Javascript to make my life “easier”, so that depending on which options I click for my problem, different subcategory boxes appear. Once I’ve got them all filled in, a box pops up for me to select my regional location and enter my institution. (Apparently it’s a barter system; I have to trade demographic information to them before they’ll answer my “question”.) Except that this doesn’t actually work in the version of Opera that I use, so the “Location” box never appears, which means that the “Error: You didn’t enter a location” message that I got when I tried to submit the form was really quite cryptic. And rather hard to work around, too, until I decoded it to “Error: We don’t support your browser,” and tried Mozilla, in which the Javascript works a little better.
Once I entered the question and clicked submit, I still wasn’t done. First, there was the little matter that since I hadn’t registered before, they wanted me to do so now, and were presenting me with the registration form to fill out. I gave in and gave them a password to associate with my email address and the other information they wanted, and again clicked submit.
And, again, I still wasn’t done, because that gave me a page along the lines of “We’ve selected five answers from our FAQ that our pigeons think may have something to do with your question. Do any of them answer it? If not, please scroll down a screen and click the ‘No, these don’t answer my question’ link at the bottom of the page.” Of course the FAQ answers don’t answer my question; it’s a bug report, and it needs someone on your end to do something about it. (This is why I am annoyed with customer service websites that phrase things as “ask a question” rather than “contact customer support”; it seems that it’s a short jump from there to setting up the whole process as if the only things the site has to deal with are questions.)
At this point, it finally accepted the question, gave me a tracking number, and told me that I should expect a reply in 24 hours. We shall see.
So, let’s recap on why this matters (beyond the obvious bug report). A good-sized chunk of my dissertation is going to get reworked into a journal paper or two, and both AIP and Wiley publish journals that would be good places to submit it. One publisher’s customer-service site is a clear, simple, single-page website with a no-javascript online form and a prominently-placed email address. The other publisher’s customer service site comes with its own 650kb(!) user manual in PDF form and makes it a 15-minute complicated web maze to file a trivial bug report. So, whose paper-submission process would I be likely to want to deal with?
Edited to add: I got an emailed reply to all three messages to Wiley, within four hours of submitting the questions. It was polite and clearly from a human being, and made it clear that my initial feature request was noted and relates to things they are currently working on. It was slightly off-putting that the response to my bug report about the web form was essentially “We’ve tested this on all current browser versions, and recommend upgrading your browser” (rather than something like “Sorry about that; I’ll let our web team know, though it may be low-priority for them since it’s not an up-to-date browser”), but other than that, the message was responsive and prompt, and seemed to involve at least as much thought and consideration as I’d put into the messages I’d sent. There’s more to customer service than just the website!
Permalink
« Previous entries