Half-time position in software development.
AI Software Engineer, Development
Stottler Henke Associates, Inc. (SHAI). Seattle, WA. January, 1999 - Present
Current role (part-time)
- Software Development
Innovative document ranking and management application to assist the researcher in finding and using information available via a variety of search sources. Primary activities include
o Design, implementation and documentation of new features in a layered architecture
o code re-design and refactoring
o unit testing; tools include NUnit, NMock and TypeMock
o code reviews
Implementation in C# using Visual Studio .NET.
Past work at SHAI
- Project manager
DARPA-sponsored, 2-year research and development effort of a decentralized, agent-based computer network monitoring and response system.
Research: network management; fault and attack detection and remediation. Current approaches’ benefits and shortcomings. Investigation and design of knowledge representation of network state and response selection. Application of AI techniques to event detection and measuring the effect of responses, including data mining, case-based reasoning, and machine learning.
System Development Lead: requirements analysis, system architecture, risk management, construction lead with staff of five developers.
Project Manager: monthly progress and finance reports; semi-annual technical reports; final report. Authored conference paper. Pursued contacts with potential investors / customers, presented to DARPA, Lockheed Martin, Computer Emergency Response Team (CERT), Jaycor and Symantec.
Deliverables: Reports on research findings. System architecture. Prototype software of the agent system. (C++ and Java)
- Mentor / Development Lead
As I improved my own skills as a professional software developer, I became disturbed by the fact that we had several new hires that we referred to as “junior programmers” – after they had been with us for over a year! I discussed this with my manager and proposed that I take on a mentoring role. Activities included readings, discussion and problems on design patterns; being a go-to person for design and coding questions; training in code reviews; and monthly “career checkups” for troubleshooting, advising, and goal-setting. I have also worked to impart better software development practices across my office by, for example, making reading recommendations (in particular from Code Complete and Writing Solid Code) and attending and reporting back on a Construx workshop, “Real World Software Testing.”
- Network Administration Oversight
Coordinated network administration tasks with contracted (outsourced) company. Performed routine tasks (manage user accounts, troubleshoot connectivity or application problems, etc.). Compiled documentation.
Select and interview candidates.
- Other R&D projects
· For a computerized math tutorial authoring system, developed graphical interface for specification of new content modules and the backing code to generate new Java class files from the specifications (this was fun – it was like structuring a non-ambiguous grammar for the user input and writing a compiler for it with the target being Java source code). (Java)
· Content development, design and implementation of a prototype intelligent tutoring system on data structures. (Lisp)
· Design, implementation, and testing of user-interface layer of a data mining application, with emphasis on user interaction and information visualization. (C++ with MFC)
Graduate Research Assistant
Virginia Tech Computer Science Dept. (Blacksburg, VA) Jan. 1997 – Dec. 1998
Integrating Statistics and Models Across the Social Sciences Curricula (principal investigator: Dr. Clifford Shaffer). Lead programmer developing interactive computer tutorials for teaching statistics in the social sciences. Responsibilities included design and implementation of interactive Java applets for use in both the tutorials and a collaborative analysis environment; directing code integration and reuse by other programmers on the team; assisting development of tutorial content; conducting mediated formative evaluations of the product.
Programming languages: C#, C++, Java, Perl, Lisp
Programming tools: Visual Studio (.NET), JBuilder, Allegro Lisp, Together (UML modeling), JUnit / NUnit (unit testing), NMock / TypeMock (for unit testing) Demeanor (code obfuscation), DevPartner Studio (performance profiling and more).
Platforms: primarily Win32; some Linux and FreeBSD
M.S. Computer Science and Applications, Virginia Tech, 1998.
B.S. Math, Virginia Tech, 1998.
B.S. Computer Science, Virginia Tech, 1997.
Phi Beta Kappa, Upsilon Pi Epsilon, Golden Key, Outstanding Senior Award, graduated magna cum laude.
Scalable, Autonomous Monitoring and Response for Network Communications Reliability, in proceedings of The 2004 Military Communications Conference, (MILCOM '04, Monterey CA, Oct. 31 - Nov. 3). http://www.stottlerhenke.com/solutions/computer_security/MASRR/MASRR_MILCOM.pdf
Towards Decentralized Network Management and Reliability. In Proceedings of the 2002 International Conference on Security and Management (SAM’02). Las Vegas, NV, July 2002 (with Dr. Tamitha Carpenter). http://www.stottlerhenke.com/solutions/computer_security/MASRR/masrr.pdf
ChAD: Change and Anomaly Detection – Discovering when a system is not behaving normally. White paper: http://www.stottlerhenke.com/solutions/computer_security/MASRR/ChAD.htm. November, 2001.
Cooperating Software Agents Pinpoint Unrecognized Faults, Take Steps to Maintain Reliability. White paper: http://www.stottlerhenke.com/solutions/computer_security/MASRR/faultyMem.html. July, 2001(with Dr. Tamitha Carpenter).
Network Monitoring & Response: A Motivating Example. White paper:
http://www.stottlerhenke.com/solutions/computer_security/MASRR/SAPmisconfig.html. July, 2001(with Dr. Tamitha Carpenter).
Building a Registered, Volume Database: an Object-Oriented Octree Program. Proceedings of the 35th Annual Southeast ACM Conference (1997).