# News archive

This archive contains personal news, thoughts, and notices about updates to the site in reverse chronological order.  The first few entries appear, each cut off after the first paragraph when applicable, on the home page and in this RSS 2.0 file; here is an RSS 2.0 file with all entries in full.  The # sign to the left of each news item gives you a permanent link to the item.  To email me a comment on an item, click the @ sign, and I may add your comment to the page manually.

I could put the news in a real blog engine, but that currently appears to be more trouble than it's worth.  I will reconsider if I start getting a lot of comments.

• [# @] 2020-10-03: In 2016, a fellow intern at Microsoft Research told me that some applications require a floating-point number system with subnormal numbers in order to work correctly but do not want to use the subnormal numbers of typical floating-point hardware, which can be very slow because the hardware does not optimize this relatively rare case.  I'm unsure this need still exists, but I had a clever idea to solve it that I'm finally (briefly) writing up: emulate a virtual floating-point number system with a reduced exponent range in which subnormal numbers are represented by normal numbers of the physical system.

If relatively few of the numbers used by the application are subnormal, the effect of the slowness of physical subnormal numbers on overall application performance would be small, but the slowness could produce a timing side channel.  Subsequent work has shown that typical floating point hardware has many other timing side channels, so that motivation for avoiding physical subnormal numbers probably no longer exists; I wonder if there might be others.

In any case, the basics of the emulation are as follows.  Suppose that normal numbers of the physical system have p bits (including the implicit leading 1, so only p − 1 bits are stored) and an exponent between emin and emax inclusive.  If the virtual system's normal exponent range is emin' through emax', then its smallest subnormal number will be 2emin' − (p − 1).  To represent this as a normal physical number, we must have emin' − (p − 1) ≥ emin, so we choose emin' = emin + (p − 1).  Now we can mostly emulate virtual mathematical operations using the corresponding physical operations, provided that we round off the extra precision of a physical number that represents a virtual subnormal number (not needed after addition and subtraction, which will never produce such extra precision).  This can probably be done by adding and subtracting s × 2emin', where s is the sign of the original number, though I haven't checked that the resulting rounding behavior exactly matches any standard (e.g., IEEE 754).

If we want a balanced exponent range (emax' = 1 − emin' = emax − (p − 1)), then we have more work to do to emulate overflow.  The easiest approach is probably to represent a virtual number V by the physical number V × 2p − 1; then addition and subtraction will overflow in the right cases.  Multiplication and division will need some adjustments.  That's as far as I got in thinking this through.

• [# @] 2020-09-22: I've finally set up containers, including temporary containers, on my main Firefox profile.  This is a huge improvement over using the default and private browsing contexts (with the former configured to clear site data automatically on exit) to get a poor man's 2 temporary containers, one of which doesn't save history.  I wasn't thrilled about adding the Temporary Containers extension to my TCB without reason to believe its releases had been vetted, but that probably isn't my biggest current security risk and I have a plan to eventually get rid of it (see below).

Of course, containers don't address fingerprinting, and there's a tail of browser features that don't respect them (I would guess that at least some of the bugs on the Clear Recent History tracker affect them, though I'm not aware of an analogous tracker for containers specifically), but they are good for well-behaved web sites that rely on conventional cookies and site data as a way of positively identifying a user.  Using multiple Firefox profiles would address the second problem, but I never found it practical.  I still hope to eventually move to something more extreme (a separate Qubes OS VM per context to mostly remove the browser from my attack surface) if I can write the necessary management tools to make it practical (e.g., low-attack-surface history aggregation).

Since saved logins are global, remember to uncheck "Autofill logins and passwords" in about:preferences#privacy so Firefox prompts you before filling a login.  Otherwise, a web site could open in a hidden frame, let Firefox automatically fill the login information into a form, and read it without you submitting the form in order to identify you, although I've never noticed a web site doing this.

• [# @] 2020-09-22: Thank goodness for Pump It Up videos on YouTube so I can get my fix safely during the pandemic!  (I know these presumably infringe copyright, like most dance game content on the web; I wish there were a feasible way to license it for use on custom systems.)  Obviously I can't keep score, though I don't find this is a big factor in my enjoyment; sometimes it's even fun to see the "Perfect" judgment of the original (usually very good) player even when I mess up.  I'm finding that I prefer the "pump" gametype to "dance", all else equal; the biggest factor I've been able to identify is that "pump" lends itself to fun yet manageable turns of my body, while in "dance", it's hard to write a turn that's fun without being disruptive.  Also, I really like some of the Pump It Up music, especially some of the K-pop (I'll admit).

It's a pity I wasn't exposed to the "pump" gametype sooner.  My friend Kevin Hencke got me seriously started on dance games with the "dance" gametype in 2009, and while I tried "pump" in July 2015, I didn't make a serious effort to learn it until the same friend invited me to an arcade with "pump" and not "dance" in February 2019.  Now I'm around single level 15 and double level 12 on the Pump It Up scale.  If I had tried "pump" sooner, I might have bought a "pump" pad instead of a "dance" pad.  My pad still serves as a place to stand with a bar. :)

Incidentally, stepping to Pump It Up videos motivated me to fix the audio latency offset control in Qubes OS.  With that fix, watching the videos under Qubes OS seems to work well enough, while I still have to reboot into a plain Linux environment for StepMania to run well.  Some of the videos have their own audio/video skew, so in the title of each bookmark of a video, I put the latency offset value I need to use.  Conveniently, the audio latency of Qubes OS itself seems not to vary much, or I'd have to do more arithmetic.

• [# @] 2020-09-17: I've been looking to expand my music library (still only with songs presumed to be freely licensed or to which I already have a license, not yet having the boldness to make my own purchases) for exercise, relaxation, and similar use scenarios.  The "Under the Eye" album by Ira Stein and Russel Walder has a been a favorite for years, but I'm getting bored with it.  Recently I ran across the Pat Metheny Group's Minuano on a CD I inherited from my dad.  Wow!  I remembered the theme that starts at 2:55 from childhood, but now I think the introduction is even more beautiful.  I know there's other great music out there, but I thought I would still recommend some of my favorites that I've found so far.  I like classical music too, but I tend to play it rather than just listen to it; an update on that may be a topic for a future post.

• [# @] 2020-09-16: I just learned that Firefox for Android contains some software that is closed-source and/or performs trackingThe documentation claims that turning off the "Data collection" settings will stop Firefox from intentionally invoking most of the software, but even having the software present on my main phone presents a risk of accidents that I really don't want.  Although I came across this while researching automatic update methods for Fenix, I imagine the situation was the same with Fennec and I didn't realize its seriousness for many years.  I trust Mozilla to avoid accidents with its own "Glean" telemetry SDK; it's the other software I'm worried about.  I'm frustrated that Mozilla continues to do user-hostile things like this, but I'm deeply grateful that they are maintaining a (mostly) trustworthy browser at all.

Unfortunately, I haven't found another good version of Firefox for Android right now.  "fork-maintainers/iceweasel" is trying to do the right thing, but its maintainers haven't yet earned my trust.  The "relan/fennecbuild" patch is likely feasible for me to review myself, but it looks like I have a steep learning curve to set up the build process.  So for now, I plan to accept the risk and hope that soon either (1) a better version of Firefox becomes available for Android or (2) I move to a trustworthy mainstream Linux phone (Librem 5, PinePhone, etc.) and can use a different mobile version of Firefox, such as the one in postmarketOS.  I want to do #2 anyway for multiple reasons, and it will also solve the broader problem of avoiding the dependency of many of the apps I use on Google's Android SDK, which even if arguably sufficiently open-source, asks users to agree to unreasonable terms of use; workarounds for that may be available, but they may be too much work for me.

• [# @] 2020-09-10: I have released a major update to SuperbChemistry that restores compatibility with modern versions of OpenOffice and LibreOffice and has other significant enhancements.  Enjoy!

• [# @] 2020-09-06: A huge pet peeve of mine is the failure of the media to distinguish between amounts and rates of money.  To cite just one example (but an important one), we often hear that the debt of the United States is approaching its GDP, but these values are not in the same units: the GDP is an amount per year and the debt is just an amount.  Thus, the ratio of debt to GDP is not a percentage but the duration of time (to a crude approximation) that it would take the US to pay off the debt if it continued all production and ceased all consumption, if that were somehow possible.  There's no fundamental reason to compare that duration to one year; the benchmark should be based (as now) on evidence about what debt-to-GDP ratio typically causes political or economic problems, but expressed as a duration rather than a percentage.  Interestingly, Wikipedia gets this right in one place but follows the widespread misconception elsewhere.

• [# @] 2020-09-05: I've finally upgraded Firefox on my primary phone (which runs LineageOS without Google Play Services) to the new version (79+), a.k.a. Daylight or Fenix.  Unfortunately, there doesn't seem to be a good automatic update solution at the moment without running closed-source software such as the Google Play Store.  I've submitted a merge request to get the "rfc2822/fdroid-firefox" repo working again, though it is based on the GitHub releases page, which often lags behind the Google Play Store.  The official download page still gives you Fennec as of 2020-09-09; the plan is to disable it until Mozilla has a better process for publishing Fenix releases, which presumably would then be used by rfc2822/fdroid-firefox to provide a proper automatic update solution.  Separately, work is underway to get Fenix into the main F-Droid repository; presumably that version will be unbranded and have a different signature.

The main issues I saw in Fenix as a privacy-conscious user are:

• Search suggestions seemed to turn on even though I'm pretty sure I had them off in Fennec.
• There's no command to clear site data without clearing history (issue report with a workaround).
• There's no option to keep the URL bar visible all the time to help prevent spoofing (hopefully will be fixed soon).

• [# @] 2020-09-02: I've added another batch of materials to the site.  Probably the most useful to people will be the RPM-related tools, including a tool that helps automate three-way merges of configuration files, which was a huge pain for me for years.  I also added two more old projects (Javari and Cyclone with Inference Plugin); another two are hopefully coming soon.

• [# @] 2020-09-02: Check out this unusual rsync vulnerability that I root-caused in 2011 but never previously promoted here.  The addition of rsync's "incremental recursion" feature broke an assumption in the file deletion code and allowed a heap object to live across a change in a global variable that affected the memory layout used to access the object, causing values to show up in different fields.  Only one field is used to index an array without being validated upon use, and after an intricate exploit, I was able to cause heap corruption without tripping any assertions first.  Fortunately, (1) it seemed unlikely that anyone would receive data from a peer they don't trust using the combination of options that opens the vulnerability and (2) even if they did, it seemed unlikely that the vulnerability could be used to break any security properties rather than just crash the process, though I didn't have the expertise on low-level exploits to confirm this since the code involved was very complex.  I suspect this kind of vulnerability is rare, except perhaps in JIT interpreters; please let me know if you know of any others!

• [# @] 2020-08-31: A favorite math joke of mine from Tej Chajed, not previously published to my knowledge: "Extensionality jokes: they're all the same as long as you laugh."

• [# @] 2020-08-31: Believe it or not, I'm still here!  I've made several major updates to the web site over the past few years, though they have gone unheralded by news items.  Most notable are my pages on (1) maximum noise isolation for truly wireless earphones, which currently contains details only for obsolete earphone models, but the same ideas apply to the Nuheara IQbuds2 MAX and I will add the details when I finally get a to-it; and (2) projects related to the puzzle game Escape, including an enhanced version of Escape itself that I would be thrilled if you try (binary releases for Linux and Windows are now available).  I have recently added a bunch of design discussion and brief notes about current status to the pages for SuperbChemistry and Measurements; I hope I will get around to making new releases and updating the listings in the OpenOffice and LibreOffice extension directories soon, but I wanted to get this information out in the interim.  Finally, today I overhauled the project list: I added links to projects hosted elsewhere (the most important being Espalier and elastic SDFs) and flagged the status of each project, a sore omission for years.  If I get more motivation, I'll set up an aggregator for the web logs again so I can prioritize work on pages that many people are viewing (people are always welcome to email me to notify me of their interest, but few bother to) and provide some more updates on my personal life and technical topics.  In the meantime, I hope you enjoy the updates I've made.

• [# @] 2016-01-30: Today I learned that by default, Firefox >= 41 allows web sites to write to the clipboard in response to any user interaction.  I don't feel this is safe; I can't be confident that I won't unthinkingly click on a web page in the middle of a copy-and-paste to an integrity-sensitive destination such as a terminal. (FWIW, one developer mentioned this pitfall but claimed such operations were already unsafe, for reasons unclear to me.)  I've shut off the feature by setting the `dom.allow_cut_copy` preference to false.  But there may be other changes to Firefox that I have concerns about, and I'm not aware of any good way to stay abreast of them, nor of any other browser more deserving of my trust that is a realistic alternative for the tasks I need to perform.  I have plans to run each independent web browsing "task" in its own Qubes VM, which should replace the large attack surface of the browser with a small one that I control, but I don't know when or if I'll get to implementing this.  (I'll echo the previous disclaimer that many other things are going on in my life, but this is the one that I had the motivation to write up.)

• [# @] 2015-11-20: I regret to announce that I will be disabling DNSSEC and DANE on mattmccutchen.net on Monday.  Since I was involved in the DANE design effort back in 2011, I have seen no evidence that any clients have actually cared about having these security features available on my site.  Meanwhile, maintaining the infrastructure on my side continues to consume time over the long term, and DreamHost just announced that they will be removing my root access to my VPS, which the DNSSEC setup currently relies on.  At some point, I have to swallow my disappointment and reallocate my energy to projects that will bring greater practical benefit rather than researching ways to make this continue working.  I will of course reconsider the decision if any of the circumstances change.

Obviously this is not the only thing that has happened in my life since a year ago, but I feel it's important to post to forestall any suspicions that hypothetical users watching the site might have, while I continue working (slowly) toward a sustainable model for publishing news.

• [# @] 2014-05-25: Time and again, I've been pleasantly surprised to find the solution to a random life problem I faced on the web.  (Other times, not so much.)  So I'd like to take this opportunity to add a solution I haven't seen adequately described elsewhere, and maybe someday the site will be redesigned so search engines can find it properly.  Have you noticed that non-interactive ssh commands (e.g., `ssh host 'echo \$PATH'`) don't go through your `~/.bash_profile` or equivalent?  This is because ssh executes commands using a non-interactive non-login shell, though pam_env does run if configured.  The consistent design would be to use a non-interactive login shell, which properly written startup scripts can handle.

Focusing on bash (my shell), one workaround to get the right result without patching any programs would be to (1) use pam_env to set the BASH_ENV environment variable to a script that runs the `profile` files and then (2) have /etc/profile unset BASH_ENV to ensure that descendant shells do not repeat the process regardless of whether the original shell was a login shell.  This could be configured for ssh or all PAM-enabled programs; I haven't looked at the behavior of callers other than ssh in any detail.

However, bash has a build-time option (enabled at least on my Fedora system) to try to detect this case by the presence of the SSH_CLIENT or SSH2_CLIENT environment variable and absence of SHLVL and follow the startup sequence of an interactive non-login shell, exactly the opposite of what the consistent behavior would have been.  Assuming your copy of bash does this, then the workaround is to make your `bashrc` files (collectively) do nothing but run your `profile` files if the shell is non-interactive and then ensure that your `profile` files do not recurse back to your `bashrc` files in this case.

I've applied this technique to my Fedora system and it seems to work great.  I still have an orthogonal problem where X sessions run the `profile` files twice, because I added a call to them early enough in the xinit sequence to be able to affect the user dbus server but haven't removed the login shell later in the sequence, but that's a challenge for another day.  In contrast, lightdm seems to do this right; maybe I can use it.

• [# @] 2014-05-25: I'm still here; I've just been a period of major transition in my life, and maintaining a public online presence is one of several things that fell by the wayside.  As I continue to learn by experience how I want to spend my time and energy, I took some spare time today to make a few high-priority updates: some to the Meta page and the long-overdue announcement that the Big Integer Library is unmaintained (not necessarily more so than anything else here, but it's the item I get the most inquiries about).

• [# @] 2009-09-15: I have released Measurements 1.3, a minor update that should make the extension work with Java 1.5.

• [# @] 2009-05-06: Between versions 2007.07.07 and 2008.07.20, I gave the Big Integer Library a major makeover, reworking and cleaning up code written years ago to conform to my current practices and fixing at least one major problem (the implicit conversions) in the process.  Now for the past few months, I have been working on a similar makeover of this site.

Changes to the content are minor other than the redone home and "meta" pages, but I have majorly cleaned up the page-generating XSLT (using some EXSLT features, yay!) and will soon be generating htaccess files using a macro processor to make maintenance easier.  I'll post more information as it is convenient.  I've put a lot of effort into the site infrastructure; if anyone else is interested in adopting it, please let me know and I will put in the effort to maintain a releaseable "upstream".

• [# @] 2008-11-08: I was wondering why Firefox processes started via the GNOME "Launch web browser" keyboard shortcut saved my downloaded files with 644 permissions, even though I added a script in `/etc/X11/xinit/xinitrc.d/` to make sure my whole session ran with umask 0077.  It turns out that my session `dbus-daemon` was changing its umask to 0022 and Firefox was inheriting that.  I entered a freedesktop.org bug to get the dbus behavior changed.

• [# @] 2008-10-27: I just became aware that there's an official OpenOffice.org extensions site, and I submitted Measurements and SuperbChemistry to it.

• [# @] 2008-10-27: I finally updated SuperbChemistry to handle NH4+ and a few other cases correctly.

• [# @] 2008-09-06: I have added the just-released rsync 3.0.4 to the rsync packages page.

• [# @] 2008-08-31: Evince, the GNOME PDF reader, can save form data I enter back to the PDF file!  That's a really neat trick that I don't think Adobe Reader can do.  Now I can keep filled PDFs of the forms I submit for my records.

• [# @] 2008-08-26: Yesterday I gave my APPROX 2008 talk about my clustering work, and I have now posted the slides.

• [# @] 2008-08-03: Fedora, Livna, and even Adobe provide RPMs via a foo-release package that installs the necessary yum repository definitions.  I suppose I should do the same thing when I get around to whipping my own yum repository into shape.

• [# @] 2008-07-20: I have released version 2008.07.20 of my Big Integer Library with the conversion fixes and other improvements.

• [# @] 2008-07-18: My brother Michael has started a Web site called The Raven's Nest to show off some of his work.  There's an awesome picture of a raven from Wikimedia Commons for the logo.

• [# @] 2008-07-16: I made some more improvements to the development version of the Big Integer Library; see the commit log for details.  I am preparing to release the much-improved library with the conversion fixes in the next few days.  I feel like Wayne Davison preparing to release rsync 3.0.0, albeit on a much more humble scale!  :)

• [# @] 2008-07-16: I added more tests and some bitwise and blockwise accessor functions to the development version of the Big Integer Library.

• [# @] 2008-07-13: My Web site is emerging from a restructuring on the server.  Update: As of 2008-07-15 19:59 -0400, everything is up, including Mailman.  Please email me if anything doesn't work.

• [# @] 2008-07-10: I updated my evolution-data-server RPMs again to be based on evolution-data-server-2.22.3-1.fc9.i386.  The bug motivating these custom packages is now fixed upstream, so I hope I won't have to keep updating them much longer.

I generally test all changes to my Web site on my own computer before uploading them to my server.  That includes RPMs: I configured yum to use the repository in the local copy of the Web site both for testing and as a convenient way to get the packages onto my own computer.  This time, I applied the update using PackageKit instead of command-line yum.  Here's how I encouraged it to notice the new packages immediately (based on the yum refresh-packagekit plugin):

`dbus-send --system --dest=org.freedesktop.PackageKit /org/freedesktop/PackageKit org.freedesktop.PackageKit.StateHasChanged`
• [# @] 2008-07-08: The Mailman installation appears to have been down for most of June.  I revived it today and dealt with the waiting posts on the bigint list.

• [# @] 2008-07-01: I have posted packages of rsync 3.0.3.

• [# @] 2008-07-01: I have updated the evolution-data-server RPMs to be based on evolution-data-server-2.22.2-1.fc9.i386.

• [# @] 2008-07-01: I reported a bunch of bugs in the stdin-handling of Zenity, a GNOME program that lets shell scripts display dialog boxes.  They pertain to regular file EOF, losing the end of the input, and partial lines.

• [# @] 2008-06-23: Last week, I began to learn the functional programming language Haskell.  It appears to be very cool but not (at least, not obviously) a complete solution for the programming language of my platformI may update this news item with further information about my experiences with Haskell.

• [# @] 2008-06-23: I have really been falling behind in tracking rsync development: I stopped reviewing changes after v3.0.0-61-g819bfe4 and correspondingly stopped making packages.  I eventually hope to catch up.  For now, I went ahead and posted rsync 3.0.2 stuff on the rsync packages page.

• [# @] 2008-06-17: I have updated the clustering paper to link some of the bibliography entries to the papers on the Web for your reading convenience.

• [# @] 2008-06-16: My paper with Samir Khuller on streaming algorithms for variations of the k-center clustering problem is now posted.

• [# @] 2008-06-02: An RSS 2.0 feed for the site is now available.  I also added "@" links that let you send me email about news items and took the opportunity to give myself a name as well as an email address in the To field.

• [# @] 2008-06-01: I added a neat script ntfsresizecopy that copies an NTFS filesystem from one block device to another, resizing it to the size of the destination device.  This is easy for expanding; shrinking is done with some device-mapper magic.  I am going to announce this to the ntfsprogs people and try to get it integrated with gparted so that a user who copies/pastes an NTFS partition can shrink it in the dialog that comes up.

• [# @] 2008-05-28: I made some additions and improvements to the description of my computing platform.

• [# @] 2008-05-17: I updated the description of my email solution for Fedora 9 and added a fix for a bug where the GPG passphrase dialog deletes other remembered passwords.

• [# @] 2008-05-17: I am finally emerging from a long period of extreme business following the LATIN 2008 conference.  I plan to post an author's version of my LATIN paper and catch up on rsync development, among other things.

• [# @] 2008-04-02: My GPG key has picked up a bunch of signatures at today's cryptography talk organized by the University of Maryland Linux Users Group.

• [# @] 2008-03-16: I have finally written down a proper exposition of my ideas for a computing platform after giving fragmentary explanations to different people at different times.  The old description of Pure Imperative is now a subpage.

• [# @] 2008-03-11: I gave the rsync section a badly needed reworking as I finally made my own rsync source repository.  Stay tuned for useful stuff, such as a fixed --no-tweak-hlinked.

• [# @] 2008-03-01: Rsync 3.0.0 is finally here!  (And my RPMs are here as usual.)  This is an occasion to celebrate, but I'm also keenly aware of all the bugs and deficiencies that remain in 3.0.0, and I remain committed to fixing them for future releases.  I hope Wayne will be open to releasing 3.0.1, etc. as additional improvements are made.  If not, there will always be the official git repository, and mine where you can get my fixes even sooner (that is, once I get around to setting it up).

• [# @] 2008-02-16: As a Democrat, I sure hope my party gets its act together and comes up with a solution to the superdelegate/Florida/Michigan issue that won't upset people!

• [# @] 2008-02-16: I have posted my résumé.

• [# @] 2008-01-07: I noticed that my Measurements add-in no longer worked in OpenOffice.org 2.3 Calc.  I have fixed the problem in version 1.1 of Measurements.

• [# @] 2008-01-03: Visiting friends for New Year's Eve was fun.  Now who's going to celebrate 1200000000 Unix time with me (at 2008-01-10 16:20:00 EST)?  :)

• [# @] 2008-01-03: I recently added synthesized WAV versions of my compositions in the Music section.

• [# @] 2007-12-02: After reading about the egregious privacy violations of Facebook Beacon, I took some steps to strengthen my browser (Firefox) against correlation of my activities on different Web sites.  I installed Tor, an anonymous routing system, and will use it to the extent practical; sometimes it's slow and some sites (e.g., Google search) deny it access.  I also wrote a wrapper script for Firefox that creates and uses a disposable profile to isolate cookies. Update: These measures seem to be more trouble than they are worth in many cases.  I will probably use them only for Web sites that I mistrust.

• [# @] 2007-11-27: I have finally posted my complete paper on the least-unpopularity matching criteria.

• [# @] 2007-11-27: Wayne has finally disclosed and fixed the vulnerability in rsync daemons that I reported to him a while ago.

• [# @] 2007-11-23: My paper on least-unpopularity matching criteria has been accepted to the LATIN 2008 conference!

• [# @] 2007-11-05: If you thought the proof of Gödel's theorem was clever, you'll really enjoy this ingenious proof of Löb's theorem.  It appears correct; I wish I could claim to fully understand it.

• [# @] 2007-10-25: Which bug is cuter, the FindBugs mascot or the Bugzilla mascot?

• [# @] 2007-10-25: Today is my 18th birthday!  Now I am eligible to vote (using the registration I recently completed) and can have my own credit card (don't worry, I am going to pay it off in full each month), but on the other hand I have to sign up for the draft.

• [# @] 2007-10-24: I have recently redone my email setup and posted a page with some background and an explanation of the new setup.

• [# @] 2007-10-23: I am a bit upset with my Web host, DreamHost.  On 2007-08-08, before I signed up, I specifically asked whether I would be allowed to use part of my massive storage allocation for personal backups, despite a requirement in the Terms of Service that the hosting be used "primarily for the purpose of hosting a website".  A sales representative assured me that I would.  Then, on 2007-10-17, DreamHost announced that backups are prohibited.  It appears that most Web hosts "oversell" (i.e., offer users enormous amounts of space but depend on them not using it) and thus have to prohibit backups.  For a while DreamHost seemed to be fine with backups, but I speculate that it realized that people were going to use more space than it wanted to provide and thus abruptly reversed its position.

The incident demonstrates that DreamHost, despite its coolness factor, isn't above "business as usual"; that might be disappointing, but I won't whine about it.  What I will condemn DreamHost for is not being forthcoming about its motives.  It claims that the prohibition on backups is merely a "clarification"; when pressed about the contradiction of the previous assurance, a representative explained that the clarification was "for our staff" as well as for users.  I don't buy this; a reversal in the application of policy by DreamHost staff is something more than a "clarification".  I originally wanted to take DreamHost up on its 97-day money-back guarantee (I have until 2007-11-17) to "teach it a lesson", but I'm thinking that would be foolish; I certainly wouldn't save money to speak of by switching to another host.

In any event, if I need backup hosting, I will look elsewhere, probably to rsync.net.  I like its "philosophy", but its rates (in fact those of all backup hosts I checked) are far too steep for me to backup my entire machine.  I could save just a "briefcase" of critical files for fetching from other computers in case of need, but I might not need to do even that, now that I am in college and have access to my own computer at points throughout the day (I didn't bring the computer to high school).

• [# @] 2007-10-23: To work on branches of rsync, I have switched from patchsync to StGIT.

• [# @] 2007-10-16: I would be much obliged if you would help test the latest prerelease of rsync 3.0.0!  You can get it from the official site or my page of rsync materials, among other places.

• [# @] 2007-10-15: Microsoft Office may still be the best office suite around, but Microsoft's efforts to get its Office Open XML file format (which carries all the cruft of every version of Office that ever existed) accepted as an ISO standard are laughable.  Shame on the USA for voting to approve the standard.  Here is a site campaigning against the standard.  I especially like what Libya did (see this page).

Update on 2007-10-16: I am embarrassed to admit that when writing the above post I left myself entirely at the mercy of one side's propaganda.  Now I am somewhat better informed; I found this analysis and the range of comments on this article helpful.  Here is what I glean.  A number of the criticisms of OOXML apply equally to ODF: ODF has technical defects (though perhaps fewer than OOXML), was based heavily on an existing program's format (OpenOffice.org), and has some potential for patent encumbrance (Sun).  The salient advantages of ODF are: the process that resulted in its specification was more open, it reuses existing standards when appropriate (SVG, XLink), Sun is commonly seen as less evil than Microsoft, and several good free-software implementations of ODF already exist (most notably OpenOffice.org) but no one expects one to appear for OOXML anytime soon.  I am in favor of Microsoft publishing as complete a specification as possible of OOXML so that others can try to interoperate with it, but I still don't think OOXML should be approved by the ISO, especially not on the fast track; this looks suspiciously like a gimmick undertaken in bad faith to win Microsoft favor with government procurement policies that favor ISO-standardized software.

In any event, what may be more important than blocking ISO approval of OOXML is providing incentives for and working to overcome obstacles to ODF's universal adoption.  I've helped a tiny bit by choosing to target OpenOffice.org rather than Microsoft Office for my SuperbChemistry and Measurements tools.

• [# @] 2007-10-14: I am continuing to contribute improvements to rsync from time to time.  Recently I sent Wayne a bunch of fixes to the --detect-renamed patch.

• [# @] 2007-10-14: Some time ago, my organic chemistry class at the University of Maryland covered the most common cases of the Cahn-Ingold-Prelog priority rules.  Being a computer scientist, I naturally wanted to know the rules in complete detail.  I checked the Wikipedia article first but found it inadequate and possibly incorrect, so I went to the chemistry library and read the two original papers defining the system and then revamped the Wikipedia article with the information I got.

• [# @] 2007-10-05: Rsync 3.0.0pre1 has finally been released (announcement)!  IMNSHO it's about time, and the pre-release will encourage me to finally give rsync 3.0.0 some serious testing.  I added an RPM of the pre-release to the rsync stuff.  I also made the in-progress new manpage accessible from that page.

• [# @] 2007-10-01: I recently set up my computer to use an encrypted /home partition with dm-crypt, cipher aes-lrw-benbi (which I hear is immune to most of the attacks claimed against dm-crypt).  I enter the password during boot and then the computer runs as usual; the performance impact appears to be minimal.

Today, to continue the process, I shredded and deleted my swap partition.  In the process, I managed to accidentally delete my /boot partition from the partition table while it was still mounted; luckily, I was able to recreate the partition using the offset and size shown for the mount by hal-device-manager.  However, the deletions and recreation caused some partitions to be renumbered, and I had to reinstall GRUB (using a rescue CD) and edit my grub.conf and /etc/crypttab before the system would boot.  Now everything works again.  I'm posting this story to help anyone who might be in a similar predicament.

• [# @] 2007-10-01: I am now managing my pending patches to Eclipse using StGIT.  At first I was scared to import a project as enormous as Eclipse into git, but git handled it very well and the packed repository of the current version is only 84 MB.  Enabling, disabling, updating, and just generally keeping track of patches is so much easier with StGIT than manually juggling patch files. Now that I found a practical way to load changes from cvs up into StGIT (make a "patch" for the original source files and refresh it with stg refresh -p eclipse-cvs), I am a happy developer.

• [# @] 2007-10-01: I have submitted my work on least-unpopularity matching criteria to the LATIN 2008 conference.  I also posted the popular-matcher software that implements some of the algorithms I studied.

• [# @] 2007-09-25: I have helped Daniel Serrano, a friend from the University of Maryland, put up a Web site (currently consisting of a blog) at http://www.whypepper.com/ .

• [# @] 2007-09-09: I made some enhancements to Measurements and declared the result to be version 1.

• [# @] 2007-09-09: I wrote Measurements, an OpenOffice.org Calc add-in that tracks significant figures and units of measure.  This is a big help for analyzing data from a scientific experiment, so I'm really surprised no one has written this kind of add-in before.

• [# @] 2007-09-07: This morning I gave a talk about my work on preference-based matching.  The slides are posted.

• [# @] 2007-09-07: The site now has a favicon: the "blocky" mouse pointer that I drew a while ago.  If you have a better idea for the icon, I'd like to hear it.  In my testing, I found that oddly, Firefox seems to load a site's favicon only once per session, even if I press Ctrl+Shift+R.

• [# @] 2007-09-03: Each news item now features a permanent link (the # at the left)!

• [# @] 2007-08-28: I moved into my dorm room at the University of Maryland a few days ago.  I have been enjoying the orientation period, and I am looking forward to the start of classes tomorrow.

• [# @] 2007-08-23: Yesterday I returned from the 2007 International Olympiad in Informatics in Zagreb, Croatia.  I finished in 9th place with a gold medal (official results).  This is the last of my three years of competition in the USA Computing Olympiad and the IOI, and I would like to thank the USACO and IOI coaches, organizers, and sponsors for making this wonderful experience possible.

• [# @] 2007-08-23: Kevin McGehee, who for some years had generously hosted my Web site for free, advised me about a month ago that he planned to decommission his Web server.  I decided to move my site to commercial hosting, and I chose Dreamhost because Wayne Davison, the rsync maintainer whom I regard highly, appears to like it.  I moved the site to the new hosting on August 12th and took the opportunity to register my own domain, mattmccutchen.net, for it.  So far I am very pleased with the capabilities of the Dreamhost hosting.  Thanks to Kevin for pointing www.kepreon.com to my Dreamhost server so that I can ensure that old addresses under http://www.kepreon.com/~matt/ redirect to the corresponding new addresses for the next few months.

I am also considering moving away from the username "hashproduct" because it has unpleasant connotations; my preferred username is now "mattmccutchen" or similar.  I judge that using the new name everywhere and changing existing accounts would be many times more trouble than it is worth.  For now, I have just changed my most visible account name, namely my preferred email address, from hashproduct@gmail.com to matt@mattmccutchen.net.  At the moment, I plan to have all mail forwarded to hashproduct@gmail.com, where I will continue to store and read it.  Note: mattmccutchen@gmail.com appears to belong to a person other than me.

• [# @] 2007-07-16: I have stopped working on the custom kernel again.  Please email me if you want me to finish it or you want what I have so far.

• [# @] 2007-07-10: Recently I submitted three of my gitweb customizations to the git developers.  In the process, I managed to seriously break the gitweb installation on this site (it gave an error about gitweb_have_snapshot when asked for a tree or commit page).  The problem is now fixed.

• [# @] 2007-07-05: I posted patchsync 2.4, which has a few bug fixes.

• [# @] 2007-07-01: I am considering writing a library that caches hashes of files (MD5, SHA1, etc.) and is at least as good at detecting file modification as the git index.  Perhaps rsync will use it.  See this thread on the rsync mailing list.

• [# @] 2007-07-01: I have picked up the custom kernel again and have mostly finished a kernel matt6 that is based on Fedora's kernel 2.6.21-1.3228.fc7 .  Why Fedora?  I know some people would chew me out for using a distribution kernel for anything, but Fedora's kernel actually works!  I originally gave up on developing the custom kernel after a series of misadventures with variously configured vanilla kernels hanging on my computer.  I never figured out what the problem was, but recently I had the idea to try the Fedora kernel instead, and it has proved solid.  I'm building custom kernel RPMs with a modified, cut-down version of the Fedora kernel-2.6.spec, so I get to take advantage of the nice integration with the distribution (notably new-kernel-pkg).  I have some final documenting and testing to do, and then I plan to make an updated modified glibc and set of barebones userspace tools to go along with the kernel.  If all goes well, I will release it within a week.

• [# @] 2007-06-13: I successfully built rsync with mgear!  I posted the materials in case you want to try it for yourself.

• [# @] 2007-06-12: Improvements to Mage are ongoing.  I've noticed that a lot of people search Google for "mage build", land on my site, and don't request anything else; I wondered if a (software) build automation tool wasn't what they were looking for.  Indeed, at my mom's suggestion, I ran the search myself and found that a "mage build" is something in World of Warcraft.  Oops.  To avoid erroneously attracting people who intended the World of Warcraft meaning, I plan to rename Mage to mgear; I Googled mgear and there doesn't seem to be an important alternative meaning.  Conveniently enough, the mg- prefix in the code doesn't need to change.  Update on 2007-06-13: The rename is complete.

• [# @] 2007-06-04: I'm enjoying the USA Computing Olympiad summer program and doing some more work on Mage.

• [# @] 2007-05-28: I wrote a bunch more about the planned Mage build tool.

• [# @] 2007-05-28: I will attend college at the University of Maryland this fall!

• [# @] 2007-05-28: I posted a new musical composition, Traveller.

• [# @] 2007-05-05: I made a few minor updates/improvements to patchsync-settings and patchsync-filters for rsync.

• [# @] 2007-04-27: Eclipse Mylar is very slick!  It automatically tracks the files I have been looking at so I don't have to open them manually over and over again.  I used it to investigate and file a bug in EclipseAddendum on 2007-05-28: Mylar made Eclipse somewhat unstable, so I'm not using the Focused UI at the moment.

• [# @] 2007-04-23: Mage so far is finally available!

• [# @] 2007-04-17: I posted Logic Designer version 2.1.1, which has a few minor fixes, in preparation for my second annual presentation of the Logic Designer to computer science classes atMontgomery Blair High School on Thursday.

• [# @] 2007-04-10: Thanks to the Intel Science Talent Search for a beautiful new Dell Latitude D620 laptop!  It came with Windows Vista, and I wanted to install Linux, so I shrunk the NTFS partition with ntfsresize from the Linux-NTFS project.  Then Windows wouldn't boot.  I searched Google and found the cache of a page that recommended running ntfsfix from the latest ntfsprogs from CVS on the partition.  I built the ntfsprogs on my main computer, moved the resulting install to the new computer, running the Fedora Core 6 rescue mode, and ran ntfsfix, which worked like a charm.  Now Windows starts again and I have space on the disk to install Linux.

• [# @] 2007-04-07: I am still working on Mage.  I still intend to post my current development version of it, which seems to work but has only a few of the planned features.  I noticed that Mage was slow because it had to run a shell and about five additional processes to build each file, and that gave me an idea.  I would like a special shell "busybash" that combines bash and some of the coreutils into a single executable, busybox-style. When a shell script refers to a program included in busybash, busybash forks and runs the program internally with a function call instead of an exec.  This avoids the considerable overhead of dynamic linking and glibc initialization.

• [# @] 2007-03-11: Thanks to everyone who visited me at the Intel Science Talent Search to learn about my project, Least-Unpopularity-Factor Matching.  I finally made a page about the project, which links to my full paper.

• [# @] 2007-03-02: I am working on Mage, a general-purpose build system on top of GNU Make >= 3.81 whose features will include warning replay, rebuilding on command change, and non-clobbering of user-modified files.  If you write a program, you can package mage.mk with its source and write a Makefile that contains Mage rules, and your users need not know the difference: they can build the program by running make.  I will post more about Mage, including my current version of it, soon.  If you can think of a better name for the build system, please suggest it to me!

• [# @] 2007-02-27: I modified my gitweb setup to offer both tar-bz2 and zip snapshots since most downloaders of the Big Integer Library seem to want zip files.

• [# @] 2007-02-24: With a lot of help from Kevin, I have set up gitweb browsing of the Big Integer Library repository.  Check it out (err...clone it...whatever)!

• [# @] 2007-02-16: I posted a new version of the Big Integer Library that fixes a crash on a *= a.

• [# @] 2007-02-07: I am a Finalist in the 2007 Intel Science Talent Search!  Many thanks to Dr. Samir Khuller for helping me with my project.

• [# @] 2007-02-04: If you write chemistry in OpenOffice, you might like my SuperbChemistry macro.

• [# @] 2007-01-21: Kevin McGehee, who hosts my site, has set up an access log for my site that I can download.  (Thanks Kevin!)  I'm analyzing the log with awstats.  I'm most interested in which pages are visited most often so I can bias in favor of improving those pages.

• [# @] 2007-01-21: I finally got gnome-mount to mount external FAT drives with 600/700 permissions by default!  A while ago I had tried to do this with hal policy, but it never worked.  This time I accomplished it by adding the appropriate mount options to the gconf key /system/storage/default_options/vfat/mount_options.  To make the new default apply to all users on my system (umm...me), I ran gconf-editor as root, selected "File" -> "New Defaults Window", and made the same change there.  I also enabled exec and noatime by default for ext3 drives by creating /system/storage/default_options/ext3/mount_options.  gconf-editor does not have a command to create a directory, but I ran "New Key" in default_options and gave ext3/mount_options as the key name, which worked.  It seems that gconf directories spring in and out of existence depending on whether they contain any keys, much like directories in a CVS checkout.  I had to restart gconf-editor to get it to notice directory (dis)appearances.  I also had to restart my per-user gconfd-2 to get it to notice the change to system-wide defaults.  Finally, I noticed a strange behavior in gconf-editor: when I unset a key, the value appears to change to the schema default, but really the system default takes effect.

• [# @] 2007-01-21: The CVS version of rsync (with incremental file-list recursion) is hanging on me.  Wayne and I are working on getting it fixed.

• [# @] 2007-01-13: I have a bone to pick with Google for returning results that point to content requiring payment without marking them as such.  For example, I searched for gadget "computer science" reduction. As the sixth result, Google returned a research paper in PDF format, or so it appeared.  I clicked the link and was asked to buy access to the paper from IEEE Xplore.  Google's Webmaster Guidelines say that Web sites should not show different content to Google than to ordinary users; I believe Google has broken its own rule by showing the page differently in its results than the page appears to ordinary users.  I reported the result as spam; we'll see what (if anything) happens.

• [# @] 2007-01-13: Yippee!  I have created a Wikipedia article (er...had it created for me) for the first time.  It is on "gadgets" in computer science.  I wrote it because I did some research of my own that used gadgets to reduce 3-satisfiability to another problem, but Wikipedia probably isn't interested in that.

• [# @] 2007-01-13: I posted three more of my compositions in Music: Part Writing, Go to the Place, and Dream Chorale.  Have a listen!

• [# @] 2006-12-24: After upgrading my computer to Fedora Core 6, I could not print from GNOME applications: the "Print" menu item was mysteriously disabled.  I redid my CUPS configuration, but that didn't fix the problem.  Finally, today I got the source code for gedit as a sample application and found the conditions under which its "Print" menu item is enabled: the current tab is in normal or Print Preview state, and printing is not "locked down".  Interesting.  This "locking down" was controlled by a gconf key, namely /desktop/gnome/lockdown/disable_printing.  I opened gconf-editor on this key and found that it was on; so were the other lockdown keys.  I don't know how they got turned on, but I turned them off and now I can print again.

• [# @] 2006-12-22: Winter break, finally!

• [# @] 2006-12-16: I finally upgraded my computer to Fedora Core 6.  The upgrade had been long delayed because the new hal RPM-conflicts with kernels before 2.6.17, and all vanilla kernels 2.6.17 or newer that I made seemed to hang.  At first, the Fedora kernel hung during startup as udev was starting, but once I blacklisted the hostap driver for my Linksys WPC11 wireless card (I like orinoco better), the kernel seemed to work.  I booted into it on Wednesday and it had not hung yet, so I decided to go ahead and remove my known-good 2.6.16.1-based kernel and try the upgrade.

I decided to upgrade using Yum even though doing so is discouraged.  I figured Yum would be less interactive and less disruptive than Anaconda and I wouldn't have to make a boot disc.  In exchange, I had to troubleshoot some dependencies.  Beagle needed poppler-utils, and xfig needed xpdf which needed xpdf-utils, but the new poppler-utils conflicted with xpdf-utils.  This seemed to be a catch-22 until I realized that the new xfig didn't need xpdf any more.  So I forcibly removed xpdf and xpdf-utils, breaking xfig, but then the upgrade fixed xfig.  Yum wasn't quite smart enough to figure out this plan.

My first reactions when the upgrade completed: The gdm theme gets tackier with every release, and I can't stand the lighter blue in the Mist theme.  However, Firefox accesses Gmail much faster than before.  Firefox used to take 5 seconds to draw my Gmail inbox when I exposed the tab; now it takes less than one.

This is an unusually long piece of news, but perhaps people who ran into the same problems as I did upgrading to Fedora Core 6 will benefit if Google indexes it.

• [# @] 2006-12-16: I am still working out the kinks of patchsync and the settings and filters files for rsync development.  Expect minor fixes and improvements to be posted frequently for the next few days.

• [# @] 2006-12-14: I have finally completed and posted version 2 of patchsync.  Enjoy!

• [# @] 2006-11-29: I just made a bunch of enhancements to patchsync.  The largest is that it can now set up a staging directory for you; the syntax is patchsync --new <trunk> <patch> <branch>.  The staging directory format has changed incompatibly, so to migrate, you must delete and recreate the branch and staging directory.  I will post the improved version of patchsync soon.

• [# @] 2006-11-21: I merged my kernel customizations with the official kernel 2.6.18, but the resulting kernel hung.  Arrrggghhh!  I probably broke one of the bzillion locking rules that I haven't yet learned about.  I guess I'll have to add my changes one by one to the official kernel to see what is causing the hanging.  But the trouble is the customized kernel ran fine for several days before hanging, which means it will be hard to know for sure if a semi-customized kernel is good.

• [# @] 2006-11-21: I propose an improvement to the unified diff format that gives numbers of matching lines elided instead of line offsets.  For example, the diff on the left would become the diff on the right.

 ```--- foo +++ bar @@ -1 +1,2 @@ +AA A @@ -3,2 +4 @@ C -D``` ```--- foo +++ bar +AA A @@ 1 matching C -D```
A small change to one of the compared files may cause a large change to a traditional unified diff (many line offsets change) but always causes a small change to a diff in my format (a few matching regions change in size).  This locality property of my format is good because it (1) makes diffs easier to edit by hand, (2) allows a patching tool to warn about one wrong matching region size instead of many wrong line offsets, and (3) would reduce the size of the metapatches needed to update rsync's acls.diff.

• [# @] 2006-11-16: I am working on a new version of my custom Linux kernel.  It will be called matt6 and will be based on the official kernel 2.6.18.  I just discovered that I made a mistake in kernel matt4 and it doesn't actually restrict hard-linking to other people's files the way it should; I will fix that in matt6.

• [# @] 2006-11-08: Rsync 2.6.9 has been released!  I have posted the usual assortment of related materials here.

• [# @] 2006-10-29: I posted Dance and Variations, one of my musical compositions.

• [# @] 2006-10-28: My platform and programming language might be similar to, or based on, Coyotos and its BitC, respectively.

• [# @] 2006-10-28: Whoopee!  My MIT application essay is done!

• [# @] 2006-10-22: I discovered some bugginess in the ACL preservation code in rsync 2.6.9pre2.  I'm glad Wayne fixed it in time for rsync 2.6.9.

• [# @] 2006-10-21: I have disabled SSH access to my computer from the Internet because someone broke into an account that had a weak password.  I have not deleted any accounts.  If you want to log in or want a copy of your files, email me, but I'm guessing nobody cares since nobody has logged in since March.

• [# @] 2006-10-17: When I Googled myself, Google turned up a Web site claiming to offer a "cracked" version of my FishSimulator.  It appears that the site crawls the Internet for commercial software offered for download and generates pages claiming "full" or "cracked" versions thereof.  It's ironic that the site grabbed FishSimulator, which (I was about to say) is free and open source.  Actually, I forgot to post the source code; now it is available.

• [# @] 2006-10-17: I added some historical notes to the rsync stuff page.

• [# @] 2006-10-16: At some point in the future I am hoping to create a computing platform called Relative or Arenas or something like that.  Its programming language will be Pure Imperative.  I'm beginning to think it might run on a kernel based on GNU Hurd because Hurd was designed with some of the same goals.  Humor me while I speculate about this platform.  It will probably get its own page soon.

• [# @] 2006-10-14: You may find patchsync useful; it synchronizes patches and branches.

• [# @] 2006-10-13: Whoopee!  Rsync 2.6.9pre1 has been released!  Some related packages are here.

• [# @] 2006-09-25: Oh no, my StringMatcher improvements broke things in Eclipse.  I hope the problem gets fixed soon, whether via my patch or otherwise.

• [# @] 2006-09-23: College essays...what fun...

• [# @] 2006-09-16: So there is a way to add a prefix or suffix to each element of an array in bash!  Consider arr=(foo bar baz).  I tried "x\${arr[@]}z", but that gave "xfoo" "bar" "bazz""\${arr[@]#b}" operates on each element of the array and gives "foo" "ar" "az".  Since I could remove prefixes, I expected there would be a way to add them, too.  I hoped to "replace the empty string" with my desired prefix using "\${arr[@]//x}", but bash took the // to mean "replace many times" instead of "the pattern is the empty string".  Finally, today I reread the documentation and found that "\${arr[@]/#/x}" does what I want: the # matches the empty string at the beginning of each element.  Analogously, "\${arr[@]/%/x}" adds suffixes.

• [# @] 2006-09-09: Oh no!  Kernel matt5 is hanging!  If you're using it, you should switch back to matt4.  Here's my kernel page.

• [# @] 2006-09-01: I have been trying to implement significant-figure-tracking arithmetic on the TI-89. I used an undefined function as a structure (m for measurement) to hold a value and the number of significant figures.  I can't augment the simplification rules of the built-in operators, so m(1, 2) + m(1, 3) won't simplify.  I can write a function that traverses the tree of an expression using part and combines measurements as appropriate when it encounters a built-in operator.  However, two things still go wrong: (1) The TI-89 does not allow a unit in isolation; it automatically multiplies the unit by 1.  Thus, it reports an infinite, right-recursive expression tree for a unit.  (2) I cannot stop the TI-89 from simplifying the subtraction in ms(m(1, 1) - m(1, 1)) before calling ms.

• [# @] 2006-08-27: It would be cool if Java could issue a user-specified warning each time a program element is used.  For example:

```@IssueOnUse(Severity.WARNING, "rare",
"Are you sure you mean to use foo() and not bar()?  Check the documentation.")
public void foo() {
// ...
}
@SuppressWarnings("rare") private void dinglewompus() {
foo();
// ...
}```

• [# @] 2006-08-27: Enjoy the utilities!

• [# @] 2006-08-26: My custom kernel is finally updated for 2.6.17 and the new syscall numbers.

• [# @] 2006-07-27: Grrr!  Java compilers are stingy about including information about generics in class files: they only include what is needed to compile other classes.  In particular, even with -g, class files don't give the type arguments for calls to generic methods.  This makes it hard to write program analysis tools that operate on class files.

• [# @] 2006-07-23: Grrr!  The kernel people added syscalls 311 through 316, which means that I need to change the numbers of my custom syscalls to 317 through 322 and rebuild both the kernel and glibc.  Eventually I will get around to it.

• [# @] 2006-07-23: Please have a look at my plan for Pure Imperative.

• [# @] 2006-07-23: I have been at the Research Science Institute at MIT since June 24, and I have just now figured out how to get my computer on the Internet so I can update my Web site.  :)

• [# @] 2006-06-19: Churning out classes with the Eclipse JDT is so much fun!

• [# @] 2006-06-14: Have a look at Javari, a version of Java enhanced with a readonly keyword.

• [# @] 2006-06-14: If you have time to spare, please test and comment on my proposed changes to rsync deletion.

• [# @] 2006-06-08: Metaesthetics has finally recovered!!!  That means my site is mirrored at http://metaesthetics.net:8080/hashproduct.

• [# @] 2006-05-18: My build system now generates Google Sitemaps automatically!  But we'll have to see if they validate.  I squashed some reproducibility issues.  (Gzip, I want to slap you for saving the current time as "mtime" when packing from a pipe!)  Unanticipated detail: I needed three different sitemaps because the site is supposed to be available three different places.

• [# @] 2006-05-16: I'm writing a Java program in which I want to collect some array-related routines into one class.  I'd love it if the class could extend java.util.Arrays so I can get both sets of routines with one static import.  But it can't because java.util.Arrays is made noninstantiable with a private constructor.  I believe the right way to make a class noninstantiable is to make it abstract and define a method "abstract void noninstantiable();".  It's just as secure (outside the package, anyway) and allows extending.

• [# @] 2006-05-14: Google for "the" and note the first result!

• [# @] 2006-05-14: Somebody should write a git-style hashing filesystem!  Because I want one!  :)

• [# @] 2006-05-14: Let's see if I can hack my build system to produce a Google Sitemap...

• [# @] 2006-05-13: Kernel matt3 is available.  It fixes the /proc/*/fd issue and allows one to construct a privileged deletion system.  In addition, the RPMs have been moved to the repository, where they belong.

• [# @] 2006-05-11: Slight problem in kernel matt2: you can't readlink files open for writing in /proc/*/fd.  A fix should be available soon.

• [# @] 2006-05-07: Oops, I forgot nscd!  Now the nscd binary RPM that goes with my glibc is available.

• [# @] 2006-05-07: Two more recordings posted in Music.

• [# @] 2006-05-07: My second custom kernel finally sees the light of day.  Download it from my kernel page.  There's also a customized glibc.  Customized qmail isn't posted yet and customized coreutils isn't written yet, but my minimalistic userspace utilities are posted.

• [# @] 2006-05-02: Woohoo!  My new custom kernel with symlink permissions (.matt2) is working!  If you have an account on my computer, log on and check it out.  A patch of my customizations and related materials (i.e., qmail customized to use setuid instead of sticky and some userspace tools) will be available soon.

• [# @] 2006-05-02: Two more collections of music recordings have been added: the Sonatina in Colors and Bach's French Suite #5.  Coincidentally, tomorrow morning is the AP Music Theory test.

• [# @] 2006-05-01: Music has been added.

• [# @] 2006-05-01: My site has moved, my email address has changed, and now the Verizon space has a "gateway" of sorts.

• [# @] 2006-04-03: Tilp broke, so I had to use TI Connect to release Logic Designer 2.1.  It is finally available, and I hope no more bugs will necessitate the tedious process of another release.

• [# @] 2006-04-01: Does there exist a cryptographically secure "associative" hash function (one such that, given the hashes of two strings, one can compute the hash of their concatenation)?  Such a hash could be incrementally recomputed when part of the input changes, and it would provide a much easier version of Diffie-Hellman key exchange.

• [# @] 2006-03-29: Michael Forbes wonders: how can a group of people, each having a number, determine the maximum of their numbers without anyone's number being revealed personally to anyone else?

• [# @] 2006-03-14: The POSIX filesystem interface is really not meant for the real world!  Trying to make up for its deficiencies in rsync is really frustrating.

• [# @] 2006-03-11: Rsync 2.6.7 has been released!  Find some related materials on my rsync page.  Wayne and I are still working on a much better ACL preservation system that will come in a future release; if he doesn't do a release officially, I'll post an rsync-acl 2.6.7.1 or something.

• [# @] 2006-03-02: I'm trying to choose a version control system to institute for a number of my projects.  CVS and Subversion are both good, well-known, and Eclipse-supported.  Darcs may be even better for my purposes.  Other ideas?  Ideally, the system should make it simple to copy one folder out of a repository so the public may inspect its history.

• [# @] 2006-03-01: Build system enhancements!  Now I use a few large passes of rsync, not one call per file.  And I isolated metadata so the whole site doesn't recompile when I change the front page.

• [# @] 2006-02-26: ticalc.org, get a move on it and post the Logic Designer!  Never mind, they did.  :)

• [# @] 2006-02-24: Logic Designer 2.0.4 is available here and pending on ticalc.org, and now there's a changelog.

• [# @] 2006-02-18: How does one iterate through all maxflows of a network?  Is it easier when all edges have unit capacity?

• [# @] 2006-02-15: How does one prove that, in an infinite square lattice of points colored with two colors, there must exist an aligned square whose corners are all of the same color?

• [# @] 2006-02-14: Another bug has been discovered in the Logic Designer!  This one's a graphical glitch that occurs when you clear an input that is already cleared: the gate fails to unblink.  The Logic Designer editor's damage-and-repair graphics system is an improvement upon clearing the screen, but it's still unreliable.  Any ideas?

• [# @] 2006-02-14: I'm still arguing with some Eclipse people over a bug affecting the PDE's "Find unused dependencies".  Let's see what happens.

• [# @] 2006-02-05: The official rsync has incorporated all of my changes!  See my rsync page.

• [# @] 2006-01-24: Metaesthetics is back up!  Hooray!

• [# @] 2006-01-18: I hacked my kernel!  Take a look at the changes, or log onto my computer and play with the new system.

• [# @] 2006-01-15: I posted my unfinished Vectors paper.  Find it in Mathematical Documents if you are so inclined.

• [# @] 2006-01-15: Take a look at my newly posted MATLAB inversion animation, which has a pretty screenshot.

• [# @] 2006-01-13: I found a bug in Eclipse and suggested a fix.  Maxime Daniel fixed it.