# Calvin Liang > Software engineer and UBC CS grad based in Vancouver, BC. Builds whimsical tools, libraries, and playful web experiments at calvin.sh. ## Site - [Home](https://calvin.sh/): personal site, project gallery, recent blog posts - [Blog](https://calvin.sh/blog/): occasional long-form writing - [Tools](https://calvin.sh/tools/): in-browser utilities - [RSS feed](https://calvin.sh/rss.xml) ## Blog posts - [The Fed says this is a cube of $1M. They're off by half a million.](https://calvin.sh/blog/fed-lie/): original photographic investigation into the dollar-cube display at the Federal Reserve Bank of Chicago, with measurements and math. - [The US Census Bureau's first LGBT data is buried in a pandemic survey](https://calvin.sh/blog/hps-lgbt/): charts of LGBT identity by birth cohort, income, state, and metro area from pooled Household Pulse Survey data. ## Standalone project pages - [CalcGPT.io](https://calvin.sh/projects/calcgpt/): a satirical calculator powered by GPT, with Temperature and Top P sliders. - [Orbital Flush](https://calvin.sh/projects/orbital-flush/): a toilet that flushes whenever an astronaut on the ISS flushes, mounted on a platform that tracks the ISS in orbit. - [DEF CON 32 Badge Flashy ROM](https://calvin.sh/projects/dc-32-badge-flashy/): a GameBoy ROM that runs on the DEF CON 32 badge and flashes the LEDs. - [Unscannable QR Code](https://calvin.sh/projects/unscannable-qr-code/): a 3D-printed QR code you can see but not scan, shown at the QR Show at Recurse Center. ## In-browser tools - [QR generator](https://calvin.sh/tools/qr/): make QR codes with full control and a visual breakdown of what's inside. - [QR inspector](https://calvin.sh/tools/qr-inspector/): scan a QR code and see every byte of its payload. - [Dot Counter](https://calvin.sh/tools/dot-counter/): click to count objects in an image with colored markers and a running total. - [Magnified Inset Maker](https://calvin.sh/tools/magnified-inset-maker/): add a magnifying glass overlay or zoom callout to an image with movable crop and detail boxes. - [Timer](https://calvin.sh/tools/timer/): a simple timer for keeping talks on track. - [Snippet](https://calvin.sh/tools/snippet/): share and run JavaScript snippets in the browser. - [Wikipedia Word Counter](https://calvin.sh/tools/wikipedia-word-counter/): count words in any Wikipedia article. - [Checklist](https://calvin.sh/tools/checklist/): a simple reusable checklist tool. ## Notable open-source libraries - [AutoLinkText](https://github.com/Calvin-LL/AutoLinkText): make links, emails, and phone numbers clickable in text in Jetpack Compose and Kotlin Compose Multiplatform. - [Reorderable](https://github.com/Calvin-LL/Reorderable): drag-and-drop reordering for lists in Jetpack Compose and Kotlin Compose Multiplatform. - [view-transition-name](https://www.npmjs.com/package/view-transition-name): generate stable view-transition-name CSS values for the View Transitions API. - [webpack image loaders](https://github.com/Calvin-LL?tab=repositories&q=webpack): a suite of 6 Webpack loaders for thumbnails, dominant colors, and responsive image generation. - [rpi-mfrc522-nodejs](https://www.npmjs.com/package/rpi-mfrc522-nodejs): C++ driver for MFRC522 RFID readers exposed to the Node.js runtime. ## Profiles - [GitHub: Calvin-LL](https://github.com/Calvin-LL/) - [LinkedIn](https://www.linkedin.com/in/calvin-liang-5903799b/) - [X / Twitter: @Calvin__Liang](https://x.com/Calvin__Liang) - [Instagram: @calvin__liang](https://www.instagram.com/calvin__liang/)