
Talking with Aiden Bai and Tobiloba Adedeji from Million-js
The hosts talk with the Million.js team about performance optimizations for React, the challenges of open-source funding, and building a community
Episode Description
Aiden Bai discusses Million JS, a tool that speeds up React apps, plus open source funding challenges and a surprise appearance from Dimension's teenage founder.
Episode Summary
This JavaScript Jam Live episode features Aiden Bai, creator of Million JS, explaining how his tool replaces React's virtual DOM with a faster alternative, allowing developers to wrap components in a block function for improved client-side rendering performance. The conversation traces Aiden's journey from bored high schooler tinkering with side projects to managing a growing open source community, touching on the challenges of sustainability and funding—he's currently relying on GitHub sponsors while navigating a chicken-and-egg problem between stabilizing the tool and monetizing it. Technical discussion covers how Million's for component optimizes list rendering compared to React's array map approach, the relationship between Million and React Server Components, and the potential impact of React's upcoming Forget compiler. The episode takes an unexpected turn when Tejas Ravishankar, founder of Dimension (a unified engineering collaboration platform and Million JS sponsor), joins to share his own story of raising a pre-seed round at 16 with backing from GitHub co-founder Tom Preston-Werner. Throughout, the hosts and community members offer practical advice on building in public, engaging sponsors, and avoiding burnout, while reinforcing the theme that meaningful open source work requires more than just engineering—it demands community building, documentation, and a clear product vision.
Chapters
00:00:00 - Introductions and What Is Million JS
The episode opens with hosts Scott Steinlage and Anthony Campolo welcoming listeners to JavaScript Jam Live and introducing Aiden Bai, creator of Million JS, who's joining from San Francisco near the Golden Gate Bridge. After some casual conversation about upcoming trips and the Secret Sauce video series, the hosts prompt Aiden to explain his project.
Aiden describes Million JS as a tool that makes React and Next.js frontends faster by providing a virtual DOM that outperforms React's built-in one. Developers can wrap components in a block function—similar to a higher-order component—to get improved performance, particularly in client-rendering-heavy scenarios. He notes the team is exploring a broader suite of tools for React performance optimization.
00:05:06 - College, Visualization, and the Vision Behind Million
Aiden shares that he's heading to the University of Washington to study computer science, drawn by the school's data visualization labs where D3.js originated. Anthony recommends Bret Victor's work on visual programming tools. The conversation shifts to Million's founding vision: giving React developers great user experience without sacrificing developer experience.
Aiden explains the core philosophy—what if developers could have their cake and eat it too, keeping React's familiar DX while dramatically improving performance on low-end devices? He describes Million's current form as a virtual DOM replacement for faster client rendering and acknowledges that while the project is complex and full of challenges, it represents a meaningful attempt to close React's performance gap.
00:09:40 - Open Source Realities and Burnout
Anthony asks Aiden about the most unexpected aspects of open source. Aiden reflects on how overwhelming the non-engineering dimensions have been—community management, social media, sustainability, and funding—noting that before Million he was making quirky solo projects like a hands-free selfie tool. He candidly admits he'd tell his Day 1 self to set boundaries, describing work cycles that run from midnight to noon.
The hosts and community members weigh in on burnout prevention and the importance of not locking yourself into rigid deliverables. Scott emphasizes that when you're in the flow, you're in the flow, but sustainable pacing matters. The discussion highlights how open source success requires skills far beyond code, and that admitting what you don't know is a strength rather than a weakness.
00:12:16 - React Performance Culture and the Meta-Framework Question
Aiden observes that most developers aren't deeply invested in frontend performance—perhaps only five to ten percent actively engage with it—but fatigue with slow React apps is growing. The conversation turns to whether Million should become a meta-framework or integrate into existing stacks, and how React Server Components intersect with Million's scope.
Aiden explains that RSC handles the server-side rendering story and reduces some of Million's original scope, but Million remains essential for client components that require heavy re-rendering, like data tables. He also touches on hydration improvements and Qwik's resumability approach, suggesting these paradigm-level changes are where the biggest performance gains lie, since React can't easily rewrite a decade of architecture.
00:19:19 - Funding Challenges and Community Support
The conversation zeroes in on open source funding. Aiden candidly describes the chicken-and-egg problem: the project needs stabilization to attract paying users, but stabilization requires funding that doesn't yet exist, leaving him reliant on sponsors at roughly ninety dollars a month. Community members spontaneously donate during the live show, and Anthony and Scott offer advice on seeking company sponsors and building in public.
Anthony suggests giving sponsors early access to development previews to create tighter feedback loops, while Scott references Tanner Linsley's approach to building in public. The comparison to Lodash's rise as a drop-in Underscore replacement surfaces, with Jason noting Aiden could ride a similar wave. The segment captures the real tension between passion-driven open source work and financial sustainability.
00:27:18 - Developer Education, Documentation, and the Block API
Aiden praises developer educators, noting that even teaching Million's two core features—the block function and the for component—is surprisingly difficult. Anthony highlights Aiden's blog posts as a major factor in Million's traction, particularly "The Virtual DOM: Back in Block" and "Behind the Block," calling them essential reading for understanding the project's technical vision.
Aiden expresses a desire for more open source projects to document their architecture so others can learn from and build upon them. He embraces the idea that people should copy Million and create even better alternatives, drawing a comparison to Tesla's strategy of winning not by being the only electric car company but by making every company an electric car company. The discussion reinforces readme-driven development as a growth strategy.
00:31:32 - Technical Deep Dive: The For Component and React's Limitations
Jason asks about Million's for component and why it matters compared to React's standard array map pattern. Aiden explains that Million provides optimized list rendering that avoids the inefficiency of generating and diffing entire arrays on each render, saving both memory and function calls. The conversation explores why React never built these optimizations natively.
Aiden argues that most React applications are fast enough and most performance problems are actually data infrastructure issues—like shipping two megabytes of icon packs—rather than frontend rendering bottlenecks. React's team focuses on preventing re-renders entirely, but when rendering is unavoidable, as with large data tables, Million excels. The discussion also covers React's Forget compiler, which could eliminate rules of hooks by compiling them away at build time.
00:37:35 - Toby's Story and Building a Million JS Community
Tobiloba Adedeji, Million's developer advocate, joins to share how he discovered the project on Daily Dev, tested it immediately, and reached out to Aiden on Discord. His path from curious developer to core team member illustrates how open source communities grow organically when contributors find roles that match their skills beyond just writing code.
Aiden admits he had no plan when Toby approached him but recognized the project needed help with community efforts, social media, and non-engineering tasks. The hosts reflect on how meaningful contributions don't always require deep technical context, and that scaling any worthwhile project eventually requires bringing in people who complement the creator's weaknesses.
00:43:15 - Real-World Use Cases and the Path Forward
Brad asks about companies using Million JS in production. Aiden mentions his work at Wise integrating Million to improve performance for smart home camera webviews, resulting in significant Lighthouse score improvements. He also reveals upcoming conversations with Ken Wheeler and ongoing work on developer tools—including a potential Chrome extension—to help teams identify where Million could provide the most benefit.
Jason pushes for case studies and white papers that would help enterprise developers make cost-benefit decisions about adopting Million. Aiden and Toby confirm this is actively being worked on. The discussion highlights a gap between Million's technical promise and the documentation needed for broader enterprise adoption, with the community offering constructive suggestions for bridging that divide.
00:49:44 - Million as a Performance Stack and Dimension's Entrance
The conversation shifts toward Million's future as a broader performance stack rather than just a frontend tool. Aiden envisions a curated suite of tools addressing the full spectrum of web performance issues. Tejas Ravishankar from Dimension then joins the space, introducing his unified engineering collaboration platform that integrates project management, chat, code, and deployments.
Tejas describes how Dimension addresses tool fragmentation for engineering teams by letting them bring their own integrations into a single workspace. The platform includes AI-powered features using GPT-4 that can automatically detect actionable messages in chat, create tasks, assign team members, and generate descriptions. The hosts are impressed by both the product vision and the fact that Tejas is only seventeen years old.
00:58:40 - Young Founders, Fundraising, and Closing Thoughts
The conversation turns to Tejas's fundraising journey, which began with cold-pitching VC funds as a teenager. After many rejections, a connection through Shawn Wang led to a meeting with GitHub co-founder Tom Preston-Werner, whose investment unlocked the entire pre-seed round. The hosts marvel at the young founders' accomplishments while reflecting on how today's generation is web-native and collaborative-tool-native.
Scott and Anthony wrap the episode by encouraging listeners to follow the guests, subscribe to the JavaScript Jam newsletter, and sponsor Aiden on GitHub. Toby and Aiden share their social links, with Aiden giving a shout-out to Toby's job search. The episode closes on an energetic note, with the hosts expressing confidence that Million JS and its surrounding community will continue making waves in the React ecosystem. The full recording runs to approximately 01:20:00.
Transcript
00:00:00 - Anthony Campolo
Hello?
00:00:01 - Scott Steinlage
Yo, can you hear me now?
00:00:03 - Anthony Campolo
Oh, yes, I can.
00:00:04 - Scott Steinlage
All right, what's up, everybody? Welcome to JavaScript Jam Live. We do this every Wednesday at 12:00 p.m. Pacific Standard Time. Today, however, we're doing it at 11:30 Pacific Standard Time so we can have our awesome friends at Million JS join us for some awesome conversation. How exciting is that? Really exciting. Anthony, what do you think?
00:00:35 - Anthony Campolo
Super exciting. I gotta switch out my AirPods real quick, so you keep going.
00:00:39 - Scott Steinlage
No worries. All right, so I just want to briefly say, whether you're a beginner or whether you're advanced in the world of web development, it doesn't matter. We want to hear from everybody—each and every single one of you. Why? Because it is that much more fun. I'm sure you've heard the term "the more the merrier." Let's make this merry. So whether you're a beginner or advanced, it doesn't matter. Request to come up. Ask questions, make statements, comments, opinions, facts, whatever. We love to hear from you.
00:01:25 - Anthony Campolo
We got Aiden.
00:01:27 - Scott Steinlage
Yeah, here's Aiden. This is your chance to come up and ask questions about Million JS. It'll be a good time. So we've got Aiden here with us today from Million JS. Hey, what's up, man?
00:01:47 - Aiden Bai
Can you hear me?
00:01:48 - Scott Steinlage
We can hear you. I'm gonna go ahead and do the introductions real quick. I'll do myself, then Anthony, and then Aiden, you can come in and we'll go from there. So my name is Scott Steinlage and I am the technical community manager at Edgio, and I am a co-host of this here podcast. Anthony, what's up?
00:02:08 - Anthony Campolo
My name is Anthony Campolo and I'm a developer advocate at Edgio. Super excited for this episode. We got Aiden and potentially Toby. We'll see.
00:02:20 - Aiden Bai
Hey, I'm Aiden. I'm the creator of Million JS, and I'm tuning in from right next to the Golden Gate Bridge.
00:02:30 - Anthony Campolo
Nice. How long are you there for, in SF?
00:02:34 - Aiden Bai
I'm here basically till Friday, but today is just looking around.
00:02:39 - Anthony Campolo
I'm gonna just miss you. I'll be there in like two weeks.
00:02:43 - Aiden Bai
Oh. Is it for Open Sauce, by chance?
00:02:46 - Anthony Campolo
Kind of. I'm doing a Secret Sauce video and also just doing some stuff with my family. There are no events, really, although I might go to some meetups while I'm around.
00:02:57 - Aiden Bai
Gotcha. That's cool.
00:03:00 - Anthony Campolo
Yeah, maybe it's the first time I'll be on a show where there's like a whole film crew filming you for the interview. Have you seen Secret Sauce?
00:03:06 - Aiden Bai
I have.
00:03:07 - Anthony Campolo
It is so good. Yeah, you'd be a good guest.
00:03:10 - Aiden Bai
I don't even know how they do it.
00:03:12 - Scott Steinlage
Production value, baby. What do you say, Aiden?
00:03:19 - Aiden Bai
It's really cool. I remember watching the video with a React team member or something. That was really good, though I forget who it was.
00:03:36 - Anthony Campolo
Ian Sutherland.
00:03:38 - Aiden Bai
Yeah, they're really good at that.
00:03:45 - Anthony Campolo
That might be it. But yeah, Open Sauce is super great. I'm actually talking with Brian about getting him on the show to demo some stuff. But you should explain—what is Million JS?
00:03:58 - Aiden Bai
Sure. In its current state, Million JS is a tool that can make your React and Next.js frontends faster. What I mean by that is it uses something called a virtual DOM, but it's faster than the React virtual DOM. You can wrap your components in this block function to make them faster, kind of like a higher-order component. It's mainly used in performance-sensitive cases, especially where you have a lot of client rendering. But we're looking into how we can provide a suite of tools to help React developers build faster applications.
00:04:46 - Anthony Campolo
Yeah, and we did a podcast with you not too long ago. I'll drop a link to that. It was really good. We got good numbers on it for our channel as well, so the hype is real.
00:04:59 - Aiden Bai
Let's go—a million views soon.
00:05:05 - Anthony Campolo
Yeah, you should talk a little about—you're a college student, right?
00:05:09 - Aiden Bai
Yeah, I'm going to study computer science.
00:05:15 - Anthony Campolo
You do?
00:05:16 - Aiden Bai
Yeah, I was looking into it. I was thinking of doing media studies just to do something fun, but at this point that would've been...
00:05:29 - Anthony Campolo
A really bad idea if you did that. I just got a music degree.
00:05:37 - Aiden Bai
I see.
00:05:38 - Anthony Campolo
Yeah, media studies could be good if you have a school that has really cutting-edge teachers, equipment, and industry connections. That's like 1% of all schools.
00:05:48 - Aiden Bai
I see. Yeah, I picked UW because the CS program is pretty good, and also there are a lot of labs exploring data visualization. If you've ever heard of D3.js, that comes from UW labs.
00:06:06 - Anthony Campolo
That's cool, because you're gonna get the same CS curriculum at every college in the country. It's really stuff like that that matters.
00:06:14 - Aiden Bai
Exactly. Visualization is cool because it's something that really matters. Like, if you've ever...
00:06:29 - Anthony Campolo
You got some echo coming through, Aiden, I think.
00:06:31 - Aiden Bai
Oh, gotcha.
00:06:32 - Anthony Campolo
Something or other.
00:06:35 - Aiden Bai
Should I continue?
00:06:38 - Anthony Campolo
Yeah. Me and Scott need to stay muted when you're talking.
00:06:42 - Aiden Bai
No problem. Yeah, like, if you look at The New York Times, they do lots of visualizations. And one of the things that UW—University of Washington—works on is visualization frameworks and how to make them fast, very accessible, and able to present a lot of data.
00:07:05 - Anthony Campolo
Yeah, sorry, I'm posting links at the same time. But you may have mentioned it before—do you know Bret Victor?
00:07:14 - Aiden Bai
I'm not familiar.
00:07:16 - Anthony Campolo
So he's known for having these really epic YouTube talks and being one of the first people to think really deeply about how visual programming tools can be used as teaching tools and thought tools. I think you would really dig it. I'll share some of this stuff with you. He's also funny as hell.
00:07:38 - Aiden Bai
Oh, he's the Dynamicland guy. That's cool. Yeah, the one thing I know him for is he posts updates as an image with a Post-it note, which I thought was really cool.
00:07:55 - Anthony Campolo
Yeah. He has this one video called Inventing on Principle that really blew my mind. But yeah, you should get into—what was the thing that inspired you to build Million? How did you identify this highly niche React problem?
00:08:17 - Aiden Bai
Yeah, the core vision behind Million is that we as developers should be using great tools and not have to worry about the user experience. React is really good at providing great developer experience, at the tradeoff of user experience—oftentimes on low-end devices. Of course, now there are tons of Svelte fanatics going like, "Oh, Svelte is so much better," and maybe it is in some aspects.
00:08:54 - Anthony Campolo
Svelte's very old news. It's all about Solid.
00:08:57 - Aiden Bai
Yes. That's true. So Million's principle is, what if we can have our cake and eat it too? We can have great developer experience, we can have great user experience, and we can use React. That's the driving principle behind it. The current form is essentially a virtual DOM replacement in which you can have faster client rendering. It's really complicated, and there are lots of challenges, but it's really cool and you should check it out.
00:09:39 - Anthony Campolo
What has been the thing that was most unexpected about getting involved in open source that kind of caught you off guard?
00:09:48 - Aiden Bai
It's very overwhelming. As someone who literally used to just tinker on my computer alone, working on random web things—literally, before Million, the product right before Million was a selfie tool with Handsfree.js, which is an AI library you can use to learn AI. Every time you threw up a middle finger, it would take a picture, and I called it Fingers Up Camera Capture. So I was working on the weirdest projects. With Million, I found it's not just engineering. You have to think about the people who use it—how you talk to the community, how you grow a community, how you make it sustainable with funding. There's so much more to think about than just engineering.
00:11:01 - Anthony Campolo
If you could contact Aiden on day one, when he started this project, what would you tell him that you know now?
00:11:10 - Aiden Bai
Gosh, don't do this.
00:11:13 - Jason
Good question.
00:11:14 - Anthony Campolo
Give up now. That's hilarious.
00:11:17 - Aiden Bai
No, for real though, it's been a really valuable experience. Day one, definitely don't overwork yourself. When I work on a problem, I spend a very sustained period of time, which means I start at like 12 a.m. and end at 12 p.m., and eventually that becomes my daily cycle. Make sure you set your boundaries, because if you don't, your project will consume you.
00:12:04 - Scott Steinlage
But when you're vibing, you're vibing.
00:12:05 - Aiden Bai
That's so true.
00:12:08 - Anthony Campolo
That's true. The vibes, Scott.
00:12:11 - Aiden Bai
The vibes, of course.
00:12:15 - Anthony Campolo
Awesome.
00:12:16 - Scott Steinlage
Cool.
00:12:16 - Anthony Campolo
And who—like, people who come to Million—what is it that excites them about it?
00:12:24 - Aiden Bai
I think people are just kind of tired of React. And I don't think it's the React team's fault necessarily. It's just that there's not much of a performance culture around frontend teams. I'm not saying people don't like performance—everyone wants performance for free.
00:12:52 - Anthony Campolo
It's been a slow roll. I feel like the community has started caring more and more over the last five to ten years as people started yelling louder and louder about it.
00:13:02 - Aiden Bai
Yeah, exactly. But I still think that's a very small percentile—maybe 5 to 10%. Essentially the people on Twitter. The rest are like, "Oh yeah, I've heard of Svelte, probably haven't used it yet." I think people are just tired of slow stuff and they're ready for something new. And React isn't ready to give that yet.
00:13:31 - Anthony Campolo
Cool. And something we talked about on the podcast I thought was pretty interesting is this debate about whether to make a meta-framework, what that would mean, whether you kind of plug into other tools, and how to flesh out the server-side story here.
00:13:49 - Aiden Bai
Yeah, there's definitely a lot of work to do. What Million tries to solve—what I've been thinking about—is that Million solves a lot of frontend performance problems, but only a niche subset of them. The reason people are hesitant to adopt it is because they don't know what the tradeoffs are. And there are tradeoffs. So one thing we're fleshing out is how can we make this more stable where there is no downside and there is only upside to Million JS?
00:14:32 - Anthony Campolo
It's a free lunch.
00:14:34 - Aiden Bai
Exactly—that's exactly what we want to make it. But also thinking about how we can make this not just a frontend performance tool. Most performance issues aren't frontend issues, and that's what a lot of people don't think about. A lot of issues are data infrastructure issues, or specifically the connection between your backend and your frontend. I was working at a company and we were shipping 2 megabytes worth of icon packs to the frontend, and that was the reason our website was slow—not because we were using React. So thinking about how we can adapt or expand the Million project to performance issues like that is also an interesting thought. What if we could create a suite—like a performance stack—where instead of trying to Google for whatever tools, you have a curated stack to use?
00:15:41 - Anthony Campolo
Yeah, I saw someone posted a million stack that had GraphQL stuff in it.
00:15:47 - Aiden Bai
Oh yeah.
00:15:48 - Anthony Campolo
I couldn't tell if it was a joke or a joke that was kind of serious.
00:15:54 - Aiden Bai
I think... what was his name? Nate, right? Yeah.
00:15:59 - Anthony Campolo
Does anyone use GraphQL with Million?
00:16:03 - Aiden Bai
I wouldn't even know.
00:16:06 - Anthony Campolo
Maybe it shouldn't be that. Like, all it is is you're sending a string over the wire with a query in it. You can do GraphQL on literally any frontend framework or vanilla JavaScript. It's actually the simplest thing in the world.
00:16:20 - Aiden Bai
Yeah, I remember using urql—U-R-Q-L. I have to spend some time digging into the backend. I'm still stuck in this little JavaScript niche runtime world.
00:16:38 - Anthony Campolo
So how do you want to expand? What do you want to start learning?
00:16:44 - Aiden Bai
I think one of the interesting things is RSC. Wait, let me rewind a little bit—I just lost my train of thought.
00:17:05 - Anthony Campolo
RSC is a topic in itself.
00:17:08 - Aiden Bai
Yeah. How can we transition Million into an RSC world? I think it's already somewhat applicable. Million's scope pre-RSC is pretty wide, and RSC eats up a little bit of Million's scope. So thinking about how we can...
00:17:27 - Anthony Campolo
Can you say more about that? How it eats up some of the scope?
00:17:30 - Aiden Bai
Yeah. So RSC provides essentially nested islands. You can designate certain parts as static and then certain parts as server or client. You don't need to render certain parts of the user interface over and over again with RSC. But Million's scope isn't necessarily the server components—it's where the client components are. The whole point is when the shit hits the fan and you need to render a bunch of times, then what do you do? That's what Million is for. But what if we could expand it to more than that? It already works with RSC, but only with client components. What if we could think about improving hydration using this methodology?
00:18:33 - Anthony Campolo
Yeah, I love the hydration topic. I got really into it about two years ago when Astro was first coming out. React struggled with it for sure.
00:18:46 - Aiden Bai
Yeah. Also, resumability with Qwik—that is a whole other crazy wizardry thing to look into.
00:18:55 - Anthony Campolo
Yeah, definitely. You should get in touch with Mishko if you're not already.
00:19:01 - Aiden Bai
Yeah, what they're doing is super impressive.
00:19:04 - Anthony Campolo
Yeah, we've had them on our show a bunch of times.
00:19:07 - Aiden Bai
Oh, cool. I'll definitely look at those.
00:19:12 - Anthony Campolo
So what's some other stuff you're excited about with the project?
00:19:18 - Aiden Bai
Oh man, funding is so much fun. Oh my God.
00:19:22 - Anthony Campolo
Yeah, let's talk about that. How are you approaching it? Where can people give you money?
00:19:26 - Aiden Bai
Okay, I think I'm really bad at asking for money because everyone...
00:19:35 - Anthony Campolo
Give Aiden money right now.
00:19:37 - Aiden Bai
No, so I wrote a sponsor pitch. I was like, "I've been working on this for two years. You can help me do this." But one thing I was missing was—what are the goals I have for it? What's the product vision? What are you gonna achieve? What is my money going toward?
00:19:58 - Anthony Campolo
Work on more open source.
00:20:00 - Aiden Bai
Yes, that's the whole product vision type thing. What are you going to achieve? Thinking about what your funding is actually enabling.
00:20:15 - Anthony Campolo
You can eat now.
00:20:16 - Aiden Bai
So I can eat? Yeah. Someone made a tweet going, "Go sponsor Aiden. He's literally working for $90 a month on a project." It was funny as hell. The funding is definitely a challenge. There are a bunch of options—do we go sponsored open source? How do we monetize it or productize it? And the real problem is our project isn't stable enough. There is friction in some adoption, especially in large applications. We need to stabilize it, but stabilization requires funding, and there's no funding source. So it's resorted to sponsors.
00:21:16 - Tobiloba Adedeji
Right.
00:21:17 - Aiden Bai
And it's very difficult to raise money off of that. So it's sort of a chicken-and-egg problem—how do you get money, and how do you stabilize it so you get people that are willing to give you money?
00:21:29 - Anthony Campolo
Yeah, I would look for company sponsors that could pitch in a bit more. Like Blitz—before Brandon Bayer had his own company, he was getting sponsored by Vercel. Create T3 App gets sponsored by Vercel, Astro gets funded. There are definitely ways now where companies want to support a project because they want you to build stuff for their platform, and they also want to be seen as supporting the community. Obviously, no one has money right now, so that's kind of an issue.
00:22:05 - Scott Steinlage
Yeah, people have money. It's just where they're going to put it—do they see the value in what you have to offer? One thing I would think about is listening to Brandon's first ever in-person interview that he just did with Tech Is The New Black, I think it is. He talks about his journey from that to getting funding and everything.
00:22:33 - Aiden Bai
Totally. I'll definitely take a look.
00:22:40 - Scott Steinlage
Tech Is The New Black, I think it is.
00:22:44 - Aiden Bai
Okay, cool.
00:22:45 - Anthony Campolo
I just gave you five bucks.
00:22:47 - Aiden Bai
Hey, thank you for the donation. I saw it.
00:22:56 - Scott Steinlage
Where can people give you money?
00:22:57 - Anthony Campolo
Link to the jumbotron. Click that link. github.com/sponsors/AidenBI. Is that how it's pronounced?
00:23:06 - Aiden Bai
Yep, you got it.
00:23:07 - Anthony Campolo
Sweet. Aiden Bai, with a Y in between Aiden and Bai.
00:23:14 - Aiden Bai
Because I couldn't get Aiden Bai.
00:23:15 - Anthony Campolo
Don't forget the Y before the Bai. What's up, Burnt?
00:23:19 - Scott Steinlage
Ifti.
00:23:21 - Speaker 6
Hey, what's up? Yeah, I was just gonna say I'm contributing five bucks to Aiden. I've never actually contributed to anyone, but I felt so compelled because I feel like he changed the whole game. It is the answer to all the arguments about React's performance. It's the best DX, and then he comes in and brings in basically a new renderer and enables this amazing performance that can match any of these other frameworks. So you can have your DX and your performance—you can have your cake and eat it too. It's a total no-brainer. I only have five bucks because I'm unemployed at the moment.
00:24:05 - Anthony Campolo
That's pretty sweet given you have no income. No joke.
00:24:12 - Speaker 6
Yeah. But I would like to go all in. This guy's future is so bright, he needs sunglasses.
00:24:25 - Anthony Campolo
Something to think about—this can be worth pursuing or not—but trying to get your sponsors in on the development of either the framework itself or features, being like, "Here's sneak peeks, here's things I'm working on." Because then they feel like they get to see stuff early, and they're more inclined to put eyeballs on it and give you feedback, and you can create more of a tight-knit thing. It doesn't always work out, but it's a thing to consider.
00:24:55 - Scott Steinlage
Hey, Tanner did that—building in public, bringing them in the loop. People want to feel like they're a part of something. If you make them feel like they're a part of it, then they're going to help you grow it and they're going to be more invested, either time or money.
00:25:13 - Anthony Campolo
Jason, did you just give $5 too?
00:25:17 - Jason
No, I did not. But maybe peer pressure.
00:25:24 - Anthony Campolo
What's up, man?
00:25:25 - Jason
Hey, how's it going? What this is bringing to mind is—Million JS looks awesome, so great work, Aiden. I'm just thinking back to Lodash and John-David Dalton, who spent a bunch of time building out that library as a drop-in replacement for Underscore. Underscore was the thing everybody used for jQuery utilities, but it was super slow and had a whole bunch of inefficiencies. Then he came along, was obsessed with micro-optimizations, and released Lodash and rode that wave for a number of years. Anyway, that was just what it brought to mind—memories of the open source community.
00:26:14 - Scott Steinlage
Sounds like there may be a wave you might be able to ride for a few years, Aiden.
00:26:20 - Anthony Campolo
Just.
00:26:20 - Jason
Just don't.
00:26:20 - Anthony Campolo
Just.
00:26:21 - Aiden Bai
The next library is called Just Just.
00:26:23 - Anthony Campolo
Don't Get Burned Out.
00:26:24 - Aiden Bai
Exactly. That is surprisingly very easy to do. Thank you so much. A lot of it is like, I don't know what I'm doing, so it's really difficult to...
00:26:54 - Anthony Campolo
Well, there's no model for this. No one's really done this before. That's why I'm saying don't try and pin yourself down to certain deliverables, because that's how you get overwhelmed. Just be like, "I'm gonna keep working on this. I'm gonna find ways to get people involved." And if people want to support that, they can support that. That's how you should think about it for now, at least.
00:27:14 - Scott Steinlage
Yeah. And you should go on Nick Taylor's show.
00:27:17 - Anthony Campolo
Yeah.
00:27:18 - Scott Steinlage
Because he's all about that.
00:27:19 - Anthony Campolo
Learn with Jason.
00:27:20 - Scott Steinlage
Yeah, right, that too.
00:27:23 - Aiden Bai
I haven't. Yeah.
00:27:24 - Anthony Campolo
I can hook you up with some streamers. Be on Teach Jenn Tech. Yeah. I know them all.
00:27:33 - Scott Steinlage
Yeah, that'd be good.
00:27:37 - Aiden Bai
Yeah, definitely. Also, just a side note—I'm always impressed with developer educators. It's so hard to teach. Even just teaching two things. Million has two features: you can use a block function or you can use a for component. Teaching those features is already hard enough. Developer education is really hard. Much respect for them.
00:28:04 - Anthony Campolo
That's been my whole game this whole time. I told you I got a music education degree, so I kind of parlayed that with some light technology into a job. Knowing how to teach is really important. I'm going to link your blog posts, which are great. You have a 404, though, for Reconciling React, just so you know.
00:28:26 - Aiden Bai
Oh boy. Time to fix that. That's the thing with Nextra. If anyone uses Nextra here—for some reason every time I make a build it has some meta cache files.
00:28:42 - Anthony Campolo
Is it using ISR?
00:28:45 - Aiden Bai
I don't know. That's a good question.
00:28:46 - Anthony Campolo
This thing happened with the FSJam podcast website, which is on Vercel. Every time I put a new episode up, it would instantly break it. I'm like, "Chris, why does he keep doing this?" It did it for like two months.
00:28:56 - Tejas Ravishankar
So mad.
00:28:59 - Aiden Bai
Do you have to clear the build?
00:29:01 - Anthony Campolo
He wrote a webhook to fix it. I don't even know. Dude, just choose Astro. Just ship a static site.
00:29:12 - Aiden Bai
Oh man, fun times.
00:29:15 - Anthony Campolo
Yeah. You have the "Virtual DOM Back in Block" post and the "Behind the Block" post, and they're both really meaty, in-depth articles that lay out the whole vision. I think every project should have at least a couple of good blog posts like this to give the baseline explanation. That's probably why it's helped it take off—people can go look at that and be like, okay, I get it. It's all laid out right here.
00:29:45 - Aiden Bai
Yeah, I completely agree. One thing I wish more projects had—especially SolidJS, or maybe Svelte—is laying out how the architecture works so other frameworks can learn from it.
00:30:06 - Anthony Campolo
Readme-driven development, baby.
00:30:10 - Aiden Bai
Exactly. The thing with Million is I want people to copy Million. People should make a better Million and ship it and get people to use it, or use the block idea internally at their companies—something that works for them. This is just [unclear].
00:30:29 - Anthony Campolo
This is like with Tesla. People say Tesla wins not if it's the only electric car company, but if every company becomes an electric car company.
00:30:38 - Aiden Bai
Exactly.
00:30:40 - Scott Steinlage
More people use it, more people distribute it. It's more well known, it's more trusted, it's more everything. What's up, Jason?
00:30:51 - Jason
I actually have a question if we want to get into the details.
00:30:56 - Scott Steinlage
Go for it.
00:30:57 - Jason
So I haven't tried Million yet, but the main thing you talk about is replacing your maps with the For component. Can you talk about that? I was trying to read through the documentation a little bit, but since you're on the call—can you talk about why that is so important? Because most React apps are full of array maps, and that's the way everybody does it. So if we're going to replace a bunch of code, why?
00:31:32 - Aiden Bai
Okay. So React has optimized list rendering when you assign a key to it, but the way they do it isn't that great. We have a better way to do it that allows you to reconcile blocks very efficiently. For what it's worth, you can use array map inside a block—it just won't be automatically compiled to a For. But if you use a For inside a React component, we know the scope. If you just use an array map inside a normal React component, we don't have control over that. But if you use a For component—
00:32:23 - Anthony Campolo
—then it'll work.
00:32:24 - Aiden Bai
Essentially, you can use array map, but it is only used inside blocks, and we want consistency throughout our UI.
00:32:37 - Jason
Cool. So it's actually using a for loop as opposed to an array map under the covers.
00:32:43 - Aiden Bai
Basically, yeah.
00:32:50 - Aiden Bai
With array map, you generate the entire array and then compare the previous and current arrays you just generated. That's kind of inefficient—you don't want to keep diffing those two things. So we don't do that under the hood. That way it saves memory and is—
00:33:14 - Jason
—a little bit faster, and you're saving yourself a number of function calls.
00:33:22 - Aiden Bai
Exactly.
00:33:25 - Jason
It would have been nice if React had that from the get-go.
00:33:31 - Aiden Bai
Yeah. From my understanding, they're focusing on the how-do-we-prevent-rerendering question. A couple years ago I remember they hired Dominic—who now works on the Svelte team—to explore how they can make React faster. I'm sure they made some improvements, but there are a lot of things that could be better by design.
00:34:05 - Anthony Campolo
Yeah. It's a situation where you can't stop and rewrite ten years of the entire thing. They can only make changes within a certain bounded set of things. But once you actually stop—and this is the point with Qwik, and to a certain extent Solid—you're like, you've got to change the paradigm itself.
00:34:29 - Aiden Bai
Yeah, exactly. I guess that's where RSC and Forget come in, but it's just hard to say. Forget is really cool, though, if you haven't checked it out.
00:34:40 - Anthony Campolo
Talk about Forget. What makes it cool?
00:34:43 - Aiden Bai
I haven't used Forget because I can't. But there is a project called Forgetti—like spaghetti but Forget—by one of the Solid contributors. It's really cool because the way we understand it in principle, it's just a memo compiler. How can we memo stuff so it doesn't rerender as much? But the cool part is that you can essentially imagine all of the runtime hooks we have now and compile them down to two APIs: memo and something else like ref. I don't know what Forgetti uses. Potentially we can, quote unquote, unlock hooks. All of the rules of hooks we have right now—like you can't use useState after a conditional return, or you can't use some hook in an effect—aren't problems anymore because you can compile those away. So maybe in a future version of React they can consider removing rules of hooks because you have access to a compiler.
00:35:55 - Anthony Campolo
I still just find it silly that anyone uses useEffect these days. Every single framework has that data-fetching abstraction now. I haven't written useEffect in probably two years. It's there, I'm just not writing it.
00:36:14 - Speaker 6
Isn't useEffect still useful for loading that initial data, even if you're doing something? Like the last time I wrote an app with React Query, useEffect was the way to load that initial data because React Query is useEffect.
00:36:28 - Anthony Campolo
This is what I mean. You use a library that wraps useEffect, so you don't write the useEffect.
00:36:32 - Aiden Bai
Right, you don't write the useEffect.
00:36:35 - Speaker 6
No, but the initial... I'd have to look at it again. But I thought we were using
00:36:43 - Aiden Bai
[unclear]
00:36:43 - Speaker 6
useEffect for that part. It could have been replaced by something in Next—some kind of functionality in Next.
00:36:52 - Anthony Campolo
Actually, you're right, because useQuery is prebuilt. Does that make sense?
00:36:59 - Scott Steinlage
Anthony, are you listening through a speaker? Because I can hear ourselves.
00:37:07 - Speaker 6
Okay, let me just turn my mic off and see if I can turn that Bluetooth off.
00:37:14 - Scott Steinlage
Oh, that was—
00:37:14 - Anthony Campolo
Yeah, it was Burnt Nifty.
00:37:15 - Scott Steinlage
Yeah, got it.
00:37:19 - Anthony Campolo
But yeah, I'll drop a link. There's things going on with TanStack Query and useEffect, but not super important. I think we got Toby and then Brad. We got a whole bunch of people coming up. Another Million team member. What's up, Toby? You wanna introduce yourself?
00:37:41 - Tobiloba Adedeji
Thank you very much, Anthony. Yeah, I'm Tobiloba, and I'm a developer advocate at Million. I'm happy to be here. We were on one of the JavaScript Jam episodes with Aiden and the team that Anthony hosted recently, and I've been looking forward to being on a space with you guys. Thank you very much for the support and love.
00:38:03 - Anthony Campolo
Super fun. So what do you do, how did you get involved with the project, and why is it the coolest thing ever?
00:38:15 - Tobiloba Adedeji
Yeah, what I do on the project—
00:38:19 - Anthony Campolo
Yep.
00:38:20 - Aiden Bai
Is that what you meant?
00:38:21 - Anthony Campolo
Well, and how you heard about it, how'd you get involved, and what you do?
00:38:26 - Tobiloba Adedeji
Yeah, it was a crazy experience. I just saw it on Daily.dev one day and I clicked on it—"new virtual DOM makes your React applications 70% faster." So I went to the docs, read how to set it up, whipped up a Vite project, and tested it. It was crazy. I couldn't fathom how it was working, but I knew it was some optimization thing. So I joined the community on Discord and reached out to Aiden. We had a mini coffee chat. I've said this story like over two million times, but every time it sounds like a new story. That was pretty much what happened, and everything I'm saying happened earlier this year. It was a crazy experience getting to onboard myself onto a project and even understand it to some level. I still don't understand the entire scope of it—not sure any normal person on the project does except Aiden. But that's pretty much how I got on the project.
00:39:35 - Tobiloba Adedeji
And then Aiden told me that the project needed DevRel help. So I was just like, okay, I could fill this role and use my skills to help out. That's how I joined the project.
00:39:52 - Anthony Campolo
Very cool. Aiden, when he came up and said "I want to do this," what were your thoughts in terms of how to best utilize community members? Did you have a plan, or were you just like, go and do stuff?
00:40:12 - Aiden Bai
To be frank, I didn't have a plan, and I still don't have a plan. I realized there was a problem: there is a lot of stuff to do that's not just engineering, and I can't do this alone. With any open source project, when there are a lot of people that want to use it, you want people to help you with it. Toby has been a really big help in growing our community efforts—talking to people, setting up Discord channels, and stuff like Twitter and all the social media marketing that I don't understand. He's been a huge help there, and he's honestly great.
00:40:55 - Anthony Campolo
Super sweet, awesome.
00:40:57 - Scott Steinlage
Hey, I totally lost my screen. So go ahead.
00:41:11 - Anthony Campolo
Just about community and how there are more things to do than he was able to do alone. And that's a great place to be—someone can come in who doesn't necessarily need to have all the technical context to do meaningful work.
00:41:28 - Scott Steinlage
Yeah. Anything that's worth doing, you're going to need more people to help you. You can't do it on your own if it's going to be of any size.
00:41:46 - Anthony Campolo
I want to win a solitaire tournament.
00:41:49 - Scott Steinlage
Yeah, well, good luck with that.
00:41:51 - Aiden Bai
Yes.
00:41:52 - Scott Steinlage
You need a team of people to help—people to coach. But yeah, anything worthwhile, you're going to want people to help you. Aiden, specifically, just from talking to you during our podcast and on here, I want to tell you that I appreciate how humble you are. I really appreciate your ability to admit things you're not good at and then shine a light on others that are helping you, like Toby. I think it's very respectable, and it's going to take you far if you keep that attitude. It's awesome.
00:42:49 - Anthony Campolo
So appreciate the wise elders giving you advice.
00:42:56 - Aiden Bai
Yeah, I really appreciate it, guys.
00:42:58 - Anthony Campolo
Yeah. Things that get organic traction, I find that usually happens because it actually solves a real problem and does something in a way that gets people excited. Looks like we got a new person potentially coming up. Brad, have you said hey yet? I don't think so.
00:43:20 - Aiden Bai
Hey.
00:43:20 - Brad
No, I hadn't got a chance to. I had to drop out before because I somehow got into the weird Twitter voice thing.
00:43:26 - Anthony Campolo
Oh God. Yeah, where I could only—
00:43:28 - Tejas Ravishankar
I could only hear Jason.
00:43:29 - Brad
This time it wasn't you.
00:43:31 - Anthony Campolo
I think it was Twitter purgatory last time.
00:43:33 - Brad
I'm not sure.
00:43:34 - Jason
Yeah, that's drama.
00:43:37 - Scott Steinlage
Yeah.
00:43:37 - Brad
But no, yeah, I saw the newsletter that Aiden was going to be here, so I noted down a couple of questions if I could ask them. I don't want to take up too much time.
00:43:49 - Anthony Campolo
I'm sure you're good, man.
00:43:51 - Scott Steinlage
Take it up, bro.
00:43:54 - Brad
So these are pretty simple questions, but first off—from releasing Million JS, from the current status of Million JS—do you have any examples you could share of companies or teams that have used it to solve a specific issue or use case?
00:44:13 - Aiden Bai
Sorry—
00:44:13 - Brad
To solve a specific use case or issue? I don't know if I've been specific enough there, but...
00:44:23 - Aiden Bai
Yeah, one of them is Wyze. I actually worked on their product last summer and got to integrate it. One of the issues they were having was that they had a lot of data they needed to load for cameras—imagine smart home cameras, but for a WebView. It was slow not only because of their data, but also because their UI was inefficient. Cleaning that up with Million and implementing it was a big improvement in Lighthouse scores and user experience. But right now, with the current version of Million, there have been users trying to reach out—they're mostly freelance workers. I remember one I helped debug with someone was a Mexican restaurant website, and they were putting Million there, which is interesting. I'm not sure if that's the correct application. But soon we'll be talking with—I can't believe I forget his name—Ken Wheeler.
00:45:43 - Anthony Campolo
Dude.
00:45:44 - Aiden Bai
Yeah, to talk about how we can integrate that. But one of the things I need to figure out is the feedback loop. I don't even know who is using Million right now. So thinking about how we can figure out who those people are, reach out to them, and see those use cases.
00:46:08 - Brad
Nice. One of the reasons I'm asking is I recently started a new position, and in the frontend group on our Slack, one of my colleagues shared Million—millionjs.dev. I was like, oh crap, I follow this guy on Twitter. So yeah, lots of tables, lots of data, and stuff like that. I'm thinking there could be some application there eventually. Following on from that, to get more on something you mentioned before—Jason asked about the array topic and the stuff you're doing in the core of Million. Have you got any thoughts on why the React core team didn't do some of those things already in React?
00:47:09 - Aiden Bai
It's because most React applications are fast enough.
00:47:11 - Anthony Campolo
Right.
00:47:12 - Aiden Bai
That's the simple truth. There are two reasons: most applications are fast enough for React, and most performance problems aren't frontend performance problems. If you go to TikTok, that's probably fast enough. Of course, they have engineers to fix performance issues, but it's good enough. The only real problems are if you're on a low-end device or if you're outside the U.S. and your phone isn't that great. And performance problems are generally data problems—like if you're sending two megabytes of SVGs over the wire, or you're not SSR-ing your React at all. So that's where most of the problems are. React is focusing on certain performance problems, like implementing Forget, or they provide memo utilities, but that often isn't enough.
00:48:16 - Anthony Campolo
Right.
00:48:16 - Aiden Bai
Their mental model is thinking about how to prevent rendering in the first place, when sometimes you do need to render.
00:48:26 - Anthony Campolo
Right.
00:48:26 - Aiden Bai
Like, you can't prevent rendering on a data table. You have to render something. So Million performs really well when you have a lot of rendering—when you need to render and put stuff on the user interface. In that specific case, it's really good.
00:48:47 - Anthony Campolo
Right.
00:48:48 - Scott Steinlage
Okay.
00:48:48 - Brad
Okay, thanks. And the final thing I would ask—since we're in the Twitter space—is if there are any special spoilers, something about next steps or things you're thinking of doing with Million that's not totally public yet. Anything you'd want to share.
00:49:14 - Aiden Bai
Yeah, right now it's mostly how Million can become more of a performance stack instead of just a frontend tool.
00:49:25 - Anthony Campolo
Jam stack. Full stack. Jam stack.
00:49:31 - Aiden Bai
Exactly. Anthony got it.
00:49:34 - Anthony Campolo
Slap Prisma on the backend and call it a day.
00:49:35 - Aiden Bai
Right. That's how performance probably should be.
00:49:43 - Anthony Campolo
Jason.
00:49:44 - Brad
Awesome.
00:49:46 - Scott Steinlage
I think Drex did come up, though.
00:49:47 - Anthony Campolo
Oh yeah, we should hit Drex up. What's up, man?
00:49:49 - Scott Steinlage
Real quick.
00:49:52 - Brad
Thanks.
00:49:52 - Speaker 9
Okay, hey, good day, guys. My name is Drex. I have a question for Aiden. Maybe it's something he's talked about earlier, but I'm quite curious—why did you start Million? Was it because you had a project and the project was slow in React, or was it something you wanted to do out of fun, like a side project? What was your reason for building Million?
00:50:26 - Aiden Bai
The real reason is I was kind of bored.
00:50:29 - Anthony Campolo
Best reason.
00:50:33 - Scott Steinlage
Yeah, I think you said that on the podcast.
00:50:35 - Aiden Bai
Yeah, most projects start off as side projects. When you make a side project, you're just bored with what you're currently doing. But the product vision thing is more like, okay, why does React have to be slow, and why don't we have any utilities for this? And then Million is the manifestation of how to solve this specific problem. I hope it's somewhat helpful to people.
00:51:06 - Scott Steinlage
Yeah. And tell them this was because you were bored in high school, right? That's when this started.
00:51:12 - Aiden Bai
Yeah, nobody wants to—
00:51:15 - Anthony Campolo
The most boring time of anyone's life.
00:51:17 - Scott Steinlage
Yeah, right.
00:51:19 - Aiden Bai
Yeah. Like, I don't want to read To Kill a Mockingbird, man. I just want to—actually, that—
00:51:24 - Anthony Campolo
That's a book you should read. That's a really good book. That's one of the few books that's actually really worth reading from school.
00:51:32 - Scott Steinlage
Anthony.
00:51:37 - Anthony Campolo
Jason, man.
00:51:38 - Aiden Bai
The Great Gatsby, though. Oh my gosh. Sorry, go ahead.
00:51:44 - Jason
Yeah, you'll probably want to go read those books when you're older.
00:51:49 - Aiden Bai
Speaking from personal experience.
00:51:51 - Jason
Also didn't want to read them in high school. But I guess a question slash advice is—knowing when to use this and what the use cases are. You're not suggesting we slap this everywhere on our apps, or maybe you are—but if it's not everywhere, when would you actually want to use Million?
00:52:24 - Scott Steinlage
What's your use case?
00:52:26 - Jason
Yeah, and it doesn't necessarily have to be that small of a niche. It could just be like, okay, is it only when you have X number of loops of a certain size? If we're getting into the micro-optimization game, figuring out the cost-benefit tradeoff—that's what I would do if I had a codebase with some performance problems. I can't just put it everywhere because it's probably not going to help everywhere. But where should I try to focus on implementing the block component? There is no silver bullet, no free lunch. You've already done some real-world work with Wyze and maybe some other companies.
00:53:05 - Scott Steinlage
Right.
00:53:05 - Jason
So I think having maybe those white papers or—
00:53:19 - Anthony Campolo
Or—
00:53:19 - Jason
—case studies where you can show, okay, in this particular app with these kinds of components or this kind of dataset, this is the kind of performance we saw. That would be the next level beyond what you already have. If I were to look at this and say, should I recommend this to my clients that might be having performance problems with their React apps—assuming it's not one of the other problems we've already talked about—these are the kinds of things I was looking for that I couldn't find just looking around on the website. As someone who might need this for some of the bigger enterprise apps I work on.
00:54:03 - Aiden Bai
Definitely. It's something we're still trying to figure out. What we're currently recommending is just if you have lots of data and lots of UI, but obviously that's not enough of a description of when to use it. So what we're currently exploring is, number one, how can we make case studies? Toby is working on that, actually—how can we make case studies on how we implemented a specific project and how it improved their performance? And number two, we're also working on dev tools, essentially things that help you identify where performance is bad and where Million potentially could be used. It's definitely something we're working on.
00:54:53 - Jason
That would be awesome. Yeah, having a dev tool like a Chrome extension would be pretty sick.
00:54:59 - Anthony Campolo
Also, you should build your website in Million—or are you just doing it in React?
00:55:06 - Aiden Bai
Actually, I'm pretty sure I'm using the thing that Solid uses, but one level deeper—Solid's compiler without any signals. Yeah, I was bored and I just did something really weird.
00:55:20 - Anthony Campolo
Interesting. Oh, you actually use the Babel plugin syntax JSX thing? Is that what you're talking about?
00:55:26 - Aiden Bai
Yes.
00:55:27 - Anthony Campolo
Yeah. Ryan once told me the history of Solid—he said to start, he just wrote a Babel plugin.
00:55:35 - Aiden Bai
Yeah. It's literally using that to render, which is a very bad idea.
00:55:39 - Anthony Campolo
Sounds terrible. But yeah, I would recommend just dogfooding. And you do point to a couple companies—you mentioned Wyze and then dimension.dev.
00:55:50 - Aiden Bai
Actually, Tejas is here.
00:55:53 - Anthony Campolo
Oh yeah, we can bring him up.
00:55:59 - Scott Steinlage
Invite sent.
00:56:00 - Aiden Bai
Dimension is a sponsor, by the way.
00:56:03 - Scott Steinlage
There you go.
00:56:04 - Anthony Campolo
You already got a company sponsor.
00:56:05 - Scott Steinlage
Look at that.
00:56:06 - Anthony Campolo
Collaboration platform. Finally someone built a collaboration platform for modern engineering teams.
00:56:14 - Aiden Bai
If you guys haven't checked out Dimension, you should join the waitlist. It's very cool.
00:56:22 - Anthony Campolo
Project AI accelerated. So it's safe to use.
00:56:26 - Aiden Bai
Yes. Blazingly fast.
00:56:30 - Scott Steinlage
Hey, are you on mobile or desktop? Because I sent the invite but it's not coming up. By the way, if you're on desktop, you cannot speak on Twitter.
00:56:43 - Anthony Campolo
Looks like it's waitlistware—which I understand, you gotta do what you gotta do—but I just want to use the thing. There's a repo, though.
00:56:54 - Scott Steinlage
Interesting.
00:56:57 - Anthony Campolo
So what is Dimension? It's just a way to get code in a thing and then do projects with it?
00:57:06 - Aiden Bai
Yeah, Dimension is—okay, imagine your project management, your chat, your code, your deployments, all in one platform.
00:57:17 - Anthony Campolo
Yeah, Discord.
00:57:21 - Aiden Bai
Oh yeah, it's true, but Discord doesn't integrate. I guess you can have a webhook for Vercel deployments, but being able to inspect those deployments and see errors and stuff...
00:57:32 - Anthony Campolo
So is it a deployment platform?
00:57:35 - Aiden Bai
No, it's more like an integration thing. It just puts it all together. Oh, Tejas is here.
00:57:40 - Anthony Campolo
All right, that's one of those things I just gotta try to get, because it looks like a very general kind of tool.
00:57:48 - Tejas Ravishankar
Yeah. Wait, can you guys hear me?
00:57:51 - Anthony Campolo
We can. What's up? Introduce yourself and talk about the thing you built.
00:57:55 - Tejas Ravishankar
Sure. I mean, I'd be happy to. I just joined in because I've been following Aiden—he's extremely good at what he does. I'd be happy to tell you a little bit more about Dimension. Typically, engineering teams use a ton of different tools to build software. We use Slack, Figma, GitHub, Vercel, AWS—the list goes on. We figured out there's a lot of fragmentation that happens when you adopt more and more tools. So we thought, what would happen if we built a unified product development platform—something like JetBrains Space, but where you could bring your own integrations and your own tools? Because most modern engineering teams don't really want to use legacy or bloated tools that a company like JetBrains or Microsoft offers. They want to use the cutting edge of what technology has to offer. So we said, hey, what if you could just connect the tools you use today into a single platform?
00:59:06 - Tejas Ravishankar
And we offer even better benefits than what you'd get with a tool like JetBrains Space or Microsoft Azure DevOps. That's what Dimension is—you bring your tools and we unify them. And some of the features we've been able to build out of those integrations are honestly pretty significant. If you want me to give you an example...
00:59:30 - Anthony Campolo
I would just stop you real quick and say—the pitch is awesome. But what you're saying is you took a bunch of tools, combined them together, and somehow made them both simpler and better than they were before. I don't believe you, first of all. What's the drawback?
00:59:49 - Tejas Ravishankar
All right. I think we're really referring to making the engineering cycle easier. Let me give you an example. You're discussing a feature in chat with a teammate and you want to put that in a Linear issue. Typically you would open up Linear, create an issue in the right team, go ahead and copy the data from...
01:00:10 - Anthony Campolo
The fact that issue management is also there is a really big part of it. It's like the code is right next to the project management.
01:00:19 - Tejas Ravishankar
Yes, absolutely. This is something we obviously discovered in the open source space. I've also built open source tools myself, so I know this problem—open source engineers trying to track projects find GitHub Issues is honestly not the best experience. People really want to use a tool like Linear that offers a fantastic DX and user experience, but they can't because they want to stay close to their community and have issues with the Linear experience and end-to-end GitHub sync. That's essentially what we built: a way for open source teams to use a fantastic project management tool that is end-to-end synced with GitHub. We literally have the depth of syncing projects with milestones across different repositories. It's pretty crazy what we've been able to achieve on the project management front. We think that's going to be massive, especially for the upcoming commercial open source market, who want a tool to track their projects and roadmaps very easily, but also have end-to-end GitHub sync and stay in sync with their community.
01:01:22 - Tejas Ravishankar
That's kind of our inspiration for building project management. But we're still integration-first. We still support Linear extremely well. We allow you to bring in Vercel, Netlify, you can connect GitHub, Figma, you know.
01:01:38 - Anthony Campolo
Yeah, get an edge collaboration going.
01:01:42 - Aiden Bai
Yep.
01:01:42 - Tejas Ravishankar
Like end-to-end collaboration. And one really cool thing we have is we're able to automatically identify if a message requires a specific action. If you say, "hey, we should build XYZ out," we're able to automatically flag that this message requires an action. I don't think I can disclose a lot about exactly how it works, but we do have some pretty fancy stuff internally to make that happen.
01:02:11 - Anthony Campolo
That's the big thing.
01:02:11 - Tejas Ravishankar
That's not even the coolest part. The coolest part is it's able to use GPT-4 with context on your conversation and automatically assign a person to the task, auto-assign it, create a description, title, everything. It's pretty much automated from that flow, and there are a bunch of flows like that. It's super powerful what we've been able to achieve.
01:02:33 - Scott Steinlage
Can I say something real quick? So I was looking at your profile—are you 16?
01:02:42 - Anthony Campolo
Yeah.
01:02:42 - Tejas Ravishankar
I mean, I'm currently 17. I recently turned 17.
01:02:44 - Scott Steinlage
Okay.
01:02:46 - Anthony Campolo
Were you homeschooled?
01:02:50 - Scott Steinlage
When did you start coding?
01:02:51 - Tejas Ravishankar
Geez, I started at the beginning of lockdown. I started off with iOS, moved to Flutter, then moved to Python, then moved to Rust—and yeah, that's it.
01:02:59 - Scott Steinlage
Okay. What age?
01:03:01 - Aiden Bai
Sorry, how old were you?
01:03:04 - Tejas Ravishankar
Oh, I was 13, I believe. Yeah, probably 13 at the time.
01:03:10 - Anthony Campolo
Wow, that's sweet.
01:03:11 - Scott Steinlage
Dude, that's amazing.
01:03:14 - Anthony Campolo
I mean, if this thing ends up working the way you're describing it, this would be a really cool product and potentially very lucrative.
01:03:24 - Tejas Ravishankar
Yeah, we're launching at the end of next week to our private beta users, and Million JS is at the top of that list. So maybe Aiden can give you all some insights and sneak peeks.
01:03:38 - Scott Steinlage
I can just tell with your confidence and your ability to speak through all this—it's just amazing, man. Thank you so much. Sorry, I didn't—
01:03:46 - Jason
Anthony, Scott—I had a question for you guys. Is this your first time feeling really old in tech?
01:03:51 - Brad
Dude.
01:03:52 - Anthony Campolo
No. Nexel doing Create T3 App, also being a 17-year-old—he was the one who made me feel young. So I'm already seeing this wave of all these teenagers coming up.
01:04:03 - Scott Steinlage
That's true. Yeah. But I do feel old. That's great, though.
01:04:07 - Anthony Campolo
It's because they're web native.
01:04:09 - Scott Steinlage
It's amazing.
01:04:09 - Anthony Campolo
Collaborative-tool native. So they just get it. They get open source because they game, they open source.
01:04:17 - Scott Steinlage
Yeah, totally. Super cool. I love it. Thanks for building something cool, man.
01:04:22 - Anthony Campolo
Yeah, we'll definitely be in touch. We'd love to get you on the podcast once this is public and you can demo it.
01:04:29 - Tejas Ravishankar
Absolutely. I would love to be here. Thank you so much for the opportunity to talk today.
01:04:35 - Anthony Campolo
I'm on the waitlist, so put me at the front.
01:04:38 - Aiden Bai
Yeah, awesome.
01:04:39 - Scott Steinlage
Put me at the front. Yes. Nice. Hey, y'all, I just want to say real quick—if you're just now joining us, thank you so much. If you're listening to the recording, thanks for listening this far. We really appreciate everybody here. Don't forget that we have a newsletter that we send out every single week. It's javascriptjam.com—just go there and sign up so we don't miss out on all the awesome things happening in the JavaScript and web development world. That's how several people jumped into the conversation with us today—they saw the newsletter and they're like, "Aiden's going to be there, I'm going to show up for sure this week." A lot of these folks actually do show up every week because we have a great time. It doesn't matter whether you're a beginner or you've been doing this for a long time.
01:05:32 - Scott Steinlage
You're an advanced web developer, we love to hear from everybody. So that's why we always say participate, open mic—request, raise your hand, come up, ask some questions, say some facts, opinions, comments, whatever. We'd love to hear it. More value happens at that point. That's when we have some really great conversations, and I'm so glad that we had so many people come up today, ask questions, and spark some conversations. This was a good one, guys. I really appreciate Aiden coming in, and Toby from the Million JS team, and Tejas up here as well. And then all the people who came up that have been with us for a long time—Jason, Brad, Burnt Nifty. Sorry if I'm missing anybody. And then some new folks like Drex asking great questions. Thank you all so, so much. If you got any value from anybody that spoke up here today, be sure to click on their face and follow them—because you're probably going to get value from them in other places.
01:06:25 - Scott Steinlage
We love you all so much. Thank you and greatly appreciate it. Let's keep it going.
01:06:31 - Anthony Campolo
Podcast site: JSJam on Transistor.fm.
01:06:36 - Scott Steinlage
Okay, right. We should probably just have a forward.
01:06:41 - Anthony Campolo
We'll get there. This current one is the stopgap until I get all that domain stuff figured out.
01:06:47 - Scott Steinlage
Yeah, jsjam.com/pod or something. Anyway, don't go there—there's nothing there.
01:06:52 - Anthony Campolo
For...
01:06:52 - Scott Steinlage
For...
01:06:52 - Anthony Campolo
All right.
01:06:55 - Scott Steinlage
All right. Thank you all so much. Appreciate you all. By the way, if you want to follow JavaScript Jam on Twitter, we'd love that too. Continue, Anthony.
01:07:04 - Anthony Campolo
I wasn't saying anything. I think the conversation was still going. Do other people have questions? We're already a little over our time, but Aiden doesn't have anywhere to go. He doesn't have a job.
01:07:14 - Scott Steinlage
No life, bro. That's that college life. No, I'm kidding—he's got plenty on his plate, I'm sure. Speak up, Aiden, any time you need to bounce.
01:07:31 - Aiden Bai
Yeah, for sure. Just one comment on Dimension—there is Spotify integration and you can listen with your friends, so it's very epic.
01:07:39 - Anthony Campolo
That's so tight.
01:07:40 - Tejas Ravishankar
Yeah, we keep shipping stuff. We want work to be fun—we don't want to be Slack corporate. Spotify integration is one cool way we do that. You can also control your music directly from Dimension. If you're in chat talking to someone, you can just switch your song directly from there. Pretty much a lot of fun stuff. It doesn't feel corporate.
01:08:02 - Anthony Campolo
How many people work for the company, and is there someone investing in it? Obviously you don't need to disclose things. Six engineers? That's incredible.
01:08:11 - Aiden Bai
Yep.
01:08:13 - Scott Steinlage
That's amazing, dude. Seriously, you're blowing my mind. The way you talk, man—you sound like you're 25. You've been running two companies or something.
01:08:24 - Anthony Campolo
I'm looking for an explanation. I bet his dad was an entrepreneur or something. Sometimes there's no reason—some people just got it.
01:08:34 - Scott Steinlage
Great.
01:08:36 - Jason
Do you want to talk about your funders and how you managed to get their attention?
01:08:41 - Scott Steinlage
Yeah, sure.
01:08:42 - Tejas Ravishankar
I'm happy to talk about that. I am Indian, and I wanted to raise from Indian VC funds because that's what my dad recommended. My dad's a VC, by the way.
01:08:54 - Anthony Campolo
I called it. I called it.
01:08:55 - Scott Steinlage
There it is. But you are your own person. That's awesome.
01:09:02 - Anthony Campolo
It shows how when you get set up—if you have parents who know what to actually teach their kids, they can be successful.
01:09:08 - Scott Steinlage
Very.
01:09:08 - Anthony Campolo
I didn't get into tech till I was 29. My parents couldn't teach me anything about it.
01:09:12 - Scott Steinlage
There you go. Teach your kids tech. That's the new website. All right, sorry—go ahead and continue.
01:09:19 - Tejas Ravishankar
Yeah, so I was first pitching to a bunch of VC funds. Pitching, pitching, pitching. At one point I was pretty close to saying, hey, maybe this is not possible. My dad knows the VC space—he actually used to work at Sequoia India—and he said this was something pretty much impossible. So I refused to listen to him, kept pitching, pitching, pitching. And that's how it works.
01:09:44 - Scott Steinlage
Eventually.
01:09:46 - Tejas Ravishankar
Eventually, I got a call with Shawn Wang—swyx—a very popular open source figure.
01:09:52 - Anthony Campolo
Oh, nice. Your mic—something happened to it. You're kind of muffled now.
01:09:58 - Scott Steinlage
Yeah. There you go.
01:10:00 - Tejas Ravishankar
Yes, it's better. Sorry. So yeah, I spoke to Shawn, and he's honestly probably the biggest...
01:10:09 - Anthony Campolo
Hold on—did you do a YouTube video with him, like a long time ago?
01:10:13 - Tejas Ravishankar
Yes, I did.
01:10:14 - Anthony Campolo
I watched that video. I remember at the time thinking, this is incredible. This kid's going places. That was a while ago. That's so funny.
01:10:22 - Tejas Ravishankar
So yeah, I had nothing there. I didn't have a team, I didn't have capital, I didn't have anything. But I had a product, a vision, and designs. I spoke to Shawn and he was like, hey, maybe Tom Preston-Werner—co-founder of GitHub—would be interested in hearing this out.
01:10:37 - Anthony Campolo
Did you talk to Tom?
01:10:38 - Tejas Ravishankar
I got introduced.
01:10:39 - Anthony Campolo
Oh, cool. I know Tom very well.
01:10:41 - Tejas Ravishankar
I spoke to him twice. Tom is amazing. I'm super grateful for everything he's given me so far. I spoke to him on the first call, he said he wanted to follow up, and on the second call he mentioned he was interested in investing. That was honestly the game changer in my fundraise, because all the VC funds I was talking to were suddenly on to it—saying, you know...
01:11:07 - Anthony Campolo
VCs are herd animals. One hundred percent. Herd animals.
01:11:10 - Tejas Ravishankar
Yeah, exactly. Once Tom was in, I was speaking to [unclear] at the time, and they said they were in. So that was our pre-seed round fundraise. And it was also kind of crazy because I was doing it during my Grade 10 board exams. So that was fun. But we're now raising our seed round. Hopefully if things go well, we'd have a larger team and be able to distribute this product to everyone out there. By the end of next week, we'll know where things are going.
01:11:54 - Scott Steinlage
So hook your boy Aiden up with a conversation for some funding, brother.
01:12:03 - Tejas Ravishankar
Yeah, from what I know, Aiden's already reached out to a bunch of VC funds. So hopefully—I have no—
01:12:12 - Scott Steinlage
—doubt. Maybe help him craft a pitch. I don't know, maybe that's something.
01:12:19 - Tejas Ravishankar
Yeah, he knows we're super close on Discord and everything, so totally.
01:12:25 - Scott Steinlage
That's awesome, dude. I'm very impressed. It's so cool. I love it.
01:12:33 - Tejas Ravishankar
Thank you so much.
01:12:36 - Anthony Campolo
Yeah, super fun. I have a vivid memory of watching that video and thinking, how has this kid built this? He's this young and explaining it so well. I was super, super impressed. So all the puzzle pieces come together. Super cool. And it makes sense why you get involved in something like Million—you want to be on the cutting edge and work with a peer.
01:12:59 - Scott Steinlage
Yeah, that's super cool. You guys are pretty close in age, right? Maybe Aiden's a couple years older than you.
01:13:08 - Tejas Ravishankar
I have no clue how old Aiden is. He's probably 18 or...
01:13:12 - Scott Steinlage
Yeah, I think he is. Aiden.
01:13:14 - Tejas Ravishankar
Yeah.
01:13:14 - Scott Steinlage
Is that true?
01:13:16 - Anthony Campolo
You still there, Aiden?
01:13:20 - Aiden Bai
I don't know, actually. Am I 18?
01:13:22 - Anthony Campolo
You're 18.
01:13:28 - Aiden Bai
Yeah.
01:13:29 - Scott Steinlage
Awesome. You guys are killing it out there on the leading edge. Super cool.
01:13:38 - Brad
And you guys are making me feel old for sure. Sorry to butt in, but 17 and 18—holy...
01:13:47 - Scott Steinlage
Yeah.
01:13:47 - Aiden Bai
To be completely fair, I feel like younger people have the benefit of time, so there's a lot more opportunity.
01:13:56 - Scott Steinlage
Yeah.
01:13:57 - Aiden Bai
Like, that's...
01:13:58 - Scott Steinlage
I have three kids, a wife.
01:14:01 - Aiden Bai
Yeah, your time is different.
01:14:03 - Jason
[unclear]
01:14:04 - Scott Steinlage
Right, but my time back then, when I was your age, I was not doing those things. I was probably spending it in other places that were probably not the greatest. So I think it's great that you guys are really focusing on something you're passionate about, something that's going to make a difference for people. You're solving problems. That's cool. Really cool. But yeah, we'd love to have you back on JavaScript Jam in the future. Maybe even do a recorded podcast together, just like we did with Aiden. That would be fun.
01:15:00 - Tejas Ravishankar
Yeah, I would love to. There's definitely a lot to share, so I would absolutely love to.
01:15:08 - Scott Steinlage
Awesome. We'll figure that out. Anthony or I will reach out in the DMs.
01:15:13 - Tejas Ravishankar
All right, awesome. Sounds good.
01:15:16 - Scott Steinlage
Cool. Well, Anthony, what do you think?
01:15:18 - Anthony Campolo
Does anyone have any last questions before we start wrapping up?
01:15:25 - Scott Steinlage
Million JS, now's your chance. Aiden's here, Toby's here. Get your questions rolling. This is it. Just request, come up. No question's dumb.
01:15:38 - Anthony Campolo
And then while that's happening, let's do Aiden and then Toby. What are your socials? Obviously your Twitter, but where else can people find you on the internet?
01:15:52 - Tobiloba Adedeji
Yeah, my socials—I guess it would be Discord. Find me in the Million community chats. I'm very active on there. I literally have notifications turned on both on my phone and on my PC, so I don't miss anything. You can find me on Discord, Twitter, GitHub, and—
01:16:21 - Aiden Bai
Where else?
01:16:21 - Tobiloba Adedeji
LinkedIn. Yeah, you can find me on LinkedIn as well. Click the link on my bio—it's my Linktree.
01:16:28 - Scott Steinlage
Thank you, Linktree.
01:16:30 - Speaker 9
Yeah, yeah.
01:16:35 - Scott Steinlage
Cool.
01:16:36 - Aiden Bai
Yeah, I'm AidenYBai on everything—that's Aiden with an E. I don't really have any shout-outs, but Toby's looking for work. If you ever want to hire him, he's a really good candidate. Check him out. And definitely join the Million Discord if you want to post memes or whatever.
01:17:00 - Anthony Campolo
All right. And then Tejas, if you want to give one final plug—oh, he's already a listener. Never mind. But yeah, this was a really, really great episode. I had a blast. So thank you, Aiden. Toby, thank you. Looks like we did get Tejas back up here real quick.
01:17:18 - Scott Steinlage
Yep.
01:17:18 - Anthony Campolo
But yeah, this was a really fun conversation. There's just an energy around Million. I think it's cool—it's got that fresh young energy.
01:17:31 - Scott Steinlage
Fresh young energy. Yeah, cocaine in a can.
01:17:34 - Anthony Campolo
All right, go ahead and give your contacts to us.
01:17:39 - Tejas Ravishankar
Yeah, sure. Sorry, I was disconnecting a couple of times. I'd love to hop on. Super excited for this opportunity today. Also, by the way—I'm just extrapolating from the multiple broken sentences I was able to hear when my internet was gone, so this might make no sense in context. But yeah, I would love for you to join the waitlist for Dimension. And if you want activated access, just DM me. I'm always happy to help out if you're a smaller team building open source stuff—you're probably the best fit for Dimension at this moment. So I'd be happy to hook you up with an invite as soon as possible. If you want accelerated access, waitlist or DM me. I'm very active on Twitter. I'm also active on Discord—my Discord username is just subtitious, the same as Twitter. You can also reach out to tejas@dimension.dev. Anything works. I'm responsive everywhere.
01:18:38 - Tejas Ravishankar
If you have any questions, I'm happy to answer. And yeah, I appreciate this opportunity.
01:18:46 - Scott Steinlage
Awesome. Thank you so much, man. I greatly appreciate everybody being here. Like Anthony said, this was a fun one—thanks for making it fun. The energy is live. This Million thing is a good time. I think we're gonna hear a lot more about Million in the future. Nicky T's pumped, I can see that. He's ready to have some conversations. Thank you all so, so much. We'll be here again next week on Wednesday at 12:00 p.m. Pacific Standard Time. We love y'all. Give the follows to all those you get value from. We love you, and we'll see you in the next one.
01:19:58 - Anthony Campolo
They're just so excited.
01:20:00 - Scott Steinlage
You're such a silly, silly guy. All right, we love y'all, and we'll see you in the next one. Peace.