% Document setup -------------------------------------------------------------
\documentclass{letter}

% I think that my version of LaTeX is too old, and it doesn't define the
% following commands which html.sty requires.  So provide dummies so that
% html.sty will work.
\newcounter{section}
\newcounter{subsection}
\newcounter{subsubsection}
\newcounter{paragraph}
\newcommand{\section}{}
\newcommand{\subsection}{}
\newcommand{\subsubsection}{}
\newcommand{\paragraph}{}
\newcommand{\tableofcontents}{}

\pagestyle{empty}

\usepackage{html}

\setlength{\oddsidemargin}{0.0in}
\setlength{\evensidemargin}{0.0in}
\setlength{\topmargin}{0.0in}
\setlength{\headheight}{0.0in}
\setlength{\headsep}{0.0in}
\setlength{\footskip}{0.0in}
\setlength{\textwidth}{6.5in}
\setlength{\textheight}{9.0in}

\begin{document}
% \font\thefont = ptmr at 12pt
% \thefont

% Command definitions --------------------------------------------------------

% This is a word separator which shows up as a dot glyph in DVI output, a 
% dot picture in HTML, and a semicolon in text.
\newcommand{\smartdot}[0]
{\latexhtml{ $\cdot$}{\htmladdimg[ALT="-"]{dot.gif}}}
% Identifies a trademarked word.  In DVI and html output, shows a trademark
% glyph.  In text, shows (TM)
\newcommand{\trademarked}[1]
{#1\latexhtml{\texttrademark}
{\begin{rawhtml}<small><sup>TM</sup></small>\end{rawhtml}}}
% Identify a place and time, i.e. employer and duration worked.
% 1 - Place (i.e. employer name)
% 2 - Address
% 3 - Start date
% 4 - End date
\newcommand{\placetime}[4]
{{#1}\smartdot{ }#2\latexhtml{\hfill}{\\}{#3} - #4}
% Define a hyperlink, which is displayed as a link in PDF and HTML, and
% regular text in text
\newcommand{\http}[1]
{\htmladdnormallink{#1}{#1}}
% Define a mailto, which is displayed as a link in PDF and HTML, and
% regular text in text
\newcommand{\mailto}[1]
{\htmladdnormallink{#1}{mailto:#1}}
% Contact information
% 1 - Email address
% 2 - Postal address (line 1)
% 3 - Postal address (line 2)
\newcommand{\contact}[3]
{\begin{center}\mailto{#1}\smartdot{ }#2\smartdot{ }#3\end{center}}
% Section heading
\newcommand{\heading}[1]
{\par\begin{center}\textbf{\large{#1}}\end{center}}
% Dotpair - two sets of text, separated by a separator.
\newcommand{\dotpair}[2]
{#1\smartdot#2}
% Skill pair - a pair of skills, separated by a separator, in bold.
% 1 - First skill
% 2 - Second skill
\newcommand{\skillpair}[2]
{\textbf{#1}\smartdot\textbf{ #2}}
% Work experience
% 1 - Place (i.e. employer name)
% 2 - Address
% 3 - Start date
% 4 - End date
% 5 - Description
% 6 - Skills developed list
\newcommand{\workexperience}[6]
{\medskip\placetime{#1}{#2}{#3}{#4}\par#5\par{Skills developed: #6}}

% Begin resume contents ------------------------------------------------------
% \bodytext{bgcolor=white}

\heading{\huge{Bryan Ischo}}

\contact
{bryan@ischo.com}
{7716 Orogrande Place}
{Cupertino, CA 95014}

\heading{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 
\dotpair{\textbf{multi-threaded client/server} and 
	 \textbf{application} computer programming
         in \textbf{Haxe}, \textbf{C}, \textbf{C++}, and \textbf{Java}}{
\dotpair{\textbf{Unix shell scripting}}{
\dotpair{\textbf{Unix system programming}}{
\dotpair{\textbf{networking (Unix sockets programming)}}{
        { and the entire \textbf{Linux} system}}}}}.

I have experience with
\dotpair{Windows programming}{
\dotpair{OpenGL}{
\dotpair{Distributed Version Control Systems (Git, Bazaar)}{
\dotpair{Perforce}{
\dotpair{System administration}{
\dotpair{PC hardware}{
        {and Intel assembly programming}}}}}}}.

\heading{Professional Work Experience}

\workexperience
{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.
\par
  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.}

{\skillpair{Haxe programming}
{\skillpair{Low level language support facilities}
           {Performance testing and tuning}}}

\workexperience
{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.
\par
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.}
{\skillpair{Java development}
           {OCAP (cable industry standard for set-top box) layers}}

\workexperience
{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.
\par
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.
\par
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.}
{\skillpair{C++ development}
{\skillpair{Multithreaded networked software development}
	     {Perforce}}}

\workexperience
{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.
\par
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 - \trademarked{Condensity}.}
{\skillpair{Java development}
{\skillpair{Client/server systems development}
	   {Web development}}}

\workexperience
{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.}
{\skillpair{C programming}
	     {Perspective on business software development}}

\workexperience
{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.}
{\skillpair{C++ programming}
{\skillpair{Writing portable, efficient code}
             {Windows programming}}}

\workexperience
{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.}
{\skillpair{C programming with object oriented techniques}
{\skillpair{Unix network programming}
	     {Windows programming}}}

\heading{Education}

B.S. Math/Computer Science\smartdot{ Carnegie Mellon University}\smartdot{ May 1994}

% End resume contents --------------------------------------------------------

\end{document}
