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.

Friday, April 22, 2005

Hello World!

Now that I've finally completed my masters in computer science from the Rochester Institute of Technology Golisano College of Computer and Information Sciences, I figured it's a good idea to keep a record of all the cool projects I've worked on over the years. This blog will serve as a personal portfolio and more organized alternative to jotting down notes and how-to guides in miscellaneous text files.

Plus, this way I get to share my knowledge with the world - which will make me feel better knowing that others may benefit from the next 5-hour impromptu code-review session necessary to compile that must-have bin util in the latest version of Ubuntu. Yeah, all you geeks know what I'm talking about.

Like most CS geeks these days I know quite a bit about HTML and web programming, so I was faced with the decision to create my own website from scratch or to use a blogging site like this one (Blogger). Being the type of guy who likes to drive standard shift in a world where standards are quickly being phased out for automatics, I usually like to have as much control as possible over my craft (pun explained: craft as in my vehicle and craft as in my professional activities), but in this case I've decided to relinquish the reigns and go for the simple and easy solution. Besides I don't want to be distracted by the task of maintaining a website on top of everything else. Also, Blogger looks pretty (with the right settings).

As geeks we have an insatiable desire to know every intimate detail of a piece of technology, be it a car, iPhone, printer, Linux kernel, or web service. It's not enough to sit behind an interface and know how to use something; we want to know how it works! Sadly none of us has the time or energy to satisfy our every geek craving. We can't write all of our programs in assembly instead of C or spend our time reverse-engineering device drivers when something doesn't work the way we expect it to. We can't go through life with use strict; on all of the time; sometimes we have to take a more casual approach and accept things as they are. No one ever said that being a geek is easy!

Note that I intentionally changed the date of this post so that it's the oldest and appears first in the blog archive. The dates of other posts may have been changed to reflect a representative date when I completed a project or an employment period ended.