You've got far more Haskell experience than I do, but I have done some pretty heavy refactoring on large java codebases. The process always seemed to be, tease out some interfaces and switch the implementation of those interfaces. Over and over and over. I could lean on javac and tests but some knots are hard to untangle and take a long time.
I believe you that the in the large it's still hard. It seems so much more pleasant day to day untangling that big ball of string with Haskell rather than Java.
microsoft in the 90's would relentlessly execute. Word and excel spring to mind, but really hundreds of little software shops woke up to discover their product was now a windows or office feature.
Think instagram eating snap, but for lots and lots of products.
Isn’t the flip side to that Cambridge analytica? A bunch of anon accounts devoted to pushing an agenda? Maybe not. It sure seems like a knife edge to balance on.
I agree with you, I like the ability to create random one shot accounts to comment on something, but that’s exploitable in weird ways.
Single pass generally means one crack at each compilation unit. it's ok to keep a list of unresolved forward references and go back and inject (fix-up) the address once it's known. I mean, that would still count as a single pass. If they're not in the same file, the linker does it.
I'm just super impressed Facebook admins can string two sentences together in a coherent way! I'm happy to give them a piece of gum as a reward. Those fun guys just need to promise not to walk while they chew it.