惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
S
Schneier on Security
The Hacker News
The Hacker News
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
I
Intezer
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Schneier on Security
Schneier on Security
Security Latest
Security Latest
AWS News Blog
AWS News Blog
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
有赞技术团队
有赞技术团队
博客园 - 叶小钗
The Last Watchdog
The Last Watchdog
O
OpenAI News
月光博客
月光博客
Hacker News: Ask HN
Hacker News: Ask HN
阮一峰的网络日志
阮一峰的网络日志
S
Security @ Cisco Blogs
Google Online Security Blog
Google Online Security Blog
云风的 BLOG
云风的 BLOG
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Latest news
Latest news
P
Palo Alto Networks Blog
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
Apple Machine Learning Research
Apple Machine Learning Research
U
Unit 42
PCI Perspectives
PCI Perspectives
博客园 - 聂微东
SecWiki News
SecWiki News
宝玉的分享
宝玉的分享
Forbes - Security
Forbes - Security
H
Heimdal Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Troy Hunt's Blog
博客园 - 三生石上(FineUI控件)
Application and Cybersecurity Blog
Application and Cybersecurity Blog
罗磊的独立博客
WordPress大学
WordPress大学
D
Darknet – Hacking Tools, Hacker News & Cyber Security

Kent C. Dodds Blog

Implementing Hybrid Semantic + Lexical Search Simplifying Containers with Cloudflare Sandboxes Migrating to Workspaces and Nx Offloading FFmpeg with Cloudflare Building Semantic Search on my Content Helping YOU ask ME questions with AI How I used Cursor to Migrate Frameworks The Dow's Start on the Covenant Path 2025 in Review The next chapter: EpicAI.pro AI is taking your job How I increased my visibility Launching Epic Web 2023 in Review Stop Being a Junior RSC with Dan Abramov and Joe Savona Live Stream Fixing a Memory Leak in a Production Node.js App 2022 in Review My Car Accident I Migrated from a Postgres Cluster to Distributed SQLite with LiteFS I'm building EpicWeb.dev A review of my time at Remix Remix: The Yang to React's Yin How I help you build better websites Why I Love Remix The State Initializer Pattern How to React ⚛️ Get a catch block error message with TypeScript Building an awesome image loading experience How Remix makes CSS clashes predictable Introducing the new kentcdodds.com How I built a modern website in 2021 How to use React Context effectively Static vs Unit vs Integration vs E2E Testing for Frontend Apps The Testing Trophy and Testing Classifications Array reduce vs chaining vs for loop Don't Solve Problems, Eliminate Them Super Simple Start to Remix Super Simple Start to ESModules in Node.js JavaScript Pass By Value Function Parameters How to write a Constrained Identity Function (CIF) in TypeScript How to optimize your context value How to write a React Component in TypeScript TypeScript Function Syntaxes Listify a JavaScript Array Build vs Buy: Component Libraries edition Using fetch with TypeScript Wrapping React.useState with TypeScript Define function overload types with TypeScript 2020 in Review Business and Engineering alignment Hi, thanks for reaching out to me 👋 useEffect vs useLayoutEffect Super simple start to Firebase functions Super simple start to Netlify functions Super Simple Start to css variables Favor Progress Over Pride in Open Source Testing Implementation Details How getting into Open Source has been awesome for me useState lazy initialization and function updates Use ternaries rather than && in JSX Application State Management with React Use react-error-boundary to handle errors in React JavaScript to Know for React How I structure Express apps What open source project should I contribute to? When I follow TDD AHA Programming 💡 How I Record Educational Videos Should I write a test or fix a bug? Stop mocking fetch Intentional Career Building Improve test error messages of your abstractions Tracing user interactions with React Eliminate an entire category of bugs with a few simple tools Common mistakes with React Testing Library Super Simple Start to React Stop using client-side route redirects The State Reducer Pattern with React Hooks Function forms Replace axios with a simple custom fetch wrapper How to test custom React hooks React Production Performance Monitoring Should I useState or useReducer? Stop using isLoading booleans Make Your Test Fail Make your own DevTools An Argument for Automation Fix the "not wrapped in act(...)" warning Super Simple Start to ESModules in the Browser Implementing a simple state machine library in JavaScript 2010s Decade in Review Why users care about how you write code Why I avoid nesting closures Don't call a React function component Why your team needs TestingJavaScript.com Inversion of Control Understanding React's key prop How to Enable React Concurrent Mode Profile a React App for Performance
2018 in Review
2019-01-14 · via Kent C. Dodds Blog

