Chris Korda - Software CV

About

System architecture, large-scale object-oriented design, APIs, communication protocols, drivers, documentation, wrapping, porting, coding standards; embedded systems, multi-threading, parallel and distributed processing, pipelines, Windows, GUI programming, interrupt routines, assembler language, optimization, debugging; 3-D printing, robotics, networking, video effects, visualizers, graphics algorithms, music software.

30+ years of experience designing, coding, testing and documenting software for desktop and embedded platforms including Windows, Linux, DOS, and RTOS (Microchip, PharLap/ETS, SMX, OpenRTOS, Nucleus, Integrity, ThreadX, ┬ÁC/OS), using DirectX, C++, C, SQL, TCP/IP, Sockets, USB, G Code, x86 and x64 Assembler, MMX, SSE, HTML, Perl, PHP, Python, HP PCL/HPGL, Analog Devices DSP, Pascal, Fortran, PL/I, and Basic.

Experience

Inventor

Anal Software

Jan 2017 - Present (5 years 5 months)

No more job offers please! I have transitioned to full-time inventing and composing.

Software Architect

Viridis3D LLC

Apr 2013 - Jan 2017 (3 years 10 months)

Designed and implemented user interface for Windows 3D-printing application, using Visual Studio and Direct3D. Subsequently designed and implemented multi-threaded middleware to interface between user application and Arduinos controlling print heads. Starting in 2015, facilitated design of custom print head controller, based on Microchip PIC32MZ microcontroller. Designed and implemented bare-metal firmware for new controller card, using MPLAB-X / Harmony, including multi-threaded interrupt-driven fire pulse sequencer. Designed USB packet protocol to interface between firmware and user application, implemented both sides of protocol, and created Windows tools for verifying protocol and sequencer performance. Starting in 2016, created multi-threaded middleware to handle new packets protocol and integrated it fully into user 3D printing application, with error handling and logging.

Owner

Chris Korda Consulting, Inc.

2000 - Jan 2017 (17 years)

CKCI provides a variety of consulting services, including software architecture, object-oriented design, coding, documentation, testing, and integration. Clients include Viridis3D, a manufacturer of large-format 3D printers, and 3D Systems, a leading manufacturer of 3D printers. CKCI has also developed popular open-source software tools, including ChordEase (expert system for jazz improvisation), WaveShop (audio editor), Mixere (audio mixer for live sound collage), Whorld (visualizer for sacred geometry), and FFRend (renderer for Freeframe visual effect plugins). For details, see the web sites for each software.

Software Architect

3D Systems (previously Contex AS, Z Corporation)

1999 - Apr 2015 (16 years)

Designed and coded the firmware and desktop driver for the world's first color 3-D printer, in Borland C under DOS, and MFC/C++ under Windows. Subsequently designed and coded the firmware for Z Corp's second-generation color 3-D printer (Z406) from scratch, including robotics, HP10 print head control, and network architecture, using the PharLap/ETS RTOS. The Z406 firmware is entirely object-oriented, has more than 16 simultaneous threads, and continues to be the base code for Z Corp's entire product line. Also authored a 350-page manual describing the Z Corp firmware class architecture, created company-wide coding style and documentation standards, and developed an object-oriented Windows API for all of Z Corp's printers. Starting in 2005, researched porting Z Corp's firmware to non-x86 platforms e.g. PowerPC and ARM, and evaluated many RTOS/tool chain combinations. In 2008, designed and coded a system that scripts manufacturing burn-in and archives the results, including firmware, Windows server and client, and SQL schema. Since 2010, successfully completed the porting effort begun in 2005, by redesigning the firmware with a drastically simplified architecture suitable for ARM9 (TI Sitara running SMX).

Contributor

FreeFrame

Jul 2006 - Jan 2014 (7 years 7 months)

