Sunday, August 1, 2010

Work History Part 7: RIT Electrical Engineering Dept.

Location: Rochester, NY
Position: Software / Firmware Engineer
Period: June 2010 - December 2010

Ever since I began my thesis work I've had a growing interest in applying my skills to the field of medicine and medical research. I find devices that interact with the underlying biomechanical processes of the human body fascinating. I enjoy learning about how the human body functions and technological advances ranging from neural modification to gene manipulation and artificial limb development.

Through the recommendation of a certain kindhearted software engineering professor, I was put in contact with the up-and-coming RIT Biomedical Engineering Dept. Within a matter of days I was hired by the RIT Electrical Engineering Dept. (which forms the backbone of the new biomedical engineering dept.) to begin working on the body area sensor network (BASN) project.

The BASN consists of multiple wireless nodes strapped to a user's body. Each node is about the size of a watch and the band is similar to a watchband. Each node collects biometric information, such as body temperature and limb orientation and acceleration, based on where it is positioned on the user's body. Each collector node wirelessly sends data back to a central access point. In turn the access point aggregates all of the data and wirelessly sends it to a USB dongle attached to a host machine where it is processed by a host-side application.

Each node consists of custom-designed PCB architecture and firmware API. A complementary API allows host-side applications to communicate with the nodes using the USB dongle. The centerpiece of each node is the Texas Instruments CC430 microcontroller. Wireless communication leverages the Texas Instruments SimpliciTI protocol.

The goal of the project is to implement a development platform that will allow future developers to create custom applications such as:
  • Seizure / muscle tremor detection and patient caretaker alert system.
  • Local positioning system using dead reckoning from a known starting location. Can be used to track firefighters as they enter a burning building.
  • Wireless electrocardiograph (ECG). Current ECG models use 10 wired electrodes and are cumbersome.
  • Soldier injury detection system. In a battle scenario, the command center can track the physical condition and stress levels of soldiers in the field.
Responsibilities and accomplishments:
  • Developed 3D proof-of-concept applications demonstrating the ability to capture and process biometric data.
  • Leveraged existing firmware to set up a low-power RF communication network between wireless nodes and a host-side USB dongle.
  • Implemented a device driver in Linux to provide an API for interacting with the RF network through the host-side USB dongle.

Saturday, July 10, 2010

Safari 5 and Flash Player 10 Woes

Lately Safari has been prone to freezing (pinwheel of doom scenario) and other undesirable behavior when browsing Flash-intensive websites. The problem seems to occur when viewing videos on Youtube or other websites. Stopping one video mid-load and then starting to view another video will often cause Flash to go belly-up. Sometimes when this happens the <div> where the Flash video should have been appears empty. The problem is usually corrected by restarting Safari.

FYI, I'm running the 64-bit version of Snow Leopard on a 2.4 GHz Intel Core 2 Duo MacBook Pro with 4 GB of RAM and in general I'm very satisfied with its performance.

Could this problem be related to Apple's decision not to allow Adobe to develop an implementation of Flash for Apple's hand-held consumer devices, such as the iPhone? Steve Jobs stated that Flash is a closed platform not suitable for open application development. He also stated that problems related to running Flash is the number one reason macs crash. It's kind of strange that I'm noticing such problems a lot more now that Jobs has made that statement, but then again it could just be my imagination.

In Adobe's defense, CEO Shantanu Narayen states that Flash is not a closed platform and that Flash does not cause macs to crash, rather those problems are related to underlying issues with the Mac OS X.

While many geeks feel that Flash should be phased out entirely in favor of the up-and-coming HTML5 video format, I personally feel that Flash still has a place when it comes to ease-of-development for interactive web content. At least for a while until HTML 5 has time to mature and gain wider acceptance. This video from Google's annual web developer conference demonstrating HTML5 in action is pretty slick:

Saturday, June 26, 2010

3 Partition Trifecta: Mac OS X, Ubuntu, and Windows

