3,848 karma · joined October 2, 2013
eximius at lcspace.net
be60cfac56374a74e34d7f09f96cf841191a57c365112a49e3e376b309a51144
I actually see this as a negative and we've been looking at Uber/Fx for more support. DI frameworks don't do anything you can't do without it, but it takes significantly more experience and technological/organizational maturity that I find the average developer doesn't have to do it without framework support.
In the current zeitgeist of being towards the "micro" scale of the spectrum, that "average developer" support is necessary. If you have more modular monoliths or many high quality examples, maybe its better.
But introducing a new language is a scary thing.
I hear you, but, again, it's a spectrum and you don't need your own DC or colocation or homelab to "self host".
This is clearly in between where you are hosting the domain and services, albeit the compute is leased.
Without trait bounds there isn't much you can do with it anyway besides generic code like this. I guess the question is 'does Rust emit' or elide an unused generic function with unused interior types?
Postgres is very very good. The vast majority of use cases work with it with very minor effort. People would, in general, be better off investing in thoroughly understanding a general tool like postgres (or similar dbs, just pick one to learn, but there are reasons why you would pick postgres over, say, oracle).
There are still reasons to use more specialized DBs. But the push for postgres is because very often the people reaching for those specialized DBs do so in error.
20M rows is practically an in-memory dataset, for example.
I had to lay them off (along with myself shortly afterward) in less than a year because our founder let me hire them when we didn't have enough money.
They landed on their feet but it still hurt.
I did a few other things wrong before that. I had a lot to learn. Things I've regretted and learned from.
I'd go even stronger and, for the US, pass regulations that all emissions of all kinds must be captured or the company will be fined double the cost of environmental remediation as executed by contractors employed by the government (scaling from 1% of the fine to 100% of the fine over X years).
It is a somewhat strange compile time jumble of libraries but a compile time overhead isn't so bad.
Make the company pay for externalities. If it bankrupts them, they deserve it.
I wish we would stop making our lives worse for each other.
For our particular use case, I think we're actually not using notify events. We just insert rows into the outbox table and the poller re-emits as kafka events and deletes successfully emitted events from the table.
e.g.,
1. Application starts transaction 2. Application updates DB state (business details) 3. Application enqueues job in Redis 4. Redis jobworkers pick up job 5. Redis jobworkers error out 6. Application commits transaction
This motivates placing the jobworker state in the same transaction whereas non-DB based job queues have issues like this.
We use this to ensure Kafka events are only emitted when a process succeeds, this is very similar.