I created a popular free open-source renderer for FreeFrame plugins, called FFRend. Its features included the ability to aggregate multiple plugins into a single "meta-plugin". A meta-plugin DLL contains the component plugin DLLs (compressed via zlib) along with their parameter settings, and may expose its own "meta-parameters" to the host application. This feature sparked a contentious debate within the FreeFrame community, because propriety plugin developer feared that it would facilitate theft of their intellectual property. I reluctantly agreed to limit the meta-plugin feature to support only open-source plugins, though in practice this meant most plugins couldn't be used. This ultimately led me to abandon FreeFrame, on the grounds that it made no sense to contribute free tools to a standard that was dominated by proprietary developers.

In addition to FFRend, I also contributed many free plugins, documented here.

The UltraWhorld plugin was sufficiently popular to be forked on GitHub for FreeFrame 1.5, see here.

Software Developer

CoE

1997 - 1999 (2 years)

Developed interrupt-driven MIDI-based software tools for composing and performing electronic music, from scratch in C and assembler, including custom GUI. Subsequently used these tools to create several albums of electronic music which were released by the International DJ Gigolo label, and then toured worldwide, using these same tools to perform live electronic music in clubs, on the radio, and at festivals, including the 2001 Sonar music festival in Barcelona.

Software Consultant

American Express

1987 - 1997 (10 years)

Developed and maintained a menu-driven back-office report generator for American Express Travel, in Watcom SQL, Microsoft C, and Intel 8086 assembler, including 3-D graphics primitives and HP Laserjet print drivers.

Software Developer

Ute Graphics

1985 - 1987 (2 years)

Developed the Ute Graphic Editor, a commercial drawing software for the DEC Rainbow. Also developed 3-D rendering software, including Z-buffering, lighting and surface models.

Systems Programmer

Digital Equipment Corp

1984 - 1985 (1 year)

Level II Internal Consultant for various DEC clients including Hanscom Air Force Base, General Electric, and Teradyne. Studied VMS internals at the DEC school in Atlanta, GA. Developed an application to manage material specifications for the General Electric Medium-Speed Turbine facility in Lynn, MA.

Programmer Analyst

Chase Manhattan Bank

1983 - 1984 (1 year)

Financial systems programming using VAX/VMS and assembly language. Reverse engineered, flowcharted, and maintained a legacy application that queued Federal Reserve transactions.

Programmer Analyst

Polaroid Corporation

1982 - 1983 (1 year)

Programmed inventory management and reporting systems on PDP11/RSX-11M+ and IBM 370 mainframes; programmed in DEAL (Digital Extended Assembler Language), Oracle scripting language, OS/JCL, and IBM Assembler. Developed an application that printed shipping labels in all of Polaroid's warehouses.

Education

Cambridge Institute for Computer Programming

1981 - 1982

Studied Fortran, Cobol, JCL, Basic, assembly language, software architecture, analysis, design principles, documentation and other skills required to be an effective programmer; also completed various advanced projects including a three-dimensional strategy game (3D Pente) in which the computer (IBM 360) could optionally play against itself.

Sarah Lawrence College

1980 - 1981

Music theory, computer programming, piano, oil painting.

Publications

ChordEase: A MIDI remapper for intuitive performance of non-modal music

Improvising to non-modal chord progressions such as those found in jazz necessitates switching between the different scales implied by each chord. This work attempted to simplify improvisation by delegating the process of switching scales to a computer. An open-source software MIDI remapper called ChordEase was developed that dynamically alters the pitch of notes, in order to fit them to the chord scales of a predetermined song. ChordEase modifies the behavior of ordinary MIDI instruments, giving them new interfaces that permit non-modal music to be approached as if it were modal. Multiple instruments can be remapped simultaneously, using a variety of mapping functions, each optimized for a particular musical role. Harmonization and orchestration can also be automated. By facilitating the selection of scale tones, ChordEase enables performers to focus on other aspects of improvisation, and thus creates new possibilities for musical expression.