I recently installed Mac OS X, Snow Leopard, Ubuntu Lucid Lynx, and Windows XP on my MacBook Pro in 3 separate partitions. This guide was very helpful.

Some of the things I learned are:
  • Windows XP must be the last partition. Mac OS X is my first bootable partition and Ubuntu Lucid Lynx is my second.
  • Boot camp will not recognize the Ubuntu partition. VMware Fusion running within the Mac OS X partition will not recognize the Ubuntu partition either. I hear you can hack some configuration settings to make it happen, but doing so will most likely corrupt the Ubuntu partition.
  • The windows partition must contain a Master Boot Record (MBR) to be bootable. Be careful when installing Ubuntu after installing Mac OS X and Windows. The installation procedure likes to overwrite the MBR by default.
  • No matter which OS you're running, all modern hard drives are limited to 4 primary (bootable) partitions. One of those partitions can be an extended partition and divided into as many logical partitions as you want though.
  • Mac OS X uses the Globally Unique IDentifier (GUID) partition scheme to layout the partition table on the hard drive.
  • The Mac OS X boot loader is located in /System/Library/CoreServices/boot.efi and runs as an Extensible Firmware Interface (EFI) application.
  • EFI replaces the need for a dedicated boot loader (such as the BIOS firmware interface) and is responsible for kicking off other boot loader applications.
  • In order to boot Ubuntu, GRUB (GNU GRand Unified Bootloader) must be installed in the Ubuntu partition. The Ubuntu installer will do this automatically.
  • You can create a swap file in Ubuntu instead of specifying a partition for swap space during installation. You can create the file from within Ubuntu while the OS is active.
  • GParted (Gnome Partition Editor) is a useful graphical tool for checking and resizing partitions from with Ubuntu.
  • The Mac OS X partition can be non-destructively resized using the diskutil command-line tool; however, you must ensure that there is enough free space at the end of the Mac OS X partition if you wish to shrink it.
  • iDefrag is an excellent commercial tool for compressing Mac OS X partition data and moving it towards the front of the partition. I had to start my MacBook Pro in target disk mode and attach it to my old PowerBook G4. I then ran iDefrag on my PowerBook and targeted my MacBook hard drive.
I use the rEFIt (re-fit) boot menu to choose which partition I boot into after my laptop starts up. As you can tell by its name, rEFIt takes advantage of the EFI capabilities of Intel Macs and other EFI-based machines. It's very slick and is installed directly from within Mac OS X while the OS is active.

Tuesday, June 22, 2010

Masters Thesis Part 3: Algorithm Overview

I represent each RF using a multivariate Gaussian distribution with a mean vector (position), covariance matrix (alignment and size), and gain factor (response magnitude). I determine the value of each of these parameters for each RF using a competitive algorithm where the result of a custom greedy algorithm competes against the result of a genetic algorithm. Gaussians are trained one at a time in a staged approach so that the addition of each new Gaussian to the model takes into consideration the effects of all of the previously trained Gaussians.

Actually, the genetic algorithm applies a little more intelligence by dividing a population of Gaussians into species based on similar characteristics and mating (i.e. crossing-over) the best performing Gaussian members within the same species during each generation of evolutionary training. The addition of each new Gaussian to the model attempts to address some residual error in the model resulting from recorded neuron firing rate response values that have not yet been fully explained by the addition of previous Gaussian distributions. The theory is that the best performing Gaussian of each species is associated with a different local minima in the residual error search space, thereby increasing the chances that one of those Gaussians is associated with the global minimum. The Gaussian which results in the greatest drop in residual error among all of the species is selected and added to the model.

The Gaussian model (also known as a Scaled Gaussian Mixture Model) is then used to extract features that are fed into a linear regression (LR) technique. Why is LR necessary on top of the Gaussian model? The reason is because not all RFs are the same. A great deal of research indicates the existence of hotspot segments in the visual field which have a major impact on the response values generated by RFs in non-hotspot segments. Specifically, the directional preference of RFs associated with hotspot segments plays a major role. Thus, the response value of RFs associated with hotspot segment needs to be weighted differently than those for non-hotspot segments and the response values each segment needs to be divided into directional contribution vectors that are each weighted differently.

