Foreign key constraints, sync frequency, busy timeout, strict typing on tables, explicit types for integer primary keys, and a convention for storing dates and times are others I would want to do up front.
- Standard library http package for the API server implementation
- Standard library template/html package for generating the dynamic parts of the webpage content
- Static web content is embedded within the Go binary (https://pkg.go.dev/embed) and served through server routes
- api served from /api route, htmx webpage served from /
- no ORM, mostly using standard library database/sql package for DB transactions, maybe reaching for a query builder library for more complex queries like complex search functionality
- Local S3 compatible object store for dynamic binary data like user-uploaded images and video. Local filesystem can be fine for small scale stuff.
For my home server I have authn/authz happening at the OS/infra layer, but if you need multitenancy you can pretty easily integrate an OAuth/OpenID authn/authz middleware for login with Google or whatever.
For some of the simpler sites sqlite would have been fine, but I do need Postgres anyway for some other stuff on my server so the overall burden of standardizing on Postgres only is less than having to do tuning for two different databases. In particular sqlite has worse defaults due to backwards compatibility, so you have to do a lot of upfront config for every table and DB.
Postgres version upgrades are basically painless, at my workplace our upgrades complete in so little time our users don't notice, and we have more data than probably 99.9999% of companies out there (mature company in aerospace industry).
HTMX is awesome. I've replaced several OSS web apps on my home server with HTMX + Go + PostgreSQL replacements. The results are lightweight, responsive, work great on desktop and mobile alike, all with the absolute minimum complexity required. The codebases are easy to understand and modify, and so far I'm going months between updates (mostly just minor bugfixes for my applications). I fully expec my mature apps will go years if not decades between required upgrades.
The local car wash has lights that help you park the car pretty precisely under the wash robot. No rails or anything, you park right underneath the robot and it moves around and over the car. The robot doesn't start until you are in position.
I have one single video game I play that takes up around 650GB, so I have a dedicated drive for it. And between 1 and 2 TB of movies, TV, and photos. Everything else is ephemeral/scratch space for whatever I'm working on.
I used to be into amateur movie making and editing, and back then I needed many TB of space for the stuff I pulled off my cameras before it got edited down.
There is no left or right side to the helmet unit; the entire unit is on the left side of the helmet (right hand operates the bike's throttle, so the left hand is the free hand to operate the unit).
I have two reading modes: A narrative reading mode where a voice reads the text, and a speed reading mode where my eyes scan down the page and recognize the characters, words and phrases without any voice.
Oh, they're trying, and the locals are not happy, due to both the rise in electricity usage (mostly NOT solar) and environmental damage. Look up the datacenter planned in Box Elder County, Utah.
> If that was an actual problem wouldn't people be doing it without the college already?
I see you haven't heard of /r/churning. Although it doesn't involve bankruptcy, because then the sheriff comes down and takes your property from you...
What would stop graduates from declaring bankruptcy early in their careers to discharge their debt, before they use their education to build a lifetime of earnings and assets?
I removed most of the the autocompletion plugins from my Vim setup. (I had YouCompleteMe set up for intelligent suggestions, I've rolled it back to a simpler LSP-driven setup).
Also, I no longer update plugins without first manually reading the source diff to see if they've been infected by malware.