Hey there. My name is Tanner Whyte and I am a software engineer currently studying at Carnegie Mellon University. This site is here to showcase some of the work I've been doing, feel free to browse around.

The Hoshi Library

The Hoshi Library is the official english website of Shinichi Hoshi. He was a famous japanese author who many famous short stories. The site provides information about everything happening with his books today, including translations to english, television shows, and audiobools.

This website is one of my first projects and is not too complex under the hood. The site was written completely from scratch in HTML and CSS. PHP takes care of rendering the lists of books as well as dealing with my basic templating system. Essentially my template system turned the pages into 3 separate parts, the header, consisting of the banner and menu, the footer, and the body. Allowing me to keep separate files for the content but have the header and footer code be the same throughout the site. The button hover effects rely on css hover classes.

The book information was stored not in a database, but in folders on the server. The reason I did this was it was easier to deal with the huge number of books in this form than in a database, at least for the purposes of this site. The PHP script runs through a text document outlining the author, image file, and title of each of the books and renders them into an HTML file.

The Platformer

The unnamed platformer is a project I worked on in the summer of 2012. It is my second major project in javascript. The goal of the game was to make a platformer in which the player can slow down time to complete various objectives that would be impossible at a normal speed.

By far the most difficult problem, one I haven't been able to put enough time into to solve, is slowing down time. I am using the Box2D Web physics engine for my physics simulations, and this makes it extremely difficult to slow down time in the way I am imagining. It is very easy to slow down every object on screen by the same amount, but it seems that in order to only slow down some objects would require a custom physics engine.

Currently the game is mostly just an engine ready to be built upon. Everything is in place for the world to react to collisions from different types of objects and for the player to move around. There is also a basic level editor that can place different block types.

Nemo

Nemo is the first project I worked in the summer of 2012. It is a javascript based online code editor. In the beginning I thought most of my effort would be going towards adding special features to some pre-existing basic text editor. However nothing out there fit the needs of what I wanted so I ended up making my own. The idea behind the editor is that I really want to keep the actual code theyre typing separate from any formatting. So The entire code file is stored in a string. Whenever the text needs to be rendered on the page, the renderer creates HTML by stepping through the code and adding tags. This rendered HTML is then displayed on screen. In order to keep the app snappy, I put the line being edited into a buffer and only refresh that buffer after every key stroke.

The first problem I ran into was how to implement text selection. Rather than calculating the exact character pressed manually, I turned each line into a separate DOM element and let the browser calculate which line was clicked. Then my only job was to calculate which character on that line was pressed. This will make implementing vertical scrolling in the future much easier.

Currently the editor only supports basic text editing, however features I want to add later include: the ability to save files to an account on a server, syntax highlighting, autocompletion, and a live preview window.