Thursday, June 26, 2008

Introducing: Reader Rater

I'm not terribly impressed with the trend reporting in Google Reader. It doesn't seem to match well with how I use Reader. I'd like to have a somewhat better idea which of my feeds I actually read the most. Even more so, I'd like to know which feeds I don't really care for, so I can remove them, or at least reorganize my lists.

With that in mind, I sat down this morning (and into the afternoon) with a couple existing scripts, dive into greasemonkey, and firebug (awesome), and cranked out 'Reader Rater'. Clever, huh? It's a greasemonkey script, and it seems to be an ok first go at something. The script is here, and accompanying (brief) documentation here.

Let me know if you try it, and how it goes. If you find any bugs, or have any suggestions (easy to implement ones, please :)), please leave a comment below.

[While I was looking up references for this post, I found this script, and at first glance it looks pretty nice.]

Monday, June 23, 2008

Miss Me?

I doubt it, but I thought I'd update you a bit anyway.

Two Mondays ago (9th of June) I finished moving out of my apartment. The next day I drove to my mom's house in Lansing, Michigan. The next day I flew to Portland, Oregon, where I rented a car and drove down to Eugene, Oregon, to spend a week with my friend Rob from undergrad days. Luckily I know somebody awesome who works for Southwest Airlines, so I was able to fly free (thanks again Susan). I was surprised by the ample leg room on the flights, so that was nice. My stop-overs (once on the way out, once on the way back) in Chicago (Midway) were both bumpy, but we made it. On my way out, the girl that set next to me had never flown before, so she was none too happy with the rocky landing. It was entertaining (of course, I was nervous myself).

Rob's easily the best Dr. Mario player I've ever met. I learned while I was away that there's a Wii version which allows for world rankings. I'm sure he's got high hopes for that, and I hope he doesn't let it impact too heavily his graduate school career. It also means I'm even more excited about the wii. I also got to see some Portal played, and it was about as awesome as I'd expected. I'm still trying to find the best way for me to get it (Linux version?), or even just a knock-off.

Rob and I hung out around Eugene for a while, and I got to meet several of his colleagues in the math department. The University of Oregon campus is pretty, and Eugene seemed like a nice town. Rob holds it in higher esteem, as his own Shangri-La. We climbed both Buttes in Eugene, and I went on a run with one of his friends that involved some trails near Spencer's Butte (the larger of the two, on the south side of the city). On a running note, Eugene is 'Track Town USA' and host to this summer's Olympic Track and Field Trials. Last time I visited with Rob we watched 'Without Limits', about the runner Steve Prefontaine, which I recommend. This time we watched (among other things) Wildboyz seasons 3 and 4 - fantastic stuff. I also learned that the county directly north of Eugene is the 'Grass Seed Capitol of the World', and was annoyingly reminded that I've got some allergies.

After a few days in Eugene, we headed out for a road trip. We drove out to the coast, and then straight up the pacific coast highway. If you're headed out that way, you can avoid the Sea Lion Caves, but all the other stops are probably worth it (all the ones we stopped at were). We stayed the night in Astoria, in the upper-left corner or Oregon, and the next day drove pretty much straight across to Mt. St. Helens. Sadly it was still early in the season, and the trail I convinced Rob to do was closed. We did the Hummocks trail, which was ok, and stopped by Coldwater Lake after visiting the Johnston Ridge Observatory. After Mt. St. Helens we headed back to Eugene.

The next day we woke up and headed out to Crater Lake with Rob's friend Pisa (sp? Pysa?) from Thailand. It was a bit of a drive, but entirely worth it. We drove in via a counter-clockwise route from the upper-right corner, and out straight west. Both routes were beautiful. Of course, the lake itself was also stunning. Again we were a bit early in the season, so the Rim Road was mostly closed. We walked a few miles along it though, and got nice views of the lake. We also saw a black bear, a deer, and a fox, though no elk (I wanted to see one the whole week).

