~ / cmdr2

projects: freebird, easy diffusion

hacks: carbon editor, torchruntime, findstarlink

  # filter by: [ posts | worklogs ]
  • #findstarlink

Following up on yesterday’s post, there’s now full automation for the conversion of provisional NORAD IDs to the official one (once they’re available in Celestrak). This automation is still waiting to be deployed, because it needs to be tested with the official NORAD IDs for yesterday’s Starlink launch (G6-77), once they’re assigned next week. This automation has been now been deployed. So now, the only processes still done manually are (a) selecting a new leader for a train, if the current leader drifts away from the train, and (b) removing old trains that have spread out completely.

  • #findstarlink

Spent two days automating some of the processes around findstarlink.com, and updating some of the code that had started bit-rotting. Most of FindStarlink’s operations run as individual AWS Lambda functions, that are triggered periodically by CloudWatch Events (and Schedules). But a few processes are still done manually, mainly due to a mix of laziness and also being a bit tricky to automate. I also needed to migrate the existing automations to a newer NodeJS runtime in AWS Lambda, since the current runtime was nearing end-of-life support.

  • #car
  • #simulation
  • #game
  • #drs
  • #featured

Started building a car simulator, focused on F1-like car characteristics. It’s reasonably detailed in terms of simulation, but is ultimately meant for games/machine learning, so it approximates some of the behavior. It isn’t physically accurate. The first piece is the car simulator itself - https://github.com/cmdr2/car-sim. This module is a numbers-only simulation, i.e. it doesn’t handle visualization, interaction or anything that’s not related to the simulation of vehicle components. I’ve started from the point of contact between the tire and the road, and will work backwards from that. I’ve got a basic tire friction model working, which computes the “effective friction” against the track surface, by taking into account: tire material, tread amount, road type, road condition, tire width, tire hardness, tire pressure, tire temperature, tire wear and tire camber.

  • #freebird

tl;dr - Today I shipped the ability to see the desktop screen in VR (while using Freebird). And fixed a few user-reported bugs in Freebird. Performance The performance is still a bit laggy. The actual screencapture code now runs in a separate process, and copies data over a SharedMemory buffer (which works pretty well for sharing data between two separate processes). That helps avoid Python’s GIL while performing numpy operations on large arrays.

  • #freebird

Built an initial prototype of showing the desktop window screencapture inside VR (while in Freebird), using the mss library. Freebird will have to install it using subprocess.run([sys.executable, '-m', 'pip', 'install', 'mss']). It works, but is currently a bit laggy. The capture and processing happens on a thread, and a timer modal calls the actual GPU texture assignment. The GPU texture assignment takes about 2 ms, but the XR view is still juddering (way more than it would with an extra 2ms of latency). Still need to investigate and smoothen the performance.

  • #blog-engine
  • #dropbox
  • #aws
  • #lambda
  • #s3
  • #featured

Finished the blog-agent project for now. The blog is now live, and the code is up at the GitHub project. In summary, it lets me write my notes as text files in Dropbox, and it automatically formats and publishes it as a blog on S3. It runs by triggering an AWS Lambda function via a Dropbox webhook. It’s built purely for a workflow that I’m very used to (writing notes in text files, one file per month, posts separated by two hyphens padded with line breaks). But making this a public project will probably force me to keep things well-documented (so that I can fix things easily, if they break in the future).

  • #blog-engine
  • #dropbox
  • #aws
  • #lambda
  • #s3

Updated the flat_blog generator, and modified the blog-agent to use Dropbox Refresh tokens to get new auth tokens. Also made it auto-generate an index.html, and added styling for the list of posts. The idea is to make it look a bit more like a twitter feed, and less like a list of links. Still not fully there yet.

  • #blog-engine
  • #dropbox
  • #aws
  • #lambda
  • #s3
  • #featured

Published the first version of the Dropbox-based blog that gets mirrored on S3. The GitHub project is live, and still has quite a few bugs and missing pieces. How does it work? It takes the original posts from Dropbox and automatically publishes them in other places (after formatting them). As the author of those notes, the only place I’m concerned about is my Dropbox folder with my text files. But the agent then goes and mirrors the writing in different places automatically, and I never need to think about that process at all.

  • #blog-engine
  • #dropbox
  • #aws
  • #lambda
  • #s3
  • #featured

tl;dr - Today, I fixed a few bugs in Easy Diffusion and Freebird/VR Puppetry. And started building a blog engine that automatically takes my text file blog-posts from Dropbox and publishes them as a static blog on S3. I’ve already been writing a private blog for 10+ years as text files on Dropbox, and like it that way. Fixed a few bugs reported in Easy Diffusion 3.5’s beta. And investigated an issue in VR Puppetry and fixed a separate bug in bl_xr for VR Puppetry and Freebird. And did a bit of support work for Easy Diffusion and Freebird/VR Puppetry.

  • #stable-diffusion
  • #c++
  • #cuda
  • #easydiffusion
  • #lab
  • #performance
  • #featured

tl;dr - Today, I worked on using stable-diffusion.cpp in a simple C++ program. As a linked library, as well as compiling sd.cpp from scratch (with and without CUDA). The intent was to get a tiny and fast-starting executable UI for Stable Diffusion working. Also, ChatGPT is very helpful! Part 1: Using sd.cpp as a library First, I tried calling the stable-diffusion.cpp library from a simple C++ program (which just loads the model and renders an image). Via dynamic linking. That worked, and its performance was the same as the example sd.exe CLI, and it detected and used the GPU correctly.