About Projects Publications Resume )> Christopher R. Mitchell
============================================== )> ====
Past and Current Projects: Overview 
In the sections below, you can find general overviews of several of my projects, as well as links to the projects' homepages or sites. I have been programming graphing calculators in BASIC and assembly for close to nine years, and in the past six years developed my skills at web and computer applications. If you have comments or questions on any of my completed or pending projects, you can reach me at my website, http://www.cemetech.net or via the email address listed on the Resumé page. A full listing of my TI calculator programming projects can be found on my ticalc.org author profile for my programming alias, Kerm Martian. The projects detailed in this page are listed to the right.

Other selected projects are on hold or have not been sufficiently documented yet. These include, in no particular order:
  • Clove, the Cemetech Dataglove, with a constructed and working prototype, was on hold until summer 2008, when the project advanced to a published Clove 2 prototype (below). Some information and a few pictures of the first Clove 1 design are available on the Cemetech Forum.
  • SAX, an AJAX chat widget for phpBB fora. Screenshots and information in the Cemetech archives.
  • CALCnet, CALCnet2, and globalCALCnet (gCn), a set of projects to link graphing calculators together in local- and wide-area networks. The original whitepaper for a hierarchical network was superceded by later designs for a peered network architecture, which has subsequently been successfully implemented but incompletely debugged.
  • Several Natural Language Processing (NLP) projects other than Simms AI. One implements forms of the Rocchio and KNN algorithms for document categorization in a corpus, and achieved 80% to 90% accuracy on a set of small training and testing corpora. A second project implements a novel method of associating similar articles in Wikipedia, examining both respective full article texts and the subset of words contained in internal links. This latter project demonstrated that full text similarity generates high-accuracy lists of similar articles as verified by human volunteers, and that both methods produce coherent results at least as meaningful as the existing internal links in each article.
  • Multiplicity, a massively-multiplayer world-construction game that I have planned in several forms but never fully built. A few samples pieces can be seen at http://multiplicity.cemetech.net/ and http://multiplicity.cemetech.net/explore.php.
  • Cemetech6, a completed sixth design of my website. It can be viewed at http://www.cemetech.net, and was written with both functionality and visual impact in mind. This redesign reorganizes the site for easier navigation, improves the projects section to make it easier to update including an administrative backend GUI, and more robust archives.
  • Numerous mods and scripts for the multiplayer LEGO design game Blockland as a member of the TBM team. The now-defunct team's website can be seen at http://www.thebettermod.com. A new game, called FreeBuild/The Builders' Game, is currently under development by members of my website.
  • An arbitrary-precision calculator written in MIPS assembly, capable of multiplication, addition, and subtraction.
  • wordNet, an attempt to model the conceptual linkages within the internet by correlating url links between websites with common keywords and phrases. Contained a search feature and a mapping tool that generated a nightly image displaying all data in the system's memory as a color-coded linked map. For this project I created a PHP spider to crawl sites, and designed a system to spawn and kill spiders to balance load with speed of indexing.
  • A python tool for z80 Assembly programming called BranchMap that creates a simplified, intuitive view of program flow to streamline the development and debugging process. Stack depth and call structure are visually displayed within a simplified view of calls, jumps, and labels; the program will warn of possible stack corruption such as returning from a function with the stack at a different depth than when a function was called. BranchMap can output Postscript or PDF-formatted documents. It was featured on ticalc.org; screenshots can be found in the Cemetech archives
  • Several Operating Systems-related programs written in C for ECE 357, Operating Systems. Early projects included piper, a program to concatenate input files to a pager such as `more`, Doors TS, a simple shell including an interpreter ability, accepting arguments and redirection (but not piping), a pair of network programs to perform file I/O over TCP, and a rudimentary IRC-like chat server and client. Later projects focused more closely on the operating system itself, including a time-slicing preemptive scheduler and a FIFO implementation demonstrating multi-threaded access techniques such as spinlocks and mutexes.
  • kcc, a C-language compiler built using Flex, Bison, and C. It compiles to x86 assembly language that can then be assembled with the Unix 'cc' program.
  • The Red Edition, a theoretical calculator/PDA device I designed for fun. I have constructed original hand sketches and AutoDesk VIZ renderings made for my drafting class, CS102.
  • A relatively simple drum mode solver/simulator in Matlab that uses the numerical Laplacian to model the behavior of a tensioned membrane.
  • Design of a private train car/locomotive called CPRR1, which has been realized in a CAD model for an AutoCAD class. A full technical report including renderings is available.
  • Extensive graphical design in the GIMP, including several technique tutorials and logos for almost all my projects.
