| Priorities |
Current |
This is the project I'm currently working on (in addition to all of my courses). It's basically a free-form todo app, inspired by the plethora of ineffective todo apps that all do the same thing: provide you with the ability to set up specific tasks with specific due dates sorted by their system.
I want an application (for mobile and deskop) that acts like an optimized text editor. I want my tasks to just be a line of text; where if I want a task to have a due date, I can describe it myself; where I can sort it however I'd like; where I'm not constrained in to their specific schema. The only thing the app should do is provided a few simple functionalities to speed up the process and sync across all my different devices. |
|
mobile
web
iOS
|
|
| Memory Repository |
December 2011 - Current |
This is a multi-staged project that I began working on over the summer by digitizing old family VHS tapes and turning them into bite-sized clips. I uploaded these to YouTube, but I wanted a better way to organize all of the content (as well as adding different forms of media).
I wanted each piece of content to have a strong tie with the date that it took place as well as different people and elements in that content; I also wanted to have some sort of rating system so that the best, most interesting content (funny christmas gatherings) would be easier to filter from the less interesting content (a baby in a crib). The last requirement was that it is easily accessible (web-based) and easy to use (it'd be for extended family too).
There were no existing frameworks that did all of this the way I wanted, so I began by creating everything from scratch using the typical mix of PHP, MySQL, and jQuery. I built a basic version (allowing me to quickly browse and add content) after around a week, and began adding more features after that.
I was able to learn how to solve a lot of new different problems that came up while working on this; such as how to manage the many-to-many database relationship that comes with tags, or how to manage ratings and views per user without requiring accounts. |
|
web
jquery
video
|
|
| Minecraft Mods |
November 2010 to March 2011 |
|
source
|
This was one of the biggest (cumulative) projects that I took on. It was also the first project that was mainly used by other people (rather than just for myself), as well as consistent open-source releases/updates, and working with other people whom I had never met. This meant a whole new range of issues that I hadn't dealt with previously.
The first was getting your name out there. When getting into an already established community, trying to gain "users" is harder than just having a well-designed product. You need to have the best product, the best user support (for 100s of users), and the best "marketing" (intrigue, videos and more videos).
In terms of coding, this meant coding for speed, efficiency, and scalability. If your code takes O(n^2) time to find information on a player and there's hundreds of players on a server, it's going to lag. Trying to send 100s of rows a second to a MySQL database is not going to be efficient in it's simplest coded form, you'll have to make it so, as well as creating a good schema for quick retrieval later on.
In the end, I was unfortunately too busy with University and other facets of my life to keep up with development and had to close that chapter of my life. |
|
|
|
java
databases
|
|
| Yourscraft |
December 2010 |
|
download
source
|
My final project for CS 2110 was creating a GBA game using mode 0 (tiles). Having been under a Minecraft-obsession at the time, it was only natural that I would make a semi-port of it to the GBA.
I ended up doing a lot of cool things with mode switching depending on the context, scrolling backgrounds, animation, and dynamic maps. I took advantage of the block-like structure of tiles to represent the map. Each tile was a block (or a person). I could switch out the type of blocks as the player moved around the map (rather than the costly redrawing), as well as support dynamic and complete map changing. The map's model was represented with a byte array and could go up to quite large sizes. |
|
|
|
C
GBA
game
|
|
| Unicorn Color Showdown |
November 2010 |
|
download
source
|
One of my favorite college courses is CS 2110. It covers a lot of the low level computer science-basics, from circuits and logic gates to simple CPUs to assembly to C.
One project was coding a Game Boy Advanced game with C (using mode 3). We were given a week to come up with an idea, design and code it. I decided to come take advantage of the low-level-ness of the interactable memory-based display and create a game where the goal is to draw over as much of the screen as possible. After drawing where the players had been, I was able to use that same memory holding the display (rather than a separate data structure) to count the difference of the player's color to the opponent's.
After getting the game's basic functionality done, I went into design mode. After creating all of my sprites, I had to code the splash-screen animation, player choosing functionality, as well as (graphically optimal) masks around the players' avatar. This part ended up taking just as long as the actual game logic.
This was also my first project with a form of AI. The opponent is a simple reflex agent, looking at his surroundings and deciding the best direction to go in. He's simple to beat after you learn his strategy, but it was fun to try and make him more and more difficult. |
|
|
|
C
GBA
game
|
|
| Block Wars |
February 2010 |
|
view
source
|
This was a quick hack that I put together after reading the Flash vs HTML5 debacle and making a bet with my roommate that a simple, cross-platform (mobile + desktop) HTML5 game could be built in just a couple hours.
After an hour, I had put together a shoot'em up game using JS + HTML5's canvas for the desktop. A couple of hours research and coding, and I had extended it to support touch events, landscape and portait mobile modes, and automatic detection of web-context. Visiting the game on a desktop browser would fit the game to your window (even under resizes), and visiting the same page on your phone would have a similar but mobile-optimized view of the game. It even took advantage of HTML5's offline caching to play later on. |
|
|
|
mobile
web
html5
game
|
|
| And How Are You Feeling Today? |
January 2010 |
|
view
|
I had made "web pages" in the past, but this was my first venture into creating a "web application". I spent around 4 cumulative hours designing and coding it from scratch.
I had been in a info-vis-obsessed mood, and I wanted to create a clean and simple web app that provided one function: getting user input on how they were feeling from the day, and plotting the data. I wanted to make it using mainly self-coded, plain HTML, JS, and PHP.
The only external libraries I ended up using were JQuery, JQuery UI, and a JQuery SVG plugin. This meant coding log-in functionality, data storage and retrieval, and graph plotting from scratch. I ended up learning a lot about PHP and its interactions with cookies and MySQL as well as AJAX interactions (to limit page loads) and came out with a cool application in the end |
|
|
|
web
jquery
InfoVis
|
|