Typography : Computer Modern

2010.02.05 in school and typography



A little something I made for our first Typography project: the double-slit experiment out of Computer Modern characters. Click on it to view the rest of the project...

Jumpin' Right In!

2010.01.26 in school

Already getting to work! Mondays, Wednesdays, and Thursdays are going to be really boring, Tuesdays and Fridays are going to be really long but really, really awesome.



That's the output of my first graphics project (the "getting GL set up" project, nothing particularly annoying).

Finished this week's homework today; yay! Tomorrow is a day to relax (no Bio lab this week), hang out, get concert tickets, watch the Apple keynote, and do a phone interview for my Mathematica certification. FUN!

Spring 2010 Schedules

2010.01.21 in school

Luckily, 9 AM Biology is a test section, which only happens a few times a year!



A New Theme

2010.01.21 in personal

If you visit this site occasionally, you've probably noticed that it's all white now! I'd gotten a bit tired of the black, and wanted something a bit softer. The buttons are heavily Clearlooks-inspired, and on the whole I'm happy with the redesign. I'm still a little bit sad that I'm completely incapable of designing anything with color, but that's ok... there's a lot of stuff to be had by sticking to greyscale, too!

There's also a new projects section, which I will eventually fill (it's very bare-bones right now) with details of stuff that I've been working on. I haven't — in the past — had a static place to put updatable information on projects; I usually write stuff in a blog post, and then another a bit later, and so on; this doesn't really make any sense!

I've made the old "Stuff" page disappear for the time being, but I'll probably bring it back in some form someday... it doesn't matter much now, though, with the move to GitHub and the projects page.

The whole site should be much smaller and load much faster now — I've removed a lot of stuff that was hanging around for no reason, like jQuery, a random unused CSS file, and various other things. I also upped the cache expiration duration on a lot of images to a month instead of an hour, so that should help some (though it seems Safari is having a hard time respecting this, for some reason, but Firefox seems to).

Also, by the next post here, I should have — at the very least — the images and large-file content of this site moved over to Amazon S3. My crazy 10$-for-a-year Dreamhost deal is coming to a close, and between their pricing (way too high for a static site, it'll be something like 2.50$/month at Amazon, a quarter the price) and their bandwidth (50KB/s down?! I get ~1MB/s down with S3!), it's time to say goodbye. I have until March to move myself, Matt, and Carol out of there.

A Move to GitHub

2010.01.18 in code

I decided that hosting my Git repos on Jayne was a silly idea. While it did mean nearly infinite storage (and upgrades at a fraction of the price of any alternative) and incredibly fast clones/pushes, having to deal with repository downtime every time I move my computer or decide to start Windows to play a game is simply ridiculous.

So, I've moved everything to GitHub. One visiting my Github profile should keep in mind that a lot of the stuff there wasn't public before, and 90% of it is stuff that got about 1% of the way done and was abandoned, or stuff which is years old at this point. Therefore, browsing around there is not recommended. However, from now on when I reference projects, I'll link to GitHub (and I'll probably go back and update old links in my blog, too).

Interesting repositories include the one for this site; my old GMP+GD mandelbrot generator; Sheeple, the Gtk contact management app I've been working on for RCOS; and the code behind my web-based Aperture tag browser.

Kaylee's Last Stand

2010.01.15 in personal

Two and a half years ago, on my way out of CHS and on to RPI, my parents (thank you!) replaced my aging PowerBook G4, Trillian, which had just turned 4. Kaylee, my then-brand-new MacBook Pro, came on the 18th of June, 2007, two days after graduation. Since then, it's been through a lot; five semesters of RPI, a trip to Spain, two GSoCs, three different companion desktops (Trinity, then Jayne mk. I and II), countless trips to Boston and New York, my entire time with Gnome, and over 8000 photographs.



Anyone who knows me surely knows that it's a hard job to be my computer — you'll always be busy doing something, fans spinning at a ridiculous rate more often than not. And while I'm generally very gentle and careful, it's likely you'll fall at least once in your lifetime — Kaylee did, off of the top bunk, no less. But that's ancient history now...



Anyway, Nehalem is coming — if not at the media event in two weeks then within the next month or two. Between that, the fact that this machine is falling apart, and the super-long battery life of the unibody machines, it's time for an upgrade (though I will be somewhat annoyed if the 15" display doesn't get a resolution bump; so much so that I might even consider breaking my allegiance to the fairest size and going for a 17" instead... 1440x900 is so 2007...)