Cellular Density Project (CDP) 
In the summer of 2007, I participated in an REU (Research Experience for Undergraduates) at Stevsns Institute of Technology in Hoboken, New Jersey. I developed a project that had previously been proposed by a graduate student at that institution but never attempted, using image processing methods to evaluate the probability that a photomicrography image contained cancerous cells. I spent ten weeks on the project, eventually producing a program capable of accurately predicting the presence of cancer cells even when faced with varied cell and image size, image contrast, image coloration, and other variables. Such a program might be useful in screening images to determine what images need to be further examined by a skilled professional and which can be safely discarded as a negative test for cancer.
Clove 2 Bluetooth Typing Glove 
After being in my projects queue for about two years, I finished Clove 2, the second prototype of my typing glove. Clove 2 is a bluetooth dataglove used for one-handed typing. It uses a 31-combination finger chording design with three modes to allow every key on a standard keyboard to be typed with minimal effort. The bluetooth functionality removes the need to tether it to a computer, and since it profiles as a standard HID Keyboard, a simple translation layer to perform key remapping, sticky modifiers, and mode switching is the only software required. It consists of three components, the glove itself, the bluetooth module, and a custom charger for the Bluetooth module.

  • More information about Clove 2, including pictures, schematics, and full construction instructions.

Click on any of the thumbnails below for the full-sized image
Dataglove overview Glove alone, back view Glove alone, palm view Inside the Bluetooth module

View the Clove 2 video.
Doors CS 6 
Doors CS 6 is the sixth generation of a shell and GUI for TI-83- and TI-84-family graphing calculators. Hand-coded in z80 assembly, it seemlessly extends the capabilities of the native TI operating system without removing any of its functionality. Among the key features:
  • Integrated GUI API and Associated Program system allows Doors CS programs can be smaller, faster, and better-looking than those for any other shell.
  • Intuitive mouse cursor to move and click on onscreen items.
  • Ability to run MirageOS, Ion, and TI-OS files among many other formats.
  • Support for transparent file system modifications to allow nestable folders for easy file organization.
  • CALCnet2, a built-in feature of Doors CS, lets you can connect two or more calculators together for chatting, multiplayer gaming, and more.
  • Doors CS 6 protects your programs and files against other programmers' mistakes with features including Intelligent Writeback and RAM Autorecover.
  • Customize everything from your mouse speed and cursor to your desktop background. You can also install small modules called SEs to further extend the features and capabilities of Doors CS.
More information can be found at the Doors CS 6 website

Doors CS 6 Doors CS 6

Doors CS 6 Doors CS 6
Document DE 6 
Document DE 6 is a text editor for TI-83+/SE/84+/SE graphing calculators running Doors CS 6 written in z80 assembly. It takes advantage of the Doors CS 6 GUI API to cut its total size to under 900 bytes, and allows saving, opening, and editing of files. In addition, it supports the Associated Program system within Doors CS, so files can be opened simply by clicking on them in Doors CS without having to open Document DE 6 first. Document DE 6 can be downloaded at ticalc.org.

Document DE 6 Document DE 6 Document DE 6
Invalid Tangram DE 
From the release description: "Invalid Tangram can best be described as a cross between Space Invaders and Tetris. Build block combos to gain powerups, then blast the enemies into oblivion while avoiding destruction. Instead of health, you have time: powerups add to your time, but enemy shots can remove it. Run out of time and the game ends. Invalid Tangram DE is based on the PC game by Josh Szepietowski and is available for both Doors CS 6.0 and Ion. Now with source and several user-suggested improvements." Invalid Tangram is based on a popular PC game written by Josh Szepietowski, combining features of a space shooter action game with a puzzle game for a unique gaming experience requiring both dexterity and strategy. Invalid Tangram DE can be downloaded from my ticalc.org author profile.

Invalid Tangram DE Invalid Tangram DE

Invalid Tangram DE Invalid Tangram DE
MiNT (Mobile Network Testbed) 
The objective of the project is to continue previous work by SUNY Stony Brook to create a physical, small-scale test environment to simulate wireless network scenarios. A tool called Network Simulator (NS2) currently exists, but since it performs all simulation solely in hardware, it cannot accurately reproduce all of the possibly fault modes possible in a real wireless situation, including multipath interference, obstacles, and hardware failure. I designed a hardware platform upon which to implement a hybrid NS2 using commercial iRobot Create robots and x86-based embedded computers with multiple wireless interfaces, then helped to build the hybridized NS2 software. Among the challenges we encountered were the problem of correcting for inaccuracies in the robots' movements (localization), finding hardware drawing sufficiently low power to run entirely off the robot's own battery to simplify the design, and properly controlling the transmission power level of each robot to maintain the small-scale quality of the testbed.

