ron kiehn dot dev

Loading...

about me cs & philosophy @ uchicago. i do frontend, fullstack, and machine learning. in june, i'll be joining λ.
contact me ronki@uchicago.edu or find me on github, linkedin, and twitter.
tech stack i'm best at c, python, and javascript/typescript but i'm learning go, rust, and haskell.
about this site this site is built with astro, jquery, react, tailwind, and a little threejs. to see the previous version of this site, visit /old. or view the source code here
Gandalf Gandalf - open project
Gandalf

Realtime multiplayer AI hand-tracking whiteboard.

cmd+e cmd+e - open project
cmd+e

Natural language event creation for gcal.

Leetle Leetle - open project
Leetle

LeetCode meets Wordle - daily coding challenges. 1,000+ weekly active players.

twitter-aura2 twitter-aura2 - open project
twitter-aura2

The viral twitter color palette analyzer. Over 500,000 profiles analyzed.

gptriver gptriver - open project
gptriver

a flowing river of text generated by gpt-2. a testament to how far we've come.

DAWand Blender DAWand Blender - open project
DAWand Blender

Add-on that runs 3DL's DAWand in Blender. Awaiting approval.

cube dot c cube dot c - open project
cube dot c

The ASCII spinning cube is now in your browser with the power of WASM.

Review Consensus Review Consensus - open project
Review Consensus

Chrome extension that writes an AI-generated review consensus on Goodreads.

other projects
Chrome extension that shows course feedback on UChicago's course catalog.
Sky Alerts (WIP)
An app that sends alerts for astronomical events. Releasing later this year.
A more concrete visualizer for @bddicken's language comparison project
Generate unique Spotify recommendations. Awaiting API extension for release.
Chrome extension that shows a new quote from Meditations every day.
Sexy Screen (WIP)
An open source alternative to screen recording tools like ScreenStudio.
Haskell-Cube (WIP)
Recreating my Cube project in Haskell. Hoping to make a web version.
Takes a simple ASCII cube and adds a ton of features.
Uncommon Hacks 2024 Best Game Winner. It's like Risk but Dune, made in Pygame.
A small web scraper for PopPriceGuide to find the price of a Funko Pop.

Git Commits

what i've been up to

Loading commit data...

Tech Stack

stuff i've been using/learning

Python
experience: 4 years
notable project: DA Wand Blender
C
experience: 3 years
notable project: cube-web
JavaScript
experience: 1.5 years
notable project: nootunez
HTML/CSS
experience: 1.5 years
notable project: gptriver
Rust
experience: <1 year
Go
experience: <1 year
notable project: leetle
Haskell
experience: <1 year
notable project: haskell-cube
Tailwind
experience: 1.5 years
notable project: this website!
React
experience: 1.5 years
notable project: gandalf
React Native
experience: <1 year
notable project: sky app
Svelte
experience: 1.5 years
notable project: leetle
Astro
experience: 1.5 years
notable project: this website!
HTMX
experience: <1 year
Flask
experience: <1 year
notable project: gptriver
Node/Express
experience: 1.5 years
notable project: gandalf
Bun/Hono
experience: <1 year

Dev Setup

what more could I need

### Macbook Air M1 (2020) it's a good laptop. ### Cursor solarized light theme ### Arc pls open source it

Media

all the media I've consumed recently, updated automatically

Movies

see all
Loading movies...

Books

see all
Loading books...

Anime

see all
Loading anime...

Songs

Loading songs...

Backlog

