Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

about

I am a full stack JavaScript developer based in Houston, Texas.

I enjoy pushing the boundries of the Web, developing new and innovative approaches to solving problems, and pushing performance limits.

technical

Node.js Front-end Development Back-end Development HTML/CSS TypeScript/JavaScript C++/C/WASM

creative

WebGL & Animation Physical Interaction & IoT Videography Photography UI/UX Design

Q&A

What is wrong with this site? : Everything. I looked at your source code, and... : That's on you, bud. Why are you so sarcastic? : It comes naturally. Hobbies? : Amateur Radio, electronics, flying blenders. Keyboard? : Filco Minila with Hako Royal Clear switches. Mouse? : Elecom HUGE Trackball.

playground

Sometimes I get silly ideas and feel the need to share them. They will be Coming Soon(TM).

skills

Obligatory animated skill graphs

JavaScript | TypeScript | Node.js | CSS | HTML | Amazing Graphs | Angular | WebGL | Photoshop | Illustrator | Premiere |

contact

Your IP address has been logged, and I will be in touch shortly. Just kidding. For the moment, if you must, you may Tweet me or reach out through LinkedIn.

projects

squeak.js

A minimal yet full featured, declarative http/http2 server for Node.js. Powerful templating with server side parsing, and an caching mechanism allow squeak.js to be easy to use and simple to understand. Heavy inspiration was taken from Angular with its use of TypeScript Decorators and built in CLI. I wrote this as a replacement for Express.js and to simplify tooling and automation for my employers website. Zero dependencies means one NPM package is installed, making the entire payload light and friendly.

IPTV: Hubris, Diver, ReCast, ControlPoint

Hubris is an in house IPTV Set Top Box solution. Written from scratch in TypeScript and transpiled down to ES5 for execution on boxes running WebKit that was last compiled in 2012. Hubris has been tirelessly optimized, refactored, and sculpted into running faster than most modern day boxes run Android IPTV apps. It is mated to a matching backend system that, every day, consumes over 2GB of schedule and program data and parses it into less than 10MB chunks per day. A lot of pre-processing happens server side so that the STB can be as performant as possible. It's a beast.

Diver is my purpose built DVR solution. When it came time to build out our DVR we faced a challenge: digital rights management is a scary thing. In order to save and serve content, the traditional approach is to purchase a box (or multiple boxes) that are able to decode (bring the content "into the clear") for enough time to save them and re-encrypt. These boxes are very expensive, starting at about $30,000 and going up from there. I built Diver in such a way as to be able to forgo the traditional, and instead it captures the raw Transport Stream and writes it, as well as a special timing file, to disk. Since the Set Top Boxes can already decode/decrypt this content I was able to use some custom signaling server and client side to facilitate seamless playback without reaching into the companies pockets. This is a complex system. Diver is written in C and TypeScript, utilizing Node.js as a server backend. I use squeak.js on the server side to simplify extensibility.

ReCast is a general purpose digital video utility. Currently we use it to send certain property webcam data to customers in an info screen on their IPTV STB's.

ControlPoint is our signaling and control server for both server and client side processes. It allows us to remotely manage and provision boxes, as well as performs some more basic tasks like presenting consumable data to the client. For instance, the local weather. It also enables us to remotely troubleshoot and gather telemetry if needed.

Cerberus

Cerberus is an in house CRM, ticketing, and general company control tool. It is designed to be an everything tool. Currently written with Angular, I am looking to transition it over to Joist as soon as it is ready. It will handle billing, customers, ticketing, products, and anything else required. While still a work in progress, it currently handles all of our IPTV operations in regards to provisioning and monitoring.

Joist

Definitely Not Angular(TM). It may look and feel like Angular, but it's got a lot less going on under the hood. Built with Webpack, written with TypeScript, and powered by Web Components. Currently very much a work in process. I wrote this because I've seen the abyss. Far too often I find myself digging deep down into the bowels of Angular to make it do the things I need, in the manner I need it done. Joist is written with the intent of less obfuscation. It's much less like learning a new language and more like flexing your existing JavaScript muscles. An easy to use and manipulate router module, programmatic module and component generation, and a simpler, less convoluted declaration methodology set it apart from Angular.

  • An App consists of Modules, Component Libraries, a Router, a State Controller, a View Controller, and Service Libraries.
  • A Module consists of a view root and views. It may also inject new Components and Services globally.
  • A Component is simply that: A small piece of a whole. Buttons, cards, or anything else you can think of might be a Component. Components live in easy to reference and manage Component Libraries.
  • The Router exposes easy to use methods for SPA URL state and application navigation
  • The State Controller exposes straight forward application state management.
  • The View Controller allows for a programmatic approach to creating, hiding, showing, and destroying application views.
  • Services, contained in a Service Library, allow for any number of app related communication, data manipulation, or general tasks.

It is a work of passion.

e p h e k t z