Profile |
Software developer interested in everything from high level programming in
languages such as Java and Python to medium level languages such as C/C++
down to low level programming in assembly language on both computers and
embedded systems. Extensive experience as both a professional and a
hobbyist looking for a fun, positive environment where I can use my
creativity to contribute to the growth of an organization and possibly
lead a team.
|
Interests |
C/C++ Java / Android / JNI Javascript |
|
Assembly Language Objective-C / iOS PHP |
|
Python Perl SQL |
|
Experience |
- 01/2008 to Present: Exegy
Software Engineer / Manager, Software Engineering
- Created a Java/JNI API wrapper around a C API using Python to
parse C header files and flat text files to generate C++ and Java
source code.
- Worked in a QA team for software testing. Created a set of
Perl scripts that generate C code to validate software.
- Bug fixing, feature adding, and code optimizations to a customer facing API in C++.
- Suggested and created a script in Python to generate HTML documentation
for C and Java APIs along with an HTML / Javascript point-and-click
application builder.
- Thought up a way to significantly improve the performance
of a piece of code by generating x86_64 assembly code on the fly from
downloaded tables similar to a JIT compiler. Managed an intern to prototype
it which eventually became a part of the product.
- Created a Java library for generating Java assembly byte-code in memory
that can be loaded during runtime.
- Wrote code to populate a KDB database with market data.
- Managed a team of up to 5 engineers plus multiple interns.
- 03/2003 to 01/2008: Cernium, Inc.
Senior Software Developer
- Optimized MMX code for SSE2 using Intel C++ intrinsics with the Intel C compiler.
- Wrote C++ code utilizing DCOM to integrate Cernium's Perceptrak
with Lenel's OnGuard system.
- Wrote x86 assembler code using SSE instructions for image manipulation.
- Wrote image manipulation routines using Intel's IPP and IPL libraries in Visual C++.
- Developed code to crop JPEG's without losing quality using libjpeg.
- Created a library for creating and playing AVI files.
- Wrote a library for grabbing images off networked cameras including Axis, Sony, Toshiba, Bosch, and Panasonic.
- Wrote other supporting applications and functions in C and Visual Basic.
- Rewrote mixed C / VisualBasic code into cross platform C++ using gcc and Visual Studio 2005 Express with FLTK.
- Wrote an RTSP server and an avi / mjpeg creator to compile and run on
embedded Linux platforms including Axis cameras and Gumstix embedded ARM board.
- 02/2003 to 12/2003: Junior Chamber International (Contracting under Robert Half International Inc.)
PHP Web Developer
- Worked with a graphics artist to redesign the JCI webpage. Coded in
HTML and PHP pulling data out of an existing MySQL database.
- Worked on a new Business Network website creating the database along
with the HTML and PHP.
- Maintained the database and code for a few months after completion.
- 06/1998 to 11/2002: Direct-Data Inc. - St. Louis, Missouri
Programmer for Research and Development
- Wrote a web-based, multi-user drawing markup program in
Java/Javascript. The Java applet connects to a C server
which allows multiple users to markup the same drawing
at the same time. Developed supporting routines in PHP and
a C program which decompresses/compresses GIF with
LZW compression.
- Wrote Huffman and Group 4 decompressors for converting
TIFF files into scaled GIF files for producing thumbnails.
- Wrote a drag-n-drop FTP client in Visual C++ for Windows.
Also wrote FTP clients in Java as both an applet and an application.
- Converted C code written for a Progress database into
C code for Oracle, MySQL, and ODBC.
- Wrote a program that pulls web pages off the Internet and
makes thumbnails out of them using PHP, Netscape, and X11.
- Wrote a C and PHP program to interface with RetrievalWare and
Visual RetrievalWare (text and graphical based search engines).
- Wrote a PalmOS application for a medical textbook publisher.
- Set up firewalls on subnets using Linux and OpenBSD.
- Set up a Postfix mailserver with the SpamAssassin spam filter.
- 06/1997 to 06/1998: Maritz Inc. - St. Louis, Missouri
Programmer/Analyst
- Developed a web based application that ran an internal
program using ASP / VBScript, JavasScript, and Microsoft Access.
Also wrote a Java applet to draw graphs and charts. Won an
award for this project.
- Worked on a team project using
ASP / VBScript and Microsoft SQL Server. Was in charge of writing
Visual Basic and SQL Server stored procedures used to create tables
that were then loaded into Crystal Reports to produce tax forms,
mailing labels, and awards program information. Was also in charge
of updating the web site and creating a Java applet that displayed
data in a graphical tree format.
|
Open-source Projects |
- Java Grinder [ https://www.mikekohn.net/micro/java_grinder.php ]
* Created software that enables developers to write code in Java and
run the code on microcontrollers such as MSP430 and dsPIC along
with game consoles such as the Playstation 2, Nintendo 64, Sega Genesis,
and Commodore 64.
- naken_asm [ https://www.mikekohn.net/micro/naken_asm.php ]
* Developed an assembler, disassembler, and simulator for MSP430, MIPS,
8051, Atmel AVR8, ARM, Motorola 68000, Z80, RISC-V, and more.
- Cloudtari [ https://www.mikekohn.net/software/cloudtari.php ]
* Cloud-based Atari 2600 game console emulator using Kubernetes on the back
end and playable in a web browser.
- Parallel Computing Mandelbrots [ https://www.mikekohn.net/software/mandelbrots_simd.php ]
* Developed code to parallel compute Mandelbrot images on x86_64
(SSE2 / AVX2 / AVX-512), Epiphany, Propeller, CUDA, Raspberry Pi 4
Kubernetes cluster, Playstation 2, and Playstation 3 using SIMD vector
instructions and / or multiple cores.
- Easy Match [ https://www.mikekohn.net/software/easy_match.php ]
Very fast textual pattern matching library with a JIT compiler for x86, x86_64, and ARM.
- Microcontrollers
[ https://www.mikekohn.net/micro/ ]
* Designed hardware and software for MSP430, AVR8, FPGA, and more.
- Image Processing
[ https://www.mikekohn.net/stuff/image_processing.php ]
* Write some assembly language routines using SSE2 and PowerPC Altivec for
adjusting image brightness and yuv to rgb conversions.
- RISC-V [ https://www.mikekohn.net/micro/riscv_fpga.php ]
* Implemented a RISC-V CPU in Verilog loaded on a Lattice iCE40-HX8K FPGA.
- Android / iPhone / iPad [ https://www.mikekohn.net/android/ ]
* Wrote games / utilities in Java for Android and Objective-C for Apple's iOS.
|
Education |
B.S. Computer Science - University of Missouri, St. Louis (5/97) |