[Letterboxd watchlist](https://letterboxd.com/ronthekiehn/watchlist/) #### Series i'm reading - Children of Time (1/3) - Way of Kings (2/5) #### Books i've bought but haven't read - Thrawn - War of the Worlds - Snow Crash - I, Robot - Hyperion

Project Logs

logs / notes / updates for projects i'm currently working on

### bonsai *may 2025* - figma commit tracker - uses bun/hono/supabase #### TODO - [x] figma auth - [x] db setup - [x] track files - [x] show recently updated files - [ ] polish track files modal - [ ] add 'see all files' button - [ ] deploy to vm - [ ] make logo - [ ] google analytics - [ ] favicon and images ### gandalf **released! [gandalf.design](https://gandalf.design)** *april 2025* - magic whiteboard - whiteboard that you control with your hand - Def best idea but not a chatgpt wrapper - Multiplayer - Save it to the cloud (or not) #### TODO #### Combine the frontend code - [x] Url for rooms - [x] Then add Ethan button - [x] Can do Ron/Alex first #### Host the backend - [x] 90% done, just need to test #### Host the frontend - [x] Etc - [x] Google analytics - [x] Favicon - [x] Meta tags - [x] Vercel probably, maybe we do gh pages #### UI - [x] Make like figma - [x] Mobile version? - [x] Change the colors to be sexier - [x] Get rid of the replace: true in app.jsx #### Top level refactoring - [ ] Potentially create a 'tool' interface to make it easier to add more tools - [x] Separate UI state and Drawing state (within zustand) - [x] Move state to REDUX/ZUSTAND - [x] Parse out "advanced features" #### Bugs - [x] Go forward / back in browser MOSTLY works but sometimes only works once (back from room, forward from launch, then back from room doesn't work) - [x] No idea if rooms persist or how long - [x] Dark mode sucks ass - [x] GEMINI SAVING TO SERVER DISK - [x] Resize handler - [x] Changing rapidly concurrent users - [x] Similarly, the quality of the drawing is not very good - [x] Mouse tracking (and presumably hand tracking) is not accurate over the vertical #### Necessary features before launch - [x] Some kind of tutorial - [x] Mobile site?? - [x] Fix all above bugs - [x] Toggles for different features more clear - [x] Shape recognition - [x] Adjust the pixel threshold and history - [x] Smoothing aggressiveness - [x] Make eraser bigger and show big cursor - [x] Change/tune hand recognition options - [x] Decide about finger tap controls, or prefer a more natural 'pen' style writing - [x] Something to trigger eraser - [x] AT LEAST add a UI reaction, maybe allow the user to toggle off - [x] I think the fist is bad for clear, too easy to accidentally activate - [x] Env variable for CORS domains - [x] Add XSS protection to the backend - [x] Hover on all buttons shows tooltip - [x] Concurrent users show full name on hover - [x] Switch join and create - [x] REMOVE or IMPROVE text boxes (removed for now) - [x] REMOVE or IMPROVE images and "improve image" (improved!) - [x] Error handling - [x] Web socket share AS DRAWING (not just when line completed) - [x] Undo/redo - [x] Cursor visibility for mouse mode - [x] On web socket #### Improvements - [ ] ZOOM IN / ZOOM OUT / DRAG - [ ] Need to figure out what hand gestures would be usable - [ ] Some kind of chat/log (user100 cleared the board) - [ ] Text boxes come back - [ ] Webcam on mode - [ ] Different line types? - [ ] Straight lines - [ ] Arrows - [ ] Maybe boxes? - [ ] Working / nicer text boxes - [ ] Match whiteboard aesthetic - [ ] Share over websocket - [ ] IMAGES - [ ] Improve image should drop into scene - [ ] Should be able to copy/paste in images - [ ] limited editing ability (resize) - [ ] Long term could imagine more - [ ] Images MUST be able to move over web socket - [ ] How tho… - [ ] Public rooms!? - [ ] GANDALF PRO (~$10 one time?) - [ ] Lock improve image feature behind this - [ ] If images end up requiring ME to store them, lock images behind this too - [ ] Whiteboards saved into the cloud - [ ] Share across devices - [ ] Requires auth, payment, persistent db, etc. - [ ] OR - pivot to games - [ ] Skribblio style - [ ] But multiple people can draw live! - [ ] Or you're forced to use your hands ### cmd+e **Released! [cmd+e](https://chromewebstore.google.com/detail/cmd-+-e-ai-event-creation/ccgokmpngmiglfceeleekbjhfeioplap?authuser=0&hl=en)** *march 2025* - add events with ai - recurring events too!! #### TODO - [ ] British mode (aka date flipped) - [ ] Specify calendars - [ ] notion support? ### leetle **Released! [leetle.app](https://leetle.app)** *jan 2025* - daily coding challenge #### TODO - [x] javascript - [ ] update all challenges to work with javascript - [ ] other languages... - [x] challeng counts / completion rates - [ ] user / auth / share across devices

Project Soup

ideas, dead projects, etc.

### AI Art Tutor - Uses new chatgpt / gemini model to review your art - Take a photo on your phone and live sync ### Zig War - Wasm zig last war - Retro style - Add 1 million things - would be good to learn zig and webgpu ### UI Lint - Cli + website for making sure your UI is good - React-scan UX ### Sky App in all honesty, this project got pretty far along, but probably needs a complete rework (social features) lol #### NOTES - Notify when celestial phenomena is happening - Here's how it's gonna work - Home Screen displays major sky events in the next year - Super moons and Lunar eclipses basically - I can scrape for this, calculate manually, or literally enter all of - Filters to allow for - Planets visible - Meteor showers - Comets - Calendar screen displays all possible events - Moon phase, etc. - Event screen will give more information about each event - These can be simple canned responses - Notifications - We want a bereal esque notification system that gives a time sensitive notification to everyone who has the app downloaded when a sky event is happening - BUT let's make sure to get local weather data so we can set fair expectations for if it's really cloudy!! - Also, allow tailoring of notification settings - Think 'I have a telescope mode' - Will give you notifications for events like planets and comets - Things that normal people won't be able to see anyway and don't want to notified about - Minimum app - Just get lunar eclipse and supermoon data - In-the-sky.org has really good data - Three types of data - Static - Super moons, eclipses, meteor showers - All the data is online and easily downloadable - Likely can be packaged with app, but might be easier to manage if it's stored on the server - Dynamic - Information about each of the static events (harvest moon, etc.) - Will be easiest to write editorial later, rather than planning in advance - Must be stored on server - Location-specific - Weather data, for determining visibility - Some events will only be able to be seen from certain locations - At the very least BROAD location will be necessary even for things like lunar eclipses - Remember - Move api keys to eas when building for production - Next steps - Filters - Make notification preferences work - Build it - Database stuff - Cleanse data to only US for now - Think about start and end times? Or calculate them in app - Solar eclipses? - Supermoon - Notify fixed local time in evening - Lunar eclipse - Notify at start (or just after) if eclipse falls not in the middle of the night in the users local time - Meteor shower - Need more data - Find the days/times they are most visible - TODO - Add meteor shower animations - Fix scrollbar - Test notification FINAL TODO - Splash screen - Update descriptions - Notification messages - Offline mode/server down - Push to App Store - Test notification times - Customize notification messages - EAS BUILD AND TEST ### Sexy Screen this project is dead because i don't want to pay for adobe... - Screen recorder - I hate that screen studio costs money - Should be able to remake in 5s with pynput and davinci keyframes - open source!! ### Spotify sample - Spotify API take your current song and find the sample, give you the Spotify link - Scrape who sampled ### Nootunez spotify DJ but good. this project is mostly complete, but spotify rejected my api extension, and I don't want to go back to it because it's vanilla js... #### TODO - Features - Generate a full playlist of new songs, and send it to spotify - Taste breakers? Not based off of your seeds!! - Maybe should blacklist playlists (tanvi) - Change where your recs come from - Top songs - Top artists - Genres - Playlists - UI - General - Think of a name - nootunez.com - Get Spotify extension - Requested ### Search book chrome extension - Chrome extension that lets me more easily get quotes in google docs - books api or scraping #### TODO - Look into books api ### AGARIO/SURVIO SMASH BROS - Like 100 player persistent smash bros - Online - Easy to sign up - With private servers for you and your friends TODO - Look in to how these games run ### Spinning dice - upgrade spinning cube into a dice TODO - try to project numbers on the cube - Decide about physics or not