Dynamically typed languages are predatory lenders for tech debt You get more flexibility up front, but it’s not clear that it helps you ship any faster—then, sooner or later, the interest comes due, and you end up paying more than you would’ve if you’d borrowed less at the start
-
-
-
</pretending-there-are-not-static-checkers-for-dynamic-languages>. Personally I'm a fan of gradual typing with static checks as part of the CI pipeline (for example mypy). Most bugs don't come from type mismatches any way.
-
Most of the static checkers for dynamic languages don’t work, in the sense that I want of guaranteeing soundness. And most of my bugs do get caught by type mismatches, because I represent more things with types than you’re probably thinking of.
-
Things like https://www.python.org/dev/peps/pep-0484/#newtype-helper-function … prevent more bugs than traditional type checks. I can count the bugs I had due to type mismatch and I work almost exclusively with dynamically (but strongly typed) languages. And for Python exactly 0 since I started enforcing pylint.
-
You’re only enforcing very simple types with those systems, and not representing most invariants with types, so of course there are very few real bugs that manifest as “type errors”. There are many more program properties that I think of as types than I believe you do.
-
But why stuff those into types rather than building in a custom constraint solver adapted to suit your actual domain?
-
Types can express a lot! But as long as it’s a sound analysis that I can run before the code gets into prod, I don’t care whether it’s called a type system or what. It’s nicer when integrated into the compiler, whether intrinsically, through a plug-in, or in the language itself.
-
Yea, I just think that gradual/optional typing + a custom domain specific constraint solver is a superior approach to “type all the things”.
End of conversation
New conversation -
-
-
Incur debt, refinance, attempt to refinance again, etc.?

-
... regret, sadness, broken old age alone
End of conversation
New conversation -
-
-
Call the whole process “agile” to justify the massive waste incurred by not doing it the right way to begin with.
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
-
-
Oh hi! I have Haskell in production serving a million users, 'sup. <3
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
-
-
not these days. it has been that way since at least the mid 90's!
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.