Portfolio - selene tan
selene tan


PR Queue Checker

by on Oct.26, 2018, under Portfolio

At ThinkNear, every commit must be reviewed before it is merged into the master branch. To do this, the submitter opens a pull request (PR) on GitHub, and assigns it to one of the code reviewers for that project. Reviewers ran into problems where one developer might be flooded with PRs while another had nothing, and where it was hard to stay on top of PRs from five or more different repositories. In 2015, I created the pull request checker tool to solve both problems, and have maintained it since then.

The PR Queue Checker takes a GitHub organization name, username, and a Github Personal Access Token. It uses these to query the GitHub API for open PRs among that organization’s repositories, and displays them in a formatted list. The code is in a single HTML file that uses the jQuery and lodash libraries, allowing you to save the HTML file and load it locally.

PR Queue Checker





Leave a Comment :, , , full post

Dungeons and Dragons: Warbands

by on Nov.15, 2012, under Portfolio

warbands_title_croppedDungeons and Dragons: Warbands is a mobile, social, turn-based squad tactics collectible miniatures game based on the tabletop Dungeons and Dragons: Warbands 4th edition rules. Players collect miniatures which they can assemble into squads and use to fight battles versus other squads. Players can fight versus AI opponents, or asynchronously against other players. Monetization revolves around collecting miniatures or purchasing consumable items for use during battles.

I worked on both the client-side front-end and server-side back-end. The front-end was created in Unity3D, using a mix of Unityscript and C#. The server backend used PHP, MySQL, and memcached and was structured similarly to the Heroes of Neverwinter backend. I came onto the project midstream to help overhaul the AI, which at the time was unsatisfyingly dumb. We improved the AI enough that we later had to tone it down for beginning players.

My major contribution to the project involved multiplayer functionality. The game was initially intended to be single-player only, and much of the code relied on that assumption. We embarked on an ambitious revision of the code that untangled that assumption, and streamlined and optimized the result. I adapted several systems, including the AI. I also wrote the server code necessary for multiple players, exposed the server-side API, and integrated that into the client.

The game was released for a soft-launch/beta in Canada on November 15, 2012 but has not yet seen a world-wide release.

Leave a Comment full post

Dungeons and Dragons: Heroes of Neverwinter

by on Sep.18, 2011, under Portfolio

 Dungeons and Dragons: Heroes of Neverwinter was a turn-based RPG on Facebook based on a Dungeons and Dragons 4th edition. Players created a character, choosing one of 4 classes and races. They could then recruit other players’ characters to form a full party and go on adventures. Each adventure consisted of several rooms, most containing a combat encounter. Combat was turn-based on a grid, using a simplified version of the D&D rules. When a character reached level 10, the player gained access to the Dungeon Builder, which allowed them to create their own levels by choosing and populating a dungeon layout. When another player used your character, you had the option to watch their progress as a spectator. You could chat with the player, and had access to some spectator-only buffs you could use to help out. Your character would also gain some gold from you spectating.

skeleton_acidarrow_uiI worked on both the client-side front-end, and the server-side back-end. The front-end was primarily in Flash Actionscript 3, using the Gaia Flash Framework for high-level structure and as3isolib for the dungeon sections. I touched almost every system in the game and, focusing on the dungeons and combat gameplay. I was solely responsible for the abilities system, monsters, AI, adventure scoring, and tutorials, and made revisions to the buffs, looting, and spectator systems. I also did most of the Facebook API integration. When performance problems cropped up, I optimized the graphics and pathfinding. I took over the save/load and spectator systems when the original programmer was moved to another project and was responsible for fixing any synchronizing issues that came up, leading to a deep knowledge of the gameplay systems.

dnd_chestThe server was written in PHP with MySQL, using memcached for caching. I was responsible for setting up the db tables for most systems as well as basic server API functionality for them. This included character status, adventure progress, and monster and other game data definitions. I also worked on the data import tools the designers used to define abilities, monsters, items, etc. I soon became the go-to server expert.

Sadly, the game did not do as well as was hoped, and Atari shuttered it in favor of Dungeons and Dragons: Warbands.


Leave a Comment full post

Instant Jam Flash Version

by on Aug.16, 2010, under Portfolio

Logo for Instant Jam with the words "Instant Jam BETA" on a background of light rays

Instant Jam was an online rhythm game for Facebook. Its major selling point was “play with your music library”–they provided note charts for songs, while you provided the MP3 files. This allowed them to have a vast selection of available songs without paying the usual licensing fees, and meant that users didn’t need to re-buy songs they already owned to play them in Instant Jam.

