~ / cmdr2

projects: freebird, easy diffusion

hacks: carbon editor, torchruntime, findstarlink

  # filter by: [ posts | worklogs ]
  • #freebird
  • #vr
  • #api

// Cross-posted from Freebird’s blog. Freebird v2.2.2 released. It now exposes the states/values of the VR buttons (as custom properties) in FB-Controller-Right and FB-Controller-Left (see: XR Tracking Objects). These values will be updated every frame, when VR is running. You can use these properties to drive shapekeys, or use them in other scripts: To drive a shapekey, please right-click a property, e.g. ’trigger’, and click Copy as New Driver. Then right-click on your shapekey value, and select Paste Driver. To use in a script, use the custom property directly. E.g. bpy.data.objects["FB-Controller-Right"]["trigger"]

  • #freebird

// Cross-posted from Freebird’s blog. Freebird v2.2.0 released - Freebird now exposes the VR headset and controller positions via three empty objects in the scene: FB-Headset, FB-Controller-Right, and FB-Controller-Left. These three empties live-track the position of the headset and the VR controllers. For e.g. you can attach objects to these empties to animate objects or bones.

  • #tkinter
  • #ui

Spent some time playing with Tkinter, and building a real desktop app with it. It’s pretty specific to my needs, but is open to customization by others. Building UIs with Tkinter was interesting (not frustrating), and it feels almost-there-but-not-quite-there. I still think that HTML/CSS/JS is the best API out there for UI (the good parts), but Tkinter’s mental model and API is quite nice too. Fairly intuitive.

  • #findstarlink
  • #performance
  • #ops

The migration of findstarlink.com to Cloudflare Pages hit an issue (that I can’t describe here), but I had to roll it back for “reasons”. Would’ve been a nice cost-saver, but for now it’ll stay on S3. But the overall infrastructure of findstarlink (various components) is now quite streamlined, and pleasant to develop-for again. I also hit an issue when trying to optimize the loading time of findstarlink.com’s homepage on slow internet connections. On such connections, it takes a long time to download and parse cities.js (600 KB uncompressed, 300 KB compressed). And the UI thread is blocked while that’s happening (often for 10+ seconds).

  • #cities
  • #findstarlink

Released cities-db, a database of ~32,000 cities (cities in the world with population > 15,000), compressed into a format suitable for auto-complete on web pages (~283 KB) or mobile apps. The data is fetched from GeoNames.org, and processed into a custom format. Why? This library was created for findstarlink.com. It would be pretty expensive to use the Google Maps API for auto-complete, or host a dedicated API endpoint. And I don’t see why we need a remote service for this.

  • #satellites
  • #findstarlink
  • #sat-timings

sat-timings library released Released sat-timings, a Javascript library for predicting the optimal time to see a given list of satellites in the night sky. This library powers findstarlink.com and has served millions of satellite visibility predictions over the past 6 years. It’s written entirely in Javascript and is pretty fast.

  • #infrastructure
  • #ci
  • #tools

The last few weeks were spent on updating my internal tooling and infrastructure. This fixed general decay, used newer/better ways of doing things, and fixed some of the parts that had broken down (preventing me from releasing updates). I’ve open-sourced most of the things (tools, as well as most of FindStarlink’s code): GitHub Actions Wizard FindStarlink’s repositories tkinter-videoplayer Upgrading CI across projects Using GitHub Actions Wizard, I upgraded and standardized CI across all my projects. Now every repo has automated deploy workflows on git push, replacing manual deployment scripts and environment setup. This reduces the cognitive pressure for me when I return to these projects, since I don’t update these projects often.

  • #github
  • #actions-wizard
  • #ci
  • #cd

GitHub Actions Wizard released! Wrote GitHub Actions Wizard to make it easier to setup CI on my projects (especially new ones). More details from the project page: """ GitHub Actions Wizard is a simple tool for generating GitHub Actions workflows for common deployment tasks. Built primarily for my needs, but you’re free to use it, if you find it useful. It goes beyond simple workflow generation by automatically setting up necessary permissions (such as creating AWS IAM Roles and Policies for S3 or Lambda deployments). The intent is to quickly generate the overall workflow boilerplate, and then customize by editing the generated file.

  • #tkinter
  • #video

Built a simple video player widget for Tkinter - https://github.com/cmdr2/tkinter-video I needed a video player for a Tkinter-based project, and was surprised that the current alternatives either didn’t install properly (outdated dependencies), or required av (host-level compilation), or required me to build my own controls. I just wanted something plug-and-play.

  • #freebird
  • #puppetry

// Cross-posted from Freebird’s blog. Puppetry v1.2.19 released! It allows you to move the overall armature rig via an external animation, while still controlling the head and hands with the VR controllers. Previously, the head and hands would stay at a fixed place in the world, and not move along with the rig. For e.g. this is useful if you want to move the character down a corridor (using a script or animation timeline), while using Puppetry’s motion capture to animate the head and hands.