So, tonight I took apart Kaylee for (probably) the last time, to fix as many of the various annoying things that have broken down over the years as I could, and decided to take a few pictures along the way. I'll write a little bit about each one below...

Also, I should note what broke, for future reference:

  • the LCD bezel cracked near the bottom on both sides, threatening to completely sever the display from the computer (thankfully, Dad constructed metal clamps matching the shape of the lid in order to temporarily remedy this)
  • the camera hasn't worked since The Great Fall of 2008 (which happened to be in Fall '08) — luckily, I don't care in the slightest
  • the right fan started intermittently (weeks between occurrences) making strange noises, culminating in an incident yesterday where it nearly stopped altogether (<500RPM, and pulsing) and I had to shut the machine off to prevent overheating (>98°C)
  • the keycaps are totally wearing off; I replaced some of them with ones from my PowerBook, which were still in good shape, but they continued to degrade
  • no feet remain
  • the optical drive won't burn any media nor read DVDs (it will, however, read CDs — I think it's dirty) — this is one of the only things on this list that actually makes me angry
  • the motherboard ("logic board", in Apple parlance) had to be replaced as a part of the whole NVIDIA debacle, and I have no guarantee that they didn't replace it with another timebomb, as at the time, Apple (at least officially) had no idea why they were failing


Mismatched pair of memory; 3GB, in total. When I sent Kaylee in to Apple to have the motherboard replaced, they returned it with the original 1GB stick in it, and the extra 2GB in a baggie...



One of Dad's wonderful clamps, currently the only thing holding this machine in one piece!



The hard drive I installed a few days before The Great Fall. Still working like a charm, and much faster than the original. Also, the original 160GB disk, completely devoid of all other data, would still not have sufficient storage for the combined monstrosity of my Aperture and iTunes libraries.



When I installed the hard drive, I accidentally broke a Chinese-mystery-metal support structure, so one corner of the drive had to stay unsupported. Hasn't been a problem, though, luckily!



A nonfunctional camera. Oh, well. It actually came back to life — completely uncoerced — one day, but only for a few hours.



The right fan — the victim of yesterday's screeching and overheating mess.



My best guess says this (whatever it is) was the culprit in said screeching, overheating mess. It was sitting right in the fan hole when I opened Kaylee up today.



Look at all the dust, clogging the vents! I cleaned as much of it out as I can; I probably should have done this months ago...



The aforementioned dust, in a much more disgusting-looking but much less computer-endangering location.



I'm not totally sure what this is. I found a number of very similar small grey pieces of plastic, all looking like they broke off of something, floating around in the machine. Not even going to ask — I completely failed to find a source.



Unidentifiable sensors on the back of the keyboard slab. I really can't imagine what they might be, as I'm relatively aware of the location of all of the sensors that I know how to get data from... I'm thinking that at least one of them might be the lid-close sensor, but I'm not sure!



Dying keyboard, as I mentioned...



A healthy fan. Yay! And gigantic pixels. Nay!

ICC and Mandelbrot

2010.01.04 in code

