Newsletter #8: Killing the web!
Hey! Who’s that? It’s me, Stefan, from the oida.dev newsletter. Wow, some time has passed… almost four months until the last edition. There has been a lot of silence around my projects, my website, and my articles.
I hope I can find a flow and schedule again to produce more valuable content for you!
I got a ton of new subscribers ever since I opened up registrations. I guess most of you subscribed due to my TypeScript and JavaScript content. So if this is the first newsletter you receive, prepare for something slightly different: Links, discussions, insights into all things programming. Starting from interesting things I see in programming language design, up to articles that I find impactful but might not have gained enough attention in our community.
Enjoy!
What happened #
Okay, I think I can’t just come back after four months without a little statement on what actually happened. The TL/DR: A huge shift in the style of projects that I’ve been doing. For the last 10 years, I’ve been doing front-end development mostly, but now I see myself more and more in Serverless, systems programming, distributed back-end services.
This sudden change also meant that I had to brush up a lot of old knowledge, prototype a lot, trying to find my view around how things are.
Usually, I blog about my learnings, but I still have to find my voice on all the new insights that I gain.
It’s interesting, kinda weird … but also a welcome change of pace from an industry that started dragging. I can’ quite put my finger on what has changed … or if it’s just the same discussions. As in:
- … browser XY is killing the web!
- No the other browser is killing the web!
- Don’t use JS so much!
- No, we can solve everything in JS!
- TypeScript is bad!
- TypeScript is actually good!
- Accessibility is easy, why is nobody doing it right
- Doing Accessibility right is actually pretty hard!
You get the idea…
Maybe it’s because we’ve been isolated for so long that it’s hard for us to talk to others about issues other than popping out a couple of tweets. Maybe we miss a conference! I’ve never been to a JSConf EU, sadly, but I always had the feeling that it contributed heavily to ground the community and establish a room for approaching each other in a respectful manner.
How do you feel about the current state of web development and our community?
New articles #
OK, content! There are some nice articles for you.
Do you have a TypeScript problem you need to fix? I gladly work with you on a solution as long as I can craft an article out of it. Drop me a tweet with a playground link and I see what I can do!
TypeScript: Array.includes on narrow types. If you have a very narrow set of possible values for your array, it gets increasingly hard to reasonably use indexOf
or includes
methods. This article explains why with some workarounds you can provide!
TypeScript: Unexpected intersections. Why is it so hard to write something like dest[key] = source[key]
in TypeScript? It has to do with a lot of trade-offs and edge cases you might not consider. This article tells you everything about it.
Node: Upgrading Node.js dependencies after a yarn audit. I always have trouble working with yarn as I’m so used to NPM. Audits and fixing dependencies is one problem I constantly stumble upon. This is a solution I’ve found. Do you know more? Please let me know, I take every piece of advice I can get!
Cinema #
The oida.dev cinema. Techflix and conference talks that I found helpful and interesting!
Dan Saks - “New” Features In C - That was such a beautiful talk on everything that was important between C90, C99, C11, and so on. I haven’t written C in a while, and after this presentation, I couldn’t tell which edition I’ve actually used. It’s good content if you are interested in programming language design and the trade-offs that designers need to do.
For example:
C didn’t have a boolean type. Adding a type bool
would’ve broken a lot of user code since folks started implementing bool
on their own: typedef enum { false, true } bool;
. This lead to a cascade of rules, like the _Uppercase
letter convention that signals a reserved word so compiler vendors and language designers were able to introduce changes. The bool
you use in C is actually an alias in stdbool.h
for _Bool
, the actual type! Talking about smooshgate here!
C99 added single-line comments that begin with //
, like you are used to from C++, Java, JavaScript, and the like. This was the only change everybody was immediately happy with. I didn’t know it took C until 1999 to get single-line comments into the standard. But hey, it takes CSS even longer!
There are long long
integers. How long? Very long! Long long? Long long! Cue Bob Marley!
All the peculiarities that come into play when creating multi-dimensional arrays. This. is. so. hard. in C!
A fascinating talk, check it out!
Links #
EcmaScript Realms. I’ve worked a lot with the vm
package in Node that allows for a new V8 Context inside your application. This is eval
but without evil intentions. Executing arbitrary JavaScript code within JavaScript is a thing, there have been many approaches but not a good solution. Realms try to solve that! A very interesting proposal that I’m really looking forward to.
Wikimedia is using Vue.js. Volker gives very detailed info on why Wikimedia bets on Vue.js. I like when I read decisions like that. There isn’t a single tool that is the right one for everything. It’s great that we can choose. Variety is important!
Stay Alert. Rich Harris writes on everything that happened in regards to removing alert
and similar functions from cross-origin IFrames. If you missed the news and the drama, he really gives a good overview. And also a lot of opinions. I’m still unsure how I feel about this.
HTTP/3 from A to Z. Robin Marx explains everything about HTTP/3 in this 3-parter series on Smashing Magazine. The first one is published, and it’s a good read! If you’ve ever wondered why we need the next HTTP, this one is a good start.
That’s it for today! #
It’s good to be back writing! I have so many stories to tell and I can’t wait to pour everything into articles and newsletters. I’ve been dissecting Deno.js, worked out the architectural differences between AWS Lambda and Azure Functions, know more about the Node.js bootstrap phase… oh… and some Rust article might also come up!
Cheers!
– Stefan