
NBA · TECHNICAL LEADERSHIP
Led the architecture of the NBA TV app
Architected the experience, delivered on time and equipped the NBA's team to carry it forward.
THE TV APP STUDIO · CREATORS OF HOSANNA UI
We design and build products with Hosanna UI — one TypeScript system across Browser, Roku, Samsung Tizen, LG webOS, mobile, television, car and watch targets.
// HOSANNA UI
Hosanna UI keeps product architecture in declarative TypeScript while each target owns the correct output. Roku receives native BrightScript and SceneGraph; Browser, Samsung Tizen and LG webOS share the Web DOM renderer with distinct host adapters; Apple, Android, car and watch targets keep their native or semantic system surfaces.
Browser · Samsung Tizen · LG webOS · Roku · iOS · Apple TV · Android · Android TV · CarPlay · Android Auto · Apple Watch · Wear OS
Browser, Samsung Tizen and LG webOS are production-ready in Hosanna UI 1.39.0, with preview, packaging and device workflows in Hosanna Tools 3.18.0; Tizen and webOS combine target-owned remote input, lifecycle, media and accessibility integrations with the shared Web storage layer.
// home.ts @view('Home') export class HomeView extends BaseView<HomeState> { @state private dataSource = new CollectionViewDataSource([{ id: 'language-stories', settingsKey: 'rows.languageStories', data: {}, items: storyIds.map(id => ({ id, imageUrl: storyImages[id], ...this.appConfig.get( `locale.languageStories.stories.${id}` ), })), }]); protected override getViews() { return [ CollectionView({ id: 'languageStories', dataSource: this.dataSource, readingDirection: this.appConfig.getReadingDirection(), }) .onItemSelected(({ itemIndex }) => { const story = storyIds[itemIndex ?? -1]; if (!story) return; (this.parent as NavControllerView) .push(Details({ id: `details-${story}`, storyId: story, })); }) .isInitialFocus() ]; } }
// details.ts @view('Details') export class DetailsView extends BaseView<DetailsState> { @state storyId: StoryId = 'bakery'; protected override getViews() { const story = this.appConfig.get<StoryCopy>( `locale.languageStories.stories.${this.storyId}` ); return [Group([ Image({ id: 'detailsImage', imageUri: storyImages[this.storyId], }), Label({ id: 'title', text: story.title, horizontalAlignment: 'start', }), Label({ id: 'description', text: story.description, horizontalAlignment: 'start', }), Button({ text: this.translate( '{{locale.languageStories.back}}' ), }) .onClick(() => this.popDetails()) .isInitialFocus(), ])]; } }
// app.config.json · relevant sections { "locales": { "ar": { "readingDirection": "rtl" } }, "rows": { "languageStories": { "rowType": "HorizontalRow", "cellSize": [400, 300], "height": 386, "spacing": 28, "contentOffset": [92, 8], "cellSettingsKey": "cells.languageStory", "focusSettings": { "hideFocusIndicator": true, "focusedScale": 1.035 } } }, "cells": { "languageStory": { "$supportsDataMap": true, "cacheFragmentConstraintLayout": true, "views": { "base": [ { "id": "poster", "subType": "Poster", "uri": "${data.imageUrl}", "width": "{{constraint.fillX(start, cell.end, 6, 6)}}", "height": "{{constraint.aspectRatio(1.865)}}", "translation": [ "{{constraint.pin(start, cell.start, 6)}}", 6 ] }, { "id": "title", "subType": "Label", "text": "${data.title}", "horizAlign": "start", "width": "{{constraint.fillX(start, cell.end, 26, 26)}}", "translation": [ "{{constraint.pin(start, cell.start, 26)}}", "{{constraint.pin(top, poster.bottom, 18)}}" ] } ], "normal": { "poster": { "opacity": 0.9 } }, "focused": { "poster": { "opacity": 1 } } } } }, "translations": { "en": { "languageStories": { "sectionTitle": "Choose an adventure", "back": "Back to stories" } }, "ar": { "languageStories": { "sectionTitle": "اختر مغامرة", "back": "العودة إلى الحكايات", "stories": { "bakery": { "title": "المخبز المشمس", "description": "ثلاثة مآزر ورغيف واحد مستحيل." } } } } } }
// app.config.mobile.json · relevant overrides { "$extendFile": "./app.config.json", "appSettings": { "configVariant": "mobile" }, "rows": { "languageStories": { "height": 220, "cellSize": [336, 214], "contentOffset": [20, 0], "spacing": 16, "viewportWidth": 393, "floatingFocusAreaWidth": 353, "focusSettings": { "focusedScale": 1.025 } } }, "controls": { "NavController": { "transition": { "default": { "transitionType": "Slide", "transitionOptions": { "duration": 300, "parallax": 0.3 } } } } } }
SELECTED WORK
EWTN+ · FLAGSHIP BUILD
Senior product architecture and hands-on engineering for EWTN's new streaming app — built end to end on Hosanna UI.
"The development velocity is unmatched by any TV framework we've used. Our engineers shipped production-ready code within days — without any prior BrightScript knowledge."
Three client projects. More when we can show them.
EWTN+ · Roku product engineering
We translated EWTN's product specification into a polished, production-ready Roku experience: quick to navigate, dependable in viewers' homes and straightforward for EWTN's engineers to own after handover.
The experience
What we delivered
“Working with the Hosanna framework has been a great experience for our team. The development velocity it provides is unmatched by any TV application framework we've used, and it was essential to our success in rebuilding our Roku application. Our engineers were able to onboard and begin contributing production-ready code within days—without any prior knowledge of BrightScript. Hosanna also offers a strong set of platform-level features—the standout being its focus management system, which alone eliminated weeks of debugging we've encountered with other development technologies. All of this has enabled us to make a meaningful step forward in how quickly we can serve our viewers.”
Hosanna UI is our cutting-edge application framework, shaped by years of building television products. It gave the EWTN team a productive TypeScript workflow while delivering native Roku performance—and supported a relationship grounded in the shared purpose of serving viewers and spreading the Gospel.
Applicaster · Platform architecture
We re-engineered Applicaster's Roku architecture on Maestro and continue to collaborate on its evolution to Hosanna UI: a more powerful foundation for turning Zapp Studio configurations into expressive, high-performance television apps.
The platform
What we delivered
Maestro gave Applicaster a structured, testable Roku architecture. Hosanna UI is its cutting-edge successor, built from our accumulated television expertise and designed to make dynamic, authored products faster to build, inspect and evolve.
NBA · Architecture and technical leadership
We architected the NBA's Roku application on Maestro, built the core experience alongside its engineers, delivered on schedule and handed the system to an internal team trained to support it with confidence.
The experience




