HNHacker News
TopNewBestAskShowJobs

davnicwil

6,646 karma · joined April 20, 2015

Hi, I'm David Nicholas Williams.

Working on https://withdocket.com -- it's a system for active note taking in regular meetings like 1-1s.

I have a blog at https://davidnicholaswilliams.com

Email: my HN handle at google's email service. Put (HN) in the subject line to tell me you came from here!

submissionscomments
davnicwil··on How I estimate work
Yes, but where reliability is concerned, a continuum is a problem. You can't say with any certainty where any given thing is on the continuum, or even define its bounds.

This is exactly what makes estimates categorically unreliable. The ones that aren't accurate will surprise you and mess things up.

In that sense, it does compress to being binary. To have a whole organisation work on the premise that estimates are reliable, they all have to be, at least within some pretty tight error bound (a small number of inaccuracies can be absorbed, but at some point the premise becomes de facto negated by inaccuracies).

davnicwil··on How I estimate work
With respect, I think this approach is actually harmful to everyone in the org because you're trying to twist reality to fit a premise that is just impossible to make true: that estimates of how long it takes to build software are reliable.

The reluctance to accept the reality that it cannot be made true achieves nothing positive for anybody. Rather it results in energy being lost to heat that could otherwise be used for productive work.

This isn't about respect between functions, this isn't about what ought to be professionally acceptable in the hypothetical. It's about accepting and working downstream of a situation based in objective truth.

Believe me, I wish it were true that software estimates could be made reliable. Everyone does. It would make everything involved in making and selling software easier. But, unfortunately, it's not easy. That's why so few organisations succeed at it.

I don't present easy answers to the tensions that arise from working downstream of this reality. Yes, it's easier to make deals contingent on firm delivery dates when selling. Yes, it's easier to plan marketing to concrete launch dates. Yes, it's easier to plan ahead when you have reliable timeframes for how long things take.

But, again unfortunately that is simply not the reality we live in. It is not easy. Flexibility, forward planning and working to where the puck is going to be, and accepting redundancy, lost work, or whatever if it never arrives there is part of it.

That I think is what people in different functions are best served rallying and collaborating around. One team, who build, market and sell software with the understanding that reliable estimates are not possible. There simply is no other way.

davnicwil··on The recurring dream of replacing developers
I really appreciate the compliment, thank you! I don't.
davnicwil··on The recurring dream of replacing developers
In the end, I think the dream underneath this dream is about being able to manifest things into reality without having to get into the details.

The details are what stops it from working in every form it's been tried.

You cannot escape the details. You must engage with them and solve them directly, meticulously. It's messy, it's extremely complicated and it's just plain hard.

There is no level of abstraction that saves you from this, because the last level is simply things happening in the world in the way you want them to, and it's really really complicated to engineer that to happen.

I think this is evident by looking at the extreme case. There are plenty of companies with software engineers who truly can turn instructions articulated in plain language into software. But you see lots of these not being successful for the simple reason that those providing the instructions are not sufficiently engaged with the detail, or have the detail wrong. Conversely, for the most successful companies the opposite is true.

davnicwil··on Ask HN: Share your personal website
https://davidnicholaswilliams.com

my blog with a few posts that have been on HN front page (eg [0]), but under my old domain davnicwil.com which unfortunately was poached after I accidentally let it lapse. Doh.

[0] https://news.ycombinator.com/item?id=21934358

davnicwil··on Meta announces nuclear energy projects
looking backwards in the supply chain for other externalities is a good point, but I'm not sure any energy production method is exempt from this?

Also, by the way, my perspective isn't about nuclear Vs X (wind turbines etc) - I like all the ones that are net clean and useful in different circumstances as part of a mix.

I'm just addressing the narrower point about whether nuclear per se is a net benefit for society, which I believe it is, massively.

davnicwil··on Meta announces nuclear energy projects
the waste isn't a win, of course, but is a downside of a tradeoff that is massively weighted to the upsides for society -- that is (otherwise) completely clean always-on high capacity energy production.

We understand very well how to safely handle nuclear waste and make it a very (very) low risk downside.

davnicwil··on iOS allows alternative browser engines in Japan
much has been written about the deteriorating quality of iOS.

There's bluntly not strong external evidence that software quality is a driving priority at Apple in recent years, so it most probably follows that concerns about maintainability aren't either.

davnicwil··on The future of software development is software developers
I would say while LLMs do improve productivity sometimes, I have to say I flatly cannot believe a claim (at least without direct demonstration or evidence) that one person is doing the work of 20 with them in december 2025 at least.

I mean from the off, people were claiming 10x probably mostly because it's a nice round number, but those claims quickly fell out of the mainstream as people realised it's just not that big a multiplier in practice in the real world.

