I am a software engineer with years of experience developing popular digital multimedia products on embedded systems. I have been designing and implementing production software that work closely with hardware at all levels: from firmware and simple drivers to applications and interactive graphical user interfaces.
Ask Sean About
|libraries||Boost, SDL, DirectFB, pthread, ZeroMQ, cURL, Nexus, OpenGL, Gstreamer|
|boards / hardware||Roku, Panasonic PH1-Pro4, Jetson TK1, Toradex Apalis/Ixora, PandaBoard, Beagle Board, Raspberry Pi, WinTV 950Q, HDHomeRun, Net Yaroze|
|software / debugging||Valgrind, DUMA, gdb, GCC, CMake, Instruments, OProfile, Firefox, Linux, Mac OS X|
|languages||C, C++, Lua, Mandarin Chinese, Japanese|
Roku: Senior Software Engineer
Writing feature guides, researching, implementing, and debugging features of Roku OS that runs across different types of hardware and memory configurations:
- Proof-of-concept implementation and final production firmware/channel support for Apple AirPlay with HomeKit integration and single binary running on different Roku players and TV.
- Proof-of-concept implementation to bring up various features and channels, such as Spotify Connect, etc.
- Voice features of products, allowing user to issue voice commands to play media and control various features of Roku platform, providing visual feedback, hints, and text-to-speech rendering.
- Firmware update for Roku TV Wireless Speakers that do not have direct connection to Internet, developing both host/client code that provide data validation, user visual feedback, and error/incompatibility handling.
- Ogg demultiplexer to extract FLAC/Opus/Vorbis streams for playback and trickplay.
- Fix defects reported against Roku OS, such as crashes, deadlocks, memory leaks, sample synchronization, etc.
- Mining information from large number of device logs to identify patterns and data points to aid debugging.
Develop required firmware and application features to support most popular applications on Roku devices all around the world:
- YouTube: Implement, debug, and tune 4K HDR video player for YouTube running on Cobalt. Also worked on its predecessor, developed WebKit web audio, media source, and encrypted media bindings to pass certification. These implementations have passed certifications since 2015 running on a wide variety of hardware.
- Netflix: address NTS failures, issues related to DIAL, PlayReady DRM, and partner integration requirements by fixing code in firmware and application. Implemented code to reduce memory usage while Netflix is running in background.
- BBC: address certification issues such as rendering artifacts and client authentication for iPlayer TV Application Layer.
Yahoo!: Connected TV Technical Yahoo (IC6)
Designing and leading implementation of new Connected TV architecture that is:
- Highly portable, runs on Linux and Mac OS X with various CPUs and 32-/64-bit variants using OpenGL ES 2 for rendering.
- Prioritizing resource management, using multi-process system to allow control over memory and hardware utilization; ship only necessary components to fulfill partner requirements.
- Customizable through Lua scripting and extensions, allowing application UI and business logic to be updated over network without firmware update.
- Desktop emulation of target platforms, so that developers can work without always having access to hardware; simulate different performance profiles by adjusting parameters such as number of hardware decoders or target frame rate.
- Cold-calling and establishing business connections with various hardware vendors, participating in legal contract negotiations and design specifications to build customized set-top device with dual ATSC input, multi-stream decoding and encoding, with connectivity options of Ethernet, Bluetooth LE, WiFi, IR, and HDMI input/output.
- Lead development effort by providing working sample implementations of channel scanning, tuning, decoding, encoding, video texturing, and graphics post processing to rest of engineering team. Worked closely with multiple companies such as MaxLinear and Panasonic across different time zones. Achieved these tasks and working prototype device in 7 months at a cost that is a small fraction of industry norm.
- Designing and implementing new engine components allowing NodeJS and LuaJIT scripts to work together through message queues and easy-to-update middleware. Porting engine to run under ARM Linux and x64 Mac, source compiles with Clang and GCC. Real-time rendering and video post-processing using GLSL shaders via LuaJIT.
- Bring up new development platforms, back-porting drivers, research to enable hardware accelerated graphics and video playback.
- Design and implement build system using CMake, create toolchains.
- Put together demonstrations so that other engineers can start integration quickly.
Working with frontend and backend engineers to define APIs for application platform, features to:
- Provide hardware abstraction and allow instrumentation.
- Implement hierarchical scene graph with time-based animation that interpolates between per-node key properties; easily apply masking and perspective effects to scene.
- Port WebKit with customization specific to our platform.
Help members of my team to develop and improve:
- Created searchable internal web site to track documentation and specifications using MediaWiki and other customizations.
- Present technical topics to transfer my research results to other members of the team.
- Review check-in and provide feedback, always available for discussion or answering questions.
Working with different partners across the globe:
- Yahoo's platform shipped with TVs and devices from Vizio, Samsung, Sony, LG, Toshiba, and many others.
- Engine runs with tight integration from SoC vendors such as Broadcom, MediaTek, Sigma Designs, and Samsung.
- Yahoo's Konfabulator engine has been driving Connected TVs since 2008, allowing users to stream videos from services such as Amazon Video-on-Demand, Netflix, and Hulu; for partners such as Vizio and Sony, the engine drives the entire user experience with scriptable and frequently updated user interface.
Toshiba America Electronic Components: Software Development Engineer
Multimedia firmware development:
- Developing, debugging, and enhancing video decoding firmware for Toshiba's LSI; designed and implemented firmware with automatic frame buffer management for single full-HD or dual half-HD decoding with minimum memory usage, and video output timing generation mechanism without application intervention.
- Designing and developing new features (channel browser, directory browser, image viewer, etc.) for Toshiba's digital television application.
- Optimizing image decoding application by implementing faster algorithms, using inline assembly and other techniques.
- Working with engineers in the U.S., Germany, and Taiwan to create Linux-based ATSC and DVB-T televisions.
- Working with engineers in the U.S. and Japan to create a Linux-based consumer digital video recorder.
- Designing and developing hardware abstraction API layer for a multimedia processor capable of real-time MPEG2 encoding and decoding. Creating build, package, and test frameworks to support those APIs.
Working with video and embedded Linux:
- Tools to interact/adjust television features from a computer over network.
- MPEG2 TS/PS, VBI CC/WSS stream parsing and analysis.
- Video playback trick play with audio/video synchronization, hardware/system resource management and data transfer tuning/analysis.
- Video encoding with data access pattern optimization.
- Developed Linux PCM device driver to support a subset of OSS ioctl calls.
- Tetris on our prototype board to verify graphics capabilities of our multimedia processor.
Portal Software: Development Tools Engineer
Develop user-facing web sites:
- Authoring online training resources to install, administer, and maintain Portal's SCM end-user clients. Administering FrontPage Web Service to enable publication of internal engineering guides, procedures, and FAQs.
Release engineering tools and software configuration management:
- Developed tools backed by Oracle database to enable Continuus metadata extraction as part of Portal's SCM migration from Continuus to ClearCase. Designed filesystem hierarchy to allow mapping existing repositories to ClearCase VOBs with perl scripts.
- Matching build error messages to developer activities to generate detailed e-mail notifications sent to build-breaking developers.
- Generating statistical reports for source code files in perl. Unix shell scripts to analyze server logs.
- Modifying Oracle databases for Pin.com and ClearQuest.
Santa Clara University
B.S. Computer Science
Minored in Japanese
Student system administrator at SCU Design Center, writing scripts and managing Windows NT, Sun, HP, and SGI workstations.