CONTACT EMAIL: tom.distler (at) gmail (dot) com
PELCO (SCHNEIDER ELECTRIC)
Senior Software Engineer (2006 – Present)
- Team Lead for 1 year, Group Manager for 6 months. Left the management track in 2010 to go back to the technical track. I prefer coding and research.
- Architected Pelco’s next-generation video pipeline framework. The framework included plugin loading, factory-based object creation, core pipeline primitives (pipelines, high-performance timers, buffers, etc), and an SDK that allowed pipeline stages to be built quickly. All of this had to be cross-platform (Windows, Linux, and Mac), as well as efficient (in terms of CPU and memory) and reliable. Multiple shipping products and multiple 3rd party integration projects are based on this framework.
- Lead the design and development of all core pipeline stages, including Direct X/OpenGL/GDI video renderers, DirectSound/Pluse audio sinks, the core timing module, RTP/RTSP/HTTP receivers, MP4/AVI file importers and exporters, MPEG-4/h.264/MPEG-2/MJPEG/G.711/AAC video/audio decoders, a YV12/YUY2/RGB color-space converter, and an ASCII video renderer (this began as my pet project, but proved useful because it allowed us to watch video via SSH).
- Key contributor to a cross-platform, C++ base library that provided the foundation for new product development. This includes threading, synchronization, memory managemnt, unicode strings, networking, high- performance timing, and classes for common design patterns.
- Lead the design and development of an integration library for a custom h.264 analog video capture card. I was the technical point-of-contact between Pelco and Mobilygen (now MaximIC). The library abstracted firmware loading, codec boot, internal codec pipeline configuration, video mode selection (NTSC/PAL), compression parameters, FPGA configuration, etc. The library provided a simple object-based interface for applications to build on. This made implementing video/audio pipeline plugins simple and straight-forward.
- Lead the development of Pelco’s video analytics metadata streaming format and the definition of their next-generation video/audio streaming standards.
Firmware Engineer (2005 – 2006)
- Designed and implemented several kernel components for an embedded RTOS based on ThreadX (executed on a custom ARCtangent processor embedded in the Intel MCH (965, 963, and 951 chipsets).
- Worked on embedded power-management features and drivers.
- Designed and implemented a complex Windows GUI tool for building the final RTOS firmware binary (combining code modules, building data partitions, digitally signing code manifests, etc). The tool combines the RTOS f/w and system BIOS, builds the chipset h/w straps, and creates the final flash binary used by OEMs (DELL, HP, Lenovo, etc).
- Designed and implemented a DOS/Windows-based flash programming tool for the ’06 chipsets. This tool is used extensively across Intel and is included in the tool-chain provided to external OEMs.
- Wrote several extension DLLs to our JTAG debugger to help reduce debugging time.
- Extended our debugger so it would accept remote commands via TCP/IP sockets. This allowed us to remotely test kernel components via PERL scripts.
- Created a PERL-based testing infrastructure for validating our f/w ROM and boot code.
L.E.D. EFFECTS, INC.
Software Engineer (2003 – 2005)
- Designed and implemented a large-scale, distributed media player application used to drive large LED video walls using DirectX (used at Chanel headquarters in Tokyo and the new World Trade Center building 7).
- Responsible for the design and development of core DLL plug-in technologies for multiple video applications.
- Created several high-performance, multi-threaded, time-critical applications in the Windows environment.
- Skilled in writing high-performance client and server network applications utilizing TCP/IP, UDP/IP, and ICMP.
- Regularly wrote application that directly interface to embedded devices; including programming, configuring, controlling, and querying devices.
- Wrote several software components to integrate PLC control systems with our scheduling application.
- Defined communication protocols to interface with third-party software and hardware.
- Experienced in both Window kernel service development and COM object implementation.
- Responsible for managing multiple software projects outsourced to external programming groups.
- Prototyped several tools rapidly in C# .NET and interfaced them to C++ DLLs.
MASTER OF SCIENCE – COMPUTER SCIENCE
California State University, Sacramento
- Graduated May 2006.
- Thesis: Clock Synchronization for Distributed Media Applications.
- Focus: Distributed systems, clock synchronization, and OS kernel development.
- Thesis published in “Software: Practice and Experience”, 2007.
BACHELOR OF ART – PHOTOGRAPHY
California State University, Sacramento
- Graduated June 2001.
Summary of Skills
- Primary languages: C, C++
- Secondary languages: C#, PERL, Java
- DirectX and OpenGL development (including multi-texturing and pixel-shaders).
- Highly multi-threaded/performace-critical application development.
- TCP, UDP, ICMP, IP Multicast, and client/server programming.
- Win32, POSIX, Boost, ThreadX, ACE development.
- Video processing and compression: MPEG-4/h.264/AAC, MP4/AVI container formats, RTP/RTSP streaming, and color-space conversion.
- Embedded RTOS kernel development.
- Dynamically-linked library and plug-in development.
- Theoretical and functional knowledge of analog and digital electronics (I was a EEE major for the first year of college and worked as a h/w technician).
- WinCE 3.0 and COM development.