I don't think we're seeing this in the market, anywhere. Something like 1 engineer doing the job of 20, what you're talking about is basically whole departments at mid sized companies compressing to one person. Think about that, that has implications for all the additional management staff on top of the 20 engineers too.

It'd either be a complete restructure and rethink of the way software orgs work, or we'd be seeing just incredible, crazy deltas in output of software companies this year of the type that couldn't be ignored, they'd be impossible to not notice.

This is just plainly not happening. Look, if it happens, it happens, 26, 27, 28 or 38. It'll be a cool and interesting new world if it does. But it's just... not happened or happening in 25.

davnicwil··on Keep the Robots Out of the Gym
that's actually what I mean by we. As in, different individuals will try different strategies with it, and we the collective will discover what works based on results.
davnicwil··on Stepping down as Mockito maintainer after ten years
> What it isn't is terse

Yeah, it's funny, I'm often arguing in the corner of being verbose in the name of plain-ness and greater simplicity.

I realise it's subjective, but this is one of the rare cases where I think the opposite is true, and using the 'magic' thing that shortcuts language primitives in a sort-of DSL is actually the better choice.

It's dumb, it's one or two lines, it says what it does, there's almost zero diversion. Sure you can do it by other means but I think the (what I will claim is) 'truly' inline style code of Mockito is actually a material value add in readability & grokability if you're just trying to debug a failing test you haven't seen in ages, which is basically the usecase I have in mind whenever writing test code.

davnicwil··on Keep the Robots Out of the Gym
there could also be an almost chaos-monkey-like approach of cutting off the assistance at indeterminate intervals, so you've got to maintain a baseline of skill / muscle memory to be able to deal with this.

I'm not sure if people would subject themselves to this, but perhaps the market will just serve it to us as it currently does with internet and services sometimes going down :-)

I know for me when this happens, and also when I sometimes do a bit of offline coding in various situations, it feels good to exercise that skill of just writing code from scratch (erm, well, with intellisense) and kind of re-assert that I can do it now we're in tab-autocomplete land most of the time.

But I guess opting into such a scheme would be one-to-one with the type of self determined discipline required to learn anything in the first place anyway, so I could see it happening for those with at least equal motivation to learn X as exist today.

davnicwil··on Keep the Robots Out of the Gym
It's an interesting one. We'll have to discover where to draw that line in education and training.

It is an incredible accelerant in top-down 'theory driven' learning, which is objectively good, I think we can all agree. Like, it's a better world having that than not having it. But at the same time there's a tension between that and the sort of bottom-up practice-driven learning that's pretty inarguably required for mastery.

Perhaps the answer is as mundane as one must simply do both, and failing to do both will just result in... failure to learn properly. Kind of as it is today except today there's often no truly accessible / convenient top-down option at all therefore it's not a question anyone thinks about.

