Technical Skills | Programming
- Fluent in Java (J2EE/J2SE/J2ME + AWT and Swing), C++, C, JavaScript, perl,
XML, XSL/XSLT (including XPath), Bourne Shell, csh, HTML, WML, and Tcl
- Experience working on embedded systems, involving tight footprint
limitations (code size and runtime usage), power management demands,
low-level hardware interfaces, and constrained display size
- Heavy use of both the older NMI and newer JNI methods of calling
between C/Java
- Extensive work writing servlets, CGIs, fastcgis, Apache modules,
and Java Beans to create web-based products
- Video format experience includes previous work with MPEG-2,
recent work with MPEG-4, 3GPP, 3GPP2, and various audio/video
codecs (including H.264)
- Good working knowledge of XForms, XQuery, Python, SQL, JDBC, HDML,
VRML, Java3D, JSP, JMX, SOAP, XML-RPC, .NET, and the DirectX API
- 22 years of Unix development experience (Linux, SunOS, Solaris,
HPUX, IRIX, Ultrix, and AIX)
- 13 years of Macintosh development experience
- 16 years of Windows 95/NT/2000 development experience
Environments / Tools
- ClearCase, BitKeeper, Perforce, CVS, RCS, and SourceSafe
- Xalan (Apache's XSLT Processor) and Xerces (Apache's XML Parser)
- Java Wireless Toolkit
- Jakarta Ant, make
- JBuilder, Eclipse
- JUnit, Cactus
- Rogue Wave Tools.h++
- Microsoft Visual C++/J++
- Apache, Tomcat, Resin, Jetty, Netscape Commerce Server, and MS IIS
- MySQL, GDBM, ObjectStore (ODI)
- Bugzilla, phpBB, DDTS, TestTrack Pro
|
Work Experience | Gotuit Media - Woburn, Massachusetts
Principal Software Engineer
November 2005 - November 2007
Skills used: Java (J2ME, CLDC 1.1, MIDP 2.0, JSR-135), C, PowerTV settop box
environment, SARA (Scientific-Atlanta Resident Application),
BlueStreak (Adobe Flash/ActionScript-based STB platform)
- Single-handedly brought Gotuit Media from a two-medium (broadband and
cable) company to a three-medium company, by prototyping, demonstrating,
designing, and then implementing Gotuit Media's J2ME-based mobile video
platform. The first commercial application of this was the
NFL Fantasy Football Video product for Sprint (see below), which was
followed up by a more generic customer-customizable mobile video player
for large customers of Gotuit Media.
- Designed and implemented Gotuit's NFL Fantasy Football Video product
("NFL Fantasy Video") for Sprint, which sold during the 2006 and 2007
football seasons. Team lead for three other developers and one QA
engineer, implementing our J2ME JSR-135 video-playing midlet for 12 EVDO
phones in 2006 (Samsung A900, A920, A940, A960, M500, Sanyo 7500, 8400,
9000, Motorola SLVR L7c, KRZR K1m, RAZR V3m, and LG Fusic) and an
additional 4 phones in 2007 (Samsung M610 Glint, M620 UpStage, M510,
and LG Muziq). The midlet (which sold for $6 per month) allowed users
to pick their fantasy team of any players in the NFL, and each week see
all of their player's plays from actual games via streaming video to
the phone. Users were also allowed to go all the way back to the beginning
of the season and see any plays by any individual player in the NFL.
In addition to being responsible for most of the implementation of the
product and for the directing of other team members, other
responsibilities included scheduling, coordinating with production,
discussions with Sprint, marketing, and kitting.
- Designed and implemented a generic "white-label" mobile player app, to
allow mobile access to Gotuit's customers' video assets. This midlet was
easily adaptable to individual customer demands, and formed the mobile
portion of the Gotuit video platform. Successful demonstrations were done
using this white-label app for EMI, UMG, and Sports Illustrated.
Device support for the white-label app included all of the phones mentioned
above, plus the Sanyo M1, Sanyo 8500 (Katana DLX), Motorola ic902,
Motorola RAZR2 V9m, and AT&T's Samsung a707.
- Team lead for the project of implementing our indexed video-on-demand
client for the BlueStreak platform, including the user interface and
negotiation with the backend to stream the correct video from the correct
location. Implemented this on a BlueStreak implementation running on
top of the SARA (Scientific-Atlanta Resident Application) platform.
New client code incorporated all of the functionality of the original
"vanilla" VOD client, plus features from our Fantasy Football
implementation.
- Created GDMS (Gotuit Digital Media Server) daemon to serve up multi-streamed
MPEG video. This is used by our DNCS to create the barker channels that our
settop box client code uses for the upper right corner of the screen for
each channel.
SavaJe Technologies - Chelmsford, Massachusetts
Member of Technical Staff
April 2004 - September 2005
Skills used: Embedded device work (low memory considerations, power management,
thread management, maintaining small footprint, etc.),
Java (J2SE, J2ME), C++, C, JNI, NMI, Swing, Ant, BitKeeper, CVS,
JUnit, Midlets, Xlets
- Kernel developer for SavaJeOS, SavaJe's cellphone-based Java operating
system (implemented in Java, C++, and C). Platforms included multiple phone
prototypes, test boards, Compaq IPAQ Pocket PCs, and an emulator.
- Team lead for Browser group. Designed and implemented device layer
to integrate 3rd party C++-based browser (OpenWave v7.0) into SavaJeOS.
Work included implementing support for networking, key input,
a framebuffer-driven display, timing, font support, memory management,
file I/O, settings-store, threading, startup/shutdown, content plugins,
focus management, and input methods (T9).
- Created browser service to maintain the lifecycle of OpenWave's
environment, handle error-recovery, and to provide a common way for other
parts of SavaJeOS to interact with the browser. Communication between this
Java-based service and our C/C++-based devlayer implementation involved
heavy use of NMI, worker threads, and a careful examination of the call
path to ensure that SavaJeOS limitations were met (such as not calling
back into Java from a thread started from C).
- Replaced SavaJe's homegrown media engine with 3rd party media
engine from PacketVideo Corp. Implemented PacketVideo's OSCL (OS
Compatibility Layer) for SavaJeOS, providing support for the display,
timing, memory management, threading, logging, network, and JSR-135.
This work provided the ability to playback, stream, and author MPEG-4
(video: H.263, audio: AAC/AMR).
- Repeatedly performed extensive code optimization to ensure that SavaJeOS's
kernel still fit onto all target devices after each major increase to
its size from 3rd party additions. This included compiler optimizations,
switching to a thumb-based compiler, the creation of glue layers to reuse
redundant libraries shared by SavaJeOS and third-party code, and the
repartitioning of persistent flash memory. This work resulted in SavaJe's
ability to continue to function on a 32-meg flash phone instead of the
competition's move to 64-meg phones, saving the customer huge costs in
increased hardware per phone.
- Implemented memory management checks such that the browser and
the media player could, if not in use, be terminated by the OS when memory
use was at a critical level. Ensured that common memory-critical cases
performed as designed, such as browsing while playing music with the
media player running in the background.
- Automated the process of extracting, converting, resizing,
processing, and re-encoding video from a TiVo for use on SavaJeOS phones
for media testing purposes (using open source video tools such as
tydemux, mplex, and ffmpeg).
- Wrote the Digital Rights Management user interface application
for SavaJeOS, which handles OMA rights-object delivery cases such as
separate delivery (super syndication), combined delivery, forward-lock,
and the arrival of rights objects for Midlets.
- Enhanced SavaJe's flash-update utility to allow the installation
of the kernel, resources, platform compatibility layer, and applications
all at once.
- Implemented support for provisioning dialogs to be displayed when
data is provisioned to a user's phone. Tested these extensively via use of
NowSMS to send provisioning data wirelessly to phone.
- Implemented several additional OpenWave support applications,
including the Root application to handle browser termination, a Proxy
application to handle suspend/focus issues, another Proxy application for
content handling (so SavaJe applications can handle arbitrary mimetypes
via the browser), and a special-case scheme service to pass rstp:// URLs
to the media player for streaming.
- Wrote company build script to automate individual and nightly builds.
- SavaJe builds had previously pulled in libraries via scp, requiring
a network connection. Wrote cached_scp script that cached the results
of successful fetches, so that when a network wasn't present it could
use the cached copy of the library. Performed remote and local md5
checksum first to eliminate unnecessary network traffic and ensure
the correct version was always used, failing if the correct version
wasn't available. This permitted developers to do builds while traveling.
Author of Hacking TiVo: The Expansion, Enhancement, and
Development Starter Kit
(Wiley Publishing, 550 pages, ISBN: 0-7645-4336-9)
December 2002 - September 2003
Skills used: Writing, reverse engineering, development, Tcl,
cross-compiling
- Number 5 bestseller (overall) on amazon.com for 3 days
- Number 1 in Computers/Internet category on amazon.com for over 6 weeks
AltaVista Business Solutions - Andover, Massachusetts
Principal Software Engineer
December 2000 - December 2002
Skills used: Java (J2EE), C++, C, Swing, JavaScript, XML/XSLT, JMX, JSP,
SOAP, ClearCase, Ant, JUnit, SQL, JDBC, HTML
- Owner of the Management User Interface portion of the AltaVista
Enterprise Search product.
- After a year of work with the existing codebase, designed and
implemented new architecture using servlets, XML, XSLT, and JMX.
This new architecture allowed for easy internationalization of the
UI, customer-modification of the look and feel of the UI via XSLT
stylesheets, and seamless management of all components (including
custom-written plug-inable components) without needing any changes
to the code for the UI.
- As part of this new architecture, wrote code to modify any XML
document (of any layout) via an HTML browser. This work pre-dated
XForms, but exceeded XForms' abilities in various ways that
resulted in its continued use.
- Wrote layout engine that divided an editable XML file up into
logical groups for editing in HTML. This was used to render tabs
for an "edit" view, and to render separate pages in a "wizard"
view.
- Prior to this rearchitecture, maintained and added features to the
previous Java/Swing/Applet-based codebase.
- Heavily contributed to creation of MailScooter crawler, which
fetches mail to be indexed from mail servers. This contribution
consisted of writing the entire UI, as well as some of the core of
MailScooter.
- Implemented solutions for TicketMaster and Monster.com, both
resulting in sales (of $1.2 million and $1.4 million,
respectively). This lead position involved interfacing with the
customer, writing custom code for their needs, and stress-testing
the solution.
- Headed up work for NewsEdge relating to network problems with
federated searches. This involved debugging the problem on-site,
developing the solution, and issuing them a new release.
- Redesigned existing build system from ground up, using Jakarta Ant
instead of make. Orchestrated move of components from old
directory/package structure into this new system. During the
process, added such things as JavaDoc automation, XML validating
of any XML files in clearcase, and new kitting commands.
CMGI (InfoMation, PlanetDirect / MyWay, CMGI Solutions) - Burlington
(& Andover), Massachusetts
Principal Software Engineer
August 1997 - December 2000
Skills used: C++, RogueWave, perl, JavaScript, XML/XSLT, HTML, ClearCase,
WML, HDML
- Designed and implemented modular, hierarchical layout engine
allowing the caching, display, and layout of XML and other generic
objects. This included creation of several content sources to feed
this system, including several customer-specific formats. This
engine (OMS) later became much of the basis for CMGI Solutions'
main product, SolutionsPort.
- Enhanced this system (OMS, Object Module System) in its intended
direction - to be able to support any format with the same data.
Implemented stylesheets to support WML devices (Nokia and UP
browsers) as well as Palm 7, AvantGo, and VRML browsers. The same
data could then be accessed and edited via web browsers, cell
phones, etc.
- Designed customsearch module allowing custom searches of data
scraped from the web, converted into XML, and then into the
desired format. One example of this allowed a cellphone user to
search switchboard.com from their WML browser, and get the results
back in WML, all from regular expressions that converted the
original HTML into XML, and stylesheets that converted the XML
into WML.
- Did extensive work integrating external products into
OMS/SolutionsPort, including Mailspinner, Echo, and external feeds.
- Developed Email Notification system delivering personalized
internet/wirefeed news from InfoMation's flagship knowledge
management product, Echo.
- Created Filebot feed agent to retrieve files from network drives
and convert them for filtering and display through Echo. Worked
extensively with OEM partners in this endeavor
- Developed PalmPilot interface that allows users to hotsync their
entire paper from our product into their PalmPilot
- Did extensive work on WebRobot feed agent that gathers documents
from the web for filtering and display through Echo
- Worked on Filterbot filtering agent that identifies which
articles/documents match users' queries
- Implemented many feature requests for new functionality to all
aspects of Echo including the ability to change presentation
styles of fetched documents, the ability to specify more
accurately which information is desired by the user, and an
overhaul of the administration interface
- Major participant in the rewriting of the entire UI, including
moving much of the implementation of the UI from server-side
C++-based CGIs into client-side JavaScript for faster performance
NetScheme Solutions, Inc. - Marlborough, Massachusetts
Principal Member Technical Staff
January 1997 - May 1997
Skills used: Java, SQL, ODBC, JavaScript, HTML, Tcl
- Created Tcl-based scriptable test harness tool that issues form
queries via HTTP, then issues corresponding ODBC queries for the
same data, and compares the results to verify the accuracy of
DataSite's navigation server.
- Integrated third party Java charting package into DataSite.
- Wrote several tools to excercise various components of the
DataSite product line.
Carberry Technology / Electronic Book Technologies - Lowell,
Massachusetts
Senior Software Engineer
June 1992 - November 1996
Skills used: C++ (Unix, Visual C++, and Mac), MFC, Netscape plugin-API,
perl, AppleScript, firmware design, X11/Motif, HTML
- Primary developer of FIGleaf Inline, a commercial Netscape Plug-In
with over 64,000 registered users (Windows 95/NT, Solaris, SunOS,
and IRIX). Demonstrated this at the first Netscape Developer's
conference (March 1996).
- Developed a web-based customer-registration/product-information
system to track evaluations, purchases, and general usage of
Carberry products.
- Developer of CADleaf Thumbnails (CLBrowse) product for Windows
95/NT.
- Wrote Calcomp PCI and Versatec plotter drivers for the CADleaf
product line.
- Wrote several additions to the Windows 95/NT, Motif/X versions of
CADleaf REDliner.
- Ported the complete set of Zoom View libraries to the Macintosh
platform. These make up the core graphics engine of Carberry's
product line as it relates to displaying, redlining, and editing
of images.
- Developed CL-Trans graphics translation package for Macintosh.
- Webmaster for Carberry Technology's web site
( http://www.ct.ebt.com/ )
Center for Productivity Enhancement - Lowell, Massachusetts
Project Manager
October 1988 - June 1992
- Produced in-house Macintosh front end to Factory Simulation
project
- Project Manager for MASE (Management and Security Expert) system
based on CLIPS
- Performed systems and network maintenance on all Macintosh and
Unix systems
|