1,765 karma · joined May 9, 2011
https://notbad.software
It does _feel_ like the kind of thing that's likely to build an unreasonable amount of cruft around the place, but it just hasn't happened over the last few years. The way I run it all the audit logs are actually in a single table. Querying that table isn't exactly quick but it doesn't need to be. It all just trucks along.
I find this lets me punt on a lot of fine-grained permissions for different roles within an organisation. With the audit log, it becomes reasonable to say “just ask them not to do that. If they do, you’ll easily be able to see what happened and we can reverse it, then tell them to knock it off”
I’ve also gotten pretty wild using it to reconstruct state in migrations. Like adding a “created_at” field to a table, then mining the audit log for creation events to set the value on existing rows. Or changing a table to a soft delete instead of an actual delete, then repopulating past entries from the audit log.
https://www.abc.net.au/news/2021-10-03/melbourne-longest-loc...
Some things can be simpler when there’s only one of you. Take those opportunities when they arise.
You don’t need remote CI when there’s only one dev. Just make running the test suite part of your deploy script.
Use hosted services. Sure it would be cheaper to rent a server from OVH and do it all yourself. You don’t have time for that. You’re saving money on staff, spend a little on a hosted database, k8s, etc.
I love Google Cloud Run. Love it. Seamless deploys, dead easy rollbacks, inbuilt secret management, etc.
Micro services are about scaling teams, not technology. You’re a team of one, that’s probably the number of services you should have.
If there are possible values you don’t want to handle that’s totally fine, you just need to be explicit about it by having a blank default handler or similar.
Here in Australia the ambulance service is totally separate to the fire services. The public calls the same number (000) but after that it’s separate dispatch centres, different staff, different depots.
From the fire side we occasionally get called to assist the ambulance service with carrying out people who are injured somewhere way off down a bushwalking or mountain biking track. We’ll very rarely get called to a lift assist for someone that’s fallen in an aged care facility.
The ambulance service in NSW has a whole set of problems around capacity and poor working conditions for staff, of course, but that’s another story.
Do you? Or do you just want that goal achieved with a great solution?
Sure, there are times that necessitates a team to solve it. That’s far from always, though.
The best advice I ever got was “think of the highest number you can say with a straight face, then say that number.”
Clubman is a lot of word of mouth through the community. Also some success from Facebook and Google ads. I expected to have success with approaching clubs directly but that’s been a washout so far. Once the industry recovers after COVID I’m planning to roll out a referral system.
Backend in Go with a simple MVC pattern, no framework. All data in Postgres. Front end is server rendered HTML using MaterializeCSS for components, migrating to TailwindUI.
Hosted on GCP using Cloud Run, deployed using the gcloud cli orchestrated in a makefile. Database is a Cloud SQL instance.
Google Cloud Tasks for the message queue. Amazon SES for transactional emails and S3 for blob storage.
I have written a LOT of single page front ends over the years. I think the decision to go back to plain HTML templating has made it dramatically faster to add features. Same for the switch from microservices back to a well constructed monolith. I can just get right down to the feature I want to build or the bug I need to fix without wrestling the plumbing.
Go has also been wonderful for keeping things simple. I was always tempted to make things “clever” in nodejs.
In these cases where people need to be evacuated from a vehicle that’s live due to power lines there are protocols for doing so, it’s just more risky. We need to ensure they jump from the vehicle so they’re never touching the vehicle and the ground simultaneously. We also need to get them to shuffle to make sure there’s no step potential between their feet. Neither is easy to guarantee with a member of the public probably panicking.
Senior full-stack developer, > 10 years experience. I've founded and sold multiple companies and built many products both for myself and for clients. My superpower is building great MVPs, really fast. I can also help you scale a service or get a shaky project back on track. I understand the business as well as the technology and can help you bridge between the two worlds.
I work mostly in Go but have deep experience in nodeJS and React. As well as products I've built high scale data engineering pipelines, deployment systems, ci/cd, k8s setups and all kinds of other things.
Profile: https://davidbanham.com
Contact: david@banham.id.au
The military personnel will be unarmed and will be accompanied by police. The army doesn’t actually have any powers in this scenario, so it’s up to the police to actually issue fines, make arrests, move people on, etc.
My local firefox doesn't do anything fancy back to the VPS. It's just a browser, but it does spend a lot of time accessing the dev instances I'm running on the server. It's nice to be able to easily access my in-progress code over a proper domain, over the proper internet, with proper TLS rather than localhost. Browsers handle localhost differently than real domains and it's handy to shake out those errors early on in a project.
I don't need to fuss with file syncing solutions because I only ever access them from the one machine, I just happen to access that machine remotely. Backups are seamlessly handled by Linode snapshotting my disk every so often. I can happily run little webservers, etc, with pretty decent availability.
The thing that sits on my desk is a second hand, small form factor ThinkCentre I picked up dirt cheap when some corp was done with it. All it needs to do is run a terminal ssh'ed into a Tmux session and a local instance of Firefox. I get basically the same experience whether I'm at my desk, on my iPad or using Blink on my phone.
It's actually made me _less_ concerned about my unreliable broadband connection. If my main link goes down, I just hotspot to the 4G on my phone. The latency is a little worse but the bandwidth isn't actually relevant. All my chonky uploads like build artifacts, docker images, etc, all go direct from my Linode to wherever they need to go. Very civilised.
I’m using guesstimates for humidity and wind speed based on the spotty data available from the local government website. Also just totally fudging the fuel load number.
I’m reading spotting distances between 1.5 and 2km.
Overall FFDI of 41 so a bad day but not extreme by our standards. Would have been a lot worse with lower humidity.
They don’t throw embers like a crowning bushfire, though.
Invest the money saved on leases and cleaners on coworking memberships for those that want them. They can pick somewhere local with a pleasant commute. They’ll meet and share a space with people from their local area. They’ll be energised by interesting conversations with people from other industries. They can form friendships without the weird distortions of power imbalances caused by their positions in an org chart.
If the person at the next desk makes a weird noise when they breathe and always leaves dirty dishes in the sink? Cancel your desk and try a different place. No biggie.
Remote work doesn’t have to mean work from home. It’s up to you.
I used to run some of the official servers for CS:GO and L4D2 on behalf of Valve. Mostly it was great but communication was always a challenge.
I don't think your characterisation of the NSW lockdown is entirely accurate, either. We were forbidden from leaving the home except for exercise in the local area within household groups, essential shopping and essential work. Schools were closed except to the children of essential workers, most offices shut down or reduced their capacity, cafes, restaurants, pubs and many other businesses were closed. It was a lockdown.