Overall my algorithmic approach trains models that are capable of predicting neuron firing rate response values with moderate to high accuracy. As such my research offers support for a number of existing concepts in the field of visual neuroscience, such as the gradient hypothesis and opponent organization.

Read the full report (PDF) for a complete explanation.

Masters Thesis Part 2: Receptive Field Theory

So how did I go about creating a model capable of predicting individual neuron responses of primates to various patterns of moving white dots? The key was to use receptive field (RF) theory. In general, a RF is a physiological construct associated with an area of the visual field. Let's say you're staring straight ahead and perceive some motion across the upper right of your visual field. You may have a RF associated with that region such that as you perceive motion across it your nervous system reacts by speeding up (excitation) or slowing down (inhibition) the number of electric impulses between neurons in your visual cortex within a certain period of time.

Each RF is very simple in structure. Imagine a doughnut. The outer ring and missing center form 2 separate areas across which the RF responds to motion. There are 2 flavors of RFs. The first is on-center off-surround where motion across the center causes an excitatory response and motion across the ring causes an inhibitory response. The second is off-center on-surround, which behaves in the opposite way. Multiple RFs can be aligned in various ways to respond to various directions of motion. If you consider your visual field to be 2-D with an x-axis (left/right) and y-axis (up/down), you can place multiple RFs within that plane to respond to all kinds of motion.

An extension of the RF theory is that each RF has a directional preference. This makes sense if you think about how multiple simple on-center off-surround RFs and off-center on-surround RFs can be combined to form more complex RFs. With the addition of a directional preference, the 2-D visual field space becomes a 3-D RF space. The task then becomes a matter of placing RFs within the RF space, aligning them properly, sizing them properly, and understanding the relationships between them.

Read the full report (PDF) for a complete explanation.

Masters Thesis Part 1: Primate Experiments

My computer science thesis work (PDF) at the Rochester Institute of Technology involved analyzing the firing rate response patterns of neurons in the Medial Superior Temporal (MST) region of Rhesus monkeys, which resides above the temple on both sides of the skull. The primate experiments were performed by Dr. Charles Duffy and Dr. William Page at the University of Rochester Neuroscience Department.

