> (But in case he’s listening, please add Rusts discriminated enums, it really hurts to move from a language with them to a language without them.)
I'm not a programming language expert, but my understanding is that discrimitated enums is jut a way to support sum types. Dart now has the sealed class modifier [1], that fills this role.
I can see the appeal, but if you're working in Python, something doesn't sit right with me when having to write out variable names as strings. E.g., if I want to refactor the code, my LSP or parser won't pick up those references.
> The SQL table name mydf is interpreted as the local Python variable mydf [...] Not only is this process painless, it is highly efficient.
It might be painless and convenient at first, but I feel like this could get you in trouble down the line. Is there a way to avoid this?
It's difficult to tell if IF alone had a change because I also switched to a very low carbohydrate diet at pretty-much the same time. The two combined had a massively positive effect on my diabetes.
My glucose level is much more stable, and A1C is lower. I also use significantly less insulin than a lot of people with type 1 diabetes.
My reason for doing both was to reduce insulin levels as much as possible.
This looks really nice. I was reading about this and realized it had similar ideas to this [1] Phd thesis from Jon Gjengset. I checked his twitter [2] and it was based on his work indeed.
Depending on the cost per database, a service like this could allow one to build SAAS apps with Single Tenant model [1] in a really simple and elegant way.
I always liked this model since it gives the best isolation and not having to code with multi-tenant in mind really simplifies development and security. But maintaing an infra for this is hard and costly.
Dan Luu impact at Wave.com is noticable already. Since he joined in March, Wave is pushing one great blog post per week (in contrast to 1 in 2021, 0 in 2020 and 3 in 2019).
I tried creating this culture of blogging but failed, would love to hear strategies that worked to achieve this.
`OrioleDB implements default 64-bit transaction identifiers, thus eliminating the well-known and painful wraparound problem`
I thought that PG's 32-bit transaction identifier and wraparound issue was due to the current MVCC implementation that keeps old versions of rows in page tables, so there is the need to vacuum to clean up the dead rows. So my assumption was that using another approach for MVCC, like the UNDO log, this problem wouldn't exist (since page tables would only have the latest version).
PostgreSQL 32-bit transaction identifiers are cycled in a ring. This is why PostgreSQL needs to "freeze" old transaction identifiers before they could start being identified as future. This routine is "vacuum freeze" and it have to scan and re-write pages, which could have no dead rows.
I once started building as a side project something similar but focused on querying cloud resources (like S3 buckets, ec2s, etc... discovering the biggest file from a bucket was trivial with this). I abandoned the project but someone else built a startup on the same concept - even the name was the same: cloudquery.
I built it using the multicorn [1] postgres extension and it is deligthful of how easy it to get something simple running.
I migrated a couple of projects from Java, TS and Go to Rust and honesly, I couldn't be happier.