Haven't used DBOS but use Temporal at current job and used it at previous job as well so I have about 1.5 years under me now. I also run it at home to handle some home automation tasks that aren't super time sensitive (the latency of workflows isn't super bad, but I wouldn't use one for something that is triggered by a motion event in my house unless we're talking about a timeout to turn something off after inactivity).
I really like running a thin rest API in front of it inside your vpc or k8s cluster or whatever to help with event driven triggers so that they don't have to worry about Temporal auth and checking workflow status if there is any decision making around that. This helps keep your event as logic-free as possible.
Let me give a vague example: you have some sort of db trigger, and this trigger either acts directly or puts the event on a queue, your handler calls the thin rest api with the necessary event details, rest API can make the decision if this starts a workflow, signals an existing one, or ignores it (the pattern for this can vary based on the situation, but SignalWithStart is common for me or just dropping if the event is not worthy of starting a workflow and no workflow for that <ItemYouCareAbout> exists).
Then the parent/child workflow ability is very valuable when you need to orchestrate different self-contained behaviors for a single object's lifecycle, with cancellability when an external factor changes the trajectory of an object.
Long, vague story short, I find it very powerful and easy to work with and has really helped move lifecycle logic out of APIs where things can easily become riddled with debt and precarious to manage. I agree with you that it helps follow more best-practices instead of just throwing logic some place that seems easy but becomes a hidden trap later.
Last weekend I bought my wife a bike off marketplace. It was in good condition but was missing one of the internal cable routing grommets. I gave Claude pictures of the pill-shaped hole by itself and with my digital calipers in the long and short directions.
Gave it a short prompt and it gave me an openscad model with everything parametrized. I printed with no changes in tpu and it was nearly perfect on the first try. Claude put in a 0.3mm subtraction in the x/y dimensions and I lowered it to 0.1 and it's perfect.
Much easier shape than ancient Roman architecture but still very cool how easy it was.
Yeah, CAD has been my personal example of "oh the barrier to entry for this skill was high enough that I didn't do it and now I can be passably bad at it enough to get some simple things done"
I've had similar experiences with making simple functional parts off a 3d printer with OpenSCAD + LLMs. I'm very aware that the models are worse at it than say, generating react code, and I'm also the antithesis of a skilled pilot. It's still cool and has resulted in me starting to learn a new skill at a hobby level.
It's like this with a lot of things now. For example, Nix's learning curve used to be a huge barrier to entry. Now with LLMs, I'm using nix-darwin and home-manager for dotfiles, package management, and have individual flakes in all of my projects for cryptographically reproducible builds!
I feel like that is quite unlikely. Both the hash and bitwise comparisons read both files in both cases. In the not-equal case the hash reads the entirety of both files, so its slower than a start-to-end bitwise comparison, which exits at the first not-equal bit. In the equal case, both read the entirety of both files. Various other bitwise strategies can be faster than start-to-end, rdfind for example checks the start of the file first, then the end, then the rest of the file.
The hash being cryptographically secure is significant. In contrast, you could use (for example) md5 to non-cryptographically verify that the full process matched.
Sorry, the point I was making is that this isn't cryptography- it's the properties of a cryptographic hash (hard to spoof) that are useful. I don't think any verified build program uses the hash to encrypt data at any point. If I'm wrong on this point, that's fine, but please include a link.
Sure, "verified in a cryptographically secure manner" is technically not equivalent to "cryptographically verified" but the response "it's not cryptographic" is rather ambiguous at best given that it is, in fact, a cryptographically secure manner of verification. The key observation here being that an algorithm or process being "cryptographically secure" does not mean that it is "cryptographic" in nature (ie implements or uses cryptography).
Nix mostly does not guarantee deterministic output. It rather guarantees deterministic inputs, and then sandboxes the system to inhibit the build from accessing the outside world.
Deterministic inputs do not always imply deterministic outputs.
I mean, like any other skill that has pretty much been my experience (though I tried fusion + openscad), but there is something about being able to ask a computer all the dumb noob questions that makes that first phase easier.
Claude does well if you can provide all dimensions. It fails at guessing though. The real magic is when you can provide one dimension or photograph with a ruler in it and the AI will figure the rest out. Right now, Claude anyways, is pretty bad at guessing.
I was recently trying to get models to generate a 3D fortune cookie. Claude in three.js and Gemini in openSCAD. Neither really got the concept or could get very close at all. It's a surprisingly complex shape I guess.
Amazingly I tried the exact same thing! It also kept making meaningless corrections and was so confident that the blob it had produced was a fortune cookie that it started telling me I was wrong.
You optimize for no support when selecting print orientation (but for anything semi-cylindrical like described that would be the only sane orientation and the one slicer would choose when you smash the 'Auto Orientation' button).
Naive/uninformed question: does 3D printing produce any cleavage issues (like you’d get with a crystal) along the directions of printing, and does it ever make sense to change the orientation to help with that?
Of course it does! Inter-layer adhesion is lower than the adhesion within the same layer, so it's often recommended to orient the print in a way that maximizes strength - especially for tensile loads. Sometimes it even makes sense to split the part so that you can print each of them optimally (flat side on the print bed) and get the best strength for the dominant load directions. That applies to functional prints - for decorative stuff you use the direction that gets you the cleanest print.
But how many of those miles are spent hanging out in the left lane of a highway while other drivers, having to pass on the right, send death stares to the person in the passenger seat?
In my experience FSD doesn't like staying in the left lane. It'll use it to pass but then gets out of it as soon as it can. Often too soon as it just has to shift left again to pass the next car...
I've been running filestash in front of sftpgo (using a combination of s3 and nfs for file backends) for a couple years now and have been very happy with it.
I've been out of the windows world for about 10 years or so, but before that I was the one tasked at my company with streamlining our installers from a CI/CD perspective. I do agree that WiX is complicated and you really have to dig through the docs and do a lot of trial and error, but at the time I couldn't find any alternatives that allowed for the automation that I could achieve with WiX.
That said it was still somewhat ugly: msbuild the application, potentially copy in some dll's that weren't included in the output, use WiX's "heat" tool to generate installer files from the build output, use a xslt to transform that output to match how we installed shared libraries and such, build the installer with generated files, run automated ui tests and filesystem validations.
At the time installshield, advanced installer, and a few other tools I tried did not have the same flexibility to generate installers and automatically pick up file changes like WiX (without opening up a UI).
I'm so glad I haven't had to think about the nightmare that is MSI in over a decade.
Yeah, the build system integration was always one of the core benefits provided by the WiX Toolset. I know you're not working with MSI any longer, but in recent versions of WiX Toolset we _finally_ nailed down how to include files in the .wxs file using the new `Files` element in a way that wouldn't break other MSI features (like patching).
GoControl has a zwave thermostat that works well. Has no smarts of it's own (behaves like a pretty standard thermostat with heat, cool, and fan settings) but can be changed via home assistant so I've written a pretty extensive algorithm to meet my needs.
I only use NATS as part of my home automation architecture but I have found it very nice to use and would have been happy to use it at work if we weren't so entrenched in AWS proprietary services.
I wonder if they are hoping to become more of a platform and leverage NEX to sell edge functions like cloudflare, bunny.net, etc are doing?
Gap's soft jeans have been my go to for the past couple years. I could sleep in them they're so comfortable and are more durable than Levi which I wore for many years before.
At least where I live, most families are moving to new development areas to get more square footage per dollar. So the schools in the established part of town are seeing declining attendance and having to consolidate to prevent high administrative overhead. The new development areas are car-only hellscapes (neighborhoods on random parcels of land that have been bought up and developed with no forward thinking) with pickup lines as described in the article.
It's also fashionable for parents to choose a school across town for arbitrary reasons in order to signal that they care more about their children (in my opinion). We have tried advocating for the local options and the positives it has had for getting to know others in the community but most don't even consider.
I'm lucky to live in an older neighborhood with an elementary school, middle school, grocery store, and a few other shops. There are also safe ways for kids to cross from adjacent neighborhoods so there is still a lot of autonomy for the kids getting to and from school.
I really like running a thin rest API in front of it inside your vpc or k8s cluster or whatever to help with event driven triggers so that they don't have to worry about Temporal auth and checking workflow status if there is any decision making around that. This helps keep your event as logic-free as possible.
Let me give a vague example: you have some sort of db trigger, and this trigger either acts directly or puts the event on a queue, your handler calls the thin rest api with the necessary event details, rest API can make the decision if this starts a workflow, signals an existing one, or ignores it (the pattern for this can vary based on the situation, but SignalWithStart is common for me or just dropping if the event is not worthy of starting a workflow and no workflow for that <ItemYouCareAbout> exists).
Then the parent/child workflow ability is very valuable when you need to orchestrate different self-contained behaviors for a single object's lifecycle, with cancellability when an external factor changes the trajectory of an object.
Long, vague story short, I find it very powerful and easy to work with and has really helped move lifecycle logic out of APIs where things can easily become riddled with debt and precarious to manage. I agree with you that it helps follow more best-practices instead of just throwing logic some place that seems easy but becomes a hidden trap later.
reply