Jeffrey L. Keegan
12 Brookside Ct
Methuen, MA 01844-1245
(978) 682-2573
jkeegan@keegan.org        http://www.keegan.org/jeff
Summary Principal-level Software Engineer with a proven history of bringing projects from conception through to completed sale. Lots of work designing and implementing applications, low-level services, and web-based applications (back-end and front-end) with Java (J2EE/J2ME/J2SE), C/C++, XML, and XSLT. Recent work history includes mobile and settop video applications, embedded device work designing a Java operating system for cell phones, and the design of knowledge management, search, and data aggregation applications.
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
Education
M.S., Computer Science, 1996    University of Massachusetts Lowell
B.S., Computer Science, 1992    University of Massachusetts Lowell
  • Noteworthy school projects include a ray-tracer (that supports Constructive Solid Geometry modeling), a morph program to create an animated morph between any two images, and a color-cube-visualization tool.
Additional
Information
My interests include diving, rollerblading, snowboarding/skiing, rock climbing, sailing, hang gliding, TiVo hacking, films, and riding my Segway.