Robin Malfait Profile Banner
Robin Malfait Profile
Robin Malfait

@malfaitrobin

Followers
6,653
Following
1,132
Media
514
Statuses
8,913
Explore trending content on Musk Viewer
@malfaitrobin
Robin Malfait
4 years
Working on some official <Transition /> React components for @tailwindcss / @tailwindui !
25
44
809
@malfaitrobin
Robin Malfait
4 years
👀 Listbox component is getting there!
Tweet media one
Tweet media two
25
25
753
@malfaitrobin
Robin Malfait
4 years
👀 Dropdown component coming together nicely for @tailwindui . A bunch of accessibility features, mouse interactions and keyboard navigation. What do you think?
33
33
633
@malfaitrobin
Robin Malfait
7 months
@jamesqquick 1. Type `<button onClick={x => {}}/>` 2. Hover over `x` 3. Copy the type
Tweet media one
21
20
518
@malfaitrobin
Robin Malfait
3 years
👀 Working on a new `Tabs` component for Headless UI. Coming together nicely!
14
17
497
@malfaitrobin
Robin Malfait
4 years
Don't mind me, just playing with some performance optimisations for @tailwindcss 👀
Tweet media one
6
8
448
@malfaitrobin
Robin Malfait
4 years
Sooo this happened! I'm super excited! 🤩
@adamwathan
Adam Wathan
4 years
🎉 Super excited to announce that after almost 900 job applications, dozens of interviews, and hours of pair programming sessions, today is @malfaitrobin 's first day at @tailwindlabs ! I wrote more about Robin and the process we used to find him here 👉
58
40
715
25
3
302
@malfaitrobin
Robin Malfait
3 years
I saw this tweet by @firstdrafthell and got really excited, so started playing with my own version in JavaScript. I'll add more tweets to this thread when I have more improvements / features.
@firstdrafthell
Patrik Svensson (@[email protected])
3 years
And this is the updated (fake) C# compiler error report. Still need some work, for example, collapsing white space and displaying context around lines.
Tweet media one
4
20
120
8
41
287
@malfaitrobin
Robin Malfait
2 months
Last week we had a nice breakthrough when working on performance, and now this work has been published! For some context: Using v3 we had rebuilds of ~80ms on the codebase. Using v4 alpha, we had rebuilds of ~40ms. Twice as fast, but we could do better.…
@adamwathan
Adam Wathan
2 months
Tagged Tailwind CSS v4.0.0-alpha.8, with some insane performance improvements 🤩
69
84
1K
13
9
247
@malfaitrobin
Robin Malfait
3 years
Experimenting with implementing our JIT algorithms in Rust to see how the performance would change 🤔 would be hard to do and support a JS-based plugin ecosystem but curious anyways... let's take a quick look!
8
17
230
@malfaitrobin
Robin Malfait
3 years
We've been working on some things at Tailwind Labs! What do you think? 🤩
20
2
205
@malfaitrobin
Robin Malfait
3 years
Just made a little alias for my terminal shush() { eval "$@ &>/dev/null" } Because I was interested in the execution time, not in all the overwhelming output.
Tweet media one
Tweet media two
7
20
199
@malfaitrobin
Robin Malfait
5 years
@roelvangils @YvesHanoulle And if you are used to working with a terminal: `find . -type d -name "node_modules" -exec touch "{}/.metadata_never_index" \;` It will create that file for all node_modules folders.
3
27
185
@malfaitrobin
Robin Malfait
3 years
🔴 Going to stream some Invoice system development with Next.js & Tailwind from scratch! #streamnoob
3
12
139
@malfaitrobin
Robin Malfait
3 years
Been working on new Headless UI components that will be used here!
@steveschoger
Steve Schoger
3 years
Been working on a new little landing page with @adamwathan that we're excited to deploy next week 👀
Tweet media one
41
102
1K
6
3
135
@malfaitrobin
Robin Malfait
4 years
I like this view at the end of the day!
Tweet media one
4
0
134
@malfaitrobin
Robin Malfait
2 years
Implementing anything that was touched my @jamesm is such a pleasure! 👀 Position `sticky` example ⤵️
6
2
119
@malfaitrobin
Robin Malfait
1 month
Saw this post this morning and it's fun to see that we use similar tricks like this to make Tailwind CSS v4 so fast. Especially the "avoid work" part, if you don't have to do the work, don't do it (warning: this can be the hard part). I also noticed that a lot of people think…
@adamwathan
Adam Wathan
1 month
Incredible post on optimizing JavaScript for performance — so many neat little surprises in here:
45
213
1K
3
4
115
@malfaitrobin
Robin Malfait
7 years
@wesbos Also works nicely in flexbox
Tweet media one
0
12
106
@malfaitrobin
Robin Malfait
3 years
@rauschma I use a and z as variables. Makes the mental model a bit easier for me. a - z (ascending) z - a (descending) I think I first saw it in a tweet by @DavidKPiano 🤔
3
1
95
@malfaitrobin
Robin Malfait
3 years
🔴 Going to stream some Invoice system development with Next.js & Tailwind in ~20minutes! Schedule:
4
7
91
@malfaitrobin
Robin Malfait
4 years
I've generated a few tests. Please don't tell @adamwathan 😎
Tweet media one
9
1
92
@malfaitrobin
Robin Malfait
7 years
prepack.io is so cool, I already made vscode extension #vscode #prepack
4
37
91
@malfaitrobin
Robin Malfait
4 years
I’ve been working on some stuff!
@adamwathan
Adam Wathan
4 years
🚀 It's still early, but we tagged the first releases of Headless UI for React and Vue! We're starting with a Menu Button (or dropdown for you common folk 😤), with new components coming every few weeks 🤩 Incredible work by @malfaitrobin on this one 👏
74
226
2K
6
3
89
@malfaitrobin
Robin Malfait
3 years
🔴 Another quick chill Sunday stream in ~20minutes! Going to create a timezone aware calendar/schedule page with Next.js & Tailwind from scratch!
2
5
88
@malfaitrobin
Robin Malfait
3 years
@mxstbr I got 99 problems and they are all stale closures.
0
0
88
@malfaitrobin
Robin Malfait
3 years
We've been working on some stuff 😍
@adamwathan
Adam Wathan
3 years
🚀 We just shipped React + Vue support for Tailwind UI! Every component now includes fully functional, accessible examples for both React 16 and Vue 3 🥳 This whole project has been almost a year in the making — so stoked it's finally ready to share 🤩
107
449
3K
2
1
73
@malfaitrobin
Robin Malfait
1 year
@trunarla You can use the `len` function from Python. It's a very simple implementation as well, check it out!
Tweet media one
5
1
61
@malfaitrobin
Robin Malfait
6 years
Our code base is growing componentially 😎
1
4
56
@malfaitrobin
Robin Malfait
2 months
Come work with us!👨‍💻👩‍💻
@adamwathan
Adam Wathan
2 months
✨ We're hiring a Design Engineer and Staff Software Engineer to work on some ambitious new projects with us at @tailwindcss . 🏕️ Fully remote 💰 $275,000 USD
138
301
2K
5
0
56
@malfaitrobin
Robin Malfait
3 years
@kadikraman ~/github.com then by user, then by repo. E.g.: ~/github.com/tailwindlabs/tailwindcss I also hide the ~/ part in my terminal so it looks like a link.
6
1
57
@malfaitrobin
Robin Malfait
3 years
@ForbesLindesay @adamwathan Are there any specific concerns you have? Because it doesn't have to suck:
Tweet media one
7
0
55
@malfaitrobin
Robin Malfait
1 month
@adamdotdev I'm sure you know this, but all elements with an id are global 😎, so you can access them directly on the `window` object. `document.getElementById("foo") === ` or even just `foo` Maybe don't do this though 😅
3
0
52
@malfaitrobin
Robin Malfait
3 years
Always nice to see all this green at the end of the day! 😊
@adamwathan
Adam Wathan
3 years
So many goodies coming in another week or so 🥳 So impressed by the work @malfaitrobin has been doing on this stuff 😍
Tweet media one
16
23
413
2
2
53
@malfaitrobin
Robin Malfait
4 years
Testing a Transition component is not the easiest there is. But what if we could visualise it.. 🤔
Tweet media one
6
1
51
@malfaitrobin
Robin Malfait
3 years
😎
@timneutkens
Tim
3 years
New Next.js RFC: Tailwind Support! ◆ Fast DX ◆ Zero Config ◆ Backwards Compatible
Tweet media one
32
229
2K
1
1
49
@malfaitrobin
Robin Malfait
3 years
New tabs component is published!
@adamwathan
Adam Wathan
3 years
👻 Headless UI v1.4 is out! Includes an all-new tabs component + new APIs for manually closing disclosures and popovers 🥳
22
101
832
4
0
50
@malfaitrobin
Robin Malfait
3 years
@adamwathan What a year! Thanks for giving me a chance! ❤️
2
0
48
@malfaitrobin
Robin Malfait
4 years
@adamwathan I don't know what happened, but after retrying for literally 25 minutes it just worked... Sooo @tailwindcss 1.8.1 has been published 🎉
3
1
46
@malfaitrobin
Robin Malfait
3 years
@taylorotwell I think you are exposing too much detail. How about this one: 'Building something'
Tweet media one
3
2
46
@malfaitrobin
Robin Malfait
6 years
Do you use @PrettierCode in VSCode? Please give this a read Thank you!
1
11
45
@malfaitrobin
Robin Malfait
4 years
Tweet media one
1
0
45
@malfaitrobin
Robin Malfait
4 years
@jlengstorf I love this! I have this in starship.toml: [directory.substitutions] "~/github.com/" = "" I also have all git repo's in a github/{user}/{repo} folder. Here is the best part, I can "click" the folder to go to GitHub!
Tweet media one
4
3
44
@malfaitrobin
Robin Malfait
4 years
@benawad That's how React Suspense is implemented, throwing promises!
1
4
43
@malfaitrobin
Robin Malfait
3 years
Here is a fun update. This is purely the diagnostics printer, so what if we could feed it with real data? I used tsserver. Here is default tsc (first) vs mine (second). We can also group them by the error code (third).
Tweet media one
Tweet media two
Tweet media three
5
5
41
@malfaitrobin
Robin Malfait
3 years
@adamwathan I don't think that @steveschoger can teach me anything. I mean...
Tweet media one
3
0
42
@malfaitrobin
Robin Malfait
4 years
👀 There is also some fun TypeScript stuff going on. Notice how the `href` is available when we try to render an `a` tag using the `as` prop.
Tweet media one
Tweet media two
@adamwathan
Adam Wathan
4 years
🚀 We released the very first version of `tailwindui/react` this week! It introduces a utility-friendly <Transition> component, so you can easily style enter/leave transitions with utility classes in React, just like you can in Vue 🙌 Check it out!
26
140
841
2
1
37
@malfaitrobin
Robin Malfait
2 years
@diegohaz Hah yep! Especially now that I've been doing a bit more Rust I agree!
@malfaitrobin
Robin Malfait
5 years
Unpopular opinion: in JavaScript I like camelCase variables for functions and snake_case variables for any other non-invokable variable. ¯\_(ツ)_/¯
4
1
11
1
1
36
@malfaitrobin
Robin Malfait
3 years
@wesbos I used to use `type` (It's TypeScript and not InterfaceScript after all...) however, the TS team says that `interface` is faster and produces cleaner/better errors. Source:
@drosenwasser
Daniel Rosenwasser
4 years
@johnny_reilly @robpalmer2 Honestly, my take is that it should really just be interfaces for anything that they can model. There is no benefit to type aliases when there are so many issues around display/perf.
5
5
52
4
2
35
@malfaitrobin
Robin Malfait
2 years
@adamwathan Also ban users with a comment like "+1" or "doesn't work" thanks
3
0
34
@malfaitrobin
Robin Malfait
9 years
Tweet media one
6
44
35
@malfaitrobin
Robin Malfait
2 years
@sebdedeyne @tailwindcss Hey! Checkout this thread:
@adamwathan
Adam Wathan
2 years
Everyone keeps asking for variant-grouping in Tailwind so @malfaitrobin took a stab at it today... Took something like 20 lines of actual code — great feeling when that happens because it proves your existing system was a really accurate model of the problem 💪
Tweet media one
31
43
579
1
0
34
@malfaitrobin
Robin Malfait
4 years
I got an email from Amazon Web Services <aws-marketing-email-replies @amazon .com>, what’s happening? 😬🙃 @awscloud
Tweet media one
7
2
32
@malfaitrobin
Robin Malfait
2 months
@adamwathan Our beautiful ASCII art is ruined by italic text 😭
Tweet media one
2
0
31
@malfaitrobin
Robin Malfait
3 years
@dabit3 We also have 50 shades of gray! ()
Tweet media one
0
0
30
@malfaitrobin
Robin Malfait
3 years
At this point, this toy project was becoming more complex, so I started writing tests. 😎
Tweet media one
2
0
30
@malfaitrobin
Robin Malfait
1 year
Finished Advent of Code with Rust this year. Pretty happy with the results, thanks @ericwastl !
Tweet media one
1
0
31
@malfaitrobin
Robin Malfait
5 years
0
0
29
@malfaitrobin
Robin Malfait
5 months
Facts 🤝
@adamwathan
Adam Wathan
5 months
You know what’s better than one icon next to your name? Two icons.
Tweet media one
38
7
981
2
0
29
@malfaitrobin
Robin Malfait
3 years
*Cries in browser keyboard events* Alt:
Tweet media one
4
0
30
@malfaitrobin
Robin Malfait
3 years
This was my initial version, already pretty cool, but there is a lot we can improve here.
Tweet media one
Tweet media two
1
0
28
@malfaitrobin
Robin Malfait
7 years
@kentcdodds work in progress: prettier-eslint for @code
3
4
29
@malfaitrobin
Robin Malfait
3 years
We've been working on some stuff, check it out!
@adamwathan
Adam Wathan
3 years
🥳 Excited to finally release Tailwind UI Ecommerce! 🧁 Over 100 new components 🍨 14 new component categories 🍰 7 new page example categories Shopping carts, checkout forms, product pages, order summaries — it's an ecommerce extravaganza 🙌🏻
75
237
2K
0
0
29
@malfaitrobin
Robin Malfait
3 years
Started playing with word wrap for your messages based on your terminal width (or an environment variable). Before vs after
Tweet media one
Tweet media two
1
3
28
@malfaitrobin
Robin Malfait
3 years
👀
@bradlc
Brad Cornes
3 years
VS @Code ’s built-in picker is great for tweaking those arbitrary colour values! 🎨👀
3
23
241
0
3
27
@malfaitrobin
Robin Malfait
4 years
Also implemented some custom matchers: (Left "new"; Right "old")
Tweet media one
Tweet media two
1
0
28
@malfaitrobin
Robin Malfait
2 months
0
0
26
@malfaitrobin
Robin Malfait
7 months
@adamwathan <Foo onMount={cb}> 🧠 </Foo onUnmount={cb}>
0
0
27
@malfaitrobin
Robin Malfait
3 years
⚠️Please use this version, because the eval is unsafe (shell injection issues) ⚠️ Thanks @codewithanthony !
@codewithanthony
Anthony Sottile
3 years
@malfaitrobin by the way, I don't think you need `eval` -- this works: shush() { "$@" >& /dev/null }
0
0
27
0
0
27
@malfaitrobin
Robin Malfait
3 years
PSA: If you have a PSA1 mic stand, and your mic is not _that_ heavy... don't use WD-40 if it makes squeaky sounds... 🤦‍♂️
Tweet media one
5
0
26
@malfaitrobin
Robin Malfait
3 years
@ericlbarnes "The French have fries" do you want me to come to the US Mr Barnes 😡😡 Signed, a dude from Belgium 😅
1
0
26
@malfaitrobin
Robin Malfait
7 years
I created a vscode plugin prettier-eslint, feedback is much appreciated! /cc @kentcdodds
1
7
26
@malfaitrobin
Robin Malfait
4 years
Aaaand dropped it. We are using @TestingLib which already has these assertions! 🙏
1
0
25
@malfaitrobin
Robin Malfait
2 years
🥵
@adamwathan
Adam Wathan
2 years
We just released our first set of official Tailwind CSS site templates! 🥳 Beautifully designed, expertly crafted Next.js projects, built exactly the way we'd build them for production. And it's a free update for existing Tailwind UI customers ✨
Tweet media one
163
292
2K
0
1
25
@malfaitrobin
Robin Malfait
3 months
@wesleytodd I prefer something like this: await fetch(url).then(r => r.json())
2
0
25
@malfaitrobin
Robin Malfait
3 years
👀👀
@adamwathan
Adam Wathan
3 years
Excited to share that official React + Vue support is coming to Tailwind UI! 🙌 We'll be sending out behind-the-scenes progress updates and news about the inevitable release, can sign up here if that sounds exciting to you 🥳
49
131
1K
1
0
25
@malfaitrobin
Robin Malfait
3 years
😱 ReferenceError: javascript is not defined
4
0
25
@malfaitrobin
Robin Malfait
3 years
What if.. we could group related diagnostics together 🤔
Tweet media one
1
2
22
@malfaitrobin
Robin Malfait
3 years
@jbrooksuk I am currently a big fan of Nord because it is so calm and easy on the eyes. Here is a screenshot used in my editor:
Tweet media one
3
0
24
@malfaitrobin
Robin Malfait
3 years
The next improvement we could make is when we have the same "message" on the same line multiple times. We can also squash those to save some space.
Tweet media one
Tweet media two
2
0
23
@malfaitrobin
Robin Malfait
4 years
@adamwathan Oh no, you should take a new screenshot!
Tweet media one
1
0
24
@malfaitrobin
Robin Malfait
3 years
@ryanflorence What theme and font is this?
1
0
24
@malfaitrobin
Robin Malfait
2 months
🏎️🏎️🏎️💨
@adamwathan
Adam Wathan
2 months
Just thought to compare Tailwind CSS v3 and v4 incremental build performance with minification enabled for the first time today. Literally over 800x faster in some cases 😂
Tweet media one
17
23
545
0
0
23
@malfaitrobin
Robin Malfait
3 years
@sophiebits Was it this one?
@sodiumPen
hazel☀️
3 years
Tweet media one
185
1K
9K
2
0
23
@malfaitrobin
Robin Malfait
2 years
@trashh_dev Because then my code doesn't jump around when toggling it. What's rong with you? 🧐
2
0
23
@malfaitrobin
Robin Malfait
7 months
@aarondfrancis I wrote a `nerdmode` script that I can pass any command to. E.g.: `nerdmode npm run test`. While it's running, my lights turn blue, when tests pass the lights turn green, when tests fail, the lights turn red. After 5seconds, they reset. 🤓
3
0
23
@malfaitrobin
Robin Malfait
3 years
@adamwathan *Day in the life of a Software Engineer*
1
1
22
@malfaitrobin
Robin Malfait
3 years
Been working on something with @bradlc ! "our" format, to React & Vue. It will use Headless UI behind the scenes where possible! 🤩
@adamwathan
Adam Wathan
3 years
The work @bradlc and @malfaitrobin have been doing to support popular JS frameworks in Tailwind UI is truly wild 🤯 They've come up with a custom authoring format that we parse with PostHTML and render to different targets using custom renderers and it's 👌 Can't wait to ship!
Tweet media one
Tweet media two
9
12
233
1
0
23
@malfaitrobin
Robin Malfait
3 years
🔴 Going to stream some invoice system development with Next.js & Tailwind later today! Schedule:
2
2
22
@malfaitrobin
Robin Malfait
4 years
@alxrblm @tailwindcss There have been a few so far. Doing too much work. Doing work that is not necessary at all. I've been using some flamegraphs to detect the bottlenecks in the hot path! Here is a Draft PR for more info:
0
0
22
@malfaitrobin
Robin Malfait
3 years
One improvement we can make is to render related diagnostics in the same "block". For example when doing math with strings and numbers.
Tweet media one
1
0
21
@malfaitrobin
Robin Malfait
2 years
@ThePrimeagen Don't forget the one with a space!
Tweet media one
2
0
22
@malfaitrobin
Robin Malfait
3 years
@firstdrafthell I love it, I was inspired by your tweet and started playing with my own JavaScript version. Here are a few examples:
Tweet media one
Tweet media two
Tweet media three
Tweet media four
2
0
22
@malfaitrobin
Robin Malfait
3 years
Variant stacking and arbitrary values... Check!
Tweet media one
1
0
21
@malfaitrobin
Robin Malfait
5 years
@rauschma I?.mis?.this?.syntax because && because.I && because.I.hate && because.I.hate.this && because.I.hate.this.syntax.
0
1
21
@malfaitrobin
Robin Malfait
3 years
A few more improvements, the line of an "issue" has a red box in front. We can also render multiple diagnostics with the correct color. "Notes" get their own section at the bottom.
Tweet media one
1
0
20
@malfaitrobin
Robin Malfait
3 years
Only generate what you need? Check!
Tweet media one
2
0
21