Whether you've had a great 2018 or not, I think it's important to look back and reflect on your accomplishments for the year. You've probably done more than you think you have. In this post, I'm going to share with you some of my professional (and unprofessional) accomplishments of which I'm particularly proud and give a few hints as to what I'm planning for 2019 (which is actually mostly a secret and surprise 😃).

Note: I don't want to bother with trying to sort these in any particular order, so... they're not in any particular order...

React Testing Library

This year I created and introduced React Testing Library. It has grown a lot since then. The spectrum community has over 300 members now. We've really had a whole lot of love... like, a lot of sweet tweets of appreciation (Dan even called it "not bad"). Shout out to Ryan Florence for the name and Michał Pierzchała for making react-native-testing-library.

I'm super proud of what we've accomplished here. The React Testing Library all contributors table lists 63 awesome people, and the DOM Testing Library all contributors table lists 46 (many repeats, but not all). These people are amazing and I really appreciate what they've done. I don't want to leave anyone out, but I would like to give a special shout out to these folks: Giorgio, Alex Krolick, Ivan Babak, Ernesto García, and Łukasz Gandecki.

Creating this open source software and the community of awesome people that has been built around it is probably one of my finest accomplishments of 2019. If you'd like to hear more about how this software came to be, you can watch S05E12 Modern Web Podcast - Testing or listen to RRU 043: Testing React Apps Without Testing Implementation Details with Kent C. Dodds.

National Novel Writing Month

Of all non-professional things I've done this year, I'm most proud of this one. If you didn't know, I wrote a 50,000 word novel in the month of November for NaNoWriMo. This was the first year I tried and I WON!

Back in August, I decided I wanted to become better at storytelling because my kids are always asking me to tell them stories and I wasn't very good at it. Something reminded me of my friend in college who had written a novel in one month for NaNoWriMo. I had been listening to a LOT of Brandon Sanderson recently (more on this later) and decided to try writing my own Sanderson-style fantasy novel.

I spent the next few months preparing. I listened to the entire story grid podcast, four seasons of the writing excuses podcast (they have a lot of seasons), I talked through the story, characters, magic, and more with my wife and she gave me some brilliant ideas, I made an in depth outline and took notes (workflowy is awesome by the way), and helped inspire the creation of DevsWhoWrite discord where I joined several other awesome devs who... well... write 😉 (feel free to join us!).

The end result is Shurlan. I'm super proud of it and still working on editing to prepare it for publication! Here's a little summary:

The Immortal family has ruled Shurlan for thousands of years. Thanks to their wisdom, the perfect society has been formed and peace and plenty graces Shurlan. But when the food allotments start to dwindle, a rebellion begins, and only those with secret magic abilities can stop them.

Kyana, an extremely skilled gravity displacer (known as a drifter) is chosen by Lord Talmar of the Immortal family to do the impossible task of recruiting non-displacers and training them to learn a displacement skill. They need to find and stop the rebellion before they steal the harvest and their families starve.

This is a hard fantasy novel. That means that the magic system and world are intended to be rational and knowable (it's also really cool). It's also juvenile fantasy, which means it's an enjoyable read for adults and kids alike (think Harry Potter).

What I think makes this book special is the message I'm trying to communicate, the world I've created, the characters, and the magic system.

I've totally immersed myself in this world and the world of writing. I'm planning on attending writing conferences this year to do some networking and improving my craft. I'm looking forward to November 2019 when I'll write book 2 in the Shurlan series. I have the concept for 4 series (3 books each) in this world. Feeling determined :)

TestingJavaScript.com

This was a HUGE effort by me and the good folks at egghead.io. It's the equivalent of 7 full sized egghead.io courses + 9 podcast episodes. It was a TON of work and people LOVE it. So I'm really happy with this.

paypal-scripts

I started this project in August of 2017, but most of the work was done in 2018. It's basically a single tool that consolidates a bunch of other tools common to PayPal projects (both applications and reusable modules published to our internal npm registry). Think of it like create-react-app's react-scripts, or ember-cli, or angular-cli. But it does a lot more than just the build/tests. Here are all the available scripts as of today:

build
clean
dev
format
gh-pages
lint
pre-commit
release
remark
test
typecheck
validate

It would take another blog post to explain what these all do and how it does them. But suffice it to say, this was a herculean effort that took most of my time at work this year.

