Just about a year ago, I acquired a 3D printer.

I've been casually reading about the progress of hobbyist 3D printing since the RepRap days, but sometime in late 2017 I decided to seriously consider whether I should get one for myself. I'd already purchased items from printing services (i.materialise and Shapeways), both existing and of my own design, and that experience taught me that I wanted to do more and to iterate cheaper and faster. As a sanity check, I made a list of further things I thought I could make with one — not general themes but specific items to solve problems I had. That list was immediately filled with ten or so items, so I bought one.

I purchased a Prusa i3 MK3 kit printer (despite, at the time, uncertainty about whether the MK3 design was flawed as a lot of people were reporting quality and reliability issues), set it up in April 2018, and have been printing things ever ever since (with very little trouble).

I've been posting my designs on Thingiverse (pictures there) and on Github — rather, those that I have declared finished and documented. There's another 30 or so that aren't published, yet.

(You can also see hints of some other ‘new hobbies’ in what I've been posting, but I'm overly fond of putting things in chronological or at least dependency order.)

I really haven't been posting very much, have I? It's mostly the job occupying most of my “creative energy”, but I've also been doing a little bit of this and that and not ever finishing something to the point of feeling like writing it up.

On the programming-projects front, I'm attempting to extract two reusable libraries from Cubes for the benefit of other web-based games.

  • Measviz takes performance-measurement data (frames per second and whatever else you want) and presents (in HTML) a compact widget with graphs; my excuse for not announcing it is that the API needs revision, and I haven't thought of a good toy example to put in the documentation-and-demo page I'm writing, but if you're willing to deal with later upgrades it's ready to use now.
  • The other library, currently in need of a good name, is a generalized keybinding library (generalized in that it also handles gamepads/joysticks, which are completely different). You define the commands in your application, and it handles feeding events into them. Commands can be polled, or you can receive callbacks on press and release, with optional independent autorepeat. It's currently in need of a name, and also of API cleanup.

I've been making some sketches towards a redesign of E (list archive pointer: starting here), basically to take into account everything we've learned over the years without being constrained by compatibility, but it hasn't gotten very far, partly because language syntax is hard — all options are bad. (The current E syntax is pretty good for usability, but it has some particularly verbose/sea-of-punctuation corner cases, and I'd also like to see a simpler syntax, with more facilities moved into code libraries.)

Status update

Sunday, July 8th, 2012 07:15

Arrived in California a few days ago; setting up assorted arrangements. I start work in a week.

It seems I entirely forgot to blog this previously: Google hired me full-time after my last internship; I start in July. I'm currently working on all the arrangements for getting myself there, which includes:

I want your recommendations for housing in Mountain View, CA or the close vicinity.

I am interested in recommendations either for permanent housing or a temporary place-to-stay (so that I can do research in person). I intend to initially pack two-suitcases light and have All My Stuff shipped later, so just about anything will do temporarily, but for permanent housing I am thinking of something along the lines of a one-bedroom apartment, though I would consider some sort of sharing.

Update: I have found a room for my immediate needs. I am still interested in recommendations for permanent housing.

I particularly desire, not general advice on how or where to search unless it is especially specific, but personal recommendations of locations you or a friend have had a good experience with.

Regarding location, these attributes would be of interest: comfortably accessible by public transport and/or bike routes (that is, I plan to attempt to get away with not owning a car); close to Google's campus (Amphitheatre Parkway); and lastly, close to such amenities as a good grocery store. But above all else, I want your recommendations of quality and value.

Done, done, done,

Friday, May 4th, 2012 20:58


I have completed my last final exam and my last course project of my last semester. I will be graduating a week from now. I have a job starting in July.


In September, I wrote of my new project Cubes that “unfortunately, it wasn't an idea for either of my course projects this semester.” Since I have completely failed to find motivation for the course-related project I had planned to do, þreader (a thread-emphasizing feed reader; you can read the project introduction), I have decided to make the best of it and somehow make Cubes into the needed project.

I will therefore be using Cubes as my project for the course CS459 Human-Computer Interaction; the main consequence of this is that I need to actually study the potential users of my system.

So. To recap, Cubes is a block game (like Minecraft) where the blocks are made out of blocks; in principle, you should be able to build a complete custom block game from scratch simply by building the appropriate block-set, out of blocks. If you're a potential user of a game like this, and interested in giving me data (surveys, interviews, etc.), let me know. I will have something for you within the next few days.

