HN user

doctor_eval

5,374 karma

mark -at- commandquery.com

I’m building software to help small bus and coach companies.

Posts10
Comments2,026
View on HN

While this document starts strong and has some good points, it strongly conflates “scrum” with “agile” and goes downhill pretty quickly.

wrong answer: what’s a sprint cycle?

You don’t have to have sprints to be agile. What’s important are the four values.

The manifesto says, “Individuals and interactions over process and tools” but this document then goes on to talk a lot about specific processes and tools.

It’s a trap!

This is just rubbish. Safety arises from multiple dimensions - Kevlar-threaded armour is a single, last line of defence that helps only when everything else has failed.

Actual safety comes from training, practice and operations - such as understanding how the tool works, what unexpected dangers exist, what techniques to avoid, the state of the immediate environment, prioritising safety (eg by not creating time pressure) and the design of the tool itself (eg chain guards and anti whip mechanisms)

By the time your Kevlar armour comes into play you are well outside the safety zone and deep into the shit your pants zone.

The needs of security are opposed to the needs of a convenient user experience. Improving one typically hurts the other.

I must be Dr Contrary tonight but this strikes me as bullshit.

SSH is more convenient that telnet. Passkeys are more convenient than passwords. TouchID and FaceID are more convenient than passwords.

In general, security is an afterthought that is inconvenient to developers to add back. But in the digital world I haven’t seen many examples of security being less convenient than the alternative.

(I am writing this from an airport and definitely do not assert that this applies to the built environment.)

Safety is not a “luxury enabled by profit”. It’s one of many necessary dimensions for efficiently creating value over time.

If you are a sole trader and you fall off a ladder and hurt yourself because you took some stupid shortcut, the cost is extremely high.

If you work for someone and they make you do something stupid that hurts you, the cost to them has traditionally been relatively low, so they are motivated to push you because that’s better for them. Fortunately, in most modern countries this is no longer the case.

Safety only becomes a “luxury” when capital becomes concentrated into the hands of people for whom other people are disposable.

These are just assertions with little to back them up. As TFA says, you can make all the same claims for REST. And GraphQL works the same as REST. But instead of a complex mishmash if positional and named parameters, it has a super simple query structure.

When you create a stack of REST APIs, you’re creating a DSL. But it’s a DSL with arbitrary and frequently undocumented relationships between objects, no type safety, and masses of hidden complexity.

GraphQL is simple. If you don’t think it’s simple, you don’t understand it.

One big issue of GraphQL is also that API clients tend to suck. That's not a problem for OpenAPIs.

The clients are unnecessary. You can get ridiculously complex clients for REST, too. But you can also use GraphQL just using fetch().

The only material difference between the two from a client perspective is:

* REST gives you everything, even if you don’t want it

* GraphQL requires you to request what you want using a minimal query language.

GraphQL also lets you perform multiple queries in parallel, on the server, which REST can’t easily do.

REST is a PITA for any data model that’s more complex than CRUD.

Unfortunately I’m on a bus to the airport for a couple of days so I’m a bit constrained.

If you know Postgres, I would recommend taking a look at Postgraphile. It’s awesome, and comes with an explorer web UI that really helps (GraphIQL with extras). Everything happens in real time. so if you update a view, the UI updates.

There are lots of GraphQL clients but many of them do all sorts of crap you don’t need. I just use graphql-request which is super simple. But of course you can just use fetch() too.

There are also lots of “standards” for GraphQL that make it seem more complex than it is. Ignore that stuff and just start playing with a good server like Postgraphile.

Good luck!

This is nonsense. GraphQL queries are simple HTTP requests, with no more complexity than REST. You POST a query string and some JSON and it’s done. If your client makes it harder than that, don’t use it.

Here’s my workflow for creating an API with Postgraphile:

    create view graphql.object as select some,columns from table;
(That’s it)

It’s trivial to query it with curl, I’d give an example but I’m afk rn.

I’ve been using GraphQL for about the same amount of time as in the article and it solved a bunch of problems for me.

It’s so easy to use, and saves so much time - once you spend the time to understand it.

I’ve always felt that writing apps for Apple devices is more like creating phone accessories than building products.

Apple cares about selling iPhones and other devices. If your idea can help them sell more, and they can do it better, they will.

I think that’s perfectly natural and OK - and what’s more, I think it’s on the app developers to understand this and to plan for it.

You might get a few years head start on Apple, but you gotta be able to read the tea leaves.

The US has the worst health outcomes in the OECD - in particular for life expectancy, infant mortality, healthcare access, and chronic disease. So if you care about health, “another example” is literally any other OECD country.

And every one of those FAANGs would not exist without ASML, a European company.

You obviously don’t know what you’re talking about. I’m checking out of this thread.