I worked on the Flash version of the Instant Jam client frontend. It was created for compatibility with Macs, and as a preview for users who did not wish to download the proprietary InstantAction plugin.

I did a lot of UI work for Instant Jam, attempting to match the features of the InstantAction version as closely as possible. I also heavily optimized the main rhythm game component, using profilers to pinpoint causes of frame hiccups and then addressing them.


Unfortunately, InstantAction closed its doors in November 2010, and InstantJam was shut down.

Leave a Comment full post


by on Jan.31, 2010, under Portfolio

SEEK*TOR is a puzzle game about revealing the single enemy turret on an obscured map. It was created for the 16th Ludum Dare competition, a 48-hour long solo game development challenge. The theme of the competition was “Explore.”

SEEK*TOR was ranked 5th overall of the 121 entries. Play it below:

:, , , , , full post

eFusjon RAD Game

by on Jul.18, 2009, under Portfolio

eFusjon RAD is a game promoting the eFusjon energy drink, launched in July 2009.

In RAD you control the Efusjonaut, and must absorb eFusjon to neutralize free radicals while avoiding toxins. The Efusjonaut is controlled with the mouse, and can switch between an offensive toxin-eliminating mode and a passive free radical-neutralizing mode.

I came up with the gameplay concept and led the project. A graphic designer came up with the look and feel for the menus and an animator/artist created the main game art and sprites. I incorporated everything into Flash, set up the overarching code structure, and programmed the gameplay and scoring. Other developers worked on the leaderboard score submission, some of the menus, and the instructions. After some testing showed that people were confused about how to play, I came up with and implemented the idea of adding pop-up tutorial messages in-game explaining things.


  • eFusjon Gaming is the official game website, including details about the promotion
  • eFusjon RAD is the page where you can play the game. Registration is required because the game is part of a contest.
:, , , full post

Let’s Shooting Love

by on Feb.02, 2009, under Portfolio

I participated in the first Global Game Jam in February 2009, a challenge where the goal was to produce a playable game in 48 hours. The theme was “As long as we’re together, we’ll never run out of problems.

Let’s Shooting Love is a Geometry-Wars-style arena shooter about a lonely robot looking for a girlfriend. It was created in Multimedia Fusion, which we decided to use since one of the team members (Sebastian Jansiz) was an expert in it and promised even faster prototyping than Flash.

I was responsible for designing and implementing the enemy behaviors. I brainstormed a lot of potentially interesting behaviors and played other arena shooters for inspiration. Then I had to figure out how to implement them in Multimedia Fusion, which I had never used before the Game Jam.

I created both enemies and enemy generators, setting them up so that Sebastian could easily adjust parameters such as speed, hit points, and generation frequency. I made a wide variety of enemies, including ones that travel in V formation, ones that circle-strafe the player while firing shotgun bursts, and ones that break apart into smaller enemies when defeated.


:, , , , full post


by on Oct.18, 2008, under Portfolio

Snowfall is a game I originally thought of for a weekly game-making challenge at The Sims Carnival where the theme was “music”. After struggling with the limitations of the Sims Carnival game maker, I decided to take my idea and make it in Flash. I also used the opportunity to learn Actionscript 3.

Get Adobe Flash player

Move the mouse to move the sun anywhere on screen. Avoid touching snowflakes. Click to release a burst of warmth that melts snowflakes and earns points, but uses up a life. Play the game with sound turned on!

:, , , , , full post

Real Video Gaming Prototype

by on Oct.06, 2008, under Portfolio

The goal of the Real Video Gaming project was to create an interactive Flash prototype of a casino interface for a handheld touchscreen device (the Samsung Q1 UMPC). The intent was to allow casino patrons to continue gambling away from the physical tables.

The prototype presents three games: baccarat, roulette, and a slot machine. In baccarat and roulette, bets can be placed by dragging and dropping chips onto the appropriate locations. After the bets are placed or the slot machine is started, a video plays showing a casino dealer playing out the game. In roulette, the user can use the “Languages” menu to change the dealer to one speaking the appropriate language.

I was lead developer for the project. I researched and wrote specification documents, and created the class framework for the program. I also programmed the bulk of the project, excluding the slot machine and drinks menu.

The prototype can be viewed here.

Leave a Comment :, full post

Endo Patrol

by on May.06, 2007, under Portfolio

This was a semester-long project course at Carnegie Mellon’s Entertainment Technology Center. The goal was to create a game that would teach elementary school children the basics of immunology, without resorting to military metaphors. (i.e., no “defending” against bacterial “attacks.”)

I functioned mainly as a programmer, implementing the user interface. I also composed music for the game and created and placed the sound effects.



These are the files used in the game, so they’re set up to loop.

:, , , , , full post

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!