HN user

adrianmsmith

3,745 karma

Adrian Smith

Software developer from UK living in Vienna, Austria.

Blog: http://www.databasesandlife.com/

adrian.m.smith@gmail.com

https://twitter.com/adrianmsmith

Posts46
Comments660
View on HN
twitter.com 2mo ago

Today we reduced headcount by 22% / The goal is 100x output

adrianmsmith
8pts11
twitter.com 2mo ago

Today I've made the difficult decision to reduce the size of Coinbase by ~14%

adrianmsmith
484pts807
twitter.com 4mo ago

Michael Burry worries about "structural manipulation" of Nasdaq-100 for SpaceX

adrianmsmith
24pts2
www.databasesandlife.com 6mo ago

Avoid aligning keys and values in source code unnecessarily

adrianmsmith
4pts6
github.com 1y ago

Go and Throw

adrianmsmith
2pts0
news.ycombinator.com 2y ago

Ask HN: De-Googling my life: Alternatives to Google Sheets?

adrianmsmith
47pts55
twitter.com 2y ago

I wrote, “Scrum is a cancer,” and the Internet had thoughts about it

adrianmsmith
187pts19
whenwillirunoutofmoney.com 2y ago

Show HN: When Will I Run Out Of Money? (weekend project)

adrianmsmith
12pts7
bootique.io 4y ago

Bootique: A minimally opinionated framework for runnable Java apps

adrianmsmith
1pts0
news.ycombinator.com 4y ago

Ask HN: What comes after Scrum?

adrianmsmith
1pts1
uk.news.yahoo.com 4y ago

North Korea bans laughing for 11 days

adrianmsmith
2pts0
www.craigmurray.org.uk 5y ago

Assange Hearing Day 12

adrianmsmith
56pts6
jacquesmattheij.com 6y ago

Covid-19, a Retrospective

adrianmsmith
2pts0
www.databasesandlife.com 6y ago

On Transitioning from Software Developer to Architect

adrianmsmith
5pts0
stackoverflow.blog 6y ago

Stack Overflow: A/B Testing the New Question Form

adrianmsmith
1pts0
fossil-scm.org 6y ago

Rebase Considered Harmful

adrianmsmith
2pts0
stackoverflow.blog 6y ago

Why Devs (Should) Like Estimates

adrianmsmith
1pts0
www.theguardian.com 6y ago

Google says hackers have put 'monitoring implants' in iPhones for years

adrianmsmith
47pts8
www.theguardian.com 7y ago

Sajid Javid Signs US Extradition Order for Julian Assange

adrianmsmith
9pts0
www.databasesandlife.com 7y ago

Scrum stand-ups prevent you from doing your best work and they do that every day

adrianmsmith
2pts0
medium.com 7y ago

Inside the failure of a startup

adrianmsmith
4pts0
standuply.com 7y ago

Building SaaS MVP: 10 Hard Lessons Learned

adrianmsmith
5pts0
www.databasesandlife.com 8y ago

Avoid Vendor Lock-In When Sending Emails by Using SMTP

adrianmsmith
2pts0
news.ycombinator.com 9y ago

Ask HN: What ways have you seen founders unconsciously sabotage their startup?

adrianmsmith
2pts3
yiu.co.uk 9y ago

Who can view my internet history? (UK)

adrianmsmith
1pts0
www.databasesandlife.com 9y ago

Which log levels to use when?

adrianmsmith
1pts0
svs.io 10y ago

Why I Migrated Away from MongoDB

adrianmsmith
4pts1
dontscale.com 10y ago

Stop Looking for a Cofounder

adrianmsmith
280pts152
plus.google.com 12y ago

The purpose of DRM is not to prevent copyright violations (2013)

adrianmsmith
782pts234
techcrunch.com 12y ago

How I Killed A Startup In 4 Hours (And Why I Don’t Regret It)

adrianmsmith
2pts1

The article gives examples of situations where projects have failed, and states a solution.

The [solution] is to organize the work into the smallest possible learnable chunks and continuously alternate between doing and learning.

It would be more convincing if the article gave examples of where that solution had been tried and succeeded. I mean this must have been tried somewhere, surely.

