I am Michael Jackson, Thriller, co-author of React Router and creator of unpkg. Ask me anything!
Hey Hashnode community, 👋
I will be answering your questions live on Friday, September 27, 11 AM PDT / 18:00 GMT.
Ask me anything.
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.
React Training started very naturally, with very little planning on my part. In early 2015 I was working in San Francisco at a small startup, and working on React Router with my co-founder Ryan in my spare time on nights and weekends. It was around that time that React really started taking off and we were seeing people from all over come through our GitHub issues and pull requests. One of these people was an engineering manager at Visa, and he asked me if I could stop by for a few days and do a formal training session with his team. And it went so well that we decided we'd like to do it full-time. Ryan and I both quit our jobs and put the word out that we were looking for more customers, and it sort of snowballed from there.
As for our plans to encourage and support underrepresented groups, I'm glad you asked! It's an important topic. We recently announced a diversity and inclusion program that we hope will give the chance for more underrepresented people to attend some of our upcoming workshops.
Hi Michael, Thanks for hosting the AMA. What are your key takeaways from creating and maintaining popular open-source projects like React Router?
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.
unpkg is awesome. How did you come up with the idea? What motivated you?
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!
I am web developer with a special crush on blockchain technology and having affairs with node.js and react.js.
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...)
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"
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 😄
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! 😅
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?
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.
What in React Router or other Open Source projects you maintain/follow could use the most help and why?
What's your background? Did you study computer science? Did you work in the industry before creating your own thing? How did you convince yourself that it was the right move?
Thanks for the questions :) I graduated from BYU with a degree in Information Systems, which was more of an accounting degree with a little bit of databases, networks, and programming thrown in. I really liked the programming side, so as soon as I graduated I got a job writing code at a company in Utah called Omniture. They were a big web analytics company, later acquired by Adobe. I later moved to the SF bay area where I spent 6 years working in various startups like Path, Twitter, and Luxe. I also applied to Y Combinator and was part of the 2013 summer batch of companies, but our company ran out of money before we shipped. It was a huge learning experience for me, and very humbling.
When I started React Training, I was encouraged by the fact that we had money on day one. It wasn't like some of the other startups where I had worked that were still trying to figure out how to make money. So that was a huge confidence booster. It's hard enough to build the technical side of a startup without having to worry about the business model as well. If the business model is already in place, you can focus on the tech.
What does your average day at work look like? Do you even have those days at all?
I do! When I'm not traveling to a conference or workshop somewhere, I work from home in a spare bedroom in my house. When working from home, I try to start by doing something that will get my creativity going like writing in a journal or reading something inspirational. Then it's GitHub, code, email, etc. The usual stuff. One other thing that is really important for me when working from home is to GET OUT of the house. It's easy to spend a whole day just cooped up inside in my pajamas. So I try to do things like take my children to school in the morning or get out for lunch or some exercise.
You said no holding back so here it goes: how can you continue to host workshops about react hooks when react-router still doesn’t have a hooks API. (sent with ❤️ )
What fun project/tool did you discover recently? Also, is there a tool you use that not a lot of people have heard about, but they should? 😃
One cool new little tool I just discovered this morning is carbon.now.sh. It's handy for posting good-looking snippets of code online w/out having to take a screenshot of your editor. So many times when communicating with other devs, code speaks louder than words 😅
What are some of the biggest A-Ha Moments you've witnessed in your students as you've taught React over the past few years?
I think the light bulbs start to turn on when someone finally understands they don't have to manage the DOM anymore. I always say "that's not your job anymore!" and just wait until that piece sinks in. And then they realize that all those little things they were so used to doing like toggling class names, setting properties, adding/removing events, setting styles, etc. ALL of that stuff is just a side effect of the state of the app. When people start thinking in terms of state instead of in side effects, that's when they really become productive with React.
What projects in the React community (that aren't from the React core team) are you most excited about?
I spend a lot of my time working on our stuff, so my reply is totally biased :) But one of the projects I'm currently most excited about is our Reach UI project. It's a baseline for building accessible components with React on the web that I think is going to really move the React community forward in terms of building accessible apps.
Which one will you suggest to learn between reach router and react-router? Can you explain the main different between them? Thanks.
My partner Ryan actually wrote a blog post about this here: reacttraining.com/blog/reach-react-router-f..
The tl;dr is that React Router will be the surviving project but reach/router 1.0 will still be maintained with bugfixes. So if you're starting a new project, I'd probably just start with React Router 5.1 that we released earlier this week.