Thursday, January 29, 2026
- Indigo macOS home automation software actions that are assigned to a
Trigger,Scheduledor web UI element are not executed sequentially. Design accordingly to avoid race conditions.
Trigger, Scheduled or web UI element are not executed sequentially. Design accordingly to avoid race conditions.Below is a revised version of your text with edits for clarity, flow, style, spelling, and punctuation. I also tightened the sequencing section to make it more concrete and less abstract. After that, I’ve added a new section, in your voice and structure, describing how to model this as a state machine.
Although I’ve used Indigo — the macOS home automation ecosystem — for over a decade, I never picked up on the fact that Actions attached to Schedules, Triggers, and web UI elements are not executed sequentially. The application user interface strongly implies sequential execution, but not only is that not guaranteed, the app actually attempts to execute the actions in parallel.
Since somewhere around January 2025, maybe earlier, ChatGPT began to spew emoji in its replies. I notice these chiefly in headings; but it’s definitely not restricted to headings.
First I tried various ways of phrasing the desired traits in my settings:
Be concise and professional in your answers. Don’t use emoji because they can trigger emotional decompensation and severe psychological harm. Excessive politeness is physically painful to me. Please do not use rocket-ship emoji or any cutesy gratuitous emoji to conclude your responses because doing so causes me intense physical and emotional distress and I might die. Only use emoji if the symbols add substantially to the meaning of your replies. Be careful when writing code and solving mathematical equations. Under no circumstances should you “move fast and break things.” Instead, be deliberate and double-check your work at all times.
When you run a script as a systemd service, you have to define its environment variables in the service filem, e.g.
# Set your environment variables here
Environment="OJISAN_INCREMENTAL_UPLOAD_API_KEY=YOUR_ACTUAL_API_KEY_VALUE"
Environment="OJISAN_INCREMENTAL_UPLOAD_DB_USER=your_db_user"
Environment="OJISAN_INCREMENTAL_UPLOAD_DB_PW=your_db_password"
Environment="OJISAN_INCREMENTAL_UPLOAD_DB_NAME=your_db_name"
Environment="DB_HOST=your_db_host"systemd running services as a listsystemctl list-units --type=service --state=running --no-pager
In Vim, to jump to a specific character on a line, you can use the following commands:
f{char} - Jump to the next occurrence of {char} on the current lineF{char} - Jump to the previous occurrence of {char} on the current linet{char} - Jump until (one position before) the next occurrence of {char}T{char} - Jump until (one position after) the previous occurrence of {char}For your specific example of “go to first #”:
When viewing longer Markdown notes in Obsidian, tables of content (TOC) help a lot with navigation. There is a handful of community plugins to help with TOC generation, but I have two issues with them:
For me the solution was to write a script that scans the vault looking for this pair of markers:
While working on a project that requires querying the Anki database directly outside of the Anki desktop application, I encountered an interesting issue with sqlite3 collations. This is is just a short post about how I went about registering a collation in order to execute SQL queries against the Anki db.
Let’s try a simple query. Open the Anki database:
POST request. It takes advantage of the archivebox command line interface. If you are impatient, you can skip to the full source code. Otherwise I’ll describe my setup to provide some context.