I feel this article is saying people from UK/US/etc. want to maximize upside, and people from DACH (Germany etc.) want to minimize downside.

I was a bit shocked when I talked to an Austrian colleague once and they told me they wanted to get into investing, but losing any money at any time was completely unacceptable. They had looked at investing in S&P 500 ETFs etc., but felt they must have misunderstood something, as they didn't understand why anyone would invest in anything that might go down, even temporarily.

So the thesis of the article definitely feels plausible to me.

But if you have side effects and need something to happen exactly once it seems a lot more useful to communicate this, rather than pretending you did the thing.

I think it depends on whether the sender needs to know whether the thing was done during the request, or just needs to know that the thing was done at all. If the API is to make a purchase then maybe all the caller really needs to know is "the purchase has been done", no matter whether it was done this time or a previous time.

And in terms of a caller implementing retry logic, it's easier for the caller to just retry and accept the success response the second time (no matter if it was done the second time, or actually done the first time but the response got lost triggering the retry).

MacBook Neo 5 months ago

Macbook Nano will probably be supported with security updates for a lot longer.

Apple try to provide updates for a certain number of years after the model was originally released. The M1 Air was released many years ago now.

Replacing human hesitation with machine confidence removes the one safeguard that has prevented nuclear war since 1945. Until militaries implement documented human authorisation...we are blindly automating our own destruction

In the scenario described there literally is a human in the loop: the president is a human?

You end up working for shitty Fortune 500 company, work on useless/mindless shit, grind for 8 hrs, collect paycheck, eat, sleep, and repeat.

I used to think like this but what if it isn't the case? Maybe the market is making the right decisions after all? Maybe contributing a tiny amount to a successful business really is worth more to society than contributing a huge amount to a project with barely any customers, and that's why we get paid more working for large companies?

(Not suggesting OP's projects have barely any customers, I am more talking about my own forays into small business.)

Can anyone recommend a music discovery service that isn't garbage?

I enjoy using last.fm, although it's not their focus these days. Sign up, connect it to Spotify or whatever you use (incl. a long list of players of local music), after a day or so it'll learn what you like and you can create playlists with suggestions and export them, or browser around recommended artists etc.

As I dug deeper into these feelings, I realized I was feeling pressured. Except they're not saying this, I am.

That's a great insight.

Once you've realized that, I think the best thing to do is to talk to the person whose pressure you imagine. Then you can find out what they're really thinking. Perhaps they really are thinking that (in which case the pressure is real and you can act on it) or they aren't (hearing them say that will alleviate the pressure).

Once when freelancing I asked a customer what they liked and disliked about my work. They had previously seemed happy with me, so I was pretty sure I know what they'd say. I believed I wrote good stable software. What they actually said was they were a small company, and they had had previous developers who, when there were server problems etc., just shrugged and said they didn't know how to fix it. They felt I wasn't like that, that I'd sit there and get it fixed, call up friends if necessary, etc. So yeah, they were happy, but not for the reason I'd imagined.

So my learning was: So you always have to talk to people to find out what they think. You really can't guess.

Thanks. We're doing all that.

But that doesn't help when you do "git rebase" and there's a large conflict which you have to resolve manually, caused by two people changing different lines, and one or both of those lines caused the formatting of the whole block to change. That's the source of my frustration.

Interesting. Yeah I did think maybe this could be solved by more tooling. But at my place it work it isn’t, at least at the moment. Perhaps I could change that.

Do you have any info on what I could use to make the command-line “git diff” and “git rebase” handle this style of formatting? Ideally so the latter merges and produces code which matches “gofmt” output?

On the other hand I suppose my point is that even if there were such tooling, using style of formatting doesn’t offer enough (any?) benefit to justify the effort of introducing the tooling.

I have a Logitech K830, it's great. Alas they're not manufactured any more.

Modern equivalents are a lot cheaper. I think they might not have the backlight feature which is extremely useful, and I've dropped mine many times, even spilled coffee over it, and it still works flawlessly.

Focus Is Saying No 10 months ago

Then again, this person's job is to focus on their career. Their manager told them

Because… some lack business value. These tasks aren’t business priorities and had no impact on customers and other teams

So if those "some" include upgrades, then I would say it's rational for the employee to focus on tasks that are going to get them a promotion.

I don't agree with that myself, I agree with you that upgrades are important, but this person is going to get a promotion through doing whatever their manager wants, and that apparently doesn't include upgrades.

Libghostty is coming 10 months ago

That sounds like the Google philosophy though, where smart people come up with ideas and write the initial implementation (then get promoted) and other less smart people take over, and you end up with a mess that had great potential like Bazel?

I mean, yes, I would hope they have the right paperwork? E.g. if you're going on a business trip then you're going to need a visa allowing business trips, if you're going to work you're going to need a visa that allows work, etc. I don't see why this is unreasonable.

If it is unreasonable then the rules need to change - no point having rules if they can't be enforced.

The database vendors themselves don't seem to be consistent on this issue.

* PostgreSQL system table names are singular e.g. "pg_class"

* Oracle system tables are plural e.g. "ALL_TABLES"

* MySQL is also plural e.g. "schemata".

Join tables are a bit more difficult if you pluralize tables. For example at work we have table names like:

    customers
    customer_attributes
    customers_labels
On one side you want to be consistent with the "customers" table you're joining to. On the other hand it reads weirdly to have an extra "s" in the middle of the table name.

After you've got three or so words in a table name it really becomes inconsistent and you can't really guess what they're called when writing code.

There are solutions of course: whether to use the "s" on join tables could be a policy documented somewhere and everyone, including new employees, could be made aware of it. But it's a problem you don't have if you use singular table names.

Having table names plural e.g. "customers" and object names in your programming language e.g. "customer" is one extra piece of complexity that's not necessary.

For example we have a table "customer_data" at work and in our generated ORM code it's called "customer_datum".

The open-source singularization library is doing its job, but it sure made it difficult for me to global-search for that object name when I joined the company and didn't know the object was called that.

Malleable Software 11 months ago

Meanwhile I really want my email, messenger, or banking apps to be exactly the same every time I use them.

I know that's not the point you're making, but I agree with you, alas that's already not the case today, e.g. random device updates nobody asked for, or you log in to your banking website because you need to pay something right now and half the features are gone or different.

1) "it will just compile and run programs with incompatible version dependencies and then they crash at some point"

