HN user

erik_seaberg

4,519 karma
Posts1
Comments2,900
View on HN

Boring repetition is a bad fit for the human brain. Working memory is very small. Mistakes per line are frequent. It wants to see patterns that are not quite there. Even when it works out, it's millions of times slower than having the computer fill in grunt work from a more concise and readable spec of the problem.

Pairing doesn't replace code review because the reviewer needs to see the finished branch with fresh eyes, unbiased by discussion and false starts, to know whether it's safe and clearly explained in writing for every oncall in the future.

(I also need peace and quiet to think.)

A "trusted team" pushing unreviewed code to prod is breathtakingly reckless. I don't trust anyone to do that. Not even myself. Please review my code, because our customers matter and so does oncall's peace and quiet.

On svn we reviewed finished feature branches and merged them to the next release branch every few days, though svn routinely crapped itself on spurious conflicts like renames. Git just enables this reliably.

The story of Rogue 2 years ago

I'm reminded of Bright's https://en.wikipedia.org/wiki/Empire_(1977_video_game), a turn-based PvP strategy game. My friend's 1989-ish instance was sadistic enough to batch execute four turns per day. Every player had to rush to a TTY every six hours to give new marching orders. If you study or sleep too late, your forces and factories could be wiped out.

The obsessives, living on campus newly free of supervision, were line printing maps and writing logistic planning tools that foreshadowed EVE Online's "spreadsheets in space."

Fixed pitch fonts and ASCII art are outdated; not even Dwarf Fortress relies on them anymore. You can sort of line up numbers, but you have to be careful to use U+2007 FIGURE SPACE (not U+0020 SPACE) and U+2212 MINUS (not U+002D HYPHEN-MINUS) to match the size of an Arabic digit. Code indentation only needs to be visibly bigger or smaller, and lining up words and formulae are jobs for TeX.

This comes down to Postel's Law; they recommend liberally receiving what you conservatively cannot send. Also from RFC 2616 but not cited by the author:

This flexibility regarding line breaks applies only to text media in the entity-body; a bare CR or LF MUST NOT be substituted for CRLF within any of the HTTP control structures (such as header fields and multipart boundaries).

They aren't going to allow sending LF until at least one bump to a higher protocol version where every server MUST accept it.

The resources are 0.004% of the population of one wealthy country, who devoted themselves to shaping about 400 tons of stainless steel. Nothing constructive comes of starving a project that size, certainly not the global carbon sequestration I'd like to see.

Escaping pollution is not a reason for going. Creating habitable areas on/under Mars is clearly harder than maintaining habitable areas on/under Earth. We have people who are much more motivated to do it and we might learn more from it, though.

Hundreds of programming languages set very high expectations, which should support groundbreaking ideas like Lisp style macros and multimethods, ML style pattern matching, Prolog style search and unification, and Smalltalk style metaprogramming on runtime classes and overriding doesNotUnderstand.

I have to admit that right now it's a dynamically typed imperative language that looks a lot like Python.

Static typing prevents reusing functions unless they're generic. The other option is to give up static typing and pass "all" everywhere, like a dynamic language.

Google is famous for tough interviews and accepting a small fraction of applicants. I was impressed with everyone I met, and Pike's "incapable" statement was baseless and insulting.

Fitting a C compiler on a PDP-11 was an impressive achievement, but as a language it was a poor foundation to build anything reliable, and we still live with the consequences.