Essential insights from Hacker News discussions

Solving `Passport Application` with Haskell

Here's a summary of the themes from the Hacker News discussion:

Passport Quality and Cost

Several users commented on the perceived quality and cost of different passports, with particular focus on the Australian passport and comparisons to others.

  • The Australian passport is described as "not quite expensive" when compared to others, but also as "so notoriously badly bound, holders joke Australian Border Protection forces test for forgeries by checking if the blue cover curls: if not, it's a fake."
  • One user lamented, "The Australian passport curl was so disappointing. I have a decade-old passport from my third-world country of origin, and that was in far better shape than my new Australian passport that was freshly delivered."

Complexity and Vagueness in Citizenship Application Processes

A significant portion of the discussion revolved around the detailed and often confusing requirements for proving citizenship, particularly for children born abroad. Users shared their experiences with documentation, highlighting a perceived lack of clarity and a high degree of variability in how applications are processed.

  • One user outlined the extensive documentation required for a child's British citizenship application in Japan: "Certified copy of my birth certificate... Original (not photocopy) of Japanese family register and translation. Certificate of acceptance of notification of birth, original and translation. Original Marriage certificate and translation. Colour photocopy of every page of my childs Japanese passport. Copy photocopy of the passport of an American or British citizen who confirms that child is mine."
  • The complexity was exacerbated by lineage issues: "In fact applicant's father (me) was born in the UK in this case, but applicant's father's father was not, the cause of the extra complications."
  • Questions arose about how the system handles unusual family structures: "I have to wonder how they would handle cases where a person doesn't have a legal father at all."
  • The reasons for seemingly arbitrary document requests were questioned: "> Colour photocopy of every page of my childs Japanese passport. But why?" with a suggestion that it could be "to deduce your travel history" or due to other matching criteria like a shared name.
  • Another user shared a more demanding experience with a British nationality application: "I was asked to provide (I am British, wife is Hungarian, living in Hungary) both parents’ birth certificates and all four grandparents’ birth certificates."
  • There was a sentiment that the process is not well-streamlined: "The process is pretty unclear, and in general you seem to have to just keep submitting documents until they are satisfied." and "This is essentially happened to me, the '75% of the initial doc requests turned out to be irrelevant' was referring to this sort of thing."

Efficiency and Usability of UK Government Digital Services

In contrast to the complexities of citizenship applications, the online UK passport renewal process received widespread praise for its efficiency and user-friendliness.

  • Users consistently lauded the online system: "Not only can you complete a UK Passport Application completely online... you can apply for a brand new passport... online, from outside the UK, with just a mobile device without downloading some special app, including taking the photos."
  • "I renewed recently which was my first time using the online system. The entire process was exceptionally fast. I got the passport back in less than 2 weeks from California."
  • The user experience was described positively: "I went through the UK online passport renewal system last year, and it is the best website I have used in a very very long time. A real breath of fresh air. It worked perfectly on my old computer and 'ancient' browser. Everything very simple / accessible / clear, colours, text, buttons, fields, requirements. A simple step-by-step navigation and actually friendly."
  • This was contrasted with other countries' systems: "In comparison my Canadian passport renewal (damaged after 3 years) from California took 4 months. Was entirely paper based and required ridiculous requirements such as requiring a reference and a photograph stamped by photographer."
  • Another user expressed that "It is a shame that more businesses dont care about their customers enough to invest in such a well designed website. Well done HMPO."
  • Even those critical of other UK government aspects acknowledged this success: "Seconded! In my experience, Gov.UK does pretty well in general and am happy to say that as one who privately fumes about various aspects of Britain in recent years."
  • It was noted that the challenges arise in more complex, less automated scenarios: "It's the more complex cases, first requests from abroad, etc., that lack automation."

International Passport Renewal Inconveniences

Several users shared experiences with passport renewal processes in other countries that involved significant in-person requirements, long waiting times, or inconvenient geographic limitations.

  • The Swedish passport renewal process was highlighted as particularly cumbersome: "Just being able to do it via mail sounds like luxury, to renew a Swedish passport you need to visit an embassy in person. And then in 2 weeks go back in person to pick it up. Really fun when the embassy is on the other side of the country and it means expensive plane trips."
  • Belgium's process, while fast once initiated, still required in-person visits that could be difficult for citizens living abroad: "My only saving grace is that they sometimes visit my city., and I can register there. But that registration is only valid for 1 year, and they don't visit every year... And that is still 2h+ one way of travel for me, for something they already have."

Perceived Complexity of Haskell Syntax and Operators

A smaller thread of the discussion focused on the perceived difficulty or counter-intuitiveness of Haskell's syntax and operators, particularly for those unfamiliar with functional programming concepts.

  • One user described Haskell's syntax as "intuitive _after_ someone explains it to me, but not intuitive much _before_ the explanation." They noted that "Every Haskell code I've seen is plagued with a plethora of operators which aim to make the code concise but it's not obvious what they do just by looking at them."
  • Another user clarified what "intuitive" might mean in this context, questioning if something is truly intuitive if it requires prior explanation.
  • A counterpoint suggested that the complexity arises from a reliance on general-purpose combinators: "With Haskell code it is often so that the code which actually does something is expressed in terms of combinators. These combinators are often very general, so one must do a bit of mental work to understand what they do in this particular context."
  • A different perspective argued that the operators are often standard and that the learning curve is comparable to other languages: "Most of the operators in that link are bog standard, and among the least interesting things to say about Haskell." and "The standard should be: how much can you understand once you learn the basics and do a couple of tutorials?"
  • The argument was made that familiar languages also carry "incidental complexity" that is internalized over time: "Haskell has some up-front incidental complexity, but it's a difference of degree not kind from popular starting languages. It's easy to underestimate how much you had to learn about Algol-style languages that you've just internalized so well that you don't even realize." Examples given included Python's colon usage and the = operator, and English adjective order rules.