2) "Now a package 5 layers deep is unmaintained and is on an ancient dependency version, other stuff needs a newer version. Now what? Manually dig through dependencies and update versions?"

You can't solve both of these simultaneously.

If you want a library's dependences to be updated to versions other than the original library author wanted to use (e.g. because that library is unmaintained) then you're going to get those incompatibilities and crashes.

I think it's reasonable to be able to override dependencies (e.g. if something is unmaintained) but you have to accept there are going to be surprises and be prepared to solve them, which might be a bit painful, but necessary.

If you use two dependencies, and one requires Foo 1.2.3 and the other Foo 1.2.4 then 99% of the time including either version of Foo will work fine. (I was a Java developer and used Maven for about 10 years.)

For those times where that's not the case, you can look at the dependency tree to see which is included and why. You can then add a <dependency> override in your pom.xml file specifying the one you want.

It's not an "insane" algorithm. It gives you predictability. If you write something in your pom.xml that overrides whatever dependency your dependency requires, because you can update your pom.xml if you need to.

And because pom.xml is hand-written there are very few merge conflicts (as much as you'd normally find in source code), vs. a lock file where huge chunks change each time you change a dependency, and when it comes to a merge conflict you just have to delete the lot and redo it and hope nothing important has been changed.

I'm not sure if that's an answer to your question, but there are at least companies today that do no allow their programmers to use GenAI e.g. OpenAI, including tools running locally.

You could (for now) work for such a company.

That doesn't mean they'll be around in the future, maybe they will get left behind. But the future is difficult to predict, and it's at least the case that such companies exist today.

Then again it might be difficult to identify such companies. I tried to find any public information that the company I'm thinking of doesn't use AI (large US company, 10k+ employees) and I couldn't. So you probably wouldn't know, before working there, that they don't allow AI usage. So maybe this advice isn't as actionable as I'd hoped.