MJ Profile Banner
MJ Profile
MJ

@mjackson

68,953
Followers
1,751
Following
951
Media
40,547
Statuses

Building @remix_run at @Shopify (acq 2022). Ex- @Twitter , @Path . Created @unpkg . BYU alum. 2 Tim 1:7

Carlsbad, CA
Joined January 2007
Don't wanna be here? Send us removal request.
@mjackson
MJ
2 months
I better get to work!
@janetacarr
Janet A. Carr
2 months
Go Google your name. If you're not the top result, you have work to do. Especially if you're giving conference talks or whatever.
206
29
519
90
2K
66K
@mjackson
MJ
3 years
In that case I think I have some work to do…
@TheJackForge
Jack Forge
3 years
Google your name. If you're not the first result, you have some work to do.
736
395
3K
84
573
6K
@mjackson
MJ
5 years
Whoa ... I just realized that default args in JS can take an expression that makes use of previous args in the argument list! ... ! 😎
Tweet media one
61
535
3K
@mjackson
MJ
4 years
TypeScript is like a really smart co-worker that I would never hang out with outside of work.
39
258
3K
@mjackson
MJ
4 years
It always cracks me up when JavaScript developers are concerned about performance. Like, you're using JavaScript. That ship already sailed.
118
102
1K
@mjackson
MJ
6 years
Honestly, it makes a ton of sense for Microsoft to buy GitHub. After this acquisition, they will control: - VS Code - TypeScript - Electron - GitHub This puts them pretty much front and center of the modern development stack for a lot of people.
39
336
1K
@mjackson
MJ
2 years
Not even close 😂
@denicmarko
Marko Denic
2 years
If you Google your name, are you on the first page?
772
97
2K
18
31
1K
@mjackson
MJ
6 years
If coding doesn't feel like being totally lost and having no clue what you're doing, followed by hours of trying different things and short bursts of stuff kinda working, you have at least another level to master before calling yourself a programmer.
@jcoplien
James Coplien
6 years
If coding doesn't feel like painting or passionate creative writing, you have at least another level to master before calling yourself a programmer.
290
254
836
28
156
1K
@mjackson
MJ
6 years
Under @satyanadella , @Microsoft has developed an "Alternative Interview Framework" that involves: - 2 interviewers at a time - sharing questions with candidates ahead of time - working on actual problems the team is facing - blind feedback So good! 👏
19
263
1K
@mjackson
MJ
5 years
JavaScript methods I *always* have to look up to get right, even after 15 yrs: - Array.prototype.splice - String.prototype.replace You?
153
87
1K
@mjackson
MJ
3 years
I got a new laptop. I have a "Projects" folder where I keep all my code. I tried to copy it to my new laptop. 5 hours!? I ran `find . -name "node_modules" -type d -prune -print -exec rm -rf "{}" \;` to get rid of all my node_modules I tried the copy again. 7 minutes 👍
49
60
1K
@mjackson
MJ
1 year
The word is "compile", not "transpile". They mean the same thing. JS developers invented a new word because they weren't used to working with compilers before Babel came out. But "Babel is a JavaScript compiler". So is tsc. That's what the "c" stands for; compiler. Ofc, it
Tweet media one
163
64
949
@mjackson
MJ
3 years
React Router hasn't had a breaking change in almost 5 years. We published version 4 in Sep 2016. Version 5 had no breaking changes. Don't tell me I don't care about API stability.
26
39
932
@mjackson
MJ
6 months
Who’s going to tell him about Cloudflare?
@t3dotgg
Theo - t3.gg
6 months
@levelsio All the people getting bigger bills are GENERATING AND CACHING TENS OF THOUSANDS OF HTML PAGES ON A CDN. Literally none of that is possible on a VPS without also spending lots of money and time on a CDN. If your web service can comfortably run on a $5 VPS, it will almost
60
1
274
21
14
844
@mjackson
MJ
2 years
ESM default imports/exports suck. Use named imports, always.
46
68
829
@mjackson
MJ
4 years
Plot twist: I now miss TypeScript when I'm writing regular JavaScript 😭
@mjackson
MJ
4 years
TypeScript is like a really smart co-worker that I would never hang out with outside of work.
39
258
3K
32
39
806
@mjackson
MJ
5 years
No matter how many times I setup all the configuration in a new JavaScript repo, each time feels like the first. Lots of Googling and re-learning stuff I used to know. Babel, Rollup, ESLint, Jest, etc. This stuff just doesn't stick in my brain for some reason.
60
68
803
@mjackson
MJ
6 years
Snap a pic of your workspace RIGHT NOW. Here's mine:
Tweet media one
225
50
770
@mjackson
MJ
5 years
A few replies to this tweet were from people who find context useful to get around passing props down multiple levels. I made a short video about what it means to "use composition" to solve these issues. 😅 Hope it helps! 👇
49
120
765
@mjackson
MJ
4 years
Top 3 most significant web technologies since 2004: - nginx - Chrome - React Runner up: node.js
62
27
739
@mjackson
MJ
5 years
No joke, about 95% of the work in open source is around education. Docs, issues, pull request reviews, web sites, blog posts, talks, tweets, examples, etc. Writing the code is the *easy* part. Helping people use it is the vast majority of your responsibility as an OSS dev.
8
153
743
@mjackson
MJ
5 years
God is the master of gradients
Tweet media one
17
90
725
@mjackson
MJ
4 years
I've been using Homebrew for macos for what feels like forever now and I still have no clue whatsoever what a "keg", "cask", or "cellar" are.
28
33
731
@mjackson
MJ
11 days
useEffect(fn, deps) is a great example of an API that sounds so good in theory, but oh boy ... when you see how people use it in practice ... 😅😮😭
44
28
732
@mjackson
MJ
1 year
@jeremyvaught @Music That sucks 😕 At least they sent you an email. Back in 2013 I woke up one morning to find that Twitter had given @hum to Verizon. They don’t even use it anymore.
9
13
672
@mjackson
MJ
5 years
Most common mistake software developers make: putting stuff in the wrong place. Coupling responsibilities and concepts that should be kept separate. For me, this is 95% of software development. Just figuring out *where* things belong.
23
147
689
@mjackson
MJ
6 years
📣 React Router version 5 is now available! - Improved compat with React 16 ✨ - No more update blocking 👌 - Lots and lots of housekeeping 🧹
19
206
681
@mjackson
MJ
11 months
So, React recommends: - you should use a framework with React - frameworks should pin to a canary version of React in order to take advantage of the latest “stable” features that do not yet appear in a stable release I have no idea how this is going to play out in the Remix
47
40
670
@mjackson
MJ
2 months
Can you imagine if someday I actually beat out ol' MJ? Ha. So many people would be disappointed and confused 🤣
8
5
659
@mjackson
MJ
6 years
Web components are a complete waste of time and effort at this point. The champions of web components are too invested to admit it, but there are so many problems with the current spec. They haven't learned anything from the current state of the art of building UI for the web.
44
168
650
@mjackson
MJ
2 years
I’ve been seeing more and more people bemoaning the widespread use of React lately. Wishing for something else to come along. Don’t forget: the underlying tech is HTML! Treat React as just a tool for generating and manipulating HTML and you will have a much better time with it.
32
36
645
@mjackson
MJ
2 years
Big news today! 🎉🙌 Remix is going to be used to power the next generation of commerce at Shopify. We are incredibly excited to be working with the brilliant team at @ShopifyDevs . This is going to be AWESOME for the Remix framework, community, and partners. 🤝
@remix_run
Remix 💿
2 years
We are beyond excited to announce that Remix is joining Shopify! 🎉 Thank you all for joining us on this journey. It's only getting better from here! Learn more 👇
202
509
3K
37
35
636
@mjackson
MJ
2 months
NEW: multipart-parser A fast, efficient parser for multipart streams! - Works with web (fetch) streams AND node.js - Works entirely with streams, no buffering - Parse any multipart/* stream, including multipart/form-data - Faster than busboy 🔥
16
39
454
@mjackson
MJ
3 years
Work on something for a YEAR. Pour out your heart and soul. Tweet about it. 20 likes. Tweet your idle thoughts about useReducer as you’re waiting in line for fast food. 200 likes. This site is trying to ruin me.
35
12
601
@mjackson
MJ
5 years
Unpopular opinion: All that junk you're putting in React context should just be props. Legit uses for context are rare, and mostly for library code, not your app.
42
101
600
@mjackson
MJ
5 years
Step 1: Install TypeScript Step 2: Add types and fix all the errors ... Step 3874: Try yet another incantation of config files to see if you can get TypeScript working with your existing Babel + ESLint + Jest + Rollup toolchain
29
44
575
@mjackson
MJ
23 days
Everyone quoting this and talking about how their Node.js/PHP/etc app can outdo this perf-wise is just showing their inexperience. Serving an app the size of basecamp with a mean response time of 90ms is no small feat 😅
@dhh
DHH
25 days
Basecamp did 5,250 req/sec at peak yesterday. Mean response time was 90ms. So call that needing 500 cores at max load. If you skipped redundancy, you could probably do that with 3 boxes each running a Z5 192-core AMD chip with room to spare. Servers have gotten crazy fast!
112
65
2K
25
23
580
@mjackson
MJ
3 years
The refusal to acknowledge HTML and CSS as "real" programming languages has done more harm to the web than probably any other gatekeeping tactic. Both are incredibly capable and very *real* languages! Both require years to truly master.
34
51
561
@mjackson
MJ
4 years
🚨 You don't wanna miss this! 🚨 Remix is a React framework for web apps built with React Router 🔥 - server rendering - file-based routing - route-based data loading - code-splitting - so much more Sign up for the mailing list to get updates about development and releases! 👀
@remix_run
Remix 💿
4 years
Finally, a killer React framework from the creators of React Router Follow our progress 👇
75
345
2K
36
85
547
@mjackson
MJ
4 years
You know, I think the thing that scared me off the most from TypeScript was seeing other people's overly-typed code. You don't actually have to write out very many types to have a fully type-safe codebase! TypeScript's type inference is actually quite good. 👍
25
38
531
@mjackson
MJ
3 years
People are like "running servers is so complex" and then they go back to their webpack.config.js 😂
16
33
528
@mjackson
MJ
3 years
BIG news! React Router v6 is now stable. 🙌 This is the best router we’ve ever released. We took all the best parts of every major version and combined them in v6. Enjoy! 😅
@remix_run
Remix 💿
3 years
📣 React Router v6 is here! 👀 • Automatic layout handling with nested routes 🐣 • Route ranking 📊 • Relative routing and links ⛓ • Completely rewritten with React hooks 🎣 • Over 50% smaller than v5 📉 Read the blog post NOW 👇
18
243
957
16
61
528
@mjackson
MJ
2 years
Microservices are an indication of organizational issues. They are an escape hatch for engineers who don't have the power they need to do their job correctly, so they try to break off a tiny silo. Over time, you incur tremendous overhead from all the fragmentation.
@elonmusk
Elon Musk
2 years
@EricFrohnhoefer @MEAInd True, the food is great. The fact that you don’t realize that there are up to 1200 “microservices” being called when someone uses the Twitter app is not great.
202
212
4K
48
50
522
@mjackson
MJ
2 years
Remix 1.11 just dropped 👇 • defer + <Await> ⏱️ • CSS Modules 🙌 • Vanilla Extract 🍦 • more! @remix_run ❤️ And I dare you to find *anyone* who writes better release notes than @chancethedev ! 💪
21
75
527
@mjackson
MJ
7 years
🎉 I'm excited to announce that I'll be joining Facebook next month! 😅 Excited to be joining such an awesome team at a time when React is changing so rapidly! 🤩
41
24
528
@mjackson
MJ
6 years
By age 35 you should have learned to not care about what anyone else thinks you should have accomplished by age 35.
11
99
520
@mjackson
MJ
4 years
Depending on how you started out, as a programmer you will spend the rest of your life chasing the high you got when you first used PHP or Visual Basic.
46
25
519
@mjackson
MJ
5 months
Explain React Server Components
@ProfFeynman
Prof. Feynman
5 months
If you cannot explain something in simple terms, you don't understand it.
Tweet media one
88
1K
6K
47
18
508
@mjackson
MJ
6 years
Just cut a new release of React Router, v4.4.0-beta.0 - Better compatibility with React 16 🎉 - Uses the new context API under the hood 😎 - Fully backwards compatible 🙃 $ yarn install react-router @next react-router-dom @next More updates soon! 👀
16
100
509
@mjackson
MJ
6 years
My top vim plugins 👇 - tpope/vim-vinegar (fast file system browser) - wincent/command-t (fuzzy file finder) - sheerun/vim-polyglot (all the languages) - ervandew/supertab (tab completion) - wincent/terminus (gui features in terminal vim) How about you? 😅
40
72
497
@mjackson
MJ
4 years
Deno ( @deno_land , just released v1.0 today) includes built-in tooling for: - bundling - debugging - managing dependencies (URLs, import maps, inspector) - generating documentation - formatting code - running tests These are ALL SO IMPORTANT. Nice work 👍
10
91
492
@mjackson
MJ
4 years
Remember when React was first released and everyone made fun of it? Good times.
41
26
494
@mjackson
MJ
3 years
We're super excited to welcome Kent to the team 🚀 Kent is a world-class educator and teacher. We're incredibly lucky to have him! If you're frustrated because you don't understand what Remix is or what it can do for you, be happy. You're about to find out 😅
@kentcdodds
Kent C. Dodds 🌌
3 years
I'm thrilled to announce that I'm moving into the next phase of my goal of making the world better by helping you create quality software: I am now the Director of Developer Experience at @remix_run !
233
154
3K
21
18
485
@mjackson
MJ
3 years
I used to look at weird engineering solutions and think “huh that’s weird why didn’t they just do <something else>” Now I think “I wonder what constraints they had that I don’t know about” Instead of assuming other people are incapable, assume they are operating w/ constraints
11
61
476
@mjackson
MJ
3 years
I was fired from one of my very first dev jobs for arguing with senior management. It was absolutely terrible timing. My wife was 8 months pregnant with our 3rd child. I was 11 months in to that startup, so I hadn’t vested yet. But I was so cocky and sure that I was right.
19
30
459
@mjackson
MJ
4 years
It's my birthday today. I'm 38! 🥳🎉 As a present, I'd love it if you randomly did something nice for someone else. Let's make the world a better place in these stressful times through random acts of kindness.
48
15
456
@mjackson
MJ
1 year
Counterpoint: Java (Scala) microservices we’re an absolute nightmare for us at Twitter as we migrated off Ruby on Rails. Much of the complexity that Elon mentioned after he bought the company was from this architecture.
@schleyfox
Ben Hughes
1 year
At @Airbnb , while we appreciated the flexibility of Ruby on Rails earlier on, it absolutely became unsuitable at scale (both traffic and organizationally) and we had to work miracles while replacing much of it with java microservices.
38
140
1K
21
49
447
@mjackson
MJ
4 years
@raleighpolice "Protesting is not listed as an essential function"? Is this a joke?? 😂 This country was *founded* by protesters!
6
18
354
@mjackson
MJ
4 years
How it started: How it's going:
Tweet media one
Tweet media two
13
30
442
@mjackson
MJ
3 years
We are going to publish some research tomorrow on the @remix_run blog that will demonstrate some of the differences between Remix and Next. It will also mention a few points of comparison w non-JS frameworks like Rails, Laravel, and Phoenix. Stay tuned... and follow @remix_run !
11
23
439
@mjackson
MJ
4 years
If you're considering one of the many React alternatives out there, keep in mind: React is already used on many of the largest websites in the world. It's not someone's toy weekend project. It's production-grade code that scales to billions of users. Something to consider 😅
42
23
436
@mjackson
MJ
11 months
It makes me very happy that @remix_run is now a Gold sponsor of Vite 🏅 It takes real time and effort to make great open source software, and we are invested in this project and this community. Here’s to many more great things to come! 💪
Tweet media one
7
21
415
@mjackson
MJ
3 years
It’s totally fine to disagree. But you don’t have to be mean about it. Kindness is important. It’s not just a nice-to-have. It makes a tangible difference in discourse. Kindness is what most people are missing when they lament the state of social media. KINDNESS MATTERS
10
57
414
@mjackson
MJ
7 years
Finally got around to merging my doc about Render Props into the official @reactjs docs on 🎉 See it live at Enjoy!
13
108
409
@mjackson
MJ
2 months
I made a good joke
Tweet media one
15
1
406
@mjackson
MJ
5 years
@AOC @kennetpostigo Don't spend more than you earn. Then you can pay it off every month 😅
57
5
313
@mjackson
MJ
1 year
I don't agree with DHH's reasons for ditching TS in his OSS work, but what I really hate to see is people piling on him and slinging mud. Mob mentality strikes again. 😕
44
17
398
@mjackson
MJ
4 years
I'm seriously thinking about just dropping support for IE11 in React Router v6. It reaches EOL later this year, and I want v6 to be around for the foreseeable future. Besides, people who need IE11 can always use v5...
49
16
397
@mjackson
MJ
4 years
The difference between `null` and `undefined` in JavaScript: `null` is actually a JavaScript value (object), whereas `undefined` indicates the absence of a value You can see this if you try to JSON.parse them: JSON.parse('null') // null JSON.parse('undefined') // SyntaxError
26
45
377
@mjackson
MJ
1 year
There’s been a bunch of talk about TypeScript recently. Some inflammatory stuff, but a few good discussions as well. For those of you who may be curious about a more nuanced take on the current discussion without the drama, I thought I’d take a sec to talk about why we chose to
32
36
380
@mjackson
MJ
4 years
I've been exploring color recently, trying to learn more about color theory by sampling the work of professional designers. Seemingly subtle differences in color can make a big impact overall. Below are 3 "gray" color schemes, from Tailwind, Material Design (2014), and GitHub.
Tweet media one
23
30
375
@mjackson
MJ
5 years
The core of react-router v6 is 357 lines of code, excluding comments and __DEV__ blocks (which are mostly propTypes). Should be able to read it in an afternoon, if you're curious 👀
7
33
372
@mjackson
MJ
2 years
I left working at Twitter in 2012. I didn’t see anyone at the helm who had vision or ability to execute. The best idea they had was to fill everyone’s feed with stupid ads. But as an ex-employee I’ve always watched the company, hoping it would someday achieve its potential.
7
27
365
@mjackson
MJ
8 years
🎉🎉 React Router v4 beta! 🎉🎉 Docs: Code: Try it: npm i react-router @next We 😍 @reactnative !
12
179
368
@mjackson
MJ
5 years
Someone built an entire database on top of Cloudflare Workers and Cloudflare KV 🤯 - JavaScript client - MongoDB-like query API - Role-based access - Full-text indexing - Hooks, functions, & triggers
11
68
360
@mjackson
MJ
2 years
Can we all agree that “write once run anywhere” is a bad software design principle? Or are we still wondering about that one?
121
12
351
@mjackson
MJ
4 years
I'm waaay past the honeymoon phase with TypeScript. We now have a dozen children, have both put on about 50 lbs, and we stay at home watching TV on Friday nights. What comes next?
40
17
352
@mjackson
MJ
6 years
Current status: learning. A LOT! - React Native (and Expo) - Native development, and deploying to app stores - Google Cloud Platform - Kubernetes + Docker Need to keep reminding myself that it'll get easier as I do this more. But man, learning new stuff can be hard! 😅
24
32
343
@mjackson
MJ
5 years
@jacobmparis @ryanflorence A couple of things: - dropping support for anything older than IE11 - dropping support for React < 16.8 - using Google Closure Compiler - writing better code 😅
12
20
349
@mjackson
MJ
5 years
Who out there is proud of their CSS? Step right up, don't be shy. Let's see some examples of really good CSS! ✨ Major bonus points if it was written by more than one person over the span of more than a year.
55
36
340
@mjackson
MJ
5 years
Big release today. Represents the last 4-5 months of work for me personally. Let's do this. 🤘
15
7
336
@mjackson
MJ
6 years
HOCs are like decorators. You wrap a component with some state/behavior to make a new one. Render props are like delegates. You specify a function that gets called once you have your state ready to go, and delegate the rendering.
13
106
338
@mjackson
MJ
2 years
My sincere hope is that all the other frameworks will steal all the ideas we have in @remix_run and use them to build better frameworks. Next is doing nested routing now. Great! 👍 Keep going. We have lots more ideas to share with you. 😅 This isn’t a zero sum game!
15
9
337
@mjackson
MJ
5 years
If you think React is big now, just wait. 2020 is going to be even bigger. And Preact is going to be a huge part of it. Not saying this to brag or try to cause division. I love the web, no matter what tools you're using. ✌️
13
30
335
@mjackson
MJ
3 years
Life is fragile. Don’t take it for granted. ❤️
10
13
329
@mjackson
MJ
7 years
8 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜ 7 ♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟ 6 5 4 3 2 ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙ 1 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖ a b c d e f g h Who wants to play? 😅
14
75
324
@mjackson
MJ
3 years
My heart breaks when I think of the millions of beautiful, innocent people whose lives will be upended by the actions of a selfish dictator. God be with you, Ukraine 🇺🇦
7
13
326
@mjackson
MJ
4 years
As a software dev, I find few things more satisfying than a fully-automated, fast build. It's invaluable. On the other hand, slow, janky builds are huge time sinks. If you can, spend some time to automate your builds. Testing, releasing, etc. You'll be happy you did!
11
36
325
@mjackson
MJ
6 years
It's hard to overstate how much automating builds and releases has improved my quality of life as a software developer.
15
18
319
@mjackson
MJ
2 years
SSG/JAMStack broke so many developers' ideas about how the web works. When you take away the server, all you have left is the build. And that's a very limiting place to be. Put the server back in, and it's a breath of fresh air. You wonder why you ever left it. 😅
17
25
323
@mjackson
MJ
4 years
Gotta say, I'm so happy we will be charging people for access to @remix_run . Just tired of dealing with entitled people who don't pay anything for my hard work.
32
11
322
@mjackson
MJ
4 years
This is really exciting stuff! Node 12 (current LTS) now lets you use `import` and `export` w/out any special flags. That means no more compiling with Babel just so you can use ES modules! Huge congrats to Myles and everyone who made this possible *in a current LTS release*! 🥳
@MylesBorins
sMyle
4 years
🎉🎉🎉🎉🎉🎉🎉🎉🎉 ESM is now unflagged, but still experimental, on Node.js 12 $ nvm install 12.17.0 🎉🎉🎉🎉🎉🎉🎉🎉🎉
9
88
304
6
49
317
@mjackson
MJ
4 years
One of the biggest benefits of TypeScript IMO is the ability to quickly *communicate* an interface w/out diving deep into the implementation. Compare the TypeScript interface on the left with the JavaScript implementation on the right. 👀
Tweet media one
Tweet media two
12
25
308
@mjackson
MJ
24 days
NEW: node-fetch-server Write servers for Node.js using the web fetch API primitives, like Request and Response 👍 $ npm i @mjackson /node-fetch-server Check it out 👇
18
25
322
@mjackson
MJ
2 years
We are completely rebuilding @remix_run 's file upload handling and streaming approaches on top of web streams in node and I'm so giddy about it. It's gonna be siiiiiiiick.
13
13
313
@mjackson
MJ
2 years
How do you generate a static site with @remix_run ? Since we released Remix v1 last year, many have asked us this question 🤔 It's usually better to have a server if you can! But if you can't for some reason, SSG can be useful. So let's make a static site with Remix! 😅 1/12
12
47
312
@mjackson
MJ
4 years
This past month, served - 50 billion requests - 2.4 billion unique users - 550 TB of data - 99.8% cache hit rate
Tweet media one
10
27
308
@mjackson
MJ
6 years
I'm taking a break from Twitter for the next 2 weeks and deleting the app from my phone. Stepping away for some much needed vacation and family time. 😅 See ya!
10
1
300
@mjackson
MJ
2 years
I keep hearing people say they need an edit button for Twitter but haven’t yet heard anyone say how they’re gonna deal with all the complexity that entails. As an engineer, it seems like a nightmare addition with tons of edge cases!
34
20
301
@mjackson
MJ
6 years
I'd like to congratulate my friend Ryan on his new role as manager of the React team at Facebook! Such a bright future ahead for React, really stoked about this. 😅
13
11
303