upvote
There's actual code in this repo: https://github.com/strongdm/cxdb
reply
I've looked at their code for a few minutes in a few files, and while I don't know what they're trying to do well enough to say for sure anything is definitely a bug, I've already spotted several things that seem likely to be, and several others that I'd class as anti-patterns in rust. Don't get me wrong, as an experiment this is really cool, but I do not think they've succeeded in getting the "dark factory" concept to work where every other prominent attempt has fallen short.
reply
Out of interest, what anti-patterns did you see?

(I'm continuing to try to learn Rust!)

reply
To pick a few (from the server crate, because that's where I looked):

- The StoreError type is stringly typed and generally badly thought out. Depending on what they actually want to do, they should either add more variants to StoreError for the difference failure cases, replaces the strings with a sub-types (probably enums) to do the same, or write a type erased error similar to (or wrapping) the ones provided by anyhow, eyre, etc, but with a status code attached. They definitely shouldn't be checking for substrings in their own error type for control flow.

- So many calls to String::clone [0]. Several of the ones I saw were actually only necessary because the function took a parameter by reference even though it could have (and I would argue should have) taken it by value (If I had to guess, I'd say the agent first tried to do it without the clone, got an error, and implemented a local fix without considering the broader context).

- A lot of errors are just ignored with Result::unwrap_or_default or the like. Sometimes that's the right choice, but from what I can see they're allowing legitimate errors to pass silently. They also treat the values they get in the error case differently, rather than e.g. storing a Result or Option.

- Their HTTP handler has an 800 line long closure which they immediately call, apparently as a substitute for the the still unstable try_blocks feature. I would strongly recommend moving that into it's own full function instead.

- Several if which should have been match.

- Lots of calls to Result::unwrap and Option::unwrap. IMO in production code you should always at minimum use expect instead, forcing you to explain what went wrong/why the Err/None case is impossible.

It wouldn't catch all/most of these (and from what I've seen might even induce some if agents continue to pursue the most local fix rather than removing the underlying cause), but I would strongly recommend turning on most of clippy's lints if you want to learn rust.

[0] https://rust-unofficial.github.io/patterns/anti_patterns/bor...

reply
They have a Products page where they list a database and an identity system in addition to attractors: https://factory.strongdm.ai/products

For those of us working on building factories, this is pretty obvious because once you immediately need shared context across agents / sessions and an improved ID + permissions system to keep track of who is doing what.

reply
I don't know if that is crazy or a glimpse of the future (could be both).

PS: TIL about "Canadian girlfriend", thanks!

reply
I was about to say the same thing! Yet another blog post with heaps of navel gazing and zero to actually show for it.

The worst part is they got simonw to (perhaps unwittingly or social engineering) vouch and stealth market for them.

And $1000/day/engineer in token costs at current market rates? It's a bold strategy, Cotton.

But we all know what they're going for here. They want to make themselves look amazing to convince the boards of the Great Houses to acquire them. Because why else would investors invest in them and not in the Great Houses directly.

reply
The "social engineering" is that I was invited to a demo back in October and thought it was really interesting.

(Two people who's opinions I respect said "yeah you really should accept that invitation" otherwise I probably wouldn't have gone.)

I've been looking forward to being able to write more details about what they're doing ever since.

reply
Justin never invites me in when he brings the cool folks in! Dang it...
reply
I will look forward to that blog post then, hopefully it has more details than this one.

EDIT nvm just saw your other comment.

reply
I think this comment is slightly unfair :(

We’ve been working on this since July, and we shared the techniques and principles that have been working for us because we thought others might find them useful. We’ve also open-sourced the nlspec so people can build their own versions of the software factory.

We’re not selling a product or service here. This also isn’t about positioning for an acquisition: we’ve already been in a definitive agreement to be acquired since last month.

It’s completely fair to have opinions and to not like what we’re putting out, but your comment reads as snarky without adding anything to the conversation.

reply
Can you link to nlspec? It is not easy to find with a search.
reply
That's hilarious
reply