Software/Robotic Projects Resume
These are summaries of my current and noteworthy projects from the last 4 years. My blog also serves to document these projects during their development.
Personal Open source projects
JSApp.US: (go to the site and press ctrl-b)

JsApp was originally designed for two reasons. The first reason was to replace AppJet's online JavaScript coding environment. AppJet was bought by Google, and their service was closed down. The second reason was to assist the Node.js community which did not have an easy way to host online applications. Now, through JsApp.US, the Node.js community can easily
host online applications.
Today, JsApp has over fifteen hundred users. Hundreds of applications have been deployed using JsApp, and new ones are constantly added. JsApp is popular for newcomers too. It provides an easy-to-use interface and does not require users to install any software. It also does not require newcomers to be familiar with any additional tools in order to get started. In addition, the social features on the site have made it the community's system of choice for sharing snippets of code. JsApp.us services approximately 25% of the Node.js programming community to date. (For more information, visit JsApp.us)
i-lang:
i-lang stems from my curiosity with Artificial Intelligence. I have written a number of programs that incorporate different aspects of the AI spectrum. I have found that I often want similar tools always available and I am incorporating these tools into the platform. I have also become fascinated with the possibility of programs modifying themselves while running. I believe that this will enable a totally new form of AI that currently has limited research. I feel that what a synapse is to a human is what code is to a computer.
I hope to finish initial version of i-lang within six months.
Habit-engine:
Habit-engine is a Google Chrome browser add-on that I am developing to speed up people on the internet. People interact with their computers using a series of habits, for example going to Facebook every time one finishes reading one's emails. I believe that hundreds of processes like this could be automated, saving a few seconds. When using the system more, more time-consuming habits are automated, saving even more time. In the future when there are thousands of users, all of the habit data could be coalesced to save more time for everyone. An example of this would be grandma attempting to find the login button on the water and power bill site. In her case, the Habit-engine would be able to automatically direct her to the proper location without her having to search through all the links on the home page for a half hour.
This system is implemented by tying into browser-based events such as mouse movements, scrolling on a page, clicking links and entering text into a text field. All this data is then processed using a modified Bayesian network which relates the current state and events of the webpage to future events. Currently, I am working on getting this system to evaluate code generated by the Bayesian network for speedier improvements.
This system is not yet ready for public consumption.
EyeJ:
I developed EyeJ for the EyeOS, web-based operating system. At the time EyeOS had all the logic for the applications running on the server side. This meant that all applications experienced a 100ms of lag time between interactions due to the nature of web applications. EyeJ was designed to allow for code to be run on the client side; thus lag caused by interacting with the server was cut out. EyeJ also enabled anyone to develop applications through the web browser as there are no security concerns involving server-side code execution.
EyeJ is no longer maintained. It served as a prototype design for the EyeOS 2.0 branch where code is split up into two parts, the server side that can modify the database and users files, which is the client side that is responsible for rendering the user interface (providing a signification reduction in lag for applications). EyeJ was incorporated by EyeOS 2.0 and my contribution is acknowledged within the context of EyeOS 2.0.
Py.js: (online sample)
I designed Py.js for EyeJ to enable people to program "python" applications on EyeJ. Because of EyeJ's nature of running everything in the web browser, I needed all components to be written in JavaScript, and to generate code in JavaScript. I implemented most of Python's major features before development discontinued. This system is no longer developed because EyeJ became a prototype, used by EyeOS 2.0, rather than a finalized implementation.
This is an application for EyeOS that allows for the execution of processing applications using Projecessing.js. This system also uses client side code execution meaning that all users can write their code in a text file and save as a .pjs in order to run their program.
eyeCache:
EyeCache was my first addition to the EyeOS community. Early version of EyeOS did not implement caching of static files. This meant that for every file, the web browser needed to contact the server and download the file. Even loading the login page required 500 KB of data and could take a few seconds on a slow server. In addition, every user-interaction and chancing of an icon, while logged in, would take a second.
What caching does online is store a copy of everything that does not change on the client side. This means that the web browsers will not have to spend time communicating with the server.
In the end, I was able to acquire over a 80% speed improvement for loading the login page on most servers. In addition, there was a noticeable reduction in lag even when running the server on a local host (same physical computer).
This improvement was included with EyeOS version 1.7.
Team Robotics Projects:
EDD:
EDD is our capstone Engineering project at our school. I am the project manager, the lead position, of one of the two teams. Our task is to build a robot that can be shot out of an air cannon and then autonomously locate a ground-based disabled robot. Then we are to connect with the disabled robot reprogram it and provide a source of power for the drive motors.
In our design we plan to build a flying robot. The robot will come out of the air cannon and then transform mid-air into its flying modality. The robot is built in a sphere shape to ensure that during testing, if there is an impact with the ground, the system will survive preventing costly rebuilding of the system. The propulsion system will utilize a coaxial helicopter design. The advantages of having a coaxial-helicopter-based design was that we were able to fit it into the spacing of our frame. There are also reasonably easy methods of autonomously controlling coaxial-helicopters. In addition, we do not need add a tail rotor as the angular momentum that a tail rotor is designed to counter, is countered by the fact that two propellers are turning against each other, canceling out the angler momentum.

This is a rendering of the outer frame CAD. As we are competing in secret against others, we are not releasing more detailed images.
VEX robotics:
I have competed in VEX robotics for three years (Freshman through Junior year). I have been to the world competition twice, and ranked the highest from my school the second time. Today, I mentor other students at my school as well as middle school students using VEX robotics. I was able to standardize the whole team to use C based programming languages by starting with the VEX students and converting the 8 teams which I oversee. All 8 teams have at least one trained member capable of programming in C.
FIRST Robotics Competition:
I have participated on the FRC robotics team for three years.
During my sophomore year, I was a member of the programming team. This was the first year that we had a mecanum drive system. Our breakthrough for the year came from our innovations with controls. Our driver for the year was a world ranked player on XBox live. We developed a method to control the robot with the XBox controller and developed the interface to be the same as a first person shooter, which our driver was familiar with. These advances were all a by-product of the programming team's innovations.

During my Junior year, I became the programming leader. During this year I pushed harder for sensors to be more advanced on the robot. Because of my insistence, all motors had an encoder. This enabled us to use closed-loop control on the whole system. Because of the closed-loop control, we were able to have greater control over the drive system.
MATE ROV:
I competed in the MATE ROV competition during my sophomore year. I was in charge of developing the control system for the robot. I also was a core member of the team, and helped with the frame design and building. We took first place at the local regional competition and went forward to the International Competition in Hawaii that year.
(ROV technical report) (robot code)