Screenshots sourced from the official Roku Channel Store listing for the NBA app.
What we delivered
Maestro is the open-source architectural foundation that preceded Hosanna UI. Hosanna UI carries those lessons forward as our cutting-edge framework, built from years of solving the hardest parts of television product engineering.
Swerve TV · Rapid product delivery
Using Maestro as the product foundation, we took Swerve TV from concept to a working Roku proof of concept with fast stream switching, full-screen cards and a polished, choreographed interface.
The concept
What we delivered
“Maestro gave us the foundation to turn an ambitious video concept into a fast, polished television experience in one month.”
Maestro let us move from product idea to production-grade architecture quickly. Hosanna UI is the cutting-edge evolution of that framework, built on everything we have learned across years of television products.
OPEN SOURCE EXPERIENCE
We have authored and contributed to Rooibos, Maestro and BrighterScript. That experience shapes every app we ship.
⑂ rooibos
The unit-testing framework used across the Roku community.
AUTHOR
⑂ maestro
The structured Roku framework whose lessons evolved into Hosanna UI.
AUTHOR · EXPLORE HOSANNA UI
⑂ brighterscript
The open-source language that compiles to BrightScript. Long-time core contributor.
CORE CONTRIBUTOR
THE TEAM
A small core team, strengthened by long-standing engineering partners. You work with the people responsible for the product—without layers of account management or a rotating bench.
OWNER / TECHNICAL DIRECTOR
8 years at Tantawowa
Tooling and framework specialist with 20+ years across games, UI systems and streaming. Former Roku engineer; author of Rooibos, Maestro and Hosanna; and a major contributor to Roku’s open-source ecosystem.
github.com/georgejecook ↗
LEAD DEVELOPER
4 years at Tantawowa
Senior Roku engineer, exceptional problem solver and key Maestro contributor, specialising in developer tooling, framework support and dependable delivery across complex products.
Engineering Partner · via PettersonApps
4 years at Tantawowa
Senior Roku engineer specialising in video, entitlements and integrations, with deep experience delivering reliable playback and connected services across complex streaming products.
Engineering Partner · via PettersonApps
2 years at Tantawowa
Senior Roku engineer with deep CollectionView expertise and a track record of delivering complex product work to a consistently high standard.