Joseph A. Knapka
429 Palmary Drive, El Paso, TX 79912
(915)549-5098
jknapka@kneuro.net
Software Architect
Last updated June 20, 2006
My Ideal Job
My ideal job would be a high-level
technical position in an organization that provides support for an
engineering or scientific enterprise.
Note: I have organized my skill lists so as to emphasize things that I am interested in, rather than things most potential employers might want to see. This seems like a better way of catching the interest of potential employers that I might actually enjoy working for.
Things that I am interested in becoming very, very good at
- Lisp. I have written Common Lisp, Elisp, and Scheme code, some of it even fairly recently. But I know that I have barely scratched the surface.
- Pure functional programming. I can manage Haskell, but monads are still beyond my intuitive grasp. That is, I can use them, but I don't understand them.
- Agile development. I would like to work as part of a team that intensively and consistently applies a methodology like Extreme Programming or Scrum.
- Data mining. I'm specifically interested in semantic analysis of natural language, and in building semantic models or ontologies from large bodies of data. I have no real experience with this, but would like to get some.
- Autonomous agents. Building behavior for virtual entities, such as non-player characters in game worlds, would be a lot of fun.
- Robotics, including both real-time control and higher level behavior, such as world-modelling. (6/2010 - I am reading Valentino Braitenberg's "Vehicles"; it is truly enlightening.)
- Electronics in general. For robotics, and because I'd like to build my own guitar effects.
- Meta-analysis; that is, analysis of development methodology and how it affects the products of software-development organizations.
Technologies, Platforms, and Languages
(If I've never been paid for a particular skill, I've
marked it with 0$).
-
Technologies
-
Functional and logic programming
-
Object oriented design and development
-
Device control via serial and network communication channels
-
WWW/HTML/CGI 0$
-
Expert systems, including Neuron Data's Nexpert ES shell
-
Automatic code generation
-
ODBC
-
TCP/IP (application development and administration)
-
Java-based technologies including Beans, JDBC, and IBM's VisualAge environment
-
Oracle database administration
-
XML/XSLT
-
COM/DCOM/Visual Studio
-
Platforms
-
Unix (Linux, SunOS, Solaris, OpenBSD) (administration also, especially
on Linux)
-
Windows 9X/NT/XP
-
OpenVMS
-
OS/2
-
Languages
(For a detailed outline of my experience, see
my language collection page.)
-
Python
-
LISP (Emacs, Common, Scheme) 0$
-
Prolog
-
JavaScript 0$
- Forth 0$ (I've written a Forth (or Forth-like)
compiler/interpreter/runtime for 8086/8088 PCs.)
-
Tcl/Tk (and [incr Tcl]/[incr Tk])
-
Expect
- PHP
-
Motorola 6811 assembly 0$
-
Intel x86 assembly 0$
-
Java
-
XML
-
XSLT
-
Visual Basic
-
SQL, including procedural extensions Transact-SQL (Sybase) and PL/SQL
(Oracle)
-
Perl
-
C/C++
Professional Experience
June 1993-January 1997; May 1997-Present: TransCore ITS,
Inc. (formerly JHK & Associates), Norcross, GA
Current
position: Systems Engineer Responsibilities: I gather
requirements, design, develop, and maintain software for surface
traffic management applications, such as intersection control. I've
been involved in a primary technical capacity (architecture, design,
and coding) in the following efforts:
- Control software for various roadside traffic-management devices
under OS/2, Unix, and Win32.
- Soft realtime code for device control on various platforms.
- An expert system for wide-area traffic managment.
- Network data-distribution software using NetBEUI and TCP/IP.
- Java and XML-based graphical user interfaces.
- Compilation of SQL DDL into C++/COM/ODBC database-access code.
- Compilation of SNMP MIBs from ASN.1 into an XML format suitable for use by a variety
of other tools.
- A complete management system for roadside traffic-management devices
based on SNMP.
- Administration of Sybase, Oracle, and MySQL databases.
- Administration of a Linux-based virtual private
network for telecommuting.
- XSLT for generation of DB management scripts and code
from XML DB descriptions.
January 1997-May 1997: QuadraMed, Atlanta, GA
Responsibilities: Maintained and extended QuadraMed's insurance-claim
clearinghouse software.
I left TransCore for personal reasons and accepted a job with QuadraMed;
however, I quickly learned that I did not enjoy working in the insurance
industry. Later developments made it feasible for me to return to TransCore,
so I did so.
June 1992-May 1993: KnowledgeWare, Atlanta, GA
Responsibilities: Maintained and extended the repository-management
subsystem of KnowledgeWare's Application Development Workbench,
a full-life-cycle CASE tool.
Other Experience
- I've been using Linux since 1992; my first kernel build was version
0.90, I believe.
- I recently wrote a utility that I've released to the public:
mgrep.py, a grep-like tool for analyzing
block-structured text files using regular expressions. I find I
need to do that a lot.
- I also like to tinker with robots, but I
don't get to do so as much as I'd like; that's where the 6811 assembly
experience comes from.
- Recently, inspired by Leo Brodie's charming
book, "Starting Forth", I wrote a Forth-like interpreter, compiler, and
runtime environment in Intel assembly for my ancient NEC MultiSpeed
laptop.
- I have done some work on
documenting the Linux kernel's memory management subsystem.
- I currently (as of June, 2006) hold the rank of San Tuan
(Black belt, 3rd degree) in American Kenpo Karate through the American Kenpo Karate Academies
of Albuquerque, NM. I am a certified AKKA instructor.
Education
University of Georgia, Athens, GA, 1990-1992: Completed two years
of course work toward the degree of Master of Science, Artificial Intelligence,
with 3.97 GPA. (I did not complete the degree program.)
Morehead State University, Morehead KY, 1986-1990: Bachelor of
Science cum laude, with a double major in mathematics and English
literature.
References available upon request.