About a year ago, I implemented a smooth-coloring Mandelbrot generator in C on top of GMP (for high precision and speed) and GD (for image output). I spent a lot of time choosing GCC optimization options and hand-optimizing the code (let's play how-few-GMP-instructions-can-we-use), primarily as an exercise. It ended up many times faster than the original, and I eventually ran out of ideas and got bored with the optimization and set it down. It's still the most carefully crafted and most commented piece of code I've ever written, and produces output like this:



I've been hearing a lot about ICC, the Intel C/C++ Compiler, recently — especially how much better it is at optimization of math-heavy routines when compared to GCC. I generally refused to believe people when they claimed 30-50% speedups, if only because it seemed like simple hyperbole.

I downloaded an entire gigabyte worth of compiler (WHAT!) yesterday and set to do some tests using my Mandelbrot generator. I took some time to rebuild GD and GMP with each of my test compilers (ICC 11.1, GCC 4.2, LLVM-GCC 4.2, and GCC 4.5 — unfortunately I couldn't get GMP to build with clang), and then sat around with the manuals correcting optimization and build arguments for each compiler. I then took the average of 10 runs of the program (all runs ended up being ±2% for any given compiler), and came up with the following:



Holy crap... a 2x speedup! Crazy crazy stuff! I realize that this is a completely unreasonable benchmark, performed under less than perfect benchmarking situations (though they were pretty good), and is not representative of "normal" code, and should not be used to pass judgement against any of the involved compilers, but it's relatively representative of the kind of code that I want to run fast. I've had long-running math-heavy programs in the past which I would have been very happy to have been able to speed up anywhere near 2x (in order to meet class project deadlines...)!

I also find it funny that ICC produces both the fastest and smallest code, and that turning on profile-guided-optimization had no perceptible effect (except, obviously, to make the compile time ridiculous). I presume this is not the case in other scenarios.

ICC seems to also have better static analysis (it's pointed out a few legitimate warnings in the code that neither GCC nor LLVM-GCC nor clang picked out). But I guess that's what happens when you've got billions of dollars to throw around...

I should also note that all tests were done on the 2.4 GHz Core 2 Duo T7700 in my 2007-era MacBook Pro. A chip that Intel knows how to optimize for, apparently!

One more for your viewing pleasure (this is a zoom quite deep into the set, Wikipedia copy):



NOTE: Dad suggested that the 2x speedup might be due to autoparallelization or some such. However, luckily for my benchmark, this is not the case, as the program already takes advantage of both cores (spawning 10 threads each generating a tenth of the image), and manages to consume ~197% of the total CPU time (across two cores) over its lifetime.

2009 : In Photographs

2010.01.03 in personal, photography, and thoughts

I took thousands of pictures this year (not including well over 20,000 timelapse stills for my final video project). I've pulled a few out of that batch which represent particular moments (unfortunately there are no pictures of Kaitlyn and I, something I'll have to remedy for next year!). A lot of these have already been posted here; this is to collect them together to make myself realize that these are all moments from the last year. Also, you'll have to differentiate between the two Amys yourself (it should be obvious in most cases); every time I add initials like we do in real life, the words look funny on the screen! They're in almost-chronological order (the vertical pictures mix this up a bit):



rms came and stayed with Matt (right down the hall from us) while at the RPI stop on his lecture circuit. It was quite an enlightening evening, to say the least. I've also been told there's a semi-significant possibility it's going to happen again this year! The picture is of Matt's signed ThinkPad lid. bigger



I finally gave up on Jayne mk. I (because of heat and expandability issues) and built a monster mk. II to replace it. Currently has a total of 6TB of storage, 8GB of RAM, and a nice 4890. Good, solid machine! bigger



RPI's administration had their share of issues this year, with the student body protesting over transparency within the 'tute's decision-making process. I'm afraid the issue is far from resolved at the moment, and I don't expect to see anything change during my stay in Troy. Luckily, I'm in the group of people affected the least by all of the decisions (I don't want to take foreign language classes, I don't eat at Commons, I live off campus, I don't want to be an RA, etc.), but I feel bad for those who are! bigger



Dad and I made a spur of the moment trip down to Cape Canaveral in hopes of seeing one of the last few shuttle launches. Unfortunately, some sort of leak caused a delay, and we weren't able to see the launch. There are still a few left, but I'm afraid we're going to have to settle for a Constellation/Orion/Ares launch instead. bigger



On the left, Matt sits depressed (not really, I promise!) in the hall in Davison as his Welcome Wagon and plastic flowers fail to lure Amy away from Nate. Not that that was his intent, or anything! bigger

On the right is the Girellis' dog, Bongo, who we all became good friends with while he stayed with his grandparents, across the street from us. He's grown to a slightly-less adorable size at this point, but we have lots of pictures of him from the good old days — and he's still very friendly! bigger



This remains one of my favorite pictures from my big lens — a happy, adorable Carol waving to us on a gloomy Troy day. She's the only one besides Matt who'll ever pose for pictures, so I take every opportunity! Hi, Carol! bigger



Some manner of hat epidemic broke out late in the spring semester; Matt, Nate, and Robb together purchased enough hats for a few small families! (this might be a slight exaggeration, depending on your definition of a family, but there was more than one hat per person) Matt, of course, acquired a red fedora. bigger



Carol, Connor, Ben, Andrew, and I (along with dozens of classmates) spent a good chunk of the semester toying with 8051s in hopes of stabilizing one of the LITEC blimps; this is a shot of some of the blimps resting on their moorings. We all eventually succeeded (some *ahem*Carol*ahem* with only moments to spare) — yay! bigger



Matt went to visit Mary at Amherst; he decided that he didn't know the way to the bus station, so I accompanied him to Albany. Unfortunately, we were very, very short on time, so we ended up running down the hill from Empire State Plaza (to shouts of "run, Forrest, run!" from bystanders) to the Greyhound station. Ended up succeeding, and Matt (I hear) had a nice weekend with Mary. I had to climb back up the hill to get to my bus home, so I took some more pictures around the Plaza while catching my breath and waiting for said bus. bigger



ISS became the third brightest object in the sky (after the Sun and Moon) this year; shortly afterwards, I made it my mission to capture it on its way overhead. This is my best shot of many as it streaked across the Colchester sky. bigger



In June, I traveled further from home than I'd ever been — and alone! I attended the Ubuntu Developer Summit for the Karmic Koala release, in Barcelona. I had a lot of fun, and (unlike some people who were there with me...) toured around the city in my free time. Sitting at my desk right now I have a hard time believing that I actually made it there and back and was outgoing enough when I needed to be and didn't die on any of my solo treks into the city... certainly a learning experience! bigger



For whatever reason, I took Amy's senior picture this year. I think it came out quite well; there are a bunch of alternatives, too, but this is the one she used. At the time, Mom was trying to pose Amy on various rocks and things around Airport Park; we saw this post and just had to run off and take some shots there; and they stuck! bigger

On the left is some of Amy's beading, which she's been spending a good bit of time on this year, as she makes all sorts of awesome little things for various people. It's also fun to grab the macro lens and take pictures of tiny little beads and intricate wire patterns! bigger



Another example of Amy's increasing craftiness; she made a beautiful rendition of the BSG logo out of chocolate on my birthday cake; she has since made many, many more awesome chocolate-based cake designs for various occasions. bigger



Over the summer, the four of us visited Boston to tour various colleges for Amy (and to hang out in Boston!). She got totally sold on MCPHS while we were there, and has since been accepted! So hopefully (the only roadblock being Mom, worried about her being so far away) by the next time I'm writing a wrapping-up-the-year blog post, Amy will have had a whole semester cozily settled into a dorm on The Fenway. bigger



Matt, Mike, Nate, Robb, and I all moved out of RPI's dorms and into an apartment; we've been there for a whole semester now, and it's been great! We've got a lot of space now, and best of all, a kitchen! The lack of dining halls is a little strange, sometimes, but I can't say that I miss Commons' food. bigger



A very significant part of my time during the fall semester was spent working on projects for Intermediate Video (1, 2, 3); it was well worth it, for sure — I had a lot of fun, got an A, and only irritated Matt a little bit with the constant (every 30 seconds) shutter clattering for two or three weeks on end. bigger



Matt acquired ants to fill an ant farm he'd had sitting around from a few Christmases ago; someone (Mike, I believe) got the great idea to set up a webcam on the ants and post it to reddit. Nate then plopped his laptop on its side behind the webcam and the ants, blaring Cascada and running the iTunes visualizer as a backdrop for the dancing ants (unfortunately, this part is not pictured). Amy was visiting at the time, so she might have gotten a slightly skewed idea of college life. Two or three weeks, a few thousand justin.tv viewers, and hours of — quite literally — laughing out loud later, we ended up shutting off the webcam. Some clips appear to remain on the site, and we have a nice reddit thread, too. bigger



"Get up, get out of bed, and get in the car." "O...K...?". Carol and Hana dragged me to Larkfest, Albany's (apparently) annual street fair. I wasn't sure what was up at first, but ended up having a great (if slightly shy, at times) day out with the girls, wandering the street (and hiding, while they shopped for jewelry) and consuming gigantic burritos. More pictures on Flickr, and there's a picture of the three of us on the Times Union website, too! bigger



Matt had a particularly unhappy day, so Nate and Mike went out and bought him a tiny orange betta fish, named Wanda (after the Gnome mascot, not the movie, though I'm sure there's a relation there!). Wanda's still happily swimming (though she took quite a long car ride home to Boston for both Thanksgiving and Christmas break, she survived somehow!) and providing Matt with dozens of hours of entertainment. bigger



Every year, Gnome holds a developer summit at MIT in Boston; this was the second year that Matt and I were in attendance. We spent a significant part of this conference hanging out (and discussing the finer points of the future of Gnome) with Jason, who I worked with over the summer on gnome-games. The picture is of after the conference (I'm too shy to take lots of pictures of people I only know from the internet!), when we went to visit Amy in Davis Square. It's got a little of everything; a classic Matt pose, Amy ignoring Matt, random strange bystanders, etc. bigger



Awwwwwwwwww. 'nuff said. All things grow with love! bigger



And that's it! The end of the year; a Christmas Poinsettia! bigger

What a great year :-)

2009 : In Numbers

2010.01.03 in personal and thoughts

How does one measure a year?

In emails?



Blog posts?



Pictures?



Bytes?



Karma?



IMs?



Releases?



Unfortunately, none of these things are a very good measure of the last year! Perhaps the next post will do a better job of putting it into context... or, perhaps you just had to be there!

Seed on Mac OS X

2010.01.02 in code and gnome

New Year

First things first, happy new years! I'd say 2009 was one of the better years, personally (the world on a whole might have something to say about this), but I'm shooting for even more fun during this orbit.

My Gnome Stuff

I'm home from school until almost the end of January, and all of the holidays are over now, so I have a great deal of time opening up to work on various things that I've promised everyone. I apologize for disappearing, but school got particularly time-consuming last semester (and the time I spent on it resulted in my best semester yet!) — and that comes first.

Seed on OS X

Over the past few days, I've been getting Seed working on Mac OS X, in order to (try) to decrease the number of brain context switches required when I want to work on something quickly (I spend 99% of my time in OS X).

I've now got MacPorts packages for gobject-introspection, gir-repository, gnome-js-common, and seed, as well as modified packages for webkit-gtk (to fix a bug in the current packaging), clutter/clutter-gtk (to enable introspection support), and gnome-common (to pull in gnome-autogen.sh from 2.28, which works with the version of automake/autoconf that currently ships with MacPorts).

As far as I know, these packages only work against the very latest version of MacPorts (1.8.1), with the very latest packages on an install of Snow Leopard with 64-bit-userland (I suppose the number of people with 32-bit-Snow-Leopard is rather low). I've tested it from a totally fresh MacPorts install twice now, and it seems to work fine.

It's relatively easy to install, with one caveat: I don't have a machine which is both online most of the time and I have the ability to run rsyncd on, so you'll have to manually pull changes (I'll explain how in a moment).

To install:

  1. Check out my custom ports tree:
    cd /opt
    sudo mkdir hortont-ports
    sudo chown [your username] hortont-ports
    git clone http://hortont.com/hortont-ports.git
    
  2. Edit the file
    /opt/local/etc/macports/sources.conf
    with administrator privileges, and add the line:
    file:///opt/hortont-ports

    before the line (at the bottom of the file) that reads:
    rsync://rsync.macports.org/release/ports/ [default]
  3. Upgrade your currently installed ports (important!), then install seed:
    sudo port sync
    sudo port upgrade outdated
    sudo port install seed
    
To update:
  1. Update your checkout of my ports tree:
    cd /opt/hortont-ports
    git pull
    
  2. Update your installed ports:
    sudo port sync
    sudo port upgrade outdated
    
To use Seed, make sure that you set LD_LIBRARY_PATH correctly
(this all also assumes that /opt/local/bin is in your PATH):
  1. export LD_LIBRARY_PATH=/opt/local/lib
    
  2. seed
    
Gnome Games

One of the primary things I'm planning on working on over the next few weeks is getting the three games from the summer up to tip-top shape for 2.30. Lights Off and Same (now swell-foop) are shipping, but they need documentation, high-scores, and (especially in the case of Same) performance help.

Epiphany Extensions

I've just gotten word that Epiphany JavaScript extensions are working much better now, as of the most recent (today) release of Seed. The last time I promised to look at various extensions for people, stability was a problem to the extent that I gave up after about ten minutes. So, this is another target for the next few weeks. Port some extensions, write some documentation, post the one extension that we have that works well somewhere better than bugzilla, etc.

All in all... should be a fun few weeks vacation!