Wednesday 27 November 2013, 12:41
PROBLEM: Since just before the Twitter IPO, when they
changed their site code, mouse copy-and-paste no longer works on Twitter's
Web site viewed in Firefox. Where before one could highlight text with the
mouse and then middle-button click to paste it somewhere, now that either
causes the former contents of the clipboard to be pasted, or the string
"witter.com". Copy and paste still works if and only if once uses explicit
"copy" and "paste" commands with the keyboard or menu bar, but that is much
less convenient, and is annoying to discover on the fly. Observed in several
versions of Firefox under Linux; similar problems have been reported with
other browser and other operating systems. Problem is specific to
SOLUTION: In "about:config," set
"dom.event.clipboardevents.enabled" to "false." Explanation below the
Monday 25 November 2013, 17:10
Back in 2009, I posted some notes I'd prepared on hypergeometric tail
inequalities to this Web site - mostly so that I could find them easily
myself, should I need to in the future. In the years since, that set of
unpublished notes has become one of my most-cited works. I'm not sure how I
feel about that, but whatever; I have stuck it on arXiv to make future
citations easier and increase the chance that they'll spell my name
Monday 26 August 2013, 13:18
I've posted Tsukurimashou
0.8, the latest version of my Japanese-language font project. This
version contains 1502 kanji, including all through Grade Four. There are
relatively few infrastructure changes for the fonts in this version, but Kleknev is new in this release
(still at alpha status) and IDSgrep
0.4, released a few days ago and included in this package, contains
some new and exciting speed enhancements.
UPDATE: I presented Tsukurimashou at TUG 2013 in Tokyo this October.
You can read my
slides (PDF file) on the conference Web site, and see some
photos from my trip in my photo gallery. The paper will appear in
TUGboat 2013.3, which will be posted on TUG's Web site
(initially members-only, eventually open-access, or visit your library) in
the near future.
Wednesday 21 August 2013, 12:03
I just got back from a trip to multiple conferences in Ontario, and that
makes it a good time to update my
publications page. Most
people interested in my academic work are likely to find out about it from
other sources, but I'm going to post some brief and relatively non-technical
introductions here as well for my general Web site readers. The official
versions of these papers are mostly behind paywalls, but there are also
unofficial "preprint" versions available to all.
Sunday 21 July 2013, 06:40
The Firefox GUI becomes more annoying with each "upgrade." I don't know
if they're taking bribes from Chrome, or if they took advice from the same
"professional" UI designer who broke GIMP, or what, but it's really become a
problem. For those who haven't given up on Firefox yet, however, and for my
own future reference, here's something useful I managed to figure out after
a lot of hair-tearing.
You start typing a partial URL into the location bar, and the drop-down
list of suggestions appears. But there's a URL on that list that should
not be there. Maybe it's something embarassing you don't want other
users of your browser to see; maybe it's merely a site other than the one
you want to be the match for the few characters you typed, and yet for some
reason it keeps coming up as the preferred suggestion.
Friday 10 May 2013, 06:40
I followed a link from Warren Ellis's Twitter feed to this posting about
half-day MP3: "Frolic in Brine, Goblins Be Thing" by Aairria. The idea
of a work of audio art (I hesitate to call this "music" but I suppose it
meets the definition) consisting of twelve hours of background noise
appealed to me. But I didn't really want to spend the time it would take to
download that (probably more than real time, because the MP3 is
high-fidelity) on my slow home network connection and then make a block of
time to listen to it, and I was also a bit disappointed to find out that the
actual title is "Frolic in Brine, Goblins Be Thine" (a reference to the Ring
movies), which I think is much less interesting than the typo.
The same artist has a bunch of other work online. I downloaded Sleepwalking and listened to
it during one of my Sunday-morning urban hikes. It's about 65 minutes of
basically just a humming noise. On the one hand, I definely got something
out of it. There's more going on here artistically than one might expect
from the description "65 minutes of humming." On the other hand, by the end
of it I felt disappointed. I thought that it didn't live up to its
possibilities. So the next step is, can I do better?
I got Csound and played with it for a while, and have posted the first of
my results to a new account on SoundCloud. Below the cut
(because I don't want to put external-site iframes on my front page) are
embedded Flash players.
Monday 11 March 2013, 19:12
When I was preparing the Tsukurimashou 0.7 release, I
had to build the entire package several times from scratch, to verify that
all the necessary pieces really were included in what I was preparing to
ship. When I run the build on my development machine it normally re-uses a
lot of previously-built components, only updating the parts I have recently
changed. That kind of incremental compilation is one of the main functions
of GNU Make. But if I'm shipping a package for others to use, it has to
work on their systems which don't have a previous history of successful
builds; so I need to verify that it will actually build successfully in such
an environment, and verifying that means copying the release-candidate
package into a fresh empty directory on my own system and checking that the
entire package (including all optional features) can build there.
Tsukurimashou is a big, complicated package. It's roughly 92,000 lines
of code, which may not sound like so much. For comparison, the current
Linux kernel is about 15,000,000. Tsukurimashou's volume of code is roughly
equivalent to an 0.99 version of Linux (not clear which one - I couldn't
find numbers I trusted on the Web just now, and am not motivated to go
downloading old kernel sources just to count the lines). However, as
detailed in one of my earlier
articles, Tsukurimashou as a font meta-family is structured much
differently from an orthodox software package. Things in the Tsukurimashou
build tend to multiply rather than adding; and one practical consequence is
that building from these 92,000 lines of code, when all the optional
features are enabled, produces as many output and intermediate files and
takes as much computation as we might expect of a much larger package. A
full build of Tsukurimashou maxes out my quad-core computer for six or eight
hours, and fills about 4G of disk space.
So after a few days of building over and over, it occurred to me that I'd
really like to know where all the time was going. I had a pretty good
understanding of what the build process was doing, because I
created it myself; but I had no quantitative data on the relative resource
consumption of the different components, I had no basis to make even
plausible guesses about that, and quantitative data would be really useful.
In software development we often study this sort of thing on the tiny scale,
nanoseconds to milliseconds, using profiling tools that measure the time
consumption of different parts of a program. What I really wanted for my
build system was a coarse-grained profiler: something that could analyse the
eight-hour run of the full build and give me stats at the level of processes
and Makefile recipes.
I couldn't find such a tool ready-made, so I built one.
Thursday 7 March 2013, 08:36
I'm very happy to announce the release of version
0.7 of Tsukurimashou, my Japanese-language font project. That is a
link to the release page for the source code package on SourceForge.JP; see
also the complete list
of downloadable files and the project home page. This has
been almost nine months in the making, and as I said on Twitter, the yak
hair is thick on the floor. Release notes below the cut.
Wednesday 30 January 2013, 18:44
Here are the
slides (PDF) and an audio recording (MP3, 25 megabytes,
54 minutes) from a talk I gave today about one of my research projects.
You'll get more out of it if you have some computer science background, but
I hope it'll also be accessible and interesting to those of my readers who don't.
I managed to work in Curious George, Sesame Street, electronics, XKCD, the
meaning of "truth," and a piece of software called ECCHI.
I plan to distribute the "Enhanced Cycle Counter and
Hamiltonian Integrator" publicly at some point in the future. Maybe not
until after the rewrite, though.
Abstract for the talk:
It is a #P-complete problem to find the number of subgraphs
of a given labelled graph that are cycles. Practical work on this
problem splits into two streams: there are applications for counting
cycles in large numbers of small graphs (for instance, all 12.3
million graphs with up to ten vertices) and software to serve that
need; and there are applications for counting the cycles in just a few
large graphs (for instance, hypercubes). Existing automated techniques
work very well on small graphs. In this talk I review my own and
others' work on large graphs, where the existing results have until
now required a large amount of human participation, and I discuss an
automated system for solving the problem in large graphs.
Monday 21 January 2013, 14:49
It's a very common pattern in the Han writing system that a character
will be made of two parts that are themselves characters, or at least
elements resembling characters, placed one above the other or one next to
the other. For instance, 音 (sound) can be split into 立 (stand up) above
日 (day); and 村 (village) can be split into 木 (tree) next to 寸 (inch).
This kind of structure can be nested, as in 語 (language).
One can do a sort of gematria with the meanings, (what exactly
is the deep significance of "village = tree + inch"?) but that's not the
direction I'm interested in going today.
Here's the thing: in the Tsukurimashou
project, these two ways of constructing characters each correspond to a
piece of code that's invoked many times throughout the system, and I thought
it would be interesting to look at how often the different parameter values