Now we're past the extra-long weekend, getting down to a fun little side project with Git. More updates tomorrow.
#openstandup #buildinpublic
Breakthrough! Addressed most of the bugs and got all the end-to-end tests passing...most of the time. Just a little flaky error handling to deal with.
#openstandup #buildinpublic
Bit of a bug whack-a-mole yesterday with concurrent Git interactions. Feels like I'm close, but imagine I'll uncover a few more shortly 😅
#openstandup #buildinpublic
Getting down to business with handling concurrently running tasks. Yesterday I enhanced some tests to catch duplicated work. Now that's failing reliably, I get to fix it with some locking!
#openstandup #buildinpublic
After a few dead ends, tangents and experiments, I've got the worker model in a decent shape. It's making me realize I need a better way of configuring the list of source repos.
Methinks v0.4 will include some breaking changes.
#buildinpublic #openstandup
Discovered some concurrency issues with the worker model. Possibly some bad logic in determining the work that actually needed doing, and definitely a problem with handling git interactions.
Today shall be a testing and debugging day!
#buildinpublic #openstandup
Tested the worker loop against my new mock cloud tool and made some tweaks to select the right branch and poll more frequently in dev mode.
Started setting up monitoring for intent changes and need to do some deep thinking on error handling.
#buildinpublic #openstandup
On Saturday, I put together a lightweight git repo poller and a simple worker loop. Today I'll be expanding the config for multiple repos and maybe webhooks.
Distributed CI/CD, here we come!
#buildinpublic #openstandup
Screenshot of a terminal running the Ocuroot REPL. A function call has been made to `files_in_go_build("./cmd/ocuroot")` resulting in output of a list of files.
Continuing the dependency tracking work, I had some fun yesterday putting together a function using Go's tooling to get a list of source files in a build.
These can be recorded to Ocuroot's state each build to match against incoming commits.
#buildinpublic #openstandup
A big goal for Ocuroot has been to be monorepo friendly. This has been blocked by the challenge of producing a list of file dependencies for builds. It's either tedious manual work or a script that can be quick, but adds up in a large repo.
I've had a brainwave...
#buildinpublic #openstandup
Spent most of the day working on Friday's blog post, but treated myself to some CLI work in the afternoon. Polished my REPL a little with bubbletea from @charm.sh. Always a delight using these libraries and I discover something new every time.
#openstandup #buildinpublic
I spent yesterday doing some research on CI queue management for a PoC. Turns out that simple changes to pipeline structure can make a big difference to your developer experience.
Might blog post about it later.
#buildinpublic #openstandup
Quick demo of a tool I've been working on to simulate cloud deployments with real-time visual updates.
Follow along, and I'll be sharing hosted and open source versions soonish.
#openstandup #buildinpublic
A set of cloud resources with connections. Services are shown having dependencies on object storage and databases.
Updated the mock cloud UI to show dependencies as a graph. Line overlaps will need addressing, but for now highlighting will help clarify what's what.
Also started the API so you can create accounts. Next up will be managing resources.
#openstandup #buildinpublic
A simple UI showing a set of cloud resources in a staging and production environment. There are a mix of databases, services and object stores.
Ocuroot demos have tended to be a little hard to follow, with several endpoints and UIs to jump between.
So I'm working on a mock cloud interface to show resources being created/updated across multiple "accounts". Goal is to have an API and update the UI in realtime.
#openstandup #buildinpublic
In the v0.3.14 release post for @ocuroot.com, I mentioned that CI integration isn't as simple as it could be - so that's been my focus since.
Ocuroot can now perform work across multiple repos and commits in a single run, meaning less setup and faster time to stability.
#openstandup #buildinpublic
Spent more time than I intended to on a blog post yesterday, but will focus on the work cascade again today.
I'm realizing that the desired behavior for a release is to perform all the work created by the release, but not to pick up unrelated changes.
#openstandup #buildinpublic
Step one of the integration project is nearly there. Now you can execute work across multiple commits in one shot using worktrees.
Got some error handling to do, but almost ready to move onto cross-repo execution.
#openstandup #buildinpublic
Busy half-week since the last standup, including a conference and a public release. Followed that up with a run of quick PRs for small improvements.
Today I'll be working on making it easier to integrate @ocuroot.com with your existing CI tools.
#openstandup #buildinpublic
Short and sweet update today! Added a little detail on the config being loaded to help with debugging.
At a conference today, but keep an eye out for a new release tomorrow!
github.com/ocuroot/ocur...
#openstandup #buildinpublic
Cleaned up those annoying UI issues from yesterday and cut v0.3.13. See github.com/ocuroot/ocur...
I don't want to stay on 13 too long (superstitious), so will make some more tweaks today to cut a new version ready to announce later this week.
#openstandup #buildinpublic
Trying something new, a video open standup! Added a couple of new features to clear up some confusion in the quickstart, a dryrun flag and comprehensive mode.
Still has a few improvements needed, that I'll work on today.
#openstandup #buildinpublic
Made some progress on supporting dry-runs, along with cutting a new release and writing up this week's blog post.
Today I'm going onsite for a PoC, wish me luck!
#openstandup #buildinpublic
Yesterday, I updated the state/intent storage backend to create git branches automatically if needed.
Today, I'm working on this:
github.com/ocuroot/ocur...
...why I didn't think of posting links to issues in these updates before is beyond me.
#openstandup #buildinpublic
Finished up the intent simplification and it does make the flow a lot easier, less editing after copy/pasting refs!
Today I'll be mopping up a few remaining improvements ahead of a client install later this week.
#buildinpublic #openstandup
Screenshot of the Ocuroot CLI showing indented grouping for a repo and config file.
Big UX improvements to the @ocuroot.com CLI over the weekend. Work is now grouped by repo and config file so you know exactly what work was done. Also fixed an issue with deploys and teardowns appearing the same.
Today I'll be simplifying the intent model.
#openstandup #buildinpublic
Got everything working with the state simplification I was working on the last few days, and also got time to write a blog post about rebuilding the @ocuroot.com site.
Just had a great meeting getting feedback on the quickstart. Will put some of that in practice today!
#openstandup #buildinpublic
No cases, so let out of jury duty early. Back to work!
Made some SDK improvements from the backlog. Still need to finish up a simplification of job storage and tracking, will continue with that today.
#openstandup #buildinpublic
Yesterday was a friction-removal day, and now you can install the Ocuroot client with Homebrew!
www.ocuroot.com/docs/install...
Got some inspiration at the latter half of next week, so today I'll be working on some SDK improvements.
#openstandup #buildinpublic
Expanded the quickstart README to include a bit more explanation, did a test-run with a friend and fixed a couple issues.
Preview for my #buildinpublic friends github.com/ocuroot/quic...
This will need integrating in the docs site, other than that, today I'll be working on copy.
#openstandup