, 13 tweets, 3 min read Read on Twitter
There's no such thing as abstraction in web tools and never has been. Every framework claims that it will hide the complexity from you, but it always leaks through. You end up having to understand the framework, its dependencies, and the web primitives they're built on.
Fool me n times (TurboGears, Django, Rails, Rollup, Webpack, etc.), shame on you. Fool me n+1 times, shame on me, I guess.
This doesn't mean that no abstractions work. For most programmers, CPUs, TCP, and many others are leakless. Yes, there are cases where they leak. But those cases are unusual. The web is special: we seem incapable of producing an abstraction that doesn't leak in the normal case.
Agreed: proper abstractions are very rare. You have to think carefully and minimize design gaps. I'm struggling to think of one created in the 1980s or later, but I'm sure there are some. Please don't tell people that your new weekend project is one!

Study the designs of TCP and IP. They're very, very good. From a time before we were distracted by our phones every five minutes.
Everyone thinks that they're the special exception when they're in the throes of repeating the mistakes of history!
Let's make this concrete. An example of what would make a leakless abstraction over the web: no web API errors are possible. All failures occur in the tool's domain, not the underlying web domain. "That's impossible!" No, that's most language implementations before 2010 or so.
Example: you build your new language that compiles to JS. Adopt the following policy: if a user can cause code compiled from your language to emit *any* JS error, that's a bug. It's the same policy that Ruby etc. have: if you can cause a C-level error, it's a bug in Ruby.
If you file an issue where you can show Ruby segfaulting, they will treat it as a bug. There's no discussion about whether it's a bug; it's obviously a bug! But users of languages that compile to JS expect the equivalent of that segfaulting behavior. JS always leaks through.
This is a cute saying, but it says nothing about the boundaries or definition of a "layer". Is the entire web a "layer"? How many pages of spec does that encompass? It's OK if you want to round to the nearest 100,000 for simplicity!
Don't believe claims that a tool will hide all of the complexity of the web platform from you. Don't feel bad about yourself when it doesn't and you struggle; it's not your fault. Don't tell people that your new tool will save them from the web platform's complexity.
I often talk to people who have been programming the web for ~20 years and have the experience and knowledge to try to fix this, but are so exhausted by the churn and pop culture of "newer=better-than" that the thought of doing it sends them back to bed.
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Gary Bernhardt
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!