32 karma · joined May 19, 2015
If I had turned an AI loose against the original codebase, I think it would have just churned away copying the existing patterns and debugging any runtime errors that result. I don't think an AI would have ever voluntarily told me "this form library is costing time and effort, we should replace it with such and such instead"
There is tons of satsifaction in actually creating nuts and bolts frameworks. After you encounter difficulties in creating a real world product you see the need for tools to solve those problems, so crafting those tools and then using them does feel like winning and shipping and solving real problems.
Now TypeScript catches a lot of my mistakes before they reach runtime.
Now I have good enough browser automation testing tools to catch regressions in the frontend.
Now it’s quick and easy to run a specific database version for each app I’m working on with docker.
Now I can automate deployment to the cloud instead of having to rely on an entire IT department.
Now I have a scalable way to publish and consume reusable units of code as npm packages.
None of this was the case in what this author seems to think were the good old days. If web development seemed easy to him back then, I doubt he was working on complex projects
But on the other hand, I think 95% of the icons in the first menu in this article are clear and probably help most people navigate faster.
Now looking back at a lot of other languages that don’t express nullability, it’s like, what were they thinking? How did I not wish for nullability in type declarations in all my years of dealing with NullPointerExceptions?
ISO 8601 prescribes string representations, not integers, and it requires at least four digits for the year, and the year the Convention du Mètre was signed is expressed as 1875, not 0.
"2^16 = 65536
...
so if a search space of 65536 costs you $8"
If you think the numbers I'm arriving at are wrong then can you specify exactly where my cost function goes wrong?