Full documentation of MiNT results to date can be found in the Published Works section of the Publications page here.
mobileTunes 3 
mobileTunes 3 is a z80 assembly media player for TI graphing calculators that can play up to quadraphonic MOD music through the calculator's serial port. It uses pulse-width modulation to generate sound, and takes advantage of the Doors CS 6 GUI and Associated Program routines to maximize features while restricting program size to under 2KB. It can be downloaded from my page on ticalc.org. In addition, I wrote a PHP tool to convert MIDI music into mobileTunes 3 songs; that webapp can be found on Cemetech.

mobileTunes 3 mobileTunes 3 mobileTunes 3
Multichord 
The Multichord musical instrument is an acoustic stringed instrument with a single string, constructed from wood, a hard drive, 20-lb monofilament, and assorted electronic components. It was the culmination of a project to build an acoustic instrument capable of playing multiple notes without fretting or manual, time-consuming retuning. The Multichord achieves this by attaching a hard drive read/write head assembly between the resonant string and a tensioning spring to adjust the tension of the instrument's string. Careful adjustment was made to the tension of both the string and the spring with the hard drive head in a neutral, unpowered position to ensure a bipolar application of voltage within the safety ratings of the hard drive's coil could cause the string to cover a full musical octave. In the end, the Multichord was tuned to a C-major scale (no flats or sharps) running from A at 220Hz through (but not including) A at 440Hz. Full documentation, construction details, schematics, and specifications can be found on the Multichord project page.


Click on any of the thumbnails below for the full-sized image
Multichord overview Hard drive detail Resistor detail Button detail

View the Clove 2 video.
PartyMode 
PartyMode was a project to turn a computer lab at Cooper Union, the µLab, into a transformable space. The lab contains ten Dell workstations running Windows XP Professional and a 52" presentation screen; I added twenty-two speakers and four subwoofers arranged for surround sound, driven by a series of amps and a 6.1-channel PC sound card. In the center of the room is the VUfan, a sound visualizer of sort built of computer case fans and assorted electronics. Its project page can be found on Cemetech; note that the page explains the five-fan version, though the current version has seven levels. The second element of PartyMode is DiscoScreens, a C++ program written using OpenGL and UDP networking to produce a distributed visualizer over the ten workstations, controlled by a central media server that extracts volume and beat information from currently-playing music and sends it to each computer as solid-color brightness and tint information. The final component is a modified server case containing circuitry to enable and disable the speaker system, turn the room lights on and off, and activate or deactivate DiscoScreens without needing to access a computer. All systems were functional except for the light switching module; future plans involved collaborating with the mechanical engineering department to add a disco ball descending from the drop ceiling. Unfortunately, due to new building infrastructure regulations, this project had to be discontinued.
Scouter 
My Master's thesis, informally termed "Scouter" during the development process, is a novel implementation of high-performance facial detection and recognition algorithms, particularly Convolutional Neural Networks (CNNs), to realtime augmented reality. I am designing an optimized, synergistic detector, normalizer, and recognizer to overlay human identification data on a realtime view using a relatively low-resource wearable computing system. Among the research challenges I currently face are design of an optimal training set, implementation of CPU-intensive algorithms on the Intel Atom processor without loss of realtime capability, and the use of a high-speed feature detector for the symbiotic tasks of detection verification and recognition preprocessor.

