I'm excited to share my first new book (or e-book) in over five years! Understanding JavaScript Promises explains not just how promises work but also how to use them in the real world.
And the best part? It's free. Grab yours now.
Mom: Dad said you invented a thing? ESLint?
Me: Yes.
Mom: What is it?
Me: It finds and fixes problems in JavaScript.
Mom: Huh. Do people use it?
Me: Basically everyone writing JS.
Mom: How much did you make on it?
Me: Nothing.
Mom: I don’t understand your industry.
Me: Me either.
Before creating ESLint I knew next to nothing about parsers. Today, I know slightly more than that. Don’t let what you don’t know stop you from trying.
🧵 Hiring managers: there’s no reason to force people with 10+ years experience to take coding tests. You can’t last 10 years if you can’t ship code.
Here are some better approaches.
I never considered myself a great programmer. Solidly above average for sure, but not great. I attribute my career success to two things:
1. Being a good communicator.
2. Caring about details.
It’s amazing how far these two skills can get you.
There are four things I’d like to encourage every software engineer to do:
1. Save your money, at least a year’s worth of expenses that you can get to quickly.
2. Take a week off *at least* every 3-4 months whether you think you need it or not. Trust me, you need it.
My “Enough with the JavaScript already!” talk wasn’t about JS being bad, it was about HTML and CSS being good. If you can do something in just HTML, do it; if you can do something with just CSS, do it. Only when HTML+CSS fails you is it time for JS.
As someone who was attacked online for days after saying that the ESLint rewrite would not be in TypeScript, I can verify that there is a fairly aggressive pro-TypeScript faction online.
We need to stop attacking people for language or framework choices. It’s dumb.
When asked what advice I would give young software engineers, I used to talk about learning and code.
My advice now: save as much money as you can. All it takes is one serious health issue to derail your life and you can’t count on disability.
JavaScript is popular for the same reason PHP was popular: low barrier to entry for newcomers plus ubiquity (aka, easy to embed everywhere).
JavaScript remains popular largely due to much better evolution than PHP, which couldn’t figure out which way to grow.
How I think about loading/executing scripts:
Do it now:
<script src>
Do it later:
<script defer src>
I don’t care when you do it, just not now:
<script async src>
My simple rules for social media:
1. Facebook friends are people I’d invite over for dinner.
2. LinkedIn connections are people I’ve met professionally.
3. Anyone can follow me on Twitter unless they are assholes.
That’s why I haven’t accepted your invite. 😬
Reminder: everyone on the ESLint team is a volunteer. They are donating their time to the project and have spent most of today dealing with the compromised package in coordination with npm. I’m grateful for their dedication and how they’ve handled today.
3. Mind your health. If you are sick, stay home and rest. Don’t work from home, that’s not resting.
4. Get a hobby unrelated to tech. Learn a musical instrument, draw/paint, play a sport, etc. Give your tech brain time a rest and exercise your non-tech brain.
I’m by no means done writing books. Once I’m healthy again, I have a long list of titles on my todo list:
1. OOP in JS (2nd Ed)
2. Async JS
3. Understanding ES2017-2020
4. Understanding GraphQL
5. Understanding the DOM
6. Understanding Workers in the Browser
This is a true story that isn’t about open source but makes sense in the context of open source. I repeat, this is a 100% true story that isn’t about open source but gives a good idea about what it’s like to maintain an open source project. Ready? Here we go.
I fear that “you don’t need a CS degree to succeed as a programmer” (true!) is getting mixed up into “CS degrees aren’t worth it” (false) and “programmers with CS degrees all code the same.” (false)
Periodic reminder: “Please try in another browser” is something your support team should never say to a user. If that's actually the “fix” it means your engineers are the problem.
How many potential open source projects die like this?
1. Think of project to start
2. Think up name for project
3. Search npm for that name
4. Find the name is already in use
5. Eat cookies instead
Not sure when it happened, but the relationship between my parents and I has reversed. I’m the one nagging them to eat their vegetables and eat less sugar, and they’re the ones who say, “I can do what I want!”
When you say code is “readable,” you’re actually saying, “my brain interprets this code quickly.”
Because not everyone shares the same brain, it’s easy to get into a “yes it is”, “no it isn’t” debate about readability. Problem is, both sides are correct.
Last week, the ESLint TSC agreed to move forward with our first complete rewrite to reimagine ESLint for the next ten years.
If you’re a user, plugin developer, parser developer, or integrator, we want your feedback.
The gender pay gap isn't going to change unless we start talking about compensation. So, I'm sharing my salary history. Hoping that it helps at least one person.
I wish the larger tech companies would do something like open source fellowships, where they would provide salary, 401k, and health insurance to an OSS dev on a project they rely on for one year.
Imagine the cool things you could build with a year’s runway.
One decision that made my life better was to stop disagreeing with people on Twitter.
In real life, disagreements are a good way to learn about the other person, the topic, and even yourself.
I haven’t found Twitter useful for any of those.
After more than three years of not working, I discovered the part I missed the most was mentoring and coaching.
Thus, when I’m healthy enough, my plan is to offer coaching for devs. I know so many who don’t get the support and advice they need at work, and I think I can help.
JSLint complaint: not configurable enough
JSHint complaint: still not configurable enough
ESLint complaint: too configurable
There is basically no level of configurability that makes everyone happy.
In short, give experienced devs the chance to show you what makes them great rather than putting them through a rather insulting coding challenge that is best suited for folks without much experience.
Point being: attitudes towards open source are still very fragmented. As an industry, we need to come together to figure out how we value OSS and how we will support it.
And yes, this was an actual conversation between Mom and me. I only shortened the sentences to make it fit.
In case you missed it, my entire seven-part series on creating JavaScript promises from scratch is now available. In it, I teach you about promises while showing you how to implement them according to ECMA-262.
Thread 👇
I just don’t get the run on toilet paper. Things you can use as toilet paper: napkins, paper towels, washcloths, cotton towels, baby wipes, sheets, t-shirts, hats, scarfs, IE6.
Open source project lifycle:
1. A few people use it (100% love it)
3. More people use it (80% love it, 20% know how to make it better)
4. Lots of people use it (60% love it, 40% tolerate it)
5. Ubiquitous usage (50% love it, 25% tolerate it, 25% think you are ruining the world)
1. Ask the candidate to present some work they’ve done. That could be a system design, some open source code, a home automation project, etc. Ask questions throughout.
Just sent out emails to various ESLint contributors letting them know that the team has awarded them cash for their contributions. ESLint values all contributions and the team picks the top outside contributors each month to pay for their help. 💵🙏😀
The more JS tools that move to Rust, the more I think about how ESLint could do the same.
The stumbling block: the plugin ecosystem is all JS, and I believe, that is a big reason for ESLint’s success. Asking JS devs to write rules in Rust seems a bridge too far.
🤔
“There's a reason you separate military and the police. One fights the enemies of the state, the other serves and protects the people. When the military becomes both, then the enemies of the state tend to become the people.” - Commander Adama, BSG
GitHub Copilot raises some interesting questions about code ownership. Who is the owner when the code is generated for you?
This is important in open source, as CLAs and DCOs require you to give some guarantees that you are the owner, or at least, have permission from the owner.
This month marks two years since I had to stop working for health reasons. I’ve learned more about myself during this time than any other period in my life. While I can’t say it’s been fun, I am grateful I got to know myself better.
I do want to mention that I’ve seen some solid, sustained progress in my health the last few months with fewer setbacks. It will still probably be a couple of years before I’m 100% but hopeful to return to some semblance of normalcy during 2018. Thanks for the well wishes.
It’s my birthday and all I’m asking is that you tweet thanks to someone who’s had a positive impact on your life.
Let’s use Twitter to spread gratitude, at least for one day.
Five years ago this month I woke up and could barely get out of bed. Little did I know that I would rarely leave my home after that day.
It’s been quite a journey and I’m hopeful that this year I’ll get back to some semblance of a normal life.
2. Actually call their references. It’s shocking how few companies do this these days. Talk to their former bosses and colleagues. Find out what it’s like to work with them.
3. Have them work with you for a day on a specific project. See how they mesh with the team. Watch what they bring to the work. Pay them for this time.
This week’s good news: my brain has finally allowed me to read books again! 45 minutes each of the last three days. Of course, I have to take a nap immediately afterwards because it’s energy-intensive for me. But still, nice to get back to reading.
Thread: There’s a widespread belief that JavaScript became popular primarily due to its inclusion in web browsers. That is partly true, but JavaScript had a lot of competition a long the way and winning wasn’t a foregone conclusion.
Early in my career I was asked to create a popup that could get around pop up blockers. I succeeded. I told my boss I failed.
You do not have to use code for things you know are wrong.
This is VERY alarming! Facebook has started using ARIA markup, HTML obfuscation, and “hidden” content to bypass ad blockers and block analysis of ad content - exploiting web standards and accessibility techniques as a weapon against transparency.
I didn’t see the improvement in my health that I hoped for in 2019, but I noticed two small changes:
1. This year I could concentrate enough to read books.
2. I have been able to talk on the phone with my parents most days.
Small but powerful. 🙏
I love when people share the ESLint rules they wrote that enforce their personal, team, framework, or company best practices. This is EXACTLY the use case ESLint was created for.
AWS CodeWhisperer is a GitHub Copilot alternative that actually tracks the references used to generate code. 🎉
It will even tell you the license and GitHub repo so you can investigate further. Why GitHub Copilot doesn’t do this is beyond me.
To learn Rust, I've been rewriting my JSON parser from JavaScript and compiling into WebAssembly. Finished tokenization and before moving forward, decide to do some benchmarking.
Yes, Rust+WebAssembly is significantly faster. 🎉
The top three most depended on npm packages are:
1. TypeScript
2. React
3. ESLint
One of these things is not like the other. Can you spot the difference?
Even though
@left_pad
didn't create Babel, he made Babel what it is today, and he did so by effectively giving up the opportunity to make more money in private industry.
We can't keep asking maintainers to work for the same or less than new college grads get year one.
Companies who pay engineers to work on OSS projects that the company created and maintains control over is very different than companies who pay engineers to work on OSS projects they did not create or control. The latter deserves more praise.
Seven years ago this week I woke up feeling sicker than I'd ever felt. I thought it was a bad flu and I'd miss a week of work. Little did I know I'd barely leave the house again.
Life can change in a hurry. Don't take the gifts of today for granted.
Six years ago this week I woke up feeling so sick I could barely move. Little did I know I wouldn’t get much better and I’d basically stop leaving the house.
Life can change quickly, don’t take things for granted.
How I think about CSS layouts now:
1. If I find myself wanting to use floats, use flexbox instead.
2. If I find myself wanting to use a table for layout, use a grid instead.
I don’t think a GitHub profile can or should replace a resume. However, if a candidate has an active profile, I think evaluating that code is a better indicator of technical skills than any take-home or on-site coding exercise.
It's finally here! The first major release of ESLint in almost two years. This took a ton of work by a lot of people, and we couldn't have done it without the support of our sponsors. ❤️🙏