skip to content
Podcast cover art for Talking with Aiden Bai and Tobiloba Adedeji from Million-js
Podcast

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

Open .md

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.

On this pageJump to section