My name is Barnaby, I'm (currentYear-2004) years old and I like writing HTML more than
most people.
Skills
HTML, CSS & JS (2014-Present) I've been using HTML, CSS & JS since I was 10, but I wouldn't say I truly got 'good' at it until I
was about 16 or 17. In the years since then, I've been involved in multiple projects that have made
good use of the skill, such as TFORevive as well as my Harmony
projects.
TypeScript (2021-Present) When it's an available choice over JavaScript, I will always use TypeScript. It's far more
readable and strongly typed languages are almost universally easier to debug. My skill when it comes
to TypeScript development is equal to the level of my skill in JavaScript as I have spent a large
amount of time since 2021 learning the ins and outs of the TypeScript ecosystem.
I like to pride myself in my attention to reducing unnecessary use of
node_modules.
Vue & Nuxt (2022-Present) Vue is one of my favourite tools to use in reactive web content. In some cases I use Nuxt, but not
when it isn't necessary. I have a comprehensive understanding of both the Options API and
Composition API, as well as experience developing with Vue Router.
Java (2022-Present) Despite there being several reasons for the choice of Java, I don't use it very often. The main
exception is that, due to the constraints of development for a standalone
application for VR, it was the ideal choice when developing PicoZen.
C++ (2022-Present) I have an understanding of the basics of C++ development thanks to the requirement for native
development and low-level hooking in TFORevive.
Rust (2023-Present) Borrow checker :c I'm relatively new to Rust but have contributed a few additions to ALVR. I have also created a crate for
extracting files from the VPK format.
Personal projects (2022 - Present)
My personal projects have been made both with care and simplicity in mind. I try to give a bit of
personality to everything I make, including the stuff that's informative and about me.
I like to use these projects as an experiment of my abilities, to see how much I can make with as little
code as possible.
This portfolio works both with and without
JavaScript, although you get a better experience with it enabled.
You're currently experiencing this page WITHOUT JavaScript.
ALVR is an open-source application, written in Rust, which enables streaming from a PC to any standalone VR
headset. I have contributed multiple features to ALVR, such as hand gestures, AV1 support on Windows with
AMD GPUs, and support for inside-out body tracking.
Body tracking
The Meta Quest 3 and Quest Pro headsets support 2 forms of body tracking, inside-out upper body tracking and
"generative legs". Their upper body tracking uses the inside-out camera data to directly track the user's
arms and torso. "Generative legs", differently, estimates the position of the user's legs using a machine
learning model.
Adding support for these features in ALVR required using an undocumented OpenXR extension and trasmitting
data to the PC, which then emulates HTC Vive Trackers in SteamVR.
Hand gestures
ALVR has long supported hand tracking, however, not many VR apps and games support using hand tracking as an
input method. To solve this, I added "gestures" to help bridge this gap, allowing performing certain motions
with your fingers to trigger emulated controller inputs to allow use of hands as an input method in all VR
software.
PicoZen is an alternative (and I have to tell people it's unofficial) library and utility app for PICO XR
(and Quest). I designed it to look and feel like it came stock with the PICO OS.
PicoZen runs on any Android-based VR headset and shows all the apps installed on the user's headset,
including ones that are hidden in the default file manager. It also has tools for sideloading custom apps
and backing up saves.
Stats
Lifetime downloads (8 May 2023 - 12 Feb 2024): 4,929
Monthly proxied FTP bandwidth (21 Jul 2023 - 20 Aug 2023): 426GB
Weekly backend requests (13 Aug 2023 - 20 Aug 2023): 368.53k
Proxied FTP doesn't account for all bandwidth transferred through PicoZen as unproxied FTP
and SMB are supported in the app (but not the website).
PicoZen Website
The PicoZen website was made to emulate the style of the app as closely as possible while also maintaining a
responsive design.
To make PicoZen's sideloading capabilities more accessible, I created a web-based analogue for this feature
which leverages the FTP to HTTP proxy I created for the
app.
Titanfall Online was a cancelled free to play first person shooter game based on Titanfall 1 and developed
for the Korean/Asian market. Its development begun in 2016 and suddenly ceased in 2018, after seeing a few
beta test periods in South Korea.
The TFORevive project was founded to restore the playability of that game, in order to let people just play
it and enjoy it, and in order to explore and expand the modding capabilities to something never seen before
in the Titanfall series.
TFORevive Game UI
Titanfall Online originally used the Coherent UIGT library for it's UI. As part of the TFORevive project, we
removed UIGT and replaced it with Ultralight.
With this change, I was tasked with creating a brand new UI to replace the outdated, half-functional UI. We
decided upon using Vue to create the required UI elements in an extensible single-page HTML view.
One notable aspect of the UI is the loadout screens, which are dynamically populated with data from the
game engine and call native functions to manage the real-time player preview.
Many components of the UI redesign required programming not only in HTML, but also C++ and
Squirrel as well as the use of a disassembler to aid in
reverse-engineering and hooking compiled code from the game engine.
TFORevive Website
The TFORevive website is stylised to mirror the design of the in-game UI, with clear parallels to the game
UI as well as the launcher but changes made to better suit the web environment.
TFORevive Launcher
I made the TFORevive launcher to be both easily navigable and visually stunning, as to catch the player's
attention before they even open the game and to ease them into the game's interface design.
As shown in the images above, users can customise multiple aspects of both the launcher's appearance and the
game's function from within the launcher.
As an example, the mod menu allows toggling any installed mod as well as viewing each mod's details in a
easily digestible format.
TFORevive Installer
One of the main goals of TFORevive is to preserve the legacy of Titanfall (2014). To do this we needed to
ensure that the content of the game could be preserved along with its gameplay. For this task I created the
TFORevive Installer using the Electron framework.
Using my prior work on Harmony VPK Tool, having fully reversed-engineered the game's
archive format, I was able to implement my existing code to extract files from an install of Titanfall
and package them into mods for TFORevive to ensure that the game and all its content remains playable.
To enable easier modding of games from the Titanfall series (which use the 'Respawn Source' engine), I
developed a Rust crate for manipulating Respawn's undocumented fork of the
VPK Archive format
The crate that powers Harmony VPK Tool is called
sourcepak and it supports extracting from VPK files
compatible with Titanfall as well as those made for Portal 2, Source Filmmaker and Left 4 Dead.
Harmony VPK Tool originally used the TFVPKTool
TypeScript library, which was only compatible with Titanfall VPK files. Harmony VPK Tool has since been
rewritten in its entirety to use the sourcepak crate, and take advantage of its many benefits.
Northstar
After the surprise release of the Northstar mod for Titanfall 2 in 2021 I helped secure the 'masterserver'
and the mod client against multiple security exploits, helping to prevent abuse of the server listing
feature and enforcing player usernames, and improved server-side functionality to ensure ease of use for
both players and server hosters.
I also created the homepage for Northstar, which has since had additional
parts added by other open-source contributors. The main landing view remains almost entirely as it was on
the day I first created it.
Miscellaneous (2020 - Present)
Timetable
I got frustrated of the slow, unreliable timetable that my university uses and one day decided to
investigate. As it turned out, they had absolutely no caching on their backend and also requested that your
browser do the same.
I set out to solve this by making my own wrapper around their API, which fixed many of the poor design
choices and implemented appropriate caching. I then used this new, improved API to create a custom timetable
UI that supports many of the same features as the original UI, while also being faster and saving data so
that it can also work offline.
Discord Bots
Since 2018, I've created many Discord bots (successful or not).
Most of them aren't worth talking about.
In 2020, I helped create the fully customisable Wahtson and made
a custom Wiki for the bot's configuration.
Commissions (2022 - Present)
I have completed multiple commissions and projects to unanimous satisfaction.
I refuse to settle at "okay".