teaching machines


My dream some day is to teach CS 491: Bad GUIs. We would learn the principles of good interface design by examining (and implementing!) terrible user interfaces. The first assignment would be to design an unreadable clock widget. Perhaps like this one: If it’s not terrible enough, reload the page. I saw a clock like […]

Eyes Saw a Mouse

Mostly I made this because I miss solving math problems.

Fitting a Rectangle Inside a Rectangle

A common problem in computer graphics and user interfaces is scaling one rectangle to fit inside another—preserving the rectangle’s aspect ratio. For example,¬†I’ve encountered this problem in the following situations: Placing an image of arbitrary size on a button of fixed size. Overlay a map on a corner of a game scene. Squeezing an image […]

F1 Carissa

Although this was a fairly simple feature to implement, I did run into a few weird problems. For instance, when I first had made the item in Blender and exported it, it was only showing the top view, not the front view. To fix this, I switched around the x, y and z coordinates in […]

Right-handed Coordinate System

The definitions¬†of left- and right-handed coordinate systems never clear anything up for me. Following is my current understanding of how the systems are determined and why they are given their names. A right-handed coordinate system is one that can be modeled on your right hand. Point your index finger along the positive x-axis ([1 0 […]

Zooming to Target Rectangle

A student of mine was telling me about a sticky note app he was working on. When he tapped on a note, he wanted to animate its filling the screen. The drawing library we’re using supports all the standard transformations and includes the ability to set the pivot point about which scaling and rotation occur. […]

Computer Graphics Proofs

Inverse of rotation/translation matrix Occasionally I need to be back out of eye space and get back to object space, so I need the inverse of my modelview matrix. Finding an arbitrary inverse is non-trivial, but finding the inverse of a matrix that simply rotates and translates is simpler. Inverting a matrix product Inverting a […]

A logarithmic data usage graph?

Getting a new phone last week meant getting a capped data plan. That made me a Paranoid Android user. Luckily, I saw that there was data usage graph available under Settings: Unluckily, someone thought a logarithmic scale would be effective here. To match, I think I’ll have to make my data usage exponential as the […]

Bad moon rising

In reading picture books to my young son, I have come across several pictures like these: In looking at these “moon shadows,” you should get a feeling that they are not right. Why? Because at any time other than a lunar eclipse, only half the the moon’s surface has a direct path to the sun. […]