Founder of @pinyinly, Co-founder of @hidovetail, previously @atlassian

Sydney, Australia
Joined March 2009
Bradley Ayers retweeted
Stripe offered to acquire us for $1.2 billion when we had $2M in revenue. Today, we've raised $330M at an $8B valuation and reached $1B ARR. We could've died three times during this journey. This is the story I've never told anyone before:
1,501
1,897
668
29,073
46,959,852
internal tools start simple then slowly evolve. for me it starts with a Node.js script, then i extend it to take CLI arguments, and then (rarely & reluctantly) take the huge leap to web UI but i've just discovered a TUI using react + github.com/vadimdemedes/ink exists and is great
3
125
i did a deep dive into nativewind v4 last week for a universal expo project and it’s very impressive. the approach is very elegant and reminds me of how flexbox is used in react-native. CSS variables in react-native is a killer feature
1
5
191
Looking into visual regression testing with Expo today, any suggestions?
1
2
152
I've been using moon for a new project (instead of Nx) and have been very pleased with it. It's worth taking a look for mono repo stuff.
1
2
488
StripeConEu being a conference not about Stripe is confusing
139
I've been using io-ts for years but this week took at look at Zod. Based on npmtrends it's much more popular, but after using it I'd say it's basically the same, but not obviously better… 🤔 So why did Zod win?
2
228
I've been doing some Android development and hit a snag getting screenshots onto my Mac. With iOS I just use AirDrop. After hunting around I found Bluetooth File Transfer and it seems good. Is this what everyone else does?
189
Expo's "typed routes" is pretty nice. I wrote a type-safe router for React (web) a few years ago, but without TypeScript's Template Literal Types the API was pretty awkward. I love that type-safe routing is now table-stakes. docs.expo.dev/router/referen…
118
After a couple of months of not using flex-box I have to re-learn the API, `justify` vs `align`, `content` vs `items` are the most confusing for me 😬. I find the "main axis" and "cross axis" terms in the docs intuitive.
2
4
351
Just realised in semver ~1 and ~1.0 are different. I thought ~ meant "patches allowed", and ^ meant "minors and patches allowed", but it's not that… ``` > semver.satisfies('1.1.0', '~1') true > semver.satisfies('1.1.0', '~1.0') false ``` npmjs.com/package/semver explains it
87
I thought `Error#cause` was just a Sentry convention, but it turns out it's been supported natively since ~2021. developer.mozilla.org/en-US/…
93
TIL TDZ aka "temporal dead zone" in JavaScript, and subtle differences between var / let / const github.com/microsoft/TypeScr…
1
123
Bradley Ayers retweeted
1/ 📣 Exciting news folks 📣 We’ve raised $63M USD in our Series A to help us evolve our product, invest in our community, and grow our team 🚀 dvtl.link/3rysUKv
4
14
8
61
Oh noooo websocket.org/echo.html is no more, it's referenced all over the web as the goto debug-your-browser-and-internet test. Can anyone recommend a replacement?
2
2