Web Page:http://www.mikekohn.net/

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 environment where I can expand my skills and contribute to a team.
Java / Android / JNI
     Assembly Language
Objective-C / iOS
  • 01/2008 to Present: Exegy
    Software Engineer

    • 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++.
    • Wrote 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 and prototyped 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.
    • Created internal websites using PHP and SQLite to keep track of server inventory, log messages, and more.
    • Took a role as team lead and managed / mentored 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.
    • 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. Ported other Windows code to run on embedded Linux.

  • 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.
    • Designed and built a computer for a Linux software RAID system. Picked out specific hardware components, built the box, installed Linux, configured the kernel, and setup the config files.
    • 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 socket based server for a large project in C running on both Unix and Microsoft Windows platforms.
    • 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
    • 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.
Opensource Projects
  • naken_asm [ http://www.mikekohn.net/micro/naken_asm.php ]
    * Developed an assembler, disassembler, and simulator for the Texas Instruments MSP430 line of microcontrollers and extended it to work with dsPIC, MIPS, 8051 / 8052, Atmel AVR8, ARM, Motorola 68000, Z80, and more.
  • Parallel Computing Mandelbrots [ http://www.mikekohn.net/software/mandelbrots_simd.php ]
    Developed code for x86_64, Epiphany, Propeller, and Playstation 3 to speed up the calculation of Mandelbrot images using SIMD vector instructions and / or multiple cores.
  • Java Grinder [ http://www.mikekohn.net/micro/java_grinder.php ]
    * Created software to compile byte-code from Java class files into native code for CPU's and systems such as as MSP430, MIPS, dsPIC, Motorola 68000 (Sega Genesis), Z80 (TI84), and more.
  • Android / iPhone / iPad [ http://www.mikekohn.net/android/ ]
    Wrote games / utilities in Java for Android and Objective-C for Apple's iOS.
  • Easy Match [ http://www.mikekohn.net/software/easy_match.php ]
    Very fast textual pattern matching library with a JIT compiler for x86, x86_64, and ARM.
  • Microcontrollers [ http://www.mikekohn.net/micro/ ]
    * Designed hardware and software for MSP430, Atmel AVR8, Xilinx FPGA, and more.
  • Image Processing [ http://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.
  • libkohn_avi [ http://www.mikekohn.net/file_formats/libkohn_avi.php ]
    * Designed an API / cross-platform library for creating AVI files being used by companies such as http://outfit7.com/third-party-technology/.
  • Naken Web [ http://www.mikekohn.net/software/nakenweb.php ]
    * Created a tiny webserver capable of serving out static html, video from avi/mjpeg files, and live video from video4linux2 devices. Being crossplatform it has been tested on Linux and Windows as well as embedded computers such as Gumstix and Linksys routers running OpenWRT.
  • Java J2ME [ http://www.mikekohn.net/j2me/ ]
    * Wrote Java games and utilities that run on older mobile phones.
Education B.S. Computer Science - University of Missouri, St. Louis (5/97)