Live data from Hacker News

Solving `Passport Application` with Haskell

jameshaydon.github.io

111–120 of 131 posts

Re: Solving `Passport Application` with Haskell

#112

Haskell itself is an amazing language once it "clicks". But all the tooling around Haskell is just really bad.

This isn't really true nowadays.

Also, you can build pretty much everything in Haskell with a plain text editor and ghci. You get better code that way too!

Re: Solving `Passport Application` with Haskell

#113

I've worked on a variety of large UK government systems for the past ten years. This blog encapsulates the problem of writing government services/software, which often results in strange outcomes. Writing software for government is essentially the codification of centuries worth of Acts of Parliament. Now imagine building the HMPO passport system, and then some underlying Law/Act is changed or repealed etc. Now someo…

Do you have any insight as to why, seemingly, there is no contractual obligation on contractors to make a working system. They seem to make something approximating a working system, vastly overcharge -- like x1000 -- for output that appears to be 3 months of work by one junior programmer, but then get paid as if the system actually worked.

Three reasons, no incentives, no competition and no fraud.

Unlike in private companies, government employees are often very hard to fire, even if they tragically underperform. If your salary does not depend at all on your performance, you play by the book, follow the rules and don't particularly care about putting in good work. You have no incentives to do so. It doesn't matter how the contractor you picked performs, as long as they can't prove negligence on your part, you're not getting fired. You won't be promoted either, even if they deliver under budget and months before the deadline.

In a private company, the owner wants to make money, so there's an incentive to perform. Underperforming employees (or even entire departments) are simply cut. If a company fails at this too badly (all companies fail to some extend), the entire company underperforms and loses customers. Ultimately, the market ensures that companies grow if they're good at this and shrink if they aren't.

With governments, this is, again, not the case. You aren't going to switch to a competing passport system and drive this one out of the market, no matter how badly it sucks. Metrics won't change much, no matter how bad the UX is, as the system provides a critical service which has no alternative. This is the no competition problem.

Private companies also have more freedom to pick contractors. It's really bad PR for the government if their employees choose contractors through nepotism, so laws have been passed that standardize the contractor selection process. This means that, even if you know a contractor is not the right choice, you may be prevented from doing anything about this. Because al rules can be gamed, most government contracts are won by companies who know how to game the rules, not those who make good software and would be chosen by a knowledgeable employee. This is the no fraud problem.

Re: Solving `Passport Application` with Haskell

#114
post #32

Earlier quoted context omitted.

Combinator style, while good and well designed and all they only ended up inventing the next perl. #haskell on freenode in the 2000s was a really fun place. I could not for the life of me convince anyone else to use the language.

Oh, I owe a lot to freenode and #haskell and #math in particular. I remember one of them ran a lecture on category theory, live. It was also there I first heard about Martin-Löf type theory. It was such a great time and place for a young person interested in learning about Haskell.

Do you remember who ran it? I used to go to hack phi at UPenn, which attracted a significant chunk of the community.

Re: Solving `Passport Application` with Haskell

#115

Earlier quoted context omitted.

That’s interesting, no requirement for parental birth certificates? I was asked to provide (I am British, wife is Hungarian, living in Hungary) both parents’ birth certificates and all four grandparents’ birth certificates. My wife is not in touch with her father, so we had to submit a cover letter explaining the situation, which was accepted (although I don’t really see why it was relevant anyway, my son’s Britishne…

In my case, as a British citizen married to a European living outside the UK, I had way fewer requests/demands for documentation. All I needed to do was submit my own details, and a copy of both the marriage certificate and birth certificate for the child. The assumption was made that as a married couple the child had me as the father, and as I'm British then so were they. No references at all to grandparents, or eve…

Were you born before 1983? It seems that makes it easier

Re: Solving `Passport Application` with Haskell

#116
post #32

Earlier quoted context omitted.

Combinator style, while good and well designed and all they only ended up inventing the next perl. #haskell on freenode in the 2000s was a really fun place. I could not for the life of me convince anyone else to use the language.

err, no the perl6 guys ended up inventing the new perl (now renamed raku) https://rakujourney.wordpress.com/2024/10/12/raku-burritos/ the first perl6 parser (pugs) was written in Haskell btw

I'm aware. I was using the world pejoratively. Combinator style degrades into line noise.

Re: Solving `Passport Application` with Haskell

#117
post #97

> What are the base cases? A base case is an ancestor whose Britishness does not depend on a parent, e.g. someone who was naturalised, or born in the UK before 1983 (which makes one unconditionally british regardless of parents). That's right, further into the future we get from 1983, the taller these call-stacks can get. This is insane to me, coming from a country that simply has a central database of all citizens a…

> citizenship check is probably something like a single SELECT on an SQL table I am willing to bet, with extremely unfavorable odds to me, that is not true

SingPass[0] says hi.

[0] https://www.singpass.gov.sg/main/

Re: Solving `Passport Application` with Haskell

#118
post #114

Earlier quoted context omitted.

Oh, I owe a lot to freenode and #haskell and #math in particular. I remember one of them ran a lecture on category theory, live. It was also there I first heard about Martin-Löf type theory. It was such a great time and place for a young person interested in learning about Haskell.

Do you remember who ran it? I used to go to hack phi at UPenn, which attracted a significant chunk of the community.

The lecture? No, unfortunately.

Re: Solving `Passport Application` with Haskell

#119
post #96

I've worked on a variety of large UK government systems for the past ten years. This blog encapsulates the problem of writing government services/software, which often results in strange outcomes. Writing software for government is essentially the codification of centuries worth of Acts of Parliament. Now imagine building the HMPO passport system, and then some underlying Law/Act is changed or repealed etc. Now someo…

Is there an opportunity for reusable OSS rule systems? It seems that every government at every level could use an expressive system for defining and versioning them. I suspect part of the gap here is, as you note, everything technical is outsourced and so there is not enough institutional capacity to envision and execute what would be a quite revolutionary re-architecture. I find it extremely frustrating that the gov…

Yes, absolutely. Although that would require care and forethought regarding unintended consequences.

Most roads will lead back to consultancies stepping-in because the government org will likely lack the skills. And it's very easy for a consultancy to claim they're experts, but throw an army of graduates at it.

Interoperability between rules based systems (and legacy) software need to be considered too. It's a massive problem that will grow with time... Most government departments have some form of every generation of technology.

Re: Solving `Passport Application` with Haskell

#120
post #89

I've worked on a variety of large UK government systems for the past ten years. This blog encapsulates the problem of writing government services/software, which often results in strange outcomes. Writing software for government is essentially the codification of centuries worth of Acts of Parliament. Now imagine building the HMPO passport system, and then some underlying Law/Act is changed or repealed etc. Now someo…

Has outsourcing ever worked for anyone? I really haven’t heard a success story involving a government outsourcing _something_ like ever.

I used to work in Spend Controls in Cabinet Office, so I got to see this across about 20 UK Government departments.

It's a bit of a race to the bottom regarding outsourcing, there are good companies and there are good technologist's but they never last more than a few years due to poor contracts, poor decision-making and poor pay.

I've actually seen some very good companies deliver on time and under budget, but then the company fails because they did the job too well and follow-up work wasn't needed.

I think that for outsourcing companies "wage theft" and doing just enough to meet the contract are core components of their business. That is, they need to optimise for high fees, low pay and the bare-minimum in quality.

Post reply on HN