Portfolio

  • h_slime2
    Slime Volleyball Tech Demo

    A slime volleyball game developed for Android with multi-touch controls, a custom physics engine, and animated sprites.

  • p_map
    Physics Based Graph Drawing

    A text adventure game with a spring/electron model for graph drawing and a Mario mini-game.

  • h_wta
    WTA Bus Routing

    A command-line route planning application for Whatcom Transit Authority’s bus schedule.

Code

The Pleasure of Finding Tricks Out

code

I’ve been thinking about what I want to do after I graduate from college (not an uncommon thought). I don’t know if I want to pursue my Masters, develop mobile software, work in high performance computing, or find a niche in something else. All of these fields are super interesting, but not one is fascinating. So, what is it that keeps me coming back to my text editor? It’s discovering the tricks…

 

Tricks?

A piece of software is kind of like a magic trick – the cool thing that happens is extremely visible, but how it’s done is hidden. Using Google maps to plan a car route is straight up magic, but looking at the web page’s source code reveals none of the implementation details (Dijkstra’s Algorithm). Similarly, opening up Word.exe in Notepad tells you nothing about how Microsoft implemented the undo/redo functionality (stacks). Tricks like these are what I live to discover.

 

Types of Tricks

I haven’t comprehensively categorized the types of algorithmic tricks that exist, but I do have a few personal favorites.

  • Hubris – A trick that seems so implausible or complex that I wouldn’t have even attempted to implement it. Example: Determining Pi Randomly
  • Classic – A trick that utilizes a fundamental CS concept in a novel way. Example: Deep Zoom Image
  • Simple – A trick that’s often a bit bruteish, but incredibly simply. Example: Pacman’s Ghost Pathfinding
  • Brilliant – A trick that employs ideas and techniques I’ve never heard of to do something novel. Example: Image Matching

Closing

What I love about CS is figuring out how something is done, regardless of whether I created the solution myself or I read about it on someone’s blog. The joy is tied to discovery and nothing else. It’s about finding something, anything that’s novel and unknown in the source code.

P.S. I apologize to my thousands of readers for not posting write-ups to Project Euler problems. I’ve solved a few of them this week, but decided they wouldn’t make terribly interesting write-ups. I’ll quit making blogging promises from now on…

 

Further Reading

The Pleasure of Finding Things Out by Richard Feynman

One Response

  1. Phil- glad you have found your passion! Reading about your work convinces me that you are very good at what you do- and that I have no idea what you are talking about.

    Reply

Comment on this post