davnicwil··on Last Year on My Mac: Look Back in Disbelief
you're right! The photo syncing is comically bad, again given the alleged importance of photos in the Apple marketing material. That said I've rarely used it in the past and so wasn't sure if it was a newly degraded experience or had always been that poor.
davnicwil··on Stepping down as Mockito maintainer after ten years
because even supposing you have an interface for your thing under test (which you don't necessarily, nor do you necessarily want to have to) it lets you skip over having to do any fake implementations, have loads of variations of said fake implementations, have that code live somewhere, etc etc.

Instead your mocks are all just inline in the test code: ephemeral, basically declarative therefore readily readable & grokable without too much diversion, and easily changed.

A really good usecase for Java's 'Reflection' feature.

davnicwil··on Last Year on My Mac: Look Back in Disbelief
the one I've noticed being the worst for lock ups is the camera / photos app, which is frankly very surprising given how central the photography usecase appears to be to iPhone sales and therefore Apple's bottom line.

I'm talking, I pull up the camera and try to take literally 4-5 shots quickly and by the 6th there's what feels like seconds of lag between the button press and the photo being taken.

It feels like I'm using an ancient camera phone, or a more modern phone but in extreme heat when the CPU is just throttling everything. But instead, this is a 2 year old iPhone at room temperature.

davnicwil··on Avoid Mini-Frameworks
It's super interesting that you have this definition given your authorship of django (I mean, actually interesting, not 'interesting' :-)

In another comment I used the example of rails as a kind of canonical 'framework' that can potentially do everything for you full stack, and django is in the same category, juxtaposed against something like React that cannot.

To that, I think your last paragraph is the one I agree with most closely. It's true, but only for the view part of the app, right? I think that's where I get stuck on stretching to calling it a framework.

I guess I can see it if you're defining your view/client as a separate logical entity from the rest of the stack. Which is totally reasonable. But I guess just not how I think about it.

davnicwil··on Avoid Mini-Frameworks
I think absurd is a bit strong. It'd be absurd to call something like rails a library.

I think you can probably see that distinction already, but to spell it out React is described as a library precisely because it does just one thing - the view - and leaves it to you to figure out the entirety of the rest of the stack / structure of your app.

Framework, at least to me, but I also believe commonly, means something that lets you build a full application end to end using it.

You can't do that with React unless your app is just something that lives in the browser either in-memory or with some localstorage backing or something. If that's your app, then probably I'd agree React is your framework per se, but that's hardly ever the case.

By the way, back to my original point, I still do think these things are impossible to define and in lots of ways these terms don't matter - if it's a framework for you, it's a framework - but I just had to defend my position since you described it as absurd :-)

davnicwil··on Avoid Mini-Frameworks
I don't agree. What I said about React providing structure and (lifecyle) hooks was true from the first version.

The later stuff adds other ways of doing the same thing but a library it remains.

That's as self described by the React team, and I think the consensus more broadly.

davnicwil··on Avoid Mini-Frameworks
these things are hard, maybe impossible to define.

For example I mostly agree with your calls/called definition but you also get self-described libraries like React giving you defined structure and hooks that call your code.

davnicwil··on Unifi Travel Router
they have an excellent set of short intro videos [0] on youtube, that's what I used to get an overview and get set up.

[0] https://youtu.be/sPdvyR7bLqI?si=2kIpHtNuJ52jEdmm

davnicwil··on Ryanair fined €256M over ‘abusive strategy’ to limit ticket sales by OTAs
I just think they genuinely don't know. I was years into travelling before I learned about this 'trick'.

For my part, I'd just always assumed the charge would be ultimately converted by my bank in any case. Seems obvious now I look back, but I honestly just didn't think about the trick.

Just as an example that gives evidence for this, sometimes you'll go to the same place multiple times and the norm is they ask but occasionally someone won't. So it's not a policy.

I presume the people who don't just don't know about it, don't want to bother me and aren't aware it will make a difference.

davnicwil··on Well being in times of algorithms
I agree, I think we were just talking to slightly different points!
davnicwil··on Well being in times of algorithms
yeah, I think I misunderstood the point you were making and I'm making a different but related point. So we probably don't disagree.

Interesting point on the word augment. I'd always took it to mean something more like a value-neutral addition, to which one is free to apply their own value judgements, which could be positive or negative and in any case aren't objective.

To take an example of the kind of thing I'm thinking of: you're out on a peaceful countryside walk yet are able to receive emails. The experience is augmented by this-- in my interpretation meaning you have something literally added to it. But the effect of this can be both positive or negative, to any degree, depending on the email itself and any number of other factors.

Anyway I think we're mostly just getting into semantics and I probably agree actually with your original point :-)

davnicwil··on Well being in times of algorithms
I think I disagree, if I understand you correctly.

Technology is augmenting real world experiences all the time, and not always in positive ways.

Whenever anyone does anything with the real world as the destination, the phone comes too, and all that comes with the phone intersects with whatever it is you're doing. Again not always in positive ways.

I completely agree that the nature of the technology / platform doesn't matter or affect this.

davnicwil··on I program on the subway
Coding on metros, trains, buses and planes is exactly the reason I always make sure my dev environments work 100% offline, with dummy services in place of the real ones.

One thing I love about coding on public transport is the sense of urgency can be fun.

Being on the verge of figuring out a bugfix or whatever when you know train is pulling into the station and you have maybe a minute to go, cracking it, quick test, bundle the laptop quickly back into your bag as you step off the train is quite a nice feeling.

davnicwil··on How China built its ‘Manhattan Project’ to rival the West in AI chips
It's always felt pretty intuitive to me that shared goals in a culture should have some real effect on outcomes.

It doesn't mean absolutely everyone takes part, of course, but it does mean it's a 'thing' that people may take part in with support from many of those around them if they choose.

Looking at the inverse: If you're going against the cultural wind, you're just going to have a much harder time doing whatever it is.

It just seems like this must show up in outcomes, it would be strange if it didn't.

davnicwil··on Tell HN: HN was down
that'll be because it's served from cache when you're not logged in
davnicwil··on Litestream VFS
very fair! Thanks for confirming
davnicwil··on Litestream VFS
I have to say I'm similarly not really sure I'm getting it, and I've been following litestream pretty closely over the years (not an expert but certainly familiar).

I think what we're getting here is a way to just spin up a local shell / app and run arbitrary queries from any point in time over the network without having to sync the full prod database. I guess with LiteFS you would have to do this, or pre-plan to do this, it's not totally on-demand.

Or said another way, do things locally as though in prod without having to ssh to prod and do it there (if you even can, I guess if 'prod' is just s3 you can't really do this anyway so it's an entirely new capability).

@benbjohnson is this right? I humbly suggest adding a tl;dr of the main takeaway up top of the post to clarify. Love your work on litestream, thanks for what you do!

← PreviousPage 4 of 34Next →