Why smart people continue to say this is beyond me. There were so many problems with the USSR - central planning, corruption, bureaucracy, secrecy, misaligned incentives - and it's just not true that everyone was equal. Very few rational people would agree that the USSR is something that we should aspire to.

As far as I can tell, "look how well it worked for the USSR" is just a trope that's trotted out by people who don't want to accept that alternatives to the status quo might be possible.

Isn’t the only real difference that the yield function is being passed into the iterator instead of being a reserved word? I don’t think it’s clunky, although it took a few minutes for me to get it.

What was the uptake like? Would be super handy to know how well it was tolerated or if there were any unexpected surprises.

I’m pretty much decided on Capacitor for my new B2B SaaS, but I honestly had forgotten about the possibility of PWA deployment.

Firing Myself 2 years ago

I found myself on the phone to Rackspace, leaning on a desk for support, listening to their engineer patiently explain that backups for this MySQL instance had been cancelled over 2 months ago. Ah.

There is no part of this story that’s the protagonist’s fault. What a mess.

Are strong whistleblower protections what’s needed to balance this?

As an Australian I am absolutely horrified that we continue to put people in jail who have blown the whistle on the government here, and it makes me think that large organisations are absolutely terrified about strong whistleblowing protections.

This all suggests to me that whistleblower laws would be very effective.

It feels this way with PATs as well, with legacy PATs still necessary for most of the things I use them for, despite being pushed into the newer ones. And the documentation is terrible. I had the exact same thought, the PAT transition feels like an unfinished feature as does the API transition.

For me the API transition is even more bizarre since it’s almost trivial to wrap REST calls with GraphQL.

What it feels like to me is a mounting level of serious technical debt which isn’t being addressed, and if that’s not a sign of trouble in a product like GitHub, I don’t know what is.

For a long time the X Window System had a reputation for being difficult to configure.

Honestly I thought it was hard to configure because until I used Linux, my X terminals didn’t need to be configured at all!

I may be misremembering but I think my NCD terminal used bootp and probably a little tftp, then off it went. The hardest part was probably finding an Ethernet drop to plug it into.

Now - get off my lawn!

There is a lot more to meeting a customer’s needs than blindly doing what they say. Sometimes, you need to write code to protect them from their own (sometimes-but-not-always rational) decisions - or to protect other customers and stakeholder from them.

You also need to keep your own team nimble. I’ve seen plenty of systems that have just thrown code at the product, and they end up with SQL tables with 150 columns - most of which nobody uses, and which can’t be removed, and the customer ends up pissed off anyway because you can no longer turn their requests around quickly.

A good, layered design mitigates against this and makes it possible to continue to be productive even in the face of customer demands.

Externalising customisations is a huge benefit to productivity.

For me the real kicker was that Boeing convinced the FAA that the aircraft did not need redundant Angle of Attack sensors, even though they knew that this meant that there was a single point of failure in a system which had control authority (ie, MCAS).

Boeing did not disclose the existence of MCAS to pilots, and therefore did not train the pilots on how to recover from MCAS failure, and there was no redundancy in the key sensors that fed MCAS.

IIRC at least one of the crashes was caused by an AoA sensor failure.

Reminds me of Republic of Minerva, which was quickly attacked by Tongan savages at the behest of western powers.

100% agree that this is racist, even a cursory understanding of what happened makes it obvious that official Tongan troops backed by regional pacific nations were involved.

The whole thing was an artificial island created by an American anarcho-capitalist, making the claim that “western powers” were involved even more ridiculous, considering the protagonist. Wikipedia describes what happened (edited excerpt):

The Republic of Minerva was a micronation consisting of [snip] the reclaimed land of an artificial island in 1972. The architect was Las Vegas real estate millionaire and political activist Michael Oliver [snip] they anticipated a libertarian society with "no taxation, welfare, subsidies, or any form of economic interventionism."

When asked about the Minervan's project, the King of Tonga, Taufaʻahau Tupou IV, denied rumors that Tonga meant to claim sovereignty over it, yet said "it was in the best interest of Tonga not to allow a group of people, whose objects were to make money and whose activities could be harmful, to become established on the reefs." Neighboring countries agreed; Fiji’s Prime Minister, Ratu Sir Kamisese Mara, claimed the actions of the Minervans set a dangerous precedent: "If these people can claim Minerva, what would stop them from doing it here?"

Consequently, a conference of the neighboring states (Australia, New Zealand, Tonga, Fiji, Nauru, Samoa, and territory of Cook Islands) met on 24 February 1972 at which Tonga made a claim over the Minerva Reefs, and the rest of the states recognized its claim.

A Tongan expedition was sent to enforce the claim, arriving on 18 June 1972.

https://en.m.wikipedia.org/wiki/Republic_of_Minerva

There is no sense in any of this that anyone attacking these idiots were savages, and any statement claiming that they were is quite simply racist.

As an aside, I have been to most of these places, they are all gorgeous.