Skip to content
View halfvector's full-sized avatar
😄
😄
Block or Report

Block or report halfvector

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
halfvector/README.md

Stuff I've worked on.

Knowledge Graph, Reliability Engineering (2016-Current)

fubo-ws

Job: Series B startup, scaleup, through IPO. The other seasons of Silicon Valley.



Augmented Reality Apps and Wearable Device Management (2014-2016)

wearables

Job: Wild seed stage startup, basically Season 1 of Silicon Valley.



Multi-layer materials (PBR/BRDFs) (2013)

brdf-2

Above, left to right: polished metal, rough metal, polished transparent acrylic over plastic, rough transparent acrylic over plastic.

brdf-1

Above, left to right: semitransparent smooth reflective acrylic over: smooth gold, rough gold, and a weird deeply absorbing plastic.

Physically-based deferred shading pipeline with various bidirectional reflectance distribution functions. Based heavily on work by folks like Oskar, Weidlich, and Wilkie.
Combining aspects of Cook-Torrance, KSK, TriAce's BRDFs and various distributions (Gaussian, Phong, TrGgx/SmithG1, Beckmann).

Plastics, glass, and metals could be rendered with the same shader code path by adjusting parameters for each layer and it's BRDF: roughness, complex IOR for metals and simple IOR for dielectrics, diffuse reflectance, and layer thickness.

Screenshots are of a microfaceted KSK (Tr/GGX distributions) for specular and Oren Nayar for diffuse BRDF. Two layers attempting to simulate absorption and transmission, and focuses on physically based roughness using preconvoluted phong env maps.



SOTA 3D Renderering & Shaders (2012)

ScreenShot4573-pure-IBL-based-indirect-lighting ScreenShot4858-layered-brdfs-1024x484

After a GDC 2012 conference where Tri-Ace demoed their ground-breaking Physically Based Rendering paper, I spent all my free time implementing every related paper for a year.
IBL ambient lighting, complex reflectance for metals using roughness and biased mipmaps on prefiltered radiance environment maps.
Every type of SSAO/bent-normals/contact-shadows related algorithms. And obviously of course lots of bloom.



On-Air Social Media for MSNBC (2012)

msnbc-social

Integrated Twitter and Facebook conversations with a third-party sentiment analysis engine and MSNBC's live TV show production.
First premiered on "NOW with Alex Wagner".
Mixture of Microsoft-stack, Linux rendering machines.
My first "push to prod with 400k users".



Surface Reader for New York Times (2011)

nyt-table-custom

C#
Multi-finger and multi-person touch-based UI from scratch.
Microsoft Surface Table. Silky smooth interactions.



Game of Go for Microsoft (2011)

game-of-go

C#
Built from scratch for the Microsoft Surface.
Leveraged Microsoft's High Performance Cluster connectivity to seriously challenge the player.
One of my favorite contributions was thread-safety, deadlock-detection, and automatic event-marshalling that guaranteed callbacks ended up in the proper UI thread. This eventually became it's own library and was used for other projects.
Sat in the lobby of one of the Microsoft campus buildings.



Completely touch-based Concept Car for Chrysler (2009)

chrysler-200c-interior

Built a gesture detector for the first ever touch film on the car interior that replaced all the buttons. It was immediately obvious that cars should not use touch panels until there's physical feedback.
Interfaced with a cutting edge capacitive grid touch film via RS232.
Coordinate dewarping, gesture recognition from noisy input.
Web-service to support in-car communication for the demo between an iPhone app, Windows tablet, and car's hardware (HVAC, playing music, rolling down windows, starting the car).

detroit-autoshow



Robotics Programming (2008)

motion-module-on-rp-against-simulator-with-usar

The lengths I'll go to for Engineering Productivity

C++, Perl

  • 3D debug UI for observability of robotics planning and execution.
  • Sony Aibo simulator that runs real robotics code in an emulated environment to speed up iteration speed of locomotion code testing.

My robotics code test environment using the hardware-accelerated physics engine PhysX (later acquired by NVidia).
Another test environment was an Unreal Tournament 2004 mod.
Intercepted and simulated PID joints accurately enough to even simulate an existing drift in our locomotion code that we saw on the physical field.

728886685_18e51a13e9_o

Above: My college sports team in the Robocup League.



Nintendo Emulator (2007)

megaman-rom-proper-disassembly-clipped second-game-donkey-kong-window

C++ with meta-programming
An emulator with CPU, PPU, and input support. Win32 GDI-based rendering. Cycle-accurate emulation, multiple PPU-CPU sync modes. Ran multiple games (like Super Mario and Donkey Kong).
Development was straightforward thanks to the many freely available and detailed 6502 and RP2A03 CPU references.

Pinned Loading

  1. Ogg+Vorbis encoder, designed to be c... Ogg+Vorbis encoder, designed to be compiled by Emscripten and used in browsers.
    1
    #include <stdio.h>  // printf
    2
    #include <math.h>   // sin
    3
    #include <time.h>   // time
    4
    #include <stdlib.h> // srand
    5
    #include <string.h> // memcpy
  2. Latest Docker on Ryzentosh Latest Docker on Ryzentosh
    1
    # so at the time of writing, hyperkit doesn't work on AMD/Ryzen.
    2
    # this means no native docker support.
    3
    # the default docker-machine setup uses the deprecated boot2docker which is stuck with a buggy docker-19.
    4
    # i'm looking to run the latest docker daemon, have proper service-hostnames, and easy port-forwarding,
    5
    # and use the same docker-compose setups as a normal OSX/Linux machine.
  3. nes-2015 nes-2015 Public

    NES emulator in C++

    C++

  4. ogg.js ogg.js Public

    Forked from audiocogs/ogg.js

    libogg, libvorbis, and libopus compiled to JavaScript with Emscripten for Aurora.js

    JavaScript

  5. hazelcast-go-client hazelcast-go-client Public

    Forked from hazelcast/hazelcast-go-client

    Hazelcast Go Client

    Go