HNHacker News
TopNewBestAskShowJobs

davidbanham

1,765 karma · joined May 9, 2011

[ my public key: https://keybase.io/davidbanham; my proof: https://keybase.io/davidbanham/sigs/Nty1Hj7kfVQZzstJlwdXPqhFTlKg4OpOXTqhbrKvNvo ]

https://notbad.software

submissionscomments
davidbanham··on The Unceasing Cessna Hacienda
No faster way to clock up 1500 hours than flying for 63 straight days!
davidbanham··on Postgres audit tables saved us from taking down production
In my case I've added them everywhere, all tables. The critical tables are also the highly trafficked ones in my case. So leaving the audit off the less-critical ones wouldn't really buy me anything.

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.

davidbanham··on Postgres audit tables saved us from taking down production
I make heavy use of this technique. I use it to display an audit log to users that tells them what’s changed on the entity and who did it. I set the application_name to the currently logged in user id so I can display it back.

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.

davidbanham··on We're seeing an ongoing attack against our primary network provider
No, they’re coming out of a 78 day lockdown. They’ve had around 260 days of lockdown _in total_ since the start of the pandemic. That’s been spread across multiple intervals, though.

https://www.abc.net.au/news/2021-10-03/melbourne-longest-loc...

davidbanham··on Ask HN: Solo-preneurs, how do you DevOps to save time?
I run three different saas products as a solo. Here’s some things I’ve picked up:

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.

davidbanham··on Things Go needs more than generics
What I’m asking for is basically just sum types. In my mind the behavior of switch would be totally unchanged unless you use an enum as the subject.

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.

davidbanham··on Firefighters say they’re swamped by calls for routine care from senior homes
I think the root cause is that you lump fire and EMS into the same basket. You don’t need six qualified firefighters on a half million dollar pumper to attend a nanna down call.

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.

davidbanham··on Things Go needs more than generics
I would love great enum support to be added to Go. I want to have a case statement for an enum’s value and have the compiler assure me that I’ve covered all possible cases.
davidbanham··on What's next for personal productivity
> we want people to be proactively working together to achieve a goal

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.

davidbanham··on Bare metal Apple M1 Debian at 4K 60
That power efficiency also buys you thermal efficiency, which buys you silence. Silent small form factor PCs are available, but to get one that won’t throttle all the time is pretty spendy.
davidbanham··on Ask HN: What is the highest consulting rate that you have come across, in tech?
This advice isn’t about how to price, it’s about how to get over impostor syndrome about your price.

The best advice I ever got was “think of the highest number you can say with a straight face, then say that number.”

davidbanham··on Ask HN: Companies of one, what is your tech stack?
Takehome was a mixture of blogging, networking and Google ads. It’s a slow burn on customer acquisition but the companies that use it stick for years.

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.

davidbanham··on Ask HN: Companies of one, what is your tech stack?
I run https://takehome.io and https://clubman.app on the same stack.

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.

davidbanham··on San Jose Fire had an impossibly complex incident scene (2019)
Yep, absolutely. Chances are if there's a going fire there won't be any isolation at all before the occupants need to be moved. In that case you try and extract them from the vehicle without letting them be shocked. Never touch the car and the ground at the same time. Shuffle away from the incident rather than walking to limit step potential.
davidbanham··on San Jose Fire had an impossibly complex incident scene (2019)
We can easily contact someone but they can’t do it remotely. The power company needs to come on scene. Isolating power is a lot more complex than it used to be because of solar installations. We can never be sure that every building’s solar is properly isolated from the grid.

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.

davidbanham··on Ask HN: Freelancer? Seeking freelancer? (August 2021)
SEEKING WORK | Sydney, Australia, REMOTE

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

davidbanham··on Covid in Sydney: Military deployed to help enforce lockdown
There’s a fair bit of context absent from this article. The military aren’t being deployed to enforce a lockdown so much as they’re providing some extra manpower to augment the local police force. NSW Police have part of their workforce isolating due to exposure to infected people, coupled with extra patrol requirements, and they need some more bodies.

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.

davidbanham··on Windows 365 Cloud PC
Oh all sorts of things. Mostly it's just a development instance of whatever I'm working on, which is usually something in Go these days. I use Caddy to route to various internal services based on the domain the request comes in on. I use Cloudflare to have a wildcard DNS such that I can just start using anything.vps.example.com and have the traffic show up at my machine. Also other bits and bobs like a Discourse server, photo gallery, 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.

davidbanham··on Windows 365 Cloud PC
Neat! Modern thin-client life is actually pretty good. Connectivity of some kind is ubiquitous enough these days that my computer for the last couple of years has been an Arch VM in a local Linode datacenter.

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.

davidbanham··on How safe is Colin Furze's tunnel?
He has himself, Rick and Tom. He’s said before he’s a one man band when it comes to filming, editing and the business.
davidbanham··on 'Most homes' in Lytton destroyed by catastrophic fire, B.C. minister says
Out of curiosity I plugged Lytton’s weather readings into the Mccarthur tables we use to calculate forest fire danger in Australia.

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.

davidbanham··on 'Most homes' in Lytton destroyed by catastrophic fire, B.C. minister says
A firefront moves a lot faster through grass than through forest fuels given the same moisture content. Totally different strategies required to fight them.

They don’t throw embers like a crowning bushfire, though.

davidbanham··on Towing a Tesla at 70 MPH replenishes battery at fast charger rates
Depends on the size of the engine and the design of the brake. Big engines are louder than small engines. Jake brakes are louder than regular exhaust brakes.
davidbanham··on We Can't Let People Work from Home, for Stupid Reasons
I completely respect that for many people the office is a fulcrum of their social life and they don’t want that to change. The remote work revolution actually makes that easier, not harder. We just have to get past the anachronistic idea that the people you share an office with also need to have the same company name written at the top of their paycheques.

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.

davidbanham··on Go 1.17 Beta
The post is referring to the codebase of k8s itself, not the experience of deploying go code to k8s.
davidbanham··on Snowflake CEO Says Worker Merit Should Outweigh Diversity Goals
Live coding during an interview is a particularly stressful environment that bears little relation to the day to day work of building software. Have you considered that if 90% of your vetted applicants are failing your test that there might be something wrong with your methodology?
davidbanham··on Moving my US tech job to Australia
The primary barrier to distributing your salary through a trust is the personal services income rule.

https://www.ato.gov.au/Business/Personal-services-income/

davidbanham··on Moving my US tech job to Australia
Many regional areas in Australia are going through a property boom as people rearrange their lives around remote working. Byron is right at the tip of that mountain. There are many more affordable towns both north and south of Byron.
davidbanham··on Counter-Strike Global Offsets: reliable remote code execution
For Valve at least my experience is that’s pretty common. With the way they structure their company everyone works on what they want to. The result is that nobody chooses to work on the boring stuff so it doesn’t happen.

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.

davidbanham··on Papers finding that lockdowns had little or no efficacy
For sure the NSW situation was different to VIC. Compared to the way many other parts of the world is interpreting the word lockdown though, the differences are insignificant in terms of their "hardness".

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.

← PreviousPage 5 of 17Next →