


At age 19, VIZIO brought me on to headline their 2020 UI/UX experience.
Being a designer at heart and an engineer at the core enabled me to create smooth, beautiful, and functional user interfaces for the SmartCast platform full-time as Software Engineer II.
From building a UI library for future apps to integrate, to standing up entire applications, I utilized my skillet to
implement unique technologies, bringing the user responsiveness that's unheard of in the TV industry.
Things Built
Projects
SystemUI
-
Overlaying application displaying essential user-facing UI components from the UI Component Library
-
Used lower level websocket messages to trigger UI scenarios
-
Used MVP pattern to develop scalable architecture, supporting countless scenarios
-
Utilized Jest to implement unit tests for spec'd user interactions
-
Initial MVP development done in 3 weeks for CES2020 Las Vegas
SystemUI was a user-facing application overlaying all inputs on the television with a high performance rendering layer. This application displayed essential components such as a new Volume Ring, new Input Switcher, notifications, and more. It handled hundreds of voice commands, such as "show me the weather," or "tell me about the burj khalifa."
SystemUI listened for websocket events from the TV to determine what visual components should be displayed and populated. These events contained essential information from the device, such as pairing status, remote battery level, voice command domain, current inputs, all used to configure the UI Library's components. These events were listened to via the Companion Library.
Considering the thousands of components this app was projected to contain, we wanted to implement an architecture that could scale gracefully with increased complexity and real estate. The Model-View-Controller (MVC) architectural pattern is a pattern utilizing a rule-set to separate business logic from display logic. We strictly enforced this pattern and created a solid scalable platform to build upon.
While this project was very visual, we implemented Jest unit testing to ensure API calls and responses matched specifications provided by higher levels. Tests were written for all sorts of user behaviors, such as unplugging USB accessories, losing network connection, and more.
Upon inception, SystemUI was created as an MVP in the span of a couple weeks to be showcased at the Consumer Electronics Show (CES2020). Development was done up until the morning-of the user demo. Even with the extremely tight timeline, the application was stable and performed strong.
UI Component Library
-
Private company library consisting of hundreds of UI Components
-
Distributed to npm via JFrog Artifactory
-
Used & in use to build multiple applications across the device ecosystem
-
Contains essential components such as Volume Ring, Input Switcher, Voice Search
-
Internal test application for visually assisted external development
-
API giving client dev-friendly access to asynchronously managed components
The UI Library was used internally by developers on the SmartCast teams. It
contained hundreds of UI components, using game technology to develop and configure smooth, responsive
interactions.
A strong architecture, alongside a strict inheritance tree, allowed me to develop hundreds of
unique components with ease and quality.
The UI Library was automatically built and deployed to npm via JFrog Artifactory. The private package was then imported into parent projects, allowing the import of individual components, or import of a developer-friendly API.
The UI Library is integrated into a number of applications under the Platform team. The lightweight and universal nature of the library allowed its components to be configured and used in any environment.
The UI Library held essential components such as the Voice Ring, Volume Ring, Input Switcher, Notifications, Toasts, Action Buttons, and more.
In order to assist developers in testing custom components, the UI Library featured an internal test application, giving a straightforward and visually-assisted solution to testing these unique components. A range of test keys were implemented to give QA debug capabilities across devices, via test application.
For the UI Library, we didn't want the client to have to handle instantiations, or component management. To keep complexity light, a lower level API was exposed to the client, allowing them to trigger pre-defined component management logic, keeping all components in sync with each other.
Bluetooth Remote App
-
Utility application for using Bluetooth Low Energy to pair new-generation Bluetooth Remotes
-
Developed entire Voice Remote Pairing app frontend, MVP in 1 day
-
Implements APIs to communicate with embedded device and perform backend interactions
-
Used team-common MVP pattern to develop a strong, scalable architecture
-
Leverages Vue.js to easily prop-up components with ViewModels and dynamic properties
The BT Remote App served as a user-facing BLE remote settings hub. Pairing, unpairing, checking for firmware updates, and checking battery level, were all centralized in the BT Remote App.
Initial development of the BT Remote App took 1 heads-down day. Utilizing best practices and earned experience, I was able to have an application up-and-running within a day of being briefed on the project.
Communication with the TV was handled via API calls to the Companion Library. Following a spec, TTD allowed our team to kickstart our end of the project long before API work was even complete.
The BT Remote App utilized the reliable MVP pattern, allowing scalability for any scenario. A separation between business logic and display logic allowed other developers to build upon the application with ease.
The BT Remote App was built using VueJS, giving us the component-focused development environment we needed.
Customer Support App
-
Utility application for displaying pin to user, allowing customer support tele-troubleshooting
-
Implemented React & JSX to rapidly render single-file components
-
Built APIs to communicate with embedded device, displaying essential system information to the user
-
Automated element animation using 'Cascadia' concept
The Customer Support App served as a user-facing device specification hub. Essential information such as version numbers, connection status, and device capabilities, were showcased to the user at their convenience via this app. The application features a randomized pin, which could be given to a support agent, and used to make adjustments/send commands to the device remotely.
For the Customer Support App, we leveraged React, and JSX, to get an application up and running in record time. Switching from our usual Vue, we looked at the advantages of React, and decided it was the best choice for the project.
Some information being displayed in the Customer Support App was not yet wired to be fetched from the device. I worked directly in the Companion Library to implement these new APIs, then switched codebases and took it across the finish line on the frontend.
In the Customer Support App, animation was repeated across elements. To automate this, I created a 'Cascadia' helper, automating cascade animations across all elements, without the need for repeated declaration.
OOBE2020/2021
-
Out of Box Experience, application displayed to user on first boot of TV
-
Improved on asset loading and management utilizing common patterns
-
Developed frontend features and architectural changes to current OOBE2020 application
-
Communicated & coordinated with design team to modify & implement functional mockups
OOBE stands for Out Of Box Experience. It's defined by the user's first interaction with the device. Development was done on both the existing OOBE, and a new-generation OOBE.
Communication between local assets on the device, and applications, can sometimes come out of sync. To manage this, we developed methods to retry failed asset loading, utilizing proven patterns.
While the OOBE2020 application was maintained and stable, there were a few improvements I was tasked with, from fixing broken key listeners to re-approaching asset loading & fetching, I got to put my touch on a handful of moving pieces.
Advised on multiple mocks and worked directly with the design team to ensure a function and seamless experience for the user.
Technologies Used
Toolbox









CES 2020
Las Vegas


SystemUI Voice Search Demo Source: CNET
SystemUI Voice Search Live Demo Source: CNET

SystemUI Weather Voice Command Demo Source: CNET
Mission
Develop an MVP overlaying front-end application showcasing Vizio's 2020 voice remote capabilities.
Year
2019
Vizio commonly showcases their latest and greatest technology
at the biggest technology convention in the world: CES. For the 2020
iteration, Vizio demo'd the SystemUI MVP project, developed over
a couple weeks for the event.
SystemUI's Voice Search, Weather search, and Wiki search features were
showcased to a number of journalists to grow anticipation for Vizio's
2020 line of products.