Also, the live version of Cubes now supports load/save (either to Local Storage or by cut-and-paste of text (!)), so you can save your work! (I don't promise not to change the world format incompatibly, though.)

I think I have a problem with writing. Namely, that I find it difficult to get around to starting a project involving writing, when it isn't 100% straightforward “The answer to this problem is…” or a little link or tip. I’ve had several “blog posts I should write” queued up, and I’m not getting around to doing my homework assignments promptly.

I’m considering setting a “write something every day” goal, or similar.

I’ve got two new projects to blog about. Let's see how soon those posts show up.

I have updated the Minecraft topic at my web site, bringing it up to date with changes, adding many new links, and information about my new world. Also, I didn't previously announce this:

I am running a Minecraft server. I've been running one for a while, but it had a rocky start trying to run on a shared Linode. It now has a dedicated machine (though one which is rather old and running on a home cable connection) and is running 24/7.

The address is: mc.switchb.org

This server runs a copy of my single-player world, updated each day, so changes you make are not persistent (except for your inventory). This is a place to tour, or use for building experiments, not to live in. However, I have attempted to make it suitable for multiplayer use, with direction and instruction signs and multiplayer-capable rail stations (though most of the rail tunnels are single-track).

Feel free to suggest improvements to the facilities, or additional builds.

(Home sweet home.) (Cactus and flower farming.) (Mob tower and access routes.) (Rail hub station.)

(Note for those who have tried the server before: I recently fixed a problem causing new players to spawn nowhere in particular rather than at the spawn station.)

In California

Thursday, May 19th, 2011 09:12

Oh, and I should mention: I have arrived in Mountain View, California and have started my internship at Google with the Caja team.

Google again

Saturday, February 12th, 2011 09:28

It’s now confirmed that I'm going to be doing the same thing this summer as last summer: working at Google on Caja.

All comments, congratulations, housing recommendations, and activity suggestions are welcome.


Saturday, October 2nd, 2010 01:02

(A view from the observation tower.) (Inside a cave.) (Home sweet home.)

On September 26 I bought Minecraft.

This game is a severe productivity hazard. Unless you count hollowing out virtual mountains as productivity.

(For those that haven't heard about this recent craze, Minecraft in its most interesting variant is basically a sandbox game with resource limitations and enemies. You get an infinite-other-than-coordinate-limits procedurally-generated world (often beautiful) made up of cubical blocks, with resources scattered (and buried) around it. And monsters whenever it's dark (i.e. nighttime and in caves). Then you get to reshape your part of the world by adding and deleting blocks, and crafting objects out of the resources you've dug up. First you build shelter, then you explore caves and build farms, then you build grand castles — or underwater bases — or intricate traps and mazes — whatever. It's very open-ended.)

I've put up an automatic copy of my world as a multiplayer server; just connect to switchb.org in Minecraft Alpha. (With the usual caveat that Alpha multiplayer is glitchy, so the mechanisms won't work as intended.) I may take it down if the load is significant, though.

I have finished my internship at Google (which I do want to post about eventually).

I am now about to start classes at Clarkson University. Everything's going smoothly, except the network to my room is broken and I'm connecting over my shiny new phone (hooray for Android 2.2's “Portable Wi-Fi hotspot”) and so I'm temporarily off several of my Internet activities due to bandwidth/latency/intermittency.

(On the upside of technical issues, I managed to get Apple Mail and my phone to talk to Clarkson's Exchange server, so no more having to remember to check my college email more than once a day. What wasn't obvious: When setting up the account in Mail, put the Outlook Web Access server name in both the “Incoming Mail Server” and “Outlook Web Access Server” fields. I haven't figured out how to send mail from their server; perhaps I need to upgrade to Mac OS X 10.6 for that.)

I designed the new logo for Tahoe-LAFS.

“The most important constraint [on naming this] is that it's a good pun.”

(no subject)

Wednesday, July 14th, 2010 08:33

It appears that everyone From The Internet lives in California.


Monday, May 31st, 2010 13:57

In California. Settling in. Getting some rest. Caught up on my email. Starting at Google tomorrow.

I am right this minute packing my luggage and reviewing plans. I will be getting on the train tonight at 8 PM Eastern, and traveling until 9 PM Pacific on Sunday, May 30.

I will probably not have Internet access for most or all of the trip.

Done. Next?

Tuesday, May 18th, 2010 10:27

Last exam done for the semester! Halfway done with college in general!

Now I just have to move to California for the summer job.

(Most of the arrangements are settled; I'll be arriving Sunday, May 30, and living in Cupertino, at least at first.)

After this summer I'll be transferring to Clarkson University to finish my bachelor's degree.


Thursday, April 1st, 2010 15:06

Weird thing: Once upon a time I did a lot of work with MOO-code. Ever since then, if I’m writing something and my typing gets ahead of my thinking, I often type “#-1”. It’s not meaningful in the context, it’s not a joke to myself — I have no idea what’s going on there.

(In MOO #-1 is the canonical value which is an-object-reference-but-not-a-valid-object, like null in Java.)

One of the things I’ve been procrastinatingah, not had the time to do, being busy with school and other projects, is announcing and working on a job search for this summer. I have posted my resume, but I didn’t even get around to mentioning that. The process really doesn’t excite me that much — it’s essentially research, comparison shopping, which I have never been very fond of.

But, last October, I was contacted out of the blue by a recruiter asking if I was interested in opportunities at — Google. After checking that it wasn’t a spoof I naturally said yes, and after a number of rounds of information exchange and interviews,

This summer, I will be (well, subject to my completing the process of accepting the offer) working as a Software Engineering Intern at Google, with the Caja team, in Mountain View, CA.

So — whoa and yay and other such cheerful words. And thanks to my friends at Google who referred me and nudged the process along.*

The most uncertain remaining step is finding housing in or near Mountain View (could be as far as San Francisco or San Jose; Google runs a shuttle bus and is convenient to public transportation). Google has provided some general advice-for-interns, but I’d like to hear input from my readers and friends who already live in in the area.

Some parameters:

  • I would consider living with other people, but I wouldn’t want to take a chance on a complete unknown. (So if you are someone or know someone with a room...)
  • Speaking of taking chances, make the chance of being mugged on the way home in the evening very small, please.
  • I am traveling from the east coast, probably by train, so I don’t want to have to transport a lot of stuff, or buy items that I’ll use for only three months — so a furnished space is better.
  • I do not own a car, but I know how to drive one.
  • I do not own a bicycle, but I used to know how to ride one.
  • This will be the first time I have lived outside of my home city for longer than a week’s visit/vacation.

*Y’know how job search advice is big on saying you should be “networking”? If you’ve thought you’re too much of the non-face-to-face-social non-polite-small-talk would-rather-talk-to-people-through-the-computer sort for that — take me as an example. This opportunity came to me because of other people who knew me entirely through my work on open source projects (E, and thus Caja-CapTP) — I didn’t do anything that I wouldn’t have done for other reasons anyway. I’m not saying you shouldn't do any of the other stuff you might be thinking of — I’m saying this stuff counts.