245 karma · joined January 1, 2015
I forget the _exact_ mechanics but it was definitely all done in Internet Explorer with XML as the actual content per-page and transformation was done using XSLT.
Interesting but I definitely hate XSLT as a result. Considering this was my first real programming job, it's surprising I continued.
I'm glad to find out about evil-helix.
But then again this story has probably happened thousands of times...
Do we ever use TypeFamilies and DataKinds? Sure, but it's very rare.
https://www.simplehaskell.org/ is a pretty reasonable set of guidelines (though we opt for a more conservative approach ourselves)
I guess I get the article author was trying to be provocative but what are you doing?
I doubt Gather would work well for a large company where there is less trust between individuals - maybe that's the scenario you're imaginging it in?
It works well in our small company where trust is implied by being here and we have few concrete expectations. In practice it's no different than being signed in to Slack.
You have the option to mark yourself as away or to passively lock your desk area so people have to knock to come in but this status isn't apparent unless someone comes by.
We have a decent spread of people across the introvert-extrovert band and we don't set concrete expectations on camera on or spending time in common areas - but both are encouraged.
I'm surprised how well it works. We've been using it for almost 2 years now, I think.
Our company is about 15 people.
See https://en.wikipedia.org/wiki/Security_through_obscurity
Molly (https://github.com/mollyim) uses their servers but not their name and seems to be operating just fine. I've been using it for almost a year now.
I found it primarily because I wanted to run Signal on a tablet.
That isn't to say you _have_ to write it this way for new things and there are packages like https://hackage.haskell.org/package/safe which provide non-partial/safe versions of the various unsafe base functions (like head, maximum and friends).
The base package in Haskell also includes nonempty which is probably what you want in a lot of cases, anyway.
Explicit > Implicit
Dentures? Distraction.
Prosthetic arms and legs? Distraction. Why aren't we regrowing limbs yet? Lizards can do it. Follow the money.
hide the queue under the API layer of the receiverBackend - Haskell, Postgres
Infra - My most recent experience is with AWS and ECS but I'd likely try out Nomad and HAProxy.
Pretty much any other moving parts would depend on the MVP itself.
Here's my setup.
I have a mini-pc with 32gigs of ram running as my combo "compute" and "storage" server.
It has an attached 5 bay enclosure with 8TB of storage on it.
On it I run
- Caddy to host static sites (my blgo) and to terminate HTTPS for other services - audiobookshelf (mostly unused)
- calibre-web (organizes ebooks)
- diun (notifications about docker image updates)
- gitea (personal git repos, mostly useless honestly but I do put some things in here before they go to GitHub)
- home-assistant (heavily used)
- mealie (heavily used)
- mpd (music player daemon, moderately used throughout my house)
- a VPN container for things that I want to only run inside a VPN and never when the VPN is down
- plex (heavily used to organize and play media elsewhere in the house)
- postgres
- scrutiny (for consolidated reporting of disk issues across my machines)
- shiori (read-it-later style bookmark manager)
- snapcast (coordinates multi-room audio throughout my house on a bunch of raspberry pis attached to speakers, heavily used)
- syncthing (heavily used)
- vaultwarden (heavily used)
- woodpecker (self-hosted CI, moderately used)
- zwave-js-ui (manages the zwave based smart home devices I have...about 20 or so)
My router/firewall is a separate devices running OPNsense and I use Wireguard to remote in - also works wonderfully.
I run all the services with docker-compose. The server itself is a bit of a snowflake but all the critical parts of the services are in their respective docker directories so backup is a snap (aside from postgres which has a separate backup process).
Currently I'm working on documenting a recovery procedure for Vaultwarden from our Backblaze backups so that in the event something happens to me my wife will be able to recover the Vaultwarden instance and our passwords. That's a fun exercise in documentation and simplifying the process.
Snapcast has really been a dream for multi-room audio setup. It presents a Spotify Connect device to anyone on my wifi. It has a separate stream which comes from whatever is being played on MPD and it is easily configured to play audio from whichever of those two streams is actively playing music...so I don't have to manually switch between them.
Caddy has been great for organizing everything and ensuring each service has HTTPS. I understand Traefik is somewhat more purpose built for doing this with a bunch of containers but I haven't had a need to switch.
I do use https://github.com/lucaslorentz/caddy-docker-proxy for letting the containers themselves describe their respective domains and mapping.
I do have a VPS and use it for the occasional site that needs to be more reliable than my home internet (which itself is quite reliable but I'm not counting 9s there). More and more I find I'm comfortable putting random static sites on my machine at home, though.
Parting thought: Exposing all of these details is a bit of a security concern, for sure. But ultimately I think it's (a) Not a huge security concern -- I need to assume any attacker knows what I'm running anyway, and (b) part of the fun is talking about it so I lose some value if I don't.
Modern versions of CouchPotato or SabNZB if you were familiar with those
You think suddenly everyone is going to start signing their tweets and blog posts and people will en-masse assign a trust score to said content based on the people they know and trust in their PGP keychains?
I'd like that world quite a bit but it's decidedly not going to happen - probably at all and definitely not at scale. Are you so sure that's what we'll all do in response to automated content that you're calling this article a "sky-is-falling thesis"? If so then I'm genuinely baffled by your confidence here. Where does it come from?