The project currently combines the recent development of the Lenet5 CNN for face detection with widely-established recognition algorithms to maximize performance without sacrificing the low latency necessary for an augmented reality system. My current projected thesis completion is May 2010.
Simms AI 
Simms AI v1 is the culmination of several previous Cemetech projects including WordNet, an application that attempted to spider websites and build associations between related websites based on keywords rather than mutual hyperlinking. The basic design of Simms is a centralized neural network database paired with a distributed processing array that parses input into long-term memory, constructs a response when necessary, and returns it to the module that delivered the input. Its neural structure is based on that of the human brain, in that each neuron or ’node’ maintains between one and thousands of connections to other nodes. In order to speed the development of its associative memory, a variety of techniques were employed, including spidering Wikipedia, reading chat logs, and engaging in conversation with human users, which quickly demonstrated the power and the limitations of the approach. Speed and working database size became a primary concern as Simms’ neural network exceeded 300,000 nodes connected by two million connections, a suboptimal node-connection ratio caused by poor text-cleaning routines and storage ef?ciency. Careful analysis revealed fundamental flaws in the neural storage system that will be examined in designing Simms AI v2, the next iteration of the Simms project. A full technical report about Simms AI v1 is available.
smsdoor 
SMSdoor is a small hardware and software project of which Deian Stefan and I have constructed two working prototypes. It is an electronic doorlock controlled by cellphone, AIM client, or web page. The code is based on the `snazzy` Perl library written by Deian with some simple C code interfacing the parallel port on a linux box. Since we're both EEs we chose to use an actuator (rather than something more mechanically complicated) and also built an emergency manual key override. View the video demonstrating its functionality.
SourceCoder 2 
SourceCoder 2 is the second generation of the SourceCoder project, an attempt to provide a full, flexible IDE to facilitate programming in TI-BASIC. It fulfills the requirement for cross-platform accessibilty through its availability on any device that supports basic XHTML and optionally Javascript. The flexibility comes from its ability to read and write several types of *.8** files including matrices, lists, programs, groups, and images. New in 2.0 is a feature that lets SourceCoder participate in group programming help and optimization by automatically posting on a specified forum when new changes are saved to a group project. Such behavior is controlled through permissions set on projects, which can now be saved using your Cemetech account and are accessible anywhere you can log into Cemetech. SC2 is based on SourceCoder 1.0, featured at ticalc.org, and pieces of OpTI-BASIC, from which some of the optimization, character, and syntax-coloring code is drawn.
Ultimate Calculator 1/2 
The original Ultimate Calculator was a modded TI-83+ graphing calculator. It was a project a project I had dreamed of attempting for a very long time, but never quite had the resources and equipment to complete. I finished it in February 2007, with the following features as documented in the project's construction blog:
  • Modified LCD with RGB LED backlight controlled by a GAL16V PLD slaved to two CPU I/O lines allowing full-spectrum color control that also illuminate the case windows
  • Sanded, painted, and varnished case with sports car-style racing stripes
  • Removed LCD bevel and slanted LCD for more unique, non-branded look and easier LCD viewing
  • Internal powered PS/2 port with working drivers for use with external keyboards and mice
  • Case cutouts and case windows for added "wow" factor


In December and January I worked on improving and upgrading the Ultimate Calculator, releasing information in January on the Ultimate Calculator 2, detailed on its project page. Current features include:
  • An improved paint job, blue with silver stripes, using Krylon spray paint and a Minwax finish.
  • A fully-functional 2.5"-diagonal PS/2 touchpad on the rear of the calculator for easy use with mouse-enabled calculator programs.
  • A higher-power TICI CSA full-spectrum RGB backlight capable of producing any color.
  • An integrated female PS/2 port for connection of a mouse, keyboard, or other PS/2 device. Current drivers support mice (and touchpads) as well as keyboards.
  • Slightly modified case construction that combines a sleeker, look with keypad and touchpad water resistance.
Varnished main case halves (rear view) Completed overview Completed Ultimate Calculator 2 (open) Pre-assembly electronics view
WiSO Safe 
The development of rip currents at beaches is very common and life-threatening to even the most experienced swimmers. Despite being the primary cause of drownings and lifeguard rescue missions, little research effort has been put into detecting these rip currents. With Deian Stefan and Dave Nummey, I designed a real-time, fault-tolerant and easily deployable solution, the Wireless Shore Observational Safety System (WiSO Safe), to detect rip currents using a wireless sensor network.

We proposed a design for detecting rip currents based on wireless sensor networks (WSNs). The WSN consists of many small and self-powered sensor nodes wirelessly sharing routing and sensor data to monitor water safety in an efficient manner. Along with the challenge of building a fault-tolerant, self-powered and energy-efficient node, the distribution of the nodes in the WSN poses the challenge of shore coverage, scalability (i.e., how many nodes the routing protocol can efficiently support), localization, network dynamics (i.e., network adjusting for dropped/added nodes), ease of deployment, and analysis of multiple sensor information to determine the safety threshold of the water.
WorldTrends 1/2 
This was an attempt to track keywords and activity at popular general and specialty news sources as well as financial markets to correlate positive and negative world events to news and financial trends, and eventually, try to extract some pattern or predictive algorithm. This project collected data faithfully for about year before overwhelming itself with the amount of data collected; I have put it on hold, but hope to pick it up at some point and recode the system to better handle large volumes of data.

Contents
» Cellular Density Project
» Clove 2
» Doors CS 6
» Document DE 6
» Invalid Tangram DE
» MiNT
» mobileTunes 3
» Multichord Hybrid Instrument
» PartyMode
» Scouter
» Simms AI
» smsdoor
» SourceCoder 2
» Ultimate Calculator 1/2
» WiSO Safe
» WorldTrends 1/2
CRM
© 2007-2009 Christopher Mitchell.