2,383 karma · joined April 20, 2012
Location: California
Willing to relocate: No
Remote: Remote only
Résumé/CV: https://justin-lloyd.com/ (psst, scroll down and right)
LinkedIn: http://linkedin.com/in/justinlloyd
EMail: justin@justinlloyd.io
Technologies: Rust, C, C++, C#, Python, Ruby, Kotlin, Java, Go, Assembler, OpenCV, OpenCL, OpenGL, OpenAI, OpenCompute, MCT, TensorFlow, PyTorch and more
Autonomous vehicles, robotics, computer vision and machine vision, virtual reality, augmented reality, SLAM & D-SLAM, multiple sensor fusion, deep learning, neural networks, artificial intelligence, GPU programming, Mediapipe, embedded firmware, board bring-up, Linux, macOS, Windows, iOS, Android, high-speed/low-latency message queues, high-frequency trading, trading prediction systems, super-low-latency video processing/streaming, optimization, build pipelines, kernel drivers (Windows, Linux, macOS), low-level systems programming, software tooling development, direct CNC robotics programming, game engines & video games, blockchains & cryptocurrency, on-chain programming (ETH & Chia & Solana, Lisp, Solidity, JVM), lots of other stuff.Masters Computer Science, Masters Artificial Intelligence, Masters Business Administration, Masters Project Management, Masters Entrepreneurship (Marketing & Communications) and a few other qualifications in electronics, contract & intellectual property law, accounting, marketing, project management and HR.
"The 5000 lines of if else that handles the menu state is a striking witness to this insanity."
I can say, quite confidently, that was probably some junior developer who built the shell. It is always some junior developer that builds the shell. And it was a designer/director that didn't know what they wanted until just prior to putting the gold master in an envelope to send to the pressing house. Also the shell is completely throw away code that will never, ever be used again in any other game.
"Each time by a different set of developers that somehow had to make sense of this mess. The code still contains many of the remains of what came before. There was never any time to clean it up."
Exec Producer at publisher: "Hi, here's $25,000, can you port Wipeout from this platform to that platform? We'll give you another $10,000 if can do it by this date, and another $25,000 three years later if the port sells so many bajillion copies.
Desperate Studio Producer: "Absolutely can do that, let me find two cheap programmers to take care of that. Hey guys can you spend the next two months crunching like crazy with unpaid overtime to help me keep my boss happy and get that promotion? There will be a significant reward (a two pizza pizza party) if you can hit this release date."
The two developers then spend an inordinate amount of time trying to get the damn project to build and find some obscure missing header files, layers on more hacks and ships in the 11th hour.
And the rest is history. And nobody ever looks at the code ever again. Until the next poor programmer has to port it to a new platform.
At times, I need to correct the LLM on some usually obscure detail. It got the memory layout of the video screen on the BBC Micro completely mixed up with the ZX Spectrum, and I had to correct it about five times before it got it, and then it stuck for the rest of the conversation.
I've been on some wild goose chases, where I have fooled myself into thinking a particular approach would work and ChatGPT has been enthusiastically right there cheering me on.
It's like my dog going on an adventure with me, the dog doesn't care about where we're going or what we're doing, it's just excited to be part of the journey.
And in other cases, ChatGPT has been exceptionally useful in pointing out some blindingly obvious mistakes. It is like having a very knowledgeable, but exceptionally junior developer at your elbow.
If you ask the right questions, and don't except one shot questions to provide perfect answers, it works well for the most part.
The problem is not the eye-tracking, it is reasonably easy to build robust systems that can do that easily enough, even with custom hardware under all sorts of lighting conditions. The hard part is the UX if you are trying to build something that isn't hampered by current UI paradigms.
Rapid typing and menus of custom actions with just eye movement, though fatiguing, shouldn't be hard to solve, and then render the output however you want; text, text to speech, commands issued to an machine, etc. Making a usable user interface to do anything else, that's where the rubber hits the road.
@pg, which software is your friend using? If it is anything like I've looked in to in the past, it's over-priced accessibility crap with a UI straight out of the 1990s.
But yes, a fan that can pull some semi-decent airflow, I run the box fans on lowest setting possible, I could probably run 12v 120mm or 200mm computer fans and get the same effect, and pull that air through a charcoal filter and box filter, it cuts out all dust, allergens and honestly, just about all the odour. The cats have to drop an absolute stinker to overcome the filters. If you hit Amazon, you will find a lot of euphemistic phrases on pages for ducted fans, activated filters, and so forth, for "filtering for your tomato plants that you grow indoors." That's the kind of equipment you can research. The odour from smelly, indoor "tomato plants" are not even in the same league for what my cats produce on a daily basis.
Edit: Wait, I'm replying to original author who built the ducted fan version. You already know about the euphemistic language on Amazon as you have no doubt DYOR (done-your-own-research). Apologies.
Edit part-deux: The activated filters I picked up come in a big sheet, and then I cut them down to size to fit the back of the MERV. I simply tape them on with gaffer tape and they hold until I am ready to change them out, a single sheet of filter lasts well over a year before it loses odour control. I experimented with layers of activated filter, but, anecdotally, it didn't seem to make much difference. I think the thick MERV filter slows down the air flow enough that the odour causing particles linger around the activated filter for a longer period of time, so they have more chance to bond.
P.S. It's joke. I adamantly refuse to work on anything adtech related. When I stated "for a more exciting game" I clearly didn't indicate who it would be exciting for.
I am working on a dedicated GPT AI Dungeon Master. Results have been promising so far. Though it has a ways to go before it is even remotely playable outside of "yeah, it'll break if you do that, let me load up the jupyter notebook that can handle that situation."
https://github.com/justinlloyd/retro-chores
A physical chores list with a digital component. Unfortunately it has languished for a year due to circumstances of life (family health issues). Now that things are settling down I can return my attention to it.
And I found a functional 4K 55" TV on the street last night that was being disposed of, so I'm trying to decide what to do with that (apart from watching TV on it). I am thinking another cat toy, since the cats trashed their last one.
If I had the time I'd like to play with an MoE of Llama2, as a compare and contrast, but that ain't gonna happen anytime soon.
Currently I have four small racks:
Rack #1 & Rack #2 dual side-by-side (custom built)
Rack #1
NAS x1 4U
NAS x2 4U
Patch panel 1U
Rack #2
PDU 1U
UPS 4U
UDM Pro 2U
24 Port switch 1U
Rackmount cable modem 1U
Rack #3 (it's an arcade cabinet)
Workstation 4U
Rackmount Mac Minis (Intel & ARM) 2U
UPS 4U
Rack #4 (custom built)
Supermicro 4U server (330TB) that doubles as the VR computer
Supermicro 4U storage box (700TB)
PDU 1U
UPS 2U
I like tinkering, but I don't rely on my racks for anything other than compute and storage. Technically I have a partial rack in a data center that I have never physically seen, where I self-host all the usual services, but as I only rent that rack, I don't consider it "mine." Tinkering with a homelab is a useful IT skill to have, even if you don't work directly in an IT only area, but you shouldn't burden yourself with an overly complicated setup. Keep life simple (and organized).I spent two or so months optimizing the crap out of a majestic monolith and went from under 2K RPS when the PM thought, and the team repeatedly reported, that everything had been squeezed as much as it could, then changing the hardware, which got us to less than 3200 RPS, then to 4K RPS after just a few days of tinkering, to 10K RPS with a bit more effort, to 40K RPS a week or so later. "Oh that's, enough, we don't need to go further." I then changed "quite a bit of stuff" which then jumped us to 2M+ RPS, and then a month later, a consistent 40M+ RPS with low latency on a single box and there is still some juice left in the box should we want to go a little harder.
Right now we're not even touching 5% of the capacity of what we can pull from, it was that much of a change, simply by changing how we think about the problems. Moving from the old server to the new server let us jump from around 1800 RPS to a hair over 3000 RPS. Adding more hardware didn't fix our underlying problems. Adding more complexity was just punting the problem down the road. But changing how to think about the problem? _That_ changed the problem. And changed our answer to the problem.
Databases:
PostgreSQL, mySQL, MongoDB, DynamoDB, SQL Server, SQLite.
Preference: SQL Server for big stuff, SQLite for small stuff or prototyping.
Editors:
Notepad++ (Linux), TextEdit (macOS), Sublime (macOS, Windows, Linux), Nano, Vi, Vim
Preference: Sublime followed by vi/vim if stuck in a shell.
File Finders:
PathFinder (macOS), Directory Opus, Finder, Windows Explorer (10 & 11), and a few different ones on Linux.
Preference: Directory Opus on Windows, PathFinder on Mac
Desktop Operating Systems:
Windows 10 Pro, Windows 11 Pro, latest macOS, Ubuntu, CentOS, FreeBSD.
Preference: Windows 10 Pro, followed by macOS, and Linux a distant 3rd.
Desktop user interfaces:
Windows 10 Pro, Windows 11 Pro, latest macOS, KDE, GNOME, couple of others in Linux.
Preference: Windows 10 Pro, followed by macOS, and Linux a distant 3rd.
Calculators:
Speedcrunch, OpalCalc, SoulVer, Windows Calculator, bc.
Preference: SoulVer, OpalCalc, Speedcrunch.
Honorable mention: RealCalc on mobile.
One-to-one messaging:
Telegram, WhatsApp, iMessage, SMS, Google Messages
Preferemce: Telegram
Group or work messaging:
Slack, Discord, Teams
Preference: Teams, then Slack.
Version Control:
Mercurial, SVN, CVS, Git, Perforce, AlienBrain (defunct now)
Preference: Perforce followed by AlienBrain followed by Mercucrial
DVCS repo websites:
Gitlab, self-hosted gitlab, Perforce self-hosted, Perforce hosted, github
Preference: Perforce self-hosted, followed by github.
VM hosts:
VMWare Workstation, VMWare Fusion, VirtualBox, ProxMox, VMWare ESXi
Preference: VMWare Workstation followed by ESXi.
Chrome, Firefox, Edge, Safari, Brave.
Preference: Firefox & Firefox mobile, Chrome
Search Engines:
Kagi, Google, DuckDuckGo, Bing, a few others.
Preference: Kagi
PDF Readers:
Chrome, Firefox, Adobe, Foxit, PDF Reader Pro, Edge
Preference: Edge
Languages (only those I've used in the past 2 years):
C, C++, C#, ARM Assembly, Rust, Python, Ruby, Typescript, JavaScript, VisualBASIC.
Preference: Typescript, Ruby, C#, Python (and I never thought I'd ever put a "scripting" language before my beloved C/C++/C# languages)
Coffee:
Starbucks, Trader Joe's, Illy, Groundworks
Preference: Groundworks, with Illy in a pinch.
Shells:
fish, zsh, bash, csh, few others
Preference: Fish and fish in Bash compatibility mode.
Code Editors (just those in the past 2 years):
Jetbrains (pycharm, rubymine, intellij, dataspell, Rider, etc, etc), VSCode (Linux, macOS, Windows), Visual Studio 2017 & 2019 & 2022, XCode
Preference: Visual Studio 2022 with latest intellicode disabled, followed by Jetbrains
Clouds:
AWS, Azure, GCP
Preference: AWS
Now watch all the Linux lovers/Windows haters down vote personal preferences.