The next day (I'm up to Wednesday the 18th, if you are curious) I flew back to Detroit, where my friend Pete from high school, along with his fiancee Barbara, picked me up and drove me back to their place in Ann Arbor. Pete's pretty much been my idol since high school, and visiting with him is always great. I've only met Barbara twice, but she's very nice, and they seem happy together, so I'm happy for them. Thursday morning Pete took me for a run, and then we visited downtown Ann Arbor (Borders and the outdoor store Bivouac and another little book store whose name I have forgotten) for a little while before returning to his place to watch the Germany/Portugal Euro Cup quarterfinal game. I haven't watched any soccer since the World Cup two summers ago, so this was fun, and I'm now looking forward to catching the last few games. After the game he drove me to mom's place in Lansing and headed home after dinner.

Friday was a pretty uneventful day at home, watching some movies and relaxing. Saturday morning I helped mom a little with a yard sale. In the evening we went to the Lansing Lugnuts baseball game. That was fun, and the fireworks afterwards were nice. Sunday I woke up and headed straight 'home' to Charlottesville. Of course, I'm between apartments right now, and staying at a friends place, hence the quotes around home. If you're planning a similar drive, between Charlottesville and Michigan or so, I recommend this route over Google's default suggestion, because it's not much different length/time-wise, but is much cheaper with regards to tolls ($2.50 versus something up around $18, if I recall correctly). Plus the bit through western Virginia and West Virginia is pretty.

I wish I had some pictures to show you of Oregon. Sadly my battery is out, and in all the moving and traveling I seem to have misplaced my charger. So you might not get any pictures until after I move into my apartment in July. Sorry. You can probably find better ones online of all the places I was anyway.

So there you go, you're all caught up. Lucky you.

[Ok, I've got a question for you about this post. Were the wikipedia links worthwhile? Are there words I should have linked (even if not to wikipedia)? I always wonder how many things to link, since you can find the same pages quickly enough if you are interested.]

Wednesday, June 4, 2008

Ghosts Vocals

I was poking around through some old files on my computer, and ran across some lyrics I'd tried to transcribe a while back for Clint Mansell's "Ghosts (Vocal Version)" off the Requiem for a Dream: Remixed cd. Guess I'm not sure how accurate they are, but I thought I'd share (hope it's not some copyright violation or something stupid):

speaking, avoiding talking
haunted, the voice is calling
warning, its time to set this down
not seeing, not hearing, not believing
man not even caring
this should all come down

its dark and i'm afraid
this is the nightmare i have made
haunted by the ghosts of you
can't win a draw
only sunsets and sunrise
are you happy
or just keeping warm
i don't know
cause i have never felt like this before
can you tell, can you see
i don't believe in me

pull me from the wreckage
of a life grown more pathetic
even i can see the message
time to treat yourself more precious
shine a light into the darkness
put some life in to the deadness
where there used to be a head nest
now its just a f***ing mess


wrap your beauty round me
kill the fears that surround me
a temporary diversion
just an exit from this hurt
body fueled by pain and poison
mind is stopped its rhyme and reason
acceptance is a state of mind
except you changed your mind
now i'm gone inside
confusion's bled me dry
how could it be everything
now its not anything

Funny Ad

Here in the math department at UVA, many of the calculus classes use online homework systems. I have used WeBWorK for my classes, and recently some classes have used WebAssign (because it was part of the textbook deal, or something). Both do basically the same thing: let instructors create a batch of problems (drawn from a repository) to assign to students, which they then complete by entering the answers online. I'm a fan of the idea, because it gives the students lots of problems to do and earn points for, while keeping the amount of grading the instructor has to do to a lower level.

Anyway, to the ad. WebAssign sent out the following mailer to some of the graduate students here at UVA:
I think it is hilarious. I'm not sure which of the two following interpretations we're supposed to use:
  1. If you get left at the alter, WebAssign is there for you.
  2. If all of your friends are married except you, WebAssign is there for you.
Either way, I'm amused. Perhaps you have another interpretation?

Tuesday, June 3, 2008

Why Not Wikipedia?

I'd like to apologize for my previous post. Not it's length, not that it was math, but I'd like to apologize for it's location.

With all of the links in that post being links to wikipedia articles, you may have wondered why I didn't just refer you to the wikipedia page on homotopy colimits, and be done with it. Well, unless I'm missing something, there isn't a wikipedia page on homotopy colimts (or their dual, homotopy limits). Ok, fair enough. Wikipedia is extensive, but nobody expects it to be complete. So why didn't I make the homotopy colimit page?

Laziness. I like the format of my previous post, whether you do or not. But I don't believe that it is what a wikipedia article should look like. I wish I would sit down and take the time to write a proper wikipedia article. But there are lots of things I wish I were doing that I'm not, and I don't see that changing anytime soon. For now, you can join me in hating me for not correcting this gap in wikipedia.

Homotopy Colimits

So, if you've read much about category theory, you've encountered the dual notions of the categorical limit and colimit. For a refresher, here's the wikipedia page. If you've taken much topology, you've heard about homotopies. So here's a mathematical mashup for you: homotopy colimits.

What's wrong with just using colimits? It all depends on your context. In the context of homotopy theory, if you've got two functors to spaces, $F$ and $G$, out of the same category, say $\mathbf{C}$, and for every $c \in \mathbf{C}$ you have a homotopy equivalence $F(c)\simeq G(c)$, then you'd probably wish for $\mathrm{colim}F\simeq \mathrm{colim}G$. Maybe you're a bit more careful, and would only expect this to hold when there is a natural transformation $\eta:F\rightarrow G$ such that $\etc(c):F(c)\rightarrow G(c)$ is a homotopy equivalence for all $c\in \mathbf{C}$. But still, this is not enough.

Consider the following example. Take $\mathbf{C}$ to be what you might call the pushout category: $1\leftarrow 12\rightarrow 2$. To define $F$ and $G$, let's set up some more notation. Recall that $D^2$ represents the standard 2-dimensional closed disk, and it's boundary is the circle, $S^1$. Let $*$ denote the one-point space. Now define $F$ via the diagram $D^2\leftarrow S^1\rightarrow D^2$, where both maps are the standard inclusion, and $G$ via $*\leftarrow S^1\rightarrow *$. There is an obvious map of diagrams (natural transformation) from $F$ to $G$, and on each object $c$ of $\mathbf{C}$ the map $F(c)\rightarrow G(c)$ is an equivalence. Then $\mathrm{colim}F$ is the space obtained by joining two disks along their boundary, i.e., the sphere $S^2$. On the other hand $\mathrm{colim}G$ is simply the one-point space $*$. Since $S^2$ is not contractible... there's something unsuitable about the colimit from a homotopy viewpoint. So how do you fix it?

Let's go back and think about what the standard colimit is (with our diagram category $\mathbf{C}$ being suitably small - I generally visualize them as a finite set of objects with a finite set of arrows). In this situation, the standard colimit, $\mathrm{colim}F$, is the quotient space of $\coprod_{c\in \mathbf{C}}F(c)$ where $x\in F(c)$ is identified with $y\in F(d)$ if there is an arrow $f:c\rightarrow d$ in $\mathbf{C}$ so that $F(f):F(c)\rightarrow F(d)$ has $F(f)(x)=y$. That is, we glue $F(c)$ to $F(d)$ using maps $F(f)$ when $f:c\rightarrow d$.

One example you might think about is when $\mathbf{C}$ is just $1\rightarrow 2$. In this case, the colimit of any functor $F$ is just $F(2)$ (2 is, after all, a final object). So all of the information about $F(1)$ gets completely lost. That feels dangerous.

Let's see what we can do to remedy the situation. To begin, lets remain in the case where $\mathbf{C}$ is the simple category $1\rightarrow 2$ (call the non-identity arrow $f$). Instead of just gluing $F(1)$ to $F(2)$ and losing $F(1)$, consider the mapping cylinder. This is the quotient of the disjoint union of $F(1)\times I$ and $F(2)$ ($I$ here is the unit interval $[0,1]$), obtained by gluing together $(x,1)\in F(1)\times I$ with $F(f)(x)\in F(2)$. You may notice that the homotopy type of $\mathrm{colim}F$ is the same as the homotopy type of the mapping cylinder (you think about just projecting $F(1)\times I$ into $F(1)\times \{1\}\subset F(2)$), but they are not homeomorphic. We still have a copy of $F(1)$ sitting inside the mapping cylinder, as $F(1)\times \{0\}$. I generally visualize this as one end of a tailpipe, with the other end stuck to the space $F(2)$.

It turns out that this is the 'right' construction of the colimit for homotopy theory (in this example), and is given the name 'homotopy colimit' ($\mathrm{hocolim}$). What about other examples? What about the pushout category we started with ($1\leftarrow 12\rightarrow 2$)? The way to generalize the constrution of the homotopy colimit to that situation is fairly similar. Instead of using just one mapping cylinder, the best way to think about the homotopy colimit over the pushout category is as two mapping cylinder (one for $1\leftarrow 12$ and one for $12\rightarrow 2$), joined together on their end copies of $F(12)$. Go back to our motivating example, and see if you get the same homotopy type for $\mathrm{hocolim}F$ and $\mathrm{hocolim}G$, using this double mapping cylinder. What'd you get?

How about even more general diagrams? Well, for that you need another couple of notions: the nerve of a category, and the geometric realization of a category (which is the geometric realization of its nerve, a simplicial set). You can read about undercategories (on that page, it is the example of 'Category of objects under A') and nerves on wikipedia (well, lots of places, I'm sure).

For an object $c\in \mathbf{C}$, let me denote by $c\downarrow \mathbf{C}$ the 'category of objects under $c$', and denote the geometric realization of (the nerve of) that category by $|c\downarrow \mathbf{C}|$. You may notice that $id:c\rightarrow c$ is an initial object in $c\downarrow \mathbf{C}$, and this means that $|c\downarrow \mathbf{C}|$ is contractible, for all $c$. Momentarily we will use $F(c)\times |c\downarrow\mathbf{C}|$, but I would like to point out first that we may consider $F(c)$ as a subspace via $F(c)\times id$. Also, since $|c\downarrow \mathbf{C}|$ is contractible, $F(c)\times |c\downarrow \mathbf{C}|$ is homotopy equivalent to $F(c)$.

The general construction for $\mathrm{hocolim}F$ is then defined as a quotient space of $\coprod_{c\in \mathbf{C}}F(c)\times |c\downarrow\mathbf{C}|$. Points of the form $(x,f)$, where $x\in F(c)$ and $f:c\rightarrow d\in c\downarrow \mathbf{C}$ (technically, you should take $f$ as the vertex in the geometric realization...) then get identified to $F(f)(x)\in F(d)$, as before (I think some more things have to get identified also, but I'm getting sleepy, so it's not coming to me). Here we are using the inclusion $F(d)\subset F(d)\times |d\downarrow \mathbf{C}|$, mentioned in the previous paragraph.

It is, at this point, probably a good idea to go back to the two examples above, the mapping cylinder and double mapping cylinder, and convince yourself that the general construction above is really a generalization of these cases.

One thing you may notice is that the maps $|c\downarrow \mathbf{C}|\rightarrow *$ (which are homotopy equivalences, remember) induce maps $F(c)\times |c\downarrow \mathbf{C}|\rightarrow F(c)$. The homotopy colimit construction is built from the domains of these arrows, while the standard colimit is built from the codomains of these arrows. When it all boils down, it turns out that you get a map $\mathrm{hocolim}F\rightarrow \mathrm{colim}F$. I always think this is interesting because you expect maps to come out of colimits, not go in. You might wonder when this map is an equivalence. I'll let you.

I'd like to give you a few more examples, while I'm here. Both examples are diagrams indexed on the pushout category above, and such homotopy colimits are frequently called 'homotopy pushouts'.
  1. The homotopy pushout of the diagram $*\leftarrow X\rightarrow *$ is the suspension of $X$ (so you can check your answer to our motivating example above).
  2. The homotopy pushout of the diagram $X\leftarrow X\times Y\rightarrow Y$ (both maps the canonical projections) is the join, $X\star Y$.
If you're just itching to know about the dual notion of homotopy limits... well... undercategories change to overcategories, and quotients turn into mapping spaces. Briefly, you get a space of natural transformations: $\mathrm{Nat}_{\mathbf{C}}(|\mathbf{C}\downarrow -|,F(-))$.

So anyway, there's that. If you notice any errors, or you've got more fun examples, please leave a comment. I wasn't too formal about some things, but hopefully I've got it mostly ok.

Monday, June 2, 2008


I've been enjoying watching hits trickle in based on the Feedjit widget on the right of this page. Today I noticed I had hits from the 6 continents you'd expect. If anybody knows somebody in Antarctica with a few spare minutes, you could really make my day (though I don't know why you'd care to). At first it looked like that hit in Australia was from my birthplace of Alice Springs. But zooming in, apparently it's a little south of that.

Anyway, I'd like to take this chance to apologize to all of you who didn't find what you were looking for here. I know I've been even worse than usual about content with any value recently. I'd like to correct that.