#RxJS
core team lead. Dad. Art Lover. Literally not paid by the observable, or for anything RxJS-related. My views actually belong to
@_jayphelps
. he/him
Zack lost his little girl tragically in a housefire. In this unfair world, he’s now faced with the financial burden of this tragedy.
I’m offering an 8hr RxJS training to anyone that sends me proof they donated $200 or more. This is half as much as you would pay at a conference
“Don't worry Sadie, daddy's going to walk you home darling. I'm so sorry that you're going to be there alone, my sweet girl - I still have to be strong for your brothers and sisters. But I promise when my time here is done, I will come find you. Daddy will find you, and then…
1/ Me at age 38, versus me at age 42.
Today is my birthday. I'm not posting this just to show off. (I mean I am proud) I'm posting this because I am hoping it inspires somebody to do something to take care of themselves consistently.
I seriously don't understand how people are parents, employees, do open source, and have time for hobbies and other interests. My life is on autopilot, barely a gap in time where I'm not exhausted. Especially during this pandemic.
If you're a complete beginner starting off in JavaScript, there is nothing wrong with just learning a framework up front. Don't listen to people that say you have to master fundamentals first. You have to master them *eventually* but you need to have fun and be productive first.
When I first flew out to interview at Netflix in 2014, I didn't think I was qualified. I found myself -- an overweight, 37 year old father of 3, with no college degree -- sitting next to two bright, young fresh college grads. One from MIT, the other Carnegie Melon.
Open Source is such a strange thing. The open source work I do is clearly the most impactful work I do, but no one wants to pay me to work on it. Yet I'm asked to speak about it, and the work I'm actually *paid* to do no one really wants to hear about. 🤔
PSA: THIS IS NOT WHAT "WORKING FROM HOME" IS LIKE
I've been working from home for nearly a year.
What's going on now is very different. Kids are home. Everything is shut down. Supplies are critical. Stress is high. Worries are high.
WFH is usually more streamlined than this.
If you'd have told me 15 years ago, when I was a Windows developer writing C#, and using GUIs for everything, that I'd now be writing JavaScript on a Linux machine with a text editor and spending hours a day in terminal, I'd have thought you were crazy.
Keep an open mind in tech
After a bad experience on Twitter a while back, about 80% of the time I type up a tweet, usually to say something fun, help, or even encourage someone else, I delete it and walk away, out of fear that something I don't see in it will offend someone.
Folks, changing names away from things like "master" and "slave" or "whitelist" and "blacklist" is about making everyone feel welcome
MATTERS
+ Inclusion
DOES NOT MATTER
+ Your feelings on "what the world is coming to"
+ Your "slippery slopes"
+ Your "well actually" etymologies
Friends: JSX, CSS-in-JS, just say no! SEPARATE YOUR CONCERNS!
Separation of concerns by file IS NOT ENOUGH. Concerns must now be in separate docker containers. Ideally in different AWS regions. Don't let that HTML touch your JavaScript! Don't do it!
Just think of the concerns!
Add comments about WHY code exists, not what it does. The code is right there, we know what it does.
Developers that can't or don't write good comments aren't great developers yet.
StackOverflow usage pattern:
1. Find a question related to your needs
2. Find the accepted answer
3. Scroll down to find the BETTER answer that wasn't accepted.
4. Wish you could change the accepted answer.
- Visual Studio Code
- GitHub
- npm
- Edge is now Chromium-based
@Microsoft
used to be the closed-source "M$" back in the day. Now I have to say I'd actually want to work for them, as they seem like good stewards of open source.
Time will tell, I guess.
Folks, DO NOT STOP using console.log. Stepping through code and logging are two different things, with different use cases. One gives you a few into what's happening at a specific time, the other gives you a view into what's happening over time.
I've often seen people getting the first item out of an array using `filter(fn)[0]`, when the really wanted `find(fn)`.
The former will loop over *all* the items, *and* create an additional array. The latter will find the first one, return it, and stop.
Should be a lint rule 🤔
I disagree with this advice.
Start with whatever makes you happy and productive and learn from there. Don't let people tell you how you should be learning, you need to figure that out on your own
(You should learn fundamentals eventually)
People have a really bad habit of criticizing open source software they once benefited from, or possibly never even used.
It's free software. If you prefer something else, that's great. But you don't need to crap on someone else's hard work. Make the world better, not worse.
I just realized in 21 years, I've never worked at a company where I saw an engineer get a promotion except Google. And at Google, you basically have to move a mountain to get one if you're senior. I think everywhere else people just find new jobs for promotions. 🤔
After 20 years of web development I finally can stop rolling my own dialogs!
🎉🎉🎉
HTML 5.2 features a <dialog> element. It's already supported in
#Chrome
, and Chrome was nice enough to provide a polyfill for it as well! 💕
Today I learned that node's EventEmitter suffers from an issue called "producer interference".
That's where an error thrown by a synchronous consumer (whomever called `on`) prevents the producer (the `EventEmitter`) from notifying subsequent other consumers.
This is something…
Over-engineering is a serious problem. In my opinion, the more brilliant and ambitious somebody is, the more guilty they are of over-engineering solutions and overstating the benefits of it.
IMO, the
#JavaScript
pipeline operator is the single most important proposal on the
#TC39
's docket, whether they know it or not. It will unlock so many powerful new functional patterns in JavaScript, and even drastically improve
#TypeScript
Here's a proposal that is at stage 3, that I think will surprise people when they start seeing it in code soon-ish.
The `at` method on indexables will allow you to do negative selections that start in the back of the indexable (arrays).
🚨🚨🚨🚨🚨🚨
Are you a web developer?
Do you wish you could do SOMETHING about the pandemic?
Then contribute to this OPEN SOURCE project that helps hospitals plan for
#COVID19
!
Since I did not have a classic CS background, having dropped out of art school. I had to learn CS vernacular "the hard way".
I'm pretty solid after 21 years. But imagine where I'd be without patient coworkers willing to explain things.
BE KIND. ♥️
Pro-tip: When you need to kill a process in Terminal, mash CTRL + C over and over and over again obsessively until the process stops.
This works _exactly_ like up buttons on elevators and crosswalk buttons. THE FASTER AND HARDER YOU PRESS IT, THE FASTER IT WORKS!
Anyone that looks at existing code and thinks "What is this garbage?" and criticizes the previous author is probably missing context, and just doesn't have the experience to know how this happens. Old code bases, months or years of quick fixes, long nights. It happens. 1/2
If you want to move your family to Silicon Valley today, and you want to own a (modest*) home you must:
+ Have > $300K in the bank
+ AND have a collective, liquid (not stock), household income of > $200K/year
+ AND Ideally be under 35*
Otherwise, turn back. (1/5)
The pipeline operator could be the single best feature since destructuring added to JavaScript if it lands IMO.
If I had to choose between this and Observable landing in JS, I'd honestly choose the pipeline operator,
@littledan
. I'm a big fan
So today was the first day where I was working from home, and I got to have lunch just me and my 8yo son. He chose McDonald's.
I wouldn't trade that lunch for a thousand free lunches at Google, et al.
#remotework
is the best.
Mantis is probably one of the most impressive things in Netflix's tech stack. I never thought they'd open source this. I worked on one of the first tools to consume it.
Real-time, streaming events at scale!
TIL that Error objects in
#JavaScript
will leak closures until you read `stack`. So don't keep them around.
In other words, everything in the closure at the point `new Error` was called, will stick around for as long as you have a reference to the error until you read `stack`.
Thinking about the Nigerian government blocking Twitter: They have no idea that Nigerians were making serious headway getting recognition in American tech twitter. That's a gateway to a LOT of money and jobs. It's all about the Nigerian president's pride. SMH.
Dear developers, you don't have to know everything.
That said, you really should *try* everything you can. And do it with an open mind and as little bias as you can. You owe it to yourself and your team.
Just understand the difference between knowing and trying. Fight "fatigue"
💥React Suspense is SO SIMPLE!💥
I played with it for less than 30 minutes and I completely understand every single aspect of it. In fact, I can explain the entire concept in as little as two tweets. To start, the very first thing that you need to understand about Suspense is...
Cancellation with promises and async-await is deceptively complicated in
#JavaScript
These two code examples are equivalent.
RxJS wrapping a `getData()` that returns a promise, vs using async-await and accounting for cancellation.
#RxJS
6.0.0 is released!
Highlights
- cleaner imports, smaller API
- backwards compat package (update without changing your code!)
- automatic code migration for TypeScript
❤️ THANK YOU TO ALL THE WONDERFUL PEOPLE THAT HELPED WITH THIS RELEASE! ❤️
Things I've done several times in the past and never want to do again:
- Setting up a network
- Building computers
- Configuring JS builds/bundlers
- Arguing on social media
- Drinking until I throw up
They all start off fun, but are totally regrettable experiences in the end.
Short rant:
async/await is cool, but it is FULL of footguns. It makes complicated problems look so simple you can fall on your face and not see it.
I submit to you all that this is bad code waiting to happen.
(Shown in "react-esque" psuedo code)
1/
My method of developing with flex-box:
Try every combination of settings on every element I think matters until something is close enough.
...and sometimes...
Give up and go back to ancient CSS strategies where I know what I'm doing.
Things I care about when it comes to tech leadership, and tech folks in general:
1. That you're kind
Things I don't care about:
1. What framework/libs you use
2. Your lighthouse score
3. Your views on "the platform"
4. Your intellectual prowess
I'm really excited to announce that I'm moving to Austin, TX in July to pursue my next opportunity.
I barely know anyone in Austin, and I've literally never been there, haha. But I'm pumped about this change of scenery, nonetheless. Any meetups or groups I should know about?
In the picture on the left, I'm 40. On the right, 38 (maybe 37?).
It was hard learning to care for myself, eat right, exercise, treat myself and my mental and physical health as important.
Thanks for making me feel good this morning,
@ladyleet
When you've already committed your changes, and you realize you want to add just one more last finishing touch to your last commit, but you don't want to type up your commit message again. (This happens to me all the time) You can do the following...
@EmmaBostian
I used to do this all the time and give up and delete the local and reclone... but I've learned things.
You can use `git reflog` to find where it was happy and `reset --hard` to that. Then try again.
(I know you weren't looking for an explainer, but just incase anyone else is)
Folks... this is a BIG DEAL. Things to know:
1. This is NOT "adding RxJS to the browser". There's a limited but solid set of functionality here. Not operator hell.
2. Adding observables to the platform means that many, many frameworks and libraries can leverage them instead of…
Hey reactive JS folks! I'm working to bring Observables to the web platform by reviving a
@thedomstandard
proposal that got some attention a while ago.
@BenLesh
and I would love your feedback, so check out if you want to do things like this soon:
The point of this story is this: This industry can be intimidating to anyone.
Every now and then I'm lumped into a group like that makes it sound like I always belonged, or weirder, that I expected to belong in tech.
In truth, I am always worried I'd be outed as a mistake.
Quite often I feel I'm watching engineers engineer things for the sake of engineering things. It just seems like there's a lot of "isn't this cool?" and not enough "should we be doing this?"
I'm frequently asked by beginners, "Where do I start?"
Start with fun, start with curiosity.
Cramming knowledge is all well and good, but you'll burn yourself out doing that. The path to success isn't *all* blood and sweat. If it's not fun, you'll either give up or suck at it.
FYI: In
#JavaScript
can spread and destructure more than just Arrays. This works with any iterable. That means you can destructure or spread strings, generators, Sets, Map values, etc. Even custom types that implement `[Symbol.iterator]`!
I have been laid off.
I’m looking for a role where I can have impact.
I especially like developing things that make other developers' lives easier. (Insert RxJS joke). I have a lot of experience in canvas, language parsing, data visualization, perf, and low level JS/TS.
#JavaScript
fun fact: You can pass arguments to setTimeout or setInterval's callbacks:
function logThings(a, b, c) {
console.log(a, b, c);
}
// calls logThings('arg1', 'arg2', 'arg3') after 1 second
setTimeout(logThings, 1000, 'arg1', 'arg2', 'arg3');
This was the primary driver for me leaving Google. Best decision I've ever made. I'll never, ever return to Silicon Valley. The "culture" at big tech companies wasn't so fundamentally "different" or "good" that it was worth cramping my family into a tiny upstairs apartment.
This is where I'm at with anti-mask rhetoric. I've got one kid quarantining at home who was exposed because of anti-mask, anti-vaccine nonsense. In an area where the ICUs are full.
Never meet your heroes.
Absolutely nothing can cost your company more than tech managers that suck
They can stagnate projects, create massive amounts of tech debt and bugs that you will have to pay for, drive off talent/business knowledge, and repel new talent. All without typing a single line of code.
I've FINALLY started writing a comprehensive guide to
#RxJS
for the documentation!
My goal is to dump every bit of knowledge I can convey, as simply as possible, for everyone:
It's about 30% complete and it's a WIP:
Whenever I type conditionals checking to see if a value is between two other values, I always make sure they read right-to-left.
This is a personal preference thing, but I think it helps readability.
I couldn't be more excited to be moving to Austin, TX. I wake up like a little kid waiting for Christmas, every day it gets closer. Just thinking about giving my kids a yard to play in (TX hot or not) has me giddy.
I saw a CyberTruck driving down the road today!
Honestly, it looks better in promo photos than in real life. My girls didn’t know what a CyberTruck was, and literally laughed at it.
Rolling down the road next to normal cars, it looked like it was a community college science…
Here is a quick doodle I did today of my daughter Lily, in her favorite pajamas, riding a velociraptor. Probably the only
#inktober
you will see out of me. I don't often share what I draw or paint. But
@coderinheels
told me I should
Everyone has these swank job titles now. VP, Principal Something-Something Architect. I'm sorta jealous.
I'm just a "Software Engineer" (I think?) at 23 years in. Actually, I have no idea what my title is, so I just say "Software Engineer".