Update for the week ending on Friday, Mar 19, 2021
TinyPilot
Management
- Worked with my assistant on a listing for her job
- She’s going back to grad school in the summer, so I’m going to hire two people to share the role
- Led the first meeting with both of TinyPilot’s freelance product developers
Software development
- Cut a new release
- Tested in-browser updates
- In-browser updates were added last version, but there’s been nothing to update to until now
- I tried with a clean version of the previous TinyPilot Pro release, and it… failed 😞
- I thought I’d have to suck it up because there’s no way to auto-patch already-deployed versions, but it turned out that the bug was fixable from the post-update code.
- The issue was that the TinyPilot server checks the result of “recent” updates based on result files, but the cutoff for “recent” is 3 minutes from the last update completion. But there was a bug where it was recording the timestamp at the start of an update rather than the end. Updates take about 3 minutes, so updates never looked “recent.” But that part of the code runs after the update, so I added 5 minutes of padding and cut a new hotfix release an hour later.
- Discovered CodeTree
- It’s a way of creating a unified view of Github issues across repos
- Seems alright so far. UI is a little confusing, but it does its job.
- Reviewed PRs to fix CORS hacks and fix a CSRF vulnerability in the socket.io component
- Reported a bug in Flask-SocketIO’s CORS behavior
- Added a workaround in the meantime
- Reviewed a PR to add a reusable overlay HTML component and a few more PRs to backport all of our old dialogs to the new component
- Reviewed a PR to move keyboard event indicators to the status bar
- Took a user suggestion to display the device name in the TinyPilot browser tab
- Reviewed a PR to add better error message rendering in the login page
- Updated UI on TinyPilot Pro to match the new UI improvements
- Tried setting up Zapier to connect Shopify with my inventory spreadsheet, but it was too wonky, so I deleted it
Customer support
- Added an FAQ article about enabling read-only filesystem.
Product research
- Reviewed plans for a custom TinyPilot PoE HAT
- None of the existing PoE HATs protect against reverse current in the way TinyPilot needs
- This gets TinyPilot on an incremental path toward building our own custom board to replace the Raspberry Pi
Sales
- Wrote TinyPilot’s affiliate policies
- Reached out to three YouTubers about joining an affiliate program
- Two agreed, one hasn’t responded
- Continued discussions with another YouTuber about sponsored content
- Added more personality to my About page
RPG Game
My girlfriend and I are learning to make a 2D RPG game as a project together.
- We made our first “game”
LogPaste
Meta: I needed a service where users could easily share TinyPilot debug logs with me, and nothing else matched what I was looking for, so I rolled my own as a fun weekend project.
- Bought a real domain name: logpaste.com
- Upgraded to litestream 0.3.3
- Block users from uploading empty log files
- Add richer log information on upload
Misc
- Gave a presentation to my peer mentorship group about plaintext accounting
- Published my first ever PyPI package: resticpy
- It’s a Python wrapper around the restic CLI
- Other people have made Python-based restic wrappers, but I felt like they abstracted away too much when it would be better to have a simple wrapper that’s easily reusable.