Bryan Ischo bryan@ischo.com - 7716 Orogrande Place - Cupertino, CA 95014 Introduction I am a hard core software developer looking for a development job at an innovative company. I have more than 20 years of professional software development experience and several more years of pre-professional programming experience. I believe that diligence, attention to detail, and a committment to conciseness and elegance in design and implementation are the hallmarks of successful software development and it is these skills that I would like to continue to practice at my next place of employment. After 20+ years of software development, I believe I have honed an innate sense of best principles and practices and thoroughly enjoy solving problems and tackling issues at a large scale and significant level of complexity. My core skills are in the design and architecture of systems level software, with a particular focus in API design. I have expertise in multi-threaded client/server and application computer programming in Haxe, C, C++, and Java - Unix shell scripting - Unix system programming - networking (Unix sockets programming) - and the entire Linux system. I have experience with Windows programming - OpenGL - Distributed Version Control Systems (Git, Bazaar) - Perforce - System administration - PC hardware - and Intel assembly programming. Professional Work Experience TiVo Inc. - Alviso, CA July 2009 - Present Most recently at TiVo I have worked as Software Architect designing, implementing, and supporting the graphics, memory, and platform portability layer of our set top box user interface product. We use Haxe to target multiple platforms from a single code base and this requires significant work on the runtime system to ensure that all facilities required by our product are complete, correct, and performant, when run on platforms as diverse as a custom Linux set top box software stack, Amazon FireTV, 'generic' Android set top box software, AppleTV, developer workstation based simulators, and HTML5 engines within web browsers. En route to replacing our Adobe Flash based UI with one written in the nearly compatible language Haxe, I was the key implementor of a variety of technologies including a fast and efficient multi threaded garbage collector, a reimplementation of the ActionScript graphics API in C++, a compiler module that allowed our code base to be rewritten on-the-fly within the compiler into a much more efficient form, a runtime debugger for Haxe, and an IntelliJ plugin for interfacing with the Haxe debugger, among many, many other things. Skills developed: Haxe programming - Low level language support facilities - Performance testing and tuning TiVo Inc. - Alviso, CA November 2005 - June 2009 Previously at TiVo I worked in the Systems Application Development group on a new Java-based DVR implemented on a standard OCAP layer for an industry standard embedded platform. The Systems Application Development group was formed to ``port'' the TiVo experience to a standard cable set-top box system, in order to leverage the market leadership that TiVo holds on DVR innovation to platforms suitable for the North American cable television market - an extremely important project at TiVo representing an opportunity to expand the company's DVR offerings to millions of households. My primary areas of contribution were in system infrastructure for supporting DVR functionality, a localizable resource system for supporting multiple languages and vendor-specific extensions, and a filesystem read/ write caching layer to improve the performance of basic DVR operations drastically. Additionally I contributed to numerous aspects of the core source code framework. Skills developed: Java development - OCAP (cable industry standard for set-top box) layers TiVo Inc. - Alviso, CA December 2001 - November 2005 My first period of work at TiVo was in the Client Application Development group on core features of the TiVo standalone DVR products. The TiVo system software is comprised of a large body of C++ code based on the Linux operating system. My primary contributions at TiVo were the development of the Multi Room Viewing and TiVoToGo features, which allow two TiVo DVR systems in one household, or a TiVo DVR and a PC, to share video content over a local network. I was involved in all aspects of these features, from writing the functional requirements, designing the software architecture and writing design documents, to actually developing the C++ code, using multi-threaded Unix sockets technology. The TiVo system is based on a custom database implementation, and I also wrote the transactional database interface for these features. Additionally, I wrote the Parental Controls feature, which is comprised of a C++ API and application logic for limiting access to television shows and movies based on their MPAA or TV ratings. Because all aspects of the TiVo system interact with the underlying database and with multiple threads of concurrent execution, this code was similarly database-based and multithread-capable. I was also instrumental in tackling and fixing bugs in several software releases, having closed out over 700 ``showstopper'' issues in the TiVo bug database. Skills developed: C++ development - Multithreaded networked software development - Perforce Plumb Design Inc. - New York, NY June 1998 - December 2000 At Plumb Design I worked on both Java client and server code, as components of Java applets and servlets. I contributed ideas and implementation to the development of Plumb Design's proprietary Thinkmap technology, a database-based data visualization technology. I also designed and built Thinkmap applets for various custom client projects. I became an expert on the Java programming language when I implemented a Java obfuscation package - a post-compiler that transforms Java class files into smaller, obfuscated versions of themselves. This package, which I conceived, designed, and developed initially for in-house development projects, was successful enough to be expanded into a commercial project - Condensity^TM. Skills developed: Java development - Client/server systems development - Web development Instinet Corp. - New York, NY February 1998 - June 1998 At Instinet I worked on the first stages of a stock routing system for the purpose of routing trades from New York to Tokyo, as part of Instinet's proprietary electronic stock trading system. I worked in the C programming language on HP-UX systems, enhancing and extending a large set of legacy code to handle the peculiarities of the Japanese stock system. Skills developed: C programming - Perspective on business software development CDR, Inc. - Cupertino, CA July 1997 - February 1998 At CDR I wrote 30,000+ lines of highly portable C++ code which implemented a ``hybrid'' CD layout engine. This engine produces the raw data of a CD image which supports all of the major CD filesystems - ISO 9600, Rock Ridge, Joliet, Mac HFS, UFS - on one CD, in a hybrid format that allows the disc to be read on any computer. Skills developed: C++ programming - Writing portable, efficient code - Windows programming Connect Inc. - Mountain View, CA May 1994 - July 1997 At Connect I implemented an HTTP protocol engine, and an SSL ``secure sockets layer'' engine, for the newly-popular World Wide Web, as part of the OneServer e-commerce server - one of the very first of its kind. I also wrote low-level system code to support the portability of the server between a Windows and Unix environment, including a portable event and networking library, based on Unix sockets, Xt events, and the Windows event loop. Skills developed: C programming with object oriented techniques - Unix network programming - Windows programming Education B.S. Math/Computer Science - Carnegie Mellon University - May 1994