Each primate was trained to sit in a special chair and stare directly at a red dot in the center of a rear projection screen covering 90 deg. x 90 deg. of his visual field. The rest of the screen was black. The primate was rewarded with sweet juice if he remained still and stared at the dot for 5 minutes. After successfully completing this task various patterns of moving white dots were shown in the screen, like snow in the wind (except with uniform density and constant velocity). The screen was divided into 9 segments (like the side of a traditional Rubik's cube). Each dot would appear at one edge of the screen and travel in a certain pattern before exiting at another edge of the screen.

The simplest patterns consisted of linear motion where all of the dots moved in the same vertical or horizontal direction across one of the 9 screen segments. More complex patterns consisted of linear motion in 2 of the 9 screen segments where the dots could be moving in different directions within each segment. The most complex patterns were designed to simulation self-motion and occupied all 9 of the screen segments. For example, imagine the old Windows starfield screensaver where the dots travel from the center of the screen outwards, which makes you feel like you're moving into the screen. A cylindrical piece of the primate's skull cap was removed and an electrode was positioned to record individual neuron firing rate responses as the primate perceived each moving pattern on screen.

My task was to design a mathematical model capable of predicting how the primate responded to self-motion patterns given his response to simpler patterns in regards to individual MST neurons. Why? To further our understanding the mammalian brain. Such a biologically-inspired model can potentially be used to program the AI for more realistic robots, or potentially be used to program the firmware for a cybernetic implant to help treat the sensory degradation symptoms of Alzheimer's disease patients.

Note that firing rate signals were captured in a region of the brain before any higher level cognition was performed. In other words, the response values were not affected by what the primate was thinking about when viewing the patterns on screen (i.e. bananas). Well, in theory that's what we'd like to believe.

Saturday, May 15, 2010

Work History Part 6: RIT Industrial Engineering Dept.

Employer: RIT Industrial Engineering Dept.
Location: Rochester, NY
Position: LabVIEW Specialist
Period: December 2009 - May 2010

The Electrophotographic Development and Transfer Station (EDTS) fixture was a generous donation by Kodak to the Print Research and Image Systems Modeling Laboratory in the Center for Imaging Science at RIT. I briefly mentioned this job in a previous post.

The ultimate goal is to use the fixture as a tool to teach students about the fundamentals of xerography. Additionally, the fixture exposes the internal components of a xerographic printing press, which makes it a desirable candidate for running experiments that require modifying individual components, spaces between components, carriage speeds over specific stations, etc. Xerox expressed an interest in using the fixture to analyze the characteristics of small-particle developer (i.e. toner) and examining its impact on print quality.

I worked directly with the P10503 senior design team and representatives from both Kodak and Xerox. All of the team's documentation can be found on their website. The project poster (PPT) provides a general overview. My primary objective was to modify the existing rudimentary LabVIEW software in order to execute control over all of the various electrical and mechanical components of the fixture. When I began the fixture could not print an image. When I left it could. I call that a success!

Responsibilities and accomplishments:
  • Led a 6-person team consisting of mechanical engineers, an industrial engineer, an electrical engineer, and a software engineer.
  • Implemented LabVIEW software to control a flat plate xerographic printing fixture through NI DAQ hardware.
  • Wired electrical and mechanical components, including stepper motors, DC motors, relays, high voltage power supplies, and electrostatic voltmeters.

Tuesday, June 16, 2009

Facebook Application: Spot the Fake Smile Quiz

Web development has always been a hobby of mine. I enjoy it because it provides a more artistic outlet than typical programming. That's not to say that designing program architectures and writing code doesn't require creativity; rather, sometimes I like to create something visually appealing. Sometimes I like to dabble in Photoshop as well.

Also, websites and web applications often have a more direct social impact. One day while browsing the BBC website I stumbled across this online quiz where you are asked to spot the difference between fake smiles and real smiles. The theory is based on the work of Guillaume Duchenne who discovered that people who are genuinely smiling have raised cheeks and crow's feet (wrinkles in the outer corner of the eyes).

I thought that it would be interesting to see how well my friends and colleagues could spot the fake smiles, so I decided to create a Spot the Fake Smile Quiz Facebook application where users can post their quiz results to their profile feed. My first task was to find free-to-use photos of smiling people and determine myself if their smiles were real or fake. In order to remove any errors in my classification, I only used photos available under the an appropriate Creative Commons license where the author commented on whether the subject's smile is fake or not.

Some of the technologies I used to develop the application include HTML, CSS, PHP, AJAX, JavaScript, JSON, and mySQL. I slightly modified some jQuery code to create the photo sliding effect. I decided not to use the special FaceBook Markup Language (FBML) tags and instead embed my application in the Facebook webpage as an iframe. I found that this approach provided me with more freedom over the layout of my application and allowed me to use the web technologies that I'm already familiar with. Also, FBML applications require special modification to use jQuery, which was a major turnoff. The differences between the two approaches are explained here.

000webhost.com is an excellent free web hosting service that I'm using to host my application.

Monday, June 1, 2009

Work History Part 5: RIT CS Dept. Teacher's Assistant

Location: Rochester, NY
Position: Teacher's Assistant and Student Lab Instructor
Period: September 2008 - May 2009

This job was my saving grace. The CS dept. had an excellent arrangement where they would pay for 100% tuition costs and give out a multi-thousand dollar stipend in exchange for about 20 hours of TA work per week.

I enjoyed teaching new students about object-oriented programming and the difference between references and pointers. Some of the student projects were interesting too, like solving the traffic jam puzzle and peg board game.

Responsibilities and accomplishments:
  • Taught computer science labs in Java and C++.
  • Graded student programming assignments.
  • Answered student questions in the mentoring center.
  • Held CS1-CS4 test review sessions.

Thursday, May 14, 2009

Object Tracking using Particle Filters

During my first year as a computer science grad I took a course in advanced computer vision. The class was divided into teams and each team could choose one of two projects to work on. The first project involved identifying students as they walked into a classroom based on their facial features. The second project involved tracking students as they walked into the classroom in-between other students. My team decided to work on the second project because my partner and I were both interested in motion tracking at the time.

We developed 3 systems with various degrees of motion-tracking success:
  1. Kalman filter. Actually the particle filter developed by Cuevas, Zaldivar, and Rojas which is based on the Extended Kalman Filter (EKF). Some success.
  2. Kalman filter with spring forces. Attempt to use multiple particle systems linked by spring forces to track multiple parts of a subject's body. Limited success.
  3. Hierarchical particle filter. Based on the work of Viola and Jones and the work of Yang, et al. Uses rectangular windows for feature extraction. Quite different from the Kalman filter and the 2 systems described above. Most successful.
A lot of time was spent adjusting the particle set properties used by the first 2 systems for each student test video. The third system is more robust and doesn't require as much custom-tailoring to the video to which it is applied.

The particle filter presented by Cuevas, Zaldivar, and Rojas attempts to track a small color distribution within a circular window centered around a target pixel.

Alternatively, the approach presented by Viola and Jones employs a rectangular target window to determine the relative position of average color intensities within an area of the video.

Viola and Jones had great success detecting faces using the target window to capture the average color intensity around a person’s eyes and the average color intensity of that person’s upper cheeks. It's a very simple concept but it works well in practice because of the intensity difference between those two regions of a person's face. In general a person's upper cheeks are much brighter than the inset region around their eyes.

Resources:

Sunday, May 10, 2009

Mobile Robots Programming: Retriever

During my third quarter as a computer science grad I took a course in mobile robot programming. Students were required to use the Player network server to control a Pioneer 2 DX (differential drive) robot with an 8-point sonar array and bumper array built into the front of the robot.

Using the Player interface, programs can be written on a laptop attached to the robot via an ethernet cable. In such a setup the laptop provides most of the processing power while communicating with the robot's sensors and actuators via an IP connection. Programs can be tested before controlling the hardware using the Stage simulator, which can simulate sensor readings and objects in a 2-D bitmapped environment.

Teams of students were asked to write control software capable of guiding the robot to a number of predetermined locations on the third floor of the GCCIS building, making sure to avoid other robots and innocent human bystanders on the way as well as successfully maneuvering along walls and through door frames when required. The idea was that there were items at each intermediary location that needed to be retrieved before traveling to a final destination.

To accomplish this the robot needed to perform 3 major tasks: localization, path planning, and path execution. The robot was guaranteed to start in one of 8 known poses (location and orientation), however, it did not know which of those locations it started in. We had the robot determine its starting pose by detecting known landmarks in the environment near its starting location, such as pillars and walls, and narrowing down the set of possible locations until it was left with the most probable one.

After localization the robot planned a path to the destinations specified in a user-provided input file. Path planning was aided by the fact that the environment was known a priori. The robot was provided with a black and white raw image file of the layout of the third floor of GCCIS that it converted to a rudimentary obstacle map. A probabilistic road map (PRM) approach was employed to plan a path from one location to another using the obstacle map.

Each path that was planned consisted of a series of waypoints. The entire path itself may have been complex, but the path between any 2 waypoints is nothing more than a straight line. The robot navigated the path between each pair of waypoints by using potential field motion. This addressed the issue of obstacle avoidance because the robot was repulsed by obstacles in its environment while being attracted to its current goal.

Resources:

Thursday, February 12, 2009

NeuroEvolution of Augmenting Topologies

During my second quarter as a computer science grad I took a course on neural networks. As mentioned in a previous post, I had previously taken a course in pattern recognition. Since I already knew quite a bit about neural nets I decided to research the topic of NeuroEvolution of Augmenting Topologies (NEAT) instead of work on the scheduled class project (comparing the performance of feed-forward, recurrent, and radial basis function neural nets).

NEAT is a genetic algorithm for evolving artificial neural networks that protects innovation by dividing network types into species based on similar characteristics. During crossover new networks inherit nodes and node connections from their parent networks to form a new network structure. Node genes and connection genes are labeled with innovation numbers so that as those genes can be tracked as they are passed on to future generations. After crossover new networks undergo mutation where new nodes or new connections are added to the network and connections weights are adjusted by a random process.

Unlike traditional learning where connection weights are adjusted via a backpropagation technique, NEAT selects members from the spawned population, called genomes, for breeding. The evolved members are composed of nodes with sigmoidal activation functions that behave in the same way as traditional multi-layer perceptron networks.

Using jNEAT, a Java implementation of NEAT, I attempted to solve 2 different classification problems. The first problem was to classify 150 iris samples as 1 of 3 breeds based on 4 features. The second problem was to classify 178 wine samples as originating from 1 of 3 batches of wine based on 13 features. After conducting a number of different experiments using various configurations settings, I was able to generate a network with 96% correct classification for the iris test dataset and a network with 85% correct classification for the wine test dataset.

About a year later I went on to apply the concept of speciation to a genetic algorithm in my masters thesis.

Resources:

Wednesday, October 29, 2008

Handwritten Digit Recognizer

During my first quarter as a computer science grad I took an incredibly enlightening course in pattern recognition. Teams of students were assigned the task of implementing a handwritten digit recognizer. Like humans, computers need to determine the content of handwritten information before it can be used in a meaningful way. This is accomplished through a form of optical character recognition (OCR).

The postal service accepts packages and envelopes with handwritten addresses which must be read and interpreted in order to sort mail and send each item to its intended destination. It's both impractical and expensive to have humans sort large volumes of mail so automated computer systems are often used instead. The systems often consist of cameras which take pictures of the addresses and feed the images into program for processing.

My team decided to implement a convolutional neural network similar to Lecun's LeNet-5.
  • The first layer is the input layer and consists of one neuron per pixel in a 29x29 padded version of the sample image.
  • The second layer applies 6 feature maps to the input layer. Each feature map is a randomly distributed 5x5 convolutional kernel.
  • The third layer applies 50 feature maps to all 6 of the previous feature maps after sub-sampling. Again, each feature map is a randomly distributed 5x5 convolutional kernel. These 2 layers are referred to as a trainable feature extractor.
  • The fourth and fifth layers are referred to as a trainable feature classifier. These 2 layers are fully connected and compose a universal classifier.
A convolutional neural network exploits the spatial structure of digits and attempts to train weights to identify spatial differences between digits. We calculated classification error rates using standard backpropagation, which played a major role in training the system.

After running the network with 100 hidden nodes for 5 epochs over 60000 MNIST training samples and 10000 test samples, our network misclassified 851 samples and had a 91.4% success rate. Not bad.

While this project focused on recognizing handwritten digits, the concepts and algorithms covered can be easily extended to apply to all alphanumeric characters.

Resources:

Monday, September 1, 2008

Work History Part 4: Xerox Corporation

Employer: Xerox Corporation
Location: Webster, NY
Position: Software / Firmware Engineer
Period: June 2008 - August 2008

Xerox is a global document management company specializing in the production of workstation printers, large scale printing presses, multifunction systems, and the supplies required to run such devices.

Nowadays Xerox seems to be shifting its focus to collaborative web technologies to make it easy to share, edit, and print digital media.

Xerox is named after the process of xerography, which was invented by Chester Carlson in 1938. The Center for Imaging Science (CIS) at RIT is named in honor of Mr. Carlson. A little over a year after I worked for Xerox I was hired to perform research on a flat plate xerographic printing press for the Print Research and Image Systems Modeling Laboratory in CIS.

While working for Xerox I was part of the Platform Development Unit / Control Systems Platform group and was part of the Xerographics / Image Path Software team. I helped maintain and develop the Nuvera Digital Production System line of products; however, my primary task was to implement C++ code to control a down-shooting printhead fixture.

The down-shooting fixture was a digital coater device capable of printing clear gel ink on paper. Such a device allows users to coat specific areas of a document with gloss instead of performing a flood coat of the entire page. Also, such a device can print Braille on pharmaceutical bottles. The European Union has made it mandatory that the name of all medications be printed on the packaging in Braille.

Responsibilities and accomplishments:
  • Migrated digital coater LabVIEW code to production-worthy C++ application code.
  • Designed a software architecture for Controller Area Network communication.
  • Analyzed and implemented solutions for problems with the Nuvera Digital Production System printer.

Thursday, May 15, 2008

Computer Graphics II Projects

During my last year as a software engineering undergrad I took a graduate-level course in advanced computer graphics using OpenGL. Each student was required to implement a ray tracer from scratch in order to render a scene similar to Turner Whitted's classic example of transmissive and reflective spheres. A record of my progress is posted on the LiveJournal (tag: raytracer) I kept for the class. The image to the right was the final product.

My personal research project during the class was to implement a particle system from scratch to animate realistic looking fire. I applied a texture map to each particle to give it shape and definition detail. Also, the texture map was necessary to provide the alpha channel used for alpha blending. Various system parameters can be modified in real time to give the particle system the appearance of a lava lamp or even multi-colored fireworks.



The project details are posted on my LiveJournal (tag: openfire). I named the project OpenFire because the source code is available free of charge to the open source community. If modified, all I ask is that I be credited in the source code comments.

Resources:

I also dabbled in a little bit of Pixar's Renderman technology. There was a student competition to see who could create the most interesting image. I won second place for my abstract rendition of a woman's head and brain! Check it out on my LiveJournal (tag: renderman).

Wednesday, April 23, 2008

Bachelors Senior Design Project: GridShell

My software engineering capstone project at the Rochester Institute of Technology involved developing a command-line shell to allow easy access to distributed computing environments, namely grid resources such as the TeraGrid. The project was part of a development effort put forth by the RIT Center for Advancing the Study of CyberInfrastructure (CASCI).

GridShell was one of many projects spearheaded by Cyberaide, a community of researchers and organizations interested in advancing cyberinfrastructure to promote collaboration between individuals and providing them with the computing power necessary to deploy and execute processor-intensive programs for scientific research.

The GridShell provides uniform syntax and semantics for creating, submitting, managing, and checking the status of tasks deployed to local and remote Unix resources. It simplifies workflow management by allowing users to execute tasks sequentially or in parallel and allowing users to specify dependancies between those tasks, which places a constraint on their order of execution.

Additionally, users can create scripts in Python to specify task order execution, which is useful for more complex jobs. This is because the GridShell front end is implemented in Python and can execute Python code natively in the command-line interpreter (CLI). Specifically, the CLI is based on the IPython environment. In turn JPype is used to establish a functional language binding between the Python front end and Java back end.

Java was chosen as the back end language in order to leverage existing web service technologies written in Java and utilize other Java utilities. Ultimately, our goal was to provide multiple interfaces to the underlying GridShell task management framework, including the traditional terminal interface as well as a web interface, MATLAB interface, Ruby interface, etc. For the web framework we decided to use a deployable Apache Axis2 web server with Rampart security.

Resources:

Wednesday, November 14, 2007

Finite State Process Autocoder

As a software engineering undergrad who was part of the honors program at RIT, I was required to complete an independent study. At the time I was taking a course in concurrent systems and was making extensive use of the Labelled Transition System Analyzer (LTSA), a concurrent system modeling tool which uses Finite State Process (FSP) algebra notation to represent component behavior.

Once a system is specified in FSP notation, the LTSA can parse and compile the FSP notation to generate a graphical Labeled Transition System (LTS) model. The LTSA also provides a means to “animate” the system by performing discrete or shared process behaviors one at a time and stepping through the states of the system. Under the hood, the LTSA generates and stores an internal state machine representation of the system.

One of the major difficulties encountered by software engineers who use the LTSA is deciding how to translate the FSP system representation into an executable implementation. A common practice is to use the LTSA as a system design tool and to deviate from the FSP during the implementation phase in order to create a custom-tailored system from the ground up. The major disadvantage is that the implemented system may no longer exhibit the same behavior as the FSP and therefore will need to undergo an entirely separate, and more complex, verification process.

Clearly, it is advantageous if the system implementation reflects the original FSP design. At the time when I was conducting my independent study there was no widely accepted procedure for converting the FSP into source code. I began developing the an automatic code generation backend called the FSP Autocoder to use the LTSA to parse FSP notation and perform semantic analysis to produce code stubs for primitive concurrent objects.

Before I could begin working on the compiler aspect of the autocoder, I needed to design a “universal” (i.e. widely applicable) concurrent system architecture that could be traced back to the FSP system representation and vice-versa. I considered many approaches, such as employing a state machine architecture, rendezvousing threads in conjunction with a round-robin thread scheduler, and using a Communicating Sequential Processes (CSP) library.

Resources:

Saturday, September 1, 2007

Work History Part 3: MITRE Corporation

Location: Bedford, MA
Position: Network Software Engineer
Period: June 2007 – August 2007

MITRE Corporation is a not-for-profit organization that manages Federally Funded Research and Development Centers (FFRDCs). I worked for the Command and Control Center (C2C) as part of the Tactical Edge Solutions group.

I worked on the MIDS LVT 1 MultifunctionaI Information Distribution System (MIDS) Low Volume Terminal (LVT) radio developing an interface that would allow messages to be passed between the radio network and an application running on a host machine. One application was a situational awareness visualization.

Responsibilities and accomplishments:
  • Implemented a gateway between military radio networks and the Global Information Grid using an enterprise service bus.
  • Programmed a Java controller to exercise the MIDS Low Volume Terminal Platform D Ethernet interface.
  • Configured terminals using time division multiple access communication method.

Friday, December 1, 2006

Work History Part 2: Excellus Blue Cross Blue Shield

Location: Rochester, NY
Position: Java Technology Specialist
Period: June 2006 – November 2006

Excellus BCBS is New York State's largest nonprofit health plan. Their e-service production website provides a claims processing workflow used by patients, medical professionals, and insurance agents.

During my employment the website was relying on backend services implemented in a legacy COBOL architecture. Steps were being taken to replace the entire backend with a modernized J2EE event-driven architecture.

Responsibilities and accomplishments:
  • Developed long-range service-oriented architecture goals for a legacy software system.
  • Investigated and compared the benefits of utilizing modern software technologies such as J2EE and Apache Struts.
  • Analyzed and implemented solutions for problems regarding the Excellus /Univera e-service production website.

Thursday, December 1, 2005

Work History Part 1: Harris RF Communications

Location: Rochester, NY
Position: Software / Firmware Engineer
Period: May 2005 - November 2005

Harris specializes in developing communications equipment for the DOD, including RF communications, SATCOM, and GPS networks.

I worked on maintaining and developing the FALCON II RF-5800H-MP HF/VHF manpack (MP) radio. Nowadays Harris is focusing on the development of the FALCON III series. The newest member is the FALCON III RF-7800M-MP multiband manpack radio.

Responsibilities and accomplishments:
  • Analyzed and implemented solutions for problems regarding the FALCON II manpack radio state machine, radio programming interface, and front panel display.
  • Wrote Visual Basic scripts to test radio to phone communication, UDP transmissions, and GPS synchronization.
  • Analyzed and tested C++ code to remove memory leaks.