I am Michael Jackson, Thriller, co-author of React Router and creator of unpkg. Ask me anything!

Hey Hashnode community, 👋

I am Michael Jackson. I co-authored React Router in 2014 and started React Training in 2015. I also built unpkg.com along the way.

I will be answering your questions live on Friday, September 27, 11 AM PDT / 18:00 GMT.

Ask me anything.

Comments (40)

Add a comment
Bolaji Ayodeji's photo

What inspired the creation of ReactTraining ?
I see that you offer courses, expert training and workshops on React, what plans do you have or have in place already to encourage and support underrepresented groups.

Show all replies
Bolaji Ayodeji's photo

Developer Relations @Hashnode

This is amazing, thank you for quitting your job to train the future! I'm glad to see you have a Diversity and inclusion program put in place already, thank you for doing this.

James Sanders's photo

Hi Michael, Thanks for hosting the AMA. What are your key takeaways from creating and maintaining popular open-source projects like React Router?

MICHAEL JACKSON's photo

No worries, thank you for your question :)

I actually wrote one of my main takeaways in a tweet the other day, and it was this: that the vast majority of the work in open source is communication and education, not code. It seems like the code is the hard part. But in my experience, it's usually the quickest to produce. The hard part (and I believe the most important) is communicating effectively with people about what you've done and helping them understand it. Could be a blog post, a tweet, a conference talk, video, codesandbox, whatever. But the more they know about what you're doing, the better chance you'll have at success.

When we started working on React Router, Ryan would write all the examples and I would write the code to run them. The code was important to have, but I don't think anybody would have used the router if we hadn't provided really good examples for them to copy/paste into their app.

Melvin's photo

unpkg is awesome. How did you come up with the idea? What motivated you?

MICHAEL JACKSON's photo

Thank you 😅

unpkg is actually an idea that I had while working on React Router. People would ask us occasionally if we had a copy of the router hosted on a CDN somewhere so they could just drop in a <script> tag and use it on their project.

At that time the main CDN provider was CDNjs. So I checked out their GitHub repo and tried to add React Router. But the git clone took about half an hour and it took several minutes just to check out a new branch because all files on CDNjs are stored in that repo! In addition, once I finally submitted my PR I was told I needed to change some stuff, so I was going to have to go back and change things. And that's when I thought, y'know, we're already publishing our global UMD builds in our npm package. If there were some kind of reverse proxy in front of the npm registry that could just serve files with the right Content-Type, I bet that's all we'd need. So I hacked something together in an airport one night as I was waiting to board the plane and published it as npmcdn.com. About a year later I changed the name to unpkg.com and it stuck.

BTW, I want to say here that I've had the pleasure to work with some awesome sponsors for unpkg over the years, the main one being Cloudflare. If you haven't used them for your sites, check them out!

Aniketh Saha's photo
  1. How do you share your open source project words?. Like how do you get people to know about it.? I tried posting on twitter , reddit, and other platforms but didnt work so well (Yeah maybe my project was not so problem solving...)

  2. How to stick to a plan.? I am getting new new projects idea every couple of days now and really want them to create but not able to kickstart them. how to convince yourself - "that your project idea is not worth it"

MICHAEL JACKSON's photo
  1. When sharing my work, I try to remember to ask myself "how is this going to solve someone else's problem?" or "why would they care about this?". It really is all about communication and trying to put something out there that solves a real problem for someone else. I have spent A LOT of time working on projects that have gone nowhere because there were already decent alternatives available. So if there's something else that already works well enough, just move on. There are greener pastures ahead 😄

  2. If you're having a hard time focusing, you're asking the wrong person for advice :) I have ideas all the time that I'd like to work on. One thing that I do often is that if I get a few hours into something and then realize it's just a huge waste of time, I delete all the code before I change my mind. Then I can't go back and pick it up later, because I already decided it wasn't worth my time! 😅

Aravind's photo

Hey Michael, thanks for the AMA. I'm really curious to know how you go about designing/making something. What is that process like for you?

MICHAEL JACKSON's photo

That's a great question, Aravind. Thanks for asking :)

I think it depends on what I'm making. When it comes to code, I always try to start with the end API in mind. It's a little counter-intuitive, I think, because I tend to think "well, none of this will even work until I build the backend, so I should do that first". But whenever I go that route, I realize that you never really know what the backend even needs to be until you know the needs of the front-end. So I try to start at the finished product (the final API) and work my way backwards. I hope that makes sense :)

I think this mentality applies in other areas as well. One other thing I like making is music. Sometimes I start with a really cool chord progression on my guitar. But the best songs I've made start with a good melody. You can always figure out the chords later if you have a strong melody.