Computer scientist
EngD in virtual reality from the University of Bath. First-class BSc in Computer Science from the University of Leeds.
I build software in Newcastle. Away from the keyboard it's the bike and baseball. This is my room; everything in it is something I've made or done.
Click anything in the room.
University of Bath
EngD in Digital Entertainment, 2020
Thesis: Influence of Perspective in Virtual Reality. Done alongside BMT.
University of Leeds
BSc (Hons) Computer Science, First Class, 2015
With a year in industry.
The blue one sticking out is my thesis. My doctorate looked at third-person perspective in virtual reality: what changes when you see yourself from behind, especially when the task is moving.
Cited 26 times on Google Scholar, as of October 2026.
@phdthesis{Bhandari_2021,
title = {Influence of Perspective in Virtual Reality},
author = {Bhandari, Naval},
school = {University of Bath},
type = {EngD thesis},
year = {2021},
url = {https://researchportal.bath.ac.uk/en/studentTheses/influence-of-perspective-in-virtual-reality}
}@inproceedings{Bhandari_2020,
title = {Influence of Perspective on Dynamic Tasks in Virtual Reality},
author = {Bhandari, Naval and O'Neill, Eamonn},
booktitle = {2020 IEEE Conference on Virtual Reality and 3D User Interfaces (VR)},
publisher = {IEEE},
pages = {939--948},
year = {2020},
doi = {10.1109/VR46266.2020.00114}
}@inproceedings{Ciucanu_2018,
title = {E-StopMotion: Digitizing Stop Motion for Enhanced Animation and Games},
author = {Ciucanu, Anamaria and Bhandari, Naval and Wu, Xiaokun and Ravikumar, Shridhar and Yang, Yong-Liang and Cosker, Darren},
booktitle = {Proceedings of the 11th Annual International Conference on Motion, Interaction, and Games},
series = {MIG '18},
publisher = {ACM},
pages = {1--11},
year = {2018},
doi = {10.1145/3274247.3274505}
}2,958 contributions on 254 days. Most of my work is in private repos, so GitHub shows the squares but not the code.
The screens cycle through things I've built. Open one for more.
Velo Lab2026, Node, MediaPipe Pose, ClaudeFilm a pitch side-on on your phone and it measures your mechanics, then tells you the one change worth the most mph.
Nudge2026, Node, SQLite, ClaudeChases unpaid invoices for small businesses, so you never have to send the awkward email yourself.
CQL Search & Table Export2026, Atlassian ForgeA Confluence Cloud app for searching with CQL, embedding live results in pages, and exporting results or page tables to Excel and CSV.
OnceMore2025, Spotify APISaves your Spotify Discover Weekly every Monday before it refreshes, so the good weeks don't disappear.
Free Mobile Lottery2023, React, Prisma, PostgresEnter your number for a daily chance to win £5.
A Chrome and Firefox extension that drafts comments and replies for posts on LinkedIn, Facebook, X and YouTube.
Wordle clone2022, JavaScriptI wanted to play more than once a day, so I spent a day making one that gives you a new word on every refresh.
Perspective in VR2021, Unity, C#, HoloLensMy doctorate at the University of Bath, with BMT: how seeing yourself in third person changes what you can do in virtual reality.
Movie Showtimes UK2018, Node, AlexaAn Alexa skill. Ask "what's the next showing of a film near me?" and it tells you the time and the cinema.
Crypto Price History2018, JavaScriptCompare a coin's price today with any past date, in any currency, and see exactly what you'd have gained or lost.
Standalone Wear Maps2018, Java, Wear OSTurn-by-turn navigation that runs entirely on a Wear OS watch, from picking the destination to GPS tracking.
FreeD2015, Haskell, OpenGLA functional rendering engine in Haskell, built around a scene graph. My final-year project at Leeds.
Space Fighter2014, JavaScript, CanvasAn HTML5 side-scroller. Dodge asteroids, shoot them, grab power-ups and fight a boss every level.
Digi Invaders and Digi Tetris2014, C, ArduinoSpace Invaders and Tetris in C for the DigiPixel, an 8×8 LED shield for Arduino with a d-pad and two buttons.
Office dashboard2014, C#, WPFA WPF app that ran on TVs around the office, showing company stats with custom chart widgets.
Idler2014, AndroidAn Android game where you level up by leaving it open. Released on the Google Play Store.
A miniature planet with a little man on it, for my computer graphics module.
An iOS app for aggregating eBay searches, sniping bids and notifying you when something matching your criteria turns up.
Tower Defence2012, Python, pygameHordes of men and birds attack your castle and you shoot them. My first-year Python project.
Every project as a climb, from my first year at uni to now. Bigger climbs were harder work, and the flags mark my degrees.
Drag along the route, or focus it and use the arrow keys.
When I'm not at a keyboard I'm usually on this bike, or out on the real thing. This year, not as often as I'd like.
Naval Bhandari
Pitcher and outfield, Newcastle Nighthawks
Two seasons on the mound in the BBF. The ERA is exactly what it looks like, which is why there's a game below where I'm much better.
| Year | Team | G | IP | W–L | H | ER | BB | K | ERA | WHIP |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026 | Newcastle NighthawksDivision 3 | 5 | 9.0 | 0–1 | 22 | 19 | 8 | 2 | 14.78 | 3.33 |
| 2021 | Bristol BucsA League | 4 | 6.1 | 0–2 | 28 | 28 | 13 | 4 | 30.95 | 6.47 |
| Career | 9 | 15.1 | 0–3 | 50 | 47 | 21 | 6 | 21.46 | 4.63 | |
ERA is over 7-inning games. Full stats from the league

Film a pitch side-on on your phone and it measures your mechanics, then tells you the one change worth the most mph.
Velo Lab: film a pitch on your phone and get the one change worth the most mph.
Barely, this year. The turbo is mostly a coat stand.
For the Newcastle Nighthawks, trying to throw strikes on purpose.
Last updated 12 October 2026.
That's the Tyne Bridge out of the window. I live and work in Newcastle.
If you'd like to talk about any of this, get in touch: navs92@hotmail.com, GitHub.
Film a pitch side-on on your phone and it measures your mechanics, then tells you the one change worth the most mph.
Baseball is my other hobby, so I built a training platform for it. It tracks every frame with pose estimation and compares what your body did with 100 pitchers measured in a biomechanics lab.
In the off-season it tests jump, mobility and strength, builds a 12-week plan around your gaps, and Claude reviews each week with you. Invite-only for now.
Chases unpaid invoices for small businesses, so you never have to send the awkward email yourself.
You add what you're owed and Nudge emails each client polite reminders on a schedule. It gets firmer the longer an invoice goes unpaid and stops the moment they pay. You can forward invoice emails to it and Claude reads them, PDFs included.
Plain Node with the built-in SQLite and no build step.
A Confluence Cloud app for searching with CQL, embedding live results in pages, and exporting results or page tables to Excel and CSV.
Saves your Spotify Discover Weekly every Monday before it refreshes, so the good weeks don't disappear.
Link your Spotify account once, and every week it makes a private copy of your Discover Weekly playlist.
Enter your number for a daily chance to win £5.
An experiment to see whether I could bankroll a lottery until the adverts made enough to fund it.
A Chrome and Firefox extension that drafts comments and replies for posts on LinkedIn, Facebook, X and YouTube.
Chrome Web StoreFirefox add-onWatch the demo
I wanted to play more than once a day, so I spent a day making one that gives you a new word on every refresh.
My doctorate at the University of Bath, with BMT: how seeing yourself in third person changes what you can do in virtual reality.
Read the write-upIEEE paperIEEE VR 2020 talk
An Alexa skill. Ask "what's the next showing of a film near me?" and it tells you the time and the cinema.
It uses the FindAnyFilm API. I wanted it to use your location when you don't give one, but Amazon's developer platform couldn't emulate location at the time.
Compare a coin's price today with any past date, in any currency, and see exactly what you'd have gained or lost.
Mostly a way to learn more JavaScript. I couldn't find anything else that showed this simple number clearly.
Turn-by-turn navigation that runs entirely on a Wear OS watch, from picking the destination to GPS tracking.
When I released it, Google Maps on a watch still did all the work on your phone. This was the first app I sold, and it made over £2,000.
A functional rendering engine in Haskell, built around a scene graph. My final-year project at Leeds.
An HTML5 side-scroller. Dodge asteroids, shoot them, grab power-ups and fight a boss every level.
Made for Adobe Generation's online games course, where it came second of about 50.
Space Invaders and Tetris in C for the DigiPixel, an 8×8 LED shield for Arduino with a d-pad and two buttons.
The invaders come down in a zigzag, and when you die it shows your score and starts again. Tetris never quite learned how to stack.
A WPF app that ran on TVs around the office, showing company stats with custom chart widgets.
Each chart could show anything from the database, and a drag-and-drop editor made it easy to rearrange.
An Android game where you level up by leaving it open. Released on the Google Play Store.
A miniature planet with a little man on it, for my computer graphics module.
Quaternions for every rotation (including an arcball camera), shadow maps, collision detection, and particle systems: two orbiting particles that bounce off the planet and each other, and snow that stacks.
An iOS app for aggregating eBay searches, sniping bids and notifying you when something matching your criteria turns up.
Built against the eBay sandbox API and never released.
Hordes of men and birds attack your castle and you shoot them. My first-year Python project.