One huge accomplishment around paypal-scripts was in the last month I decided to adopt TypeScript (that's a blog post for another time) and I was heads down updating all the tools to work with .ts and .tsx files.

What makes this project such a big deal is that it's very soon to be the basis of the default template project at PayPal we have called the "sample-app." Every new app started at PayPal is basically a fork of this "sample-app." So because of the work that I and others have done, every new app at PayPal will be written in TypeScript, use Jest, React, React Testing Library, emotion, webpack, babel, prettier, and eslint. And what makes it better is those apps wont have to worry about keeping those tools up to date saving dozens of developer hours a year PER PROJECT. I'm really proud of this accomplishment.

(Before you ask, this will not be open sourced, it's too PayPal specific, but you might be interested in forking kcd-scripts).

PayPal.me rewrite

At the beginning of the year, PayPal decided to make some significant changes to parts of the experience and that had a big impact on how PayPal.me was supposed to work. The original implementation would be hard to upgrade incrementally and the app is pretty simple anyway, so we decided to do a complete rewrite. We used paypal-scripts for all the tooling (it was the first major production app to do so) and we were able to get the tooling side of things done without much configuration or wiring together tools of any kind (I had to make quite a few adjustments to paypal-scripts though 😅 but it's good now I promise). That was an awesome experience for paypal-scripts and I'm really excited to see the experience for everyone else at PayPal as adoption increases.

Building the app was great. We ended up using unstated for state management and we're pretty happy with it. We used glamorous (decided that before deciding to deprecate glamorous, we'll be moving to emotion eventually). The backend was GraphQL (huge thanks to Arnab Banik who did most of the work there). It's a pretty simple app, so we're not using Apollo or anything, just graphql-request and that worked well for our needs.

Anyway, really happy with how that turned out :)

Open Source

Aside from creating React Testing Library (and DOM Testing Library) this year, there are a few other accomplishments I had this year/useless numbers in the realm of Open Source that I'd like to mention. Here are a few numbers:

My YouTube Channel

This was the year I decided to do week-daily livestreams on my YouTube channel: Dev Tips with Kent. I've got over 100 videos on the dev tips playlist. Some of them are longer than others, some of them are more coherent than others, but altogether they represent a great resource for people to learn things from JavaScript to testing to React to Babel to more and more :)

I also have a playlist called Talks and workshops from Kent C. Dodds with over 60 videos. More on this later.

Altogether, this year I've really been pushing content onto YouTube and hit over 10k subscribers. My videos got over 260k views this year (I am of course excluding my smiley face video which was stolen and has 3.7 million views now).

Conferences

I gave a lot of talks this year, you can find all the available recordings on my YouTube playlist. I spoke at 7 conferences and several meetups. I was especially proud to deliver my first keynote at Chain React which was awesome.

I gave a similar talk at React Rally which is my favorite conference and has been a dream of mine since year one.

I try to avoid traveling to conferences, so most of the conferences I spoke at were either local or remote. I did travel to San Antonio for Assert.js and Portland for Chain React. The only other travel I did this year was to PayPal offices to give workshops/trainings in San Jose and Austin, TX.

Other

Here are some other interesting facts/accomplishments from 2018:

What's next in 2019

I'm really excited about plans I have for 2019. I'm not going to give away all my surprises, but here are a few things:

  • I'm turning my 3 minutes with Kent podcast into a week-daily Q&A. Give it a look, subscribe, and ask your own question on my AMA: kcd.im/ama
  • I'm revamping my website using Gatsby and a bunch of other cool tools. I'll definitely blog about it. I'm actually kinda excited about it :) I'll also be moving my blog from Medium to my website with gatsby and hopefully automate more parts of this newsletter stuff :)
  • Remember TestingJavaScript.com? How would you like something like that for learning React? But even bigger? From total beginner to JS to total React professional? This is going to be enormous.
  • I avoid traveling as much as possible, but I want to give more workshops this year than I gave last year. So I'm going to do online workshops. There are a lot of benefits to remote workshops. I've done it and I know how to make up for the difficulties of not being there in person. You're going to want to take advantage of these!
  • At PayPal, I'm working on a component library. I imagine there are some opportunities to open source the generic stuff (HOOKS!)
  • I'm scheduled to speak and give workshops at React Amsterdam in April! See you there? I have at least one other conference that I'll probably be speaking at soon as well. I expect I'll be speaking a lot around here in Utah as well.
  • I have about 15 fantasy novels in mind for the Shurlan Universe. I'm definitely planning on writing one each year in November and working throughout the year to get each published. I'm feeling pretty optimistic and motivated about this whole novel writing stuff :)

Conclusion

I hope you take the opportunity to look back at your year and see what you've accomplished. Then make some goals to become even better than you are now.

"There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self." ― Ernest Hemingway

I wish you the very best and happiest New Year!