|Libraries and middleware
||Boost, SDL, DirectFB, pthread, ZeroMQ, cURL, Nexus, OpenGL, GStreamer|
|Boards and hardware
||Roku, Panasonic PH1-Pro4, Jetson TK1, Toradex Apalis/Ixora, PandaBoard, Beagle Board, Raspberry Pi, WinTV 950Q, HDHomeRun, Net Yaroze|
|Software and debugging
||Valgrind, DUMA, gdb, GCC, CMake, Instruments, OProfile, Linux, Mac OS X|
||C, C++, Lua, Mandarin Chinese, Japanese|
||Senior Software Engineer at Roku|
Author feature guides, research, implement and debug features of Roku OS that runs across different types of hardware and memory configurations:
- Ogg demultiplexer to extract FLAC/Opus/Vorbis streams for playback and trickplay.
- Address defects reported against Roku OS, such as 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.
- ZDF: implement support for HbbTV broadband video playback by developing various <object> plug-ins.
||Connected TV Technical Yahoo at 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.
- Resource management first, using multi-process system to allow control over memory and hardware utilization; ship only necessary components to fulfill partner requirements.
- Customization and business logic through Lua scripting and extensions, allowing applications 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.
- 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 in 7 months at a cost that is a small fraction of industry norm.
- Design and implement 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; customize root file system.
- Design and implement build system using CMake, create toolchains.
- Put together demonstrations so that other engineers can start integration immediately.
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.
||Software Development Engineer at Toshiba America Electronic Components|
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.
||Development Tools Engineer at Portal Software|
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.