971: Stackoverflow and Firefox Are Dead?

## Document Notes
## Highlights
- **Why Stack Overflow Usage Is Falling**
- Stack Overflow question volume has been steadily declining as developers increasingly use AI and alternative communities.
- Wes Bos and Scott Tolinski link the drop to faster AI answers and community migration to Discord/Reddit.
Transcript:
Wes Bos
All right, let's get into the first one, which is Stack Overflow officially dead. This is from Stack Exchange website itself. Stack Exchange is the company that owns Stack Overflow and the thousand other question and answer websites. And they have the ability to just simply query the data. And this is from when Stack Overflow started to current day, how many questions per day have been asked? And it's crazy to see that it's just been spiraling, trending to several thousands per day. Today, that 321, that's just today, right? But like currently only having thousands of questions asked per day. Whereas like at the peak, you can see like the peak of COVID during lockdown, they were getting what almost 200,000 questions. And maybe in 2014, they had had that as well. And they've just been spiraling right on the way down, which is kind of sad, but also just like, that's the way the cookie crumbles. And I'm curious, what do you think? Like, why did this happen?
Scott Tolinski
Yeah, well, you know, obviously, the answer is AI, most of the things that you would ask on Stack Overflow, the way that it would work is that you'd post on Stack Overflow, first of all, Maybe you'd search on Stack Overflow, and maybe there would be an answer, or maybe there would be, maybe there would be a question, and then possibly an answer, possibly an answer that Is accepted and not correct or accepted and not relevant or no answer accepted at all. Or you would see, OK, this question hasn't been asked. Let me post it on here and then wait like a week for somebody to possibly respond to it. And if they did potentially help you like that, that loop has been replaced by just asking AI, which honestly, is is better. And in my opinion, the way I use this stuff, I found it, the loop to be so much more efficient. And you're not going to get some snarky nerd who thinks they know everything who wants to use this as an opportunity to, you know, flex instead of be truly helpful. Now, Stack Overflow. Yeah, yeah.
Wes Bos
Is that I stopped using Stack Overflow probably, I don't know, maybe eight, 10 years ago. That was probably at the height, you know, like 10 years ago. That was what, 2016. This is probably when I stopped using it. Yeah. And I stopped using it just because of the moderators would would be like, didn't ask the question properly or not enough info. And they would just shut it down or duplicate question, which is the most frustrating thing in the world. And a lot of I think a lot of those people moved to discord, Reddit, all of that type of stuff. So while it was a really good spot, I used to spend all day on Stackful Flow answering people's questions, trying to get my points up. And it was so fun to try to beat people to it. Questions were answered very quickly on there. But I think a combination of AI, when when did the AI stuff really pop off? Oh, God, like middle 2013.
Scott Tolinski
Yeah, that's the big Yeah, that's the Yeah, you can see right on this graph exactly where because even like for simple questions. And then once the AI's got access to the internet, once they got access to documentation, it was so much easier to get a question answered that way by pasting in the link to the source code And asking questions of the source code. Because I do think that is like such a thing for me, I was admittedly always on the cutting edge of stuff in a way that was negative on Stack Overflow. Because if I wanted an answer on this beta software, my answer is to look in the source code myself and figure it out.
Wes Bos
Yeah, you're not finding anyone to help you there. One other thing about AI answering the questions for you is that, like we've said it ourselves on this podcast many times, is if you want help you have to make a distilled example of the You got to reproduce it outside of your project and you got to like make a whole case and like figure it out and often often while you're doing that you'll find the bug but ai is really good At finding the bug in context for for what you're actually doing and sometimes that's often that's way better yeah I agree.
Scott Tolinski
Stack overflow. It is sad because that's such a place in time. What could stack of overflow have done to have prevented this? They could have implemented an AI solution that would have answered a or attempted to answer the question instantly or something, right? And then make that public.
Wes Bos
But ultimately- Yeah, it's odd that they provided all the data for everybody to sort of eat their lunch. They were sitting on a gold mine and it doesn't look like they did much with it, unfortunately.
Scott Tolinski
Yeah, it's crazy. You got to wonder what they could have done differently. Because it does, from an outsider's perspective, it seems like they just kind of sat there and watched the trend go downward. Like the writing's been on the wall for years for them. ([Time 0:02:36](https://share.snipd.com/snip/1296942f-6576-42bb-8b59-2b777f614a9c))
- **Use AI To Find Bugs Faster**
- Use AI to debug in-context by pasting your repo or distilled repro for faster fixes.
- Build minimal reproducible examples, but rely on AI to pinpoint issues from real project context.
Transcript:
Scott Tolinski
I agree. Stack overflow. It is sad because that's such a place in time. What could stack of overflow have done to have prevented this? They could have implemented an AI solution that would have answered a or attempted to answer the question instantly or something, right? And then make that public.
Wes Bos
But ultimately- Yeah, it's odd that they provided all the data for everybody to sort of eat their lunch. They were sitting on a gold mine and it doesn't look like they did much with it, unfortunately.
Scott Tolinski
Yeah, it's crazy. You got to wonder what they could have done differently. Because it does, from an outsider's perspective, it seems like they just kind of sat there and watched the trend go downward. Like the writing's been on the wall for years for them. So I think they've had an opportunity that either they just didn't care to solve or weren't able to come up with something. ([Time 0:07:00](https://share.snipd.com/snip/feafe4e4-ac79-43ba-8ab6-9495e9bf7860))
- **MicroQuickJS Lets JS Run On Microcontrollers**
- Fabrice Bellard released MicroQuickJS to run JavaScript on tiny microcontrollers like RP2040 and ESP32.
- Wes explains this enables scripting plug-ins without compiling C and offers sandboxed, easy-to-upload JS on devices.
Transcript:
Wes Bos
Next one we have here is MicroQuickJS. So this is from the creator of FFmpeg. And we've talked about QuickJS in the past. So Fabrice Bellard, he's the author of FFmpeg. He just said, I'm just going to write an entire new JavaScript engine called QuickJS. Absolute genius, like really knows how a lot of these lower level things work. And now he's put out another thing called MicroQuickJS. And this is a JavaScript engine targeting embedded systems, meaning that you can then run JavaScript on a microprocessor. So imagine you're running this on like an Arduino or a ESP32. We've talked about these very like five, $10 little microcontrollers or running in very memory constrained applications, which is absolutely nuts. It's not full JavaScript, right? There's no browser in it. It doesn't even have ES6. So it's a support of a subset of JavaScript close to ES5. It implements stricter mode, which is more error-prone and inefficient. So why? Why would somebody want to run JavaScript on a microcontroller? Do you have any thoughts there?
Scott Tolinski
Because they like to put JavaScript into everything. Now, honestly, I don't do any work with microcontrollers, so I'd be interested in what you would have to say here more than what I would.
Wes Bos
Yeah. So in the microcontroller world, if you want to program one of these things, hold on, let me grab something. All right. I got this is something that i got i got for christmas and it's basically a little robot that can um walk and run around very cute and it it has like lots of different io outputs right there's A little led screen there's two little proximity sensors on it there is a little um speaker on it there is four servos you can kind of hear it so that it will be able to walk and there's a whole Bunch of different input outputs and the whole thing is powered by this little microcontroller this is a what is this raspberry pi pico right and the code that runs on this type of thing And the same thing with the badges at github universe do i have i have mine i got mine somewhere too the badges that run um on from github universe this is running a rp32 something um and Similar the years before on github universe they had another one, which also has a similar Raspberry Pi controller. Like these are not like the Raspberry Pis that run Linux. These are like lower level microcontrollers. And in order to code on these, you sort of have a couple options. You can go like the Arduino route, which is what a lot of people do. And in that case, you're writing some C in order to make it happen. Or you're going to be loading them. The GitHub badges run MicroPython. And the benefit to that is when you're running MicroPython, it's a little bit easier to actually write this stuff because not everybody is as well versed in writing and compiling C and Being able to reach out for libraries. But they are pretty good at writing Python. So I think the whole idea with this microquick.js is that you'll be able to run this on microcontrollers with writing JavaScript. So a lot of people in the comments of the release of this thing were saying like this is a good plug-in scripting language. So if you want to allow people, like let's say you're writing an LED controller and you want to allow people to write a plug-in that will do things, they could then author that in JavaScript And you could just run it. There's no compile step. You're not going to upload C to a microcontroller that's already running, but you might upload a little bit of JavaScript to that. It's a really nice scripting language. So it's easy to write. It's sandboxed, meaning that there's no network, there's no file system. You can allow people to just give you JavaScript and it will run it in a sandbox. So it's kind of an interesting space. I'm sure in the like industrial controls automation world, aside from like the like hobbyist tinkerers that we are, I'm sure there's a lot more use cases for it as well. ([Time 0:08:20](https://share.snipd.com/snip/747c5470-f179-4329-b003-3688aceccd51))
- **Open Workers Mirrors Cloudflare Locally**
- Open Workers provides a self-hosted Cloudflare Workers experience using V8 isolates and many Cloudflare bindings.
- It reduces vendor lock-in for hobbyists and teams wanting worker-like APIs on their own infrastructure.
Transcript:
Scott Tolinski
Have you liked the idea of Cloudflare workers, but also like to self-host? So Open Workers, what it does is it lets you run JavaScript in a V8 isolate in your own infrastructure. It's basically the exact same experience as Cloudflare workers, except for you're not locked in to the Cloudflare platform. Which again, I think this is like a nice for the type of person who might be interested in something like Coolify, the self-hosting, owning your own infrastructure, those types of things, While also keeping the more modern kind of development flow, being able to have individual functions that are running the way these are. It also does more than just, it seems like it does KV storage, it does Postgres, it does R2, S3, cron scheduling. Yeah, a lot of the bindings. Yeah, it does feel like a CloudFlare, an open CloudFlare replacement of sorts. Pretty neat. I actually hadn't seen this before you brought this to my attention, but is this something that you would take on yourself, Wes?
Wes Bos
It's kind of interesting because people always people always talk about like the versell lock-in but like cloudflare as much as i love them and i'm i'm cloudflare stan currently same Um it it kind of is lock-in meaning that like oh it definitely can run a lot of stuff locally they've allowed you to like reproduce it locally and whatnot. But when you go to deploy, that's kind of your option, right? You got to deploy it to Cloudflare. And the beauty of Cloudflare is that they have all these bindings, right? You need a database, you need key value, you need blob storage, some place to put your files and your images. They have all these things that would sort of just work together. And it works really well. And it's really, really nice. But like the thing that a lot of people don't talk about is that like, yeah, you're kind of locked into hosting on Cloudflare. And that has not been a problem for like probably not anyone, I'll say, but for a lot of people, like my bill is almost nothing. We went over that a couple of shows ago as well um but like there's always that thing of like what happens um if they decide to three times the price or whatever you know they there's if there's
Scott Tolinski
Any rug pull um and you're locked in now it doesn't look i'm toast with cloudflare because yeah i host a lot of stuff there.
Wes Bos
But here's the thing that I think about this stuff is that the way that I'm building my apps that run on Cloudflare is I'm not directly using the like Cloudflare async fetch and env.kv And all of their explicit bindings directly like this. What I'm doing is I'm building them in some sort of standard framework, Hano, Eliza, Remix, whatever. And then I'm using an adapter that will then expose those things. Waku is what my own currently, or Waku is what my currently, my website runs on, and that's hosted on Cloudflare. There's a thin layer that sort of exposes those bindings to the thing. So like my database adapter, I'm not using env.db. I'm using Drizzle. And then I have an adapter that Drizzle will connect to the Cloudflare binding. And then if I wanted to move that thing somewhere else, no problem. You know, I build everything on web standards. Cloudflare implements web standards on all this. And I would be able to move that thing somewhere else with very little work. So this is cool. I like this. ([Time 0:13:07](https://share.snipd.com/snip/78426af2-8b30-413c-b4df-85b9c9ae12cf))
- **React Aria Embraces Headless Components**
- React Aria focuses on headless accessibility primitives while letting you choose styling strategies.
- Updated docs and ShadCN integration make it easier to drop in components and then customize styles locally.
Transcript:
Wes Bos
Next one, React ARIA just got some new docs. And I think this is fantastic. So React ARIA is a React library for building components. And it has absolutely everything, you know, like autocomplete, breadcrumbs, button, calendar, checkbox, color. Like there's probably 80 of them here. And the cool thing about React ARIA is it's 100% headless, meaning that it simply just brings the functionality. And then you bring the divs, you bring the CSS. And they just redid their documentation to be a bit more like, because people want that, but they also just want to slap a shad CN component in there and call it a day. So they've redone. You've always been able to do that with React Aria, but they've redone their documentation so that it is dead not simple on how to get this to work. So you can choose Vanilla CSS or Tailwind. And then it also uses ShadCN to install the component, which I thought ShadCN is so interesting is people love shad cn installing things yeah now things that are not shad cn are now using The tool to actually just like what it does is it downloads the component to the component folder and then you can go in there and poke around and and change it however you want that's really
Scott Tolinski
The way to go that rather than importing something from a package and using it that way exactly yeah i man i had a a slight spat with somebody on twitter over the holidays where oh boy uh Somebody was like there was a whole thing about using um components to do buttons as links and all this stuff. And either way, long story short, they wrote this really obtuse and just like nasty looking React component, just to simply output a link that could be styled as a button. Like that's it. And I like, I've been left with this thought lately, that it's like this component could just be a class. Like, come on. I get the isolation. I get all of those things. But when you have a component that is simply just a link styled as a button, you have lost the dang plot. Like this list box, this stuff is exactly what components are for. But stuff that is just a button link, like, come on, you're importing a stupid class. Like, just make this component could have been a class.
Wes Bos
That's the hill I'm going to die on. I hate the over abstraction of components. It's so dumb. ([Time 0:20:10](https://share.snipd.com/snip/07143317-c72e-47f3-abd1-bc83ebb6efb5))
- **Firefox's AI Shift Sparks Backlash**
- Mozilla proposed baking AI into Firefox to attract mainstream users and revenue, provoking backlash from privacy-focused users.
- Wes and Scott debate that adding AI may be necessary to survive financially despite alienating core Firefox fans.
Transcript:
Scott Tolinski
Firefox. Can Firefox survive? Firefox had a big old thing about putting out, well, AI into their browser. And that pissed off what, like, the 1.2%, 2% of people who are still on Firefox, which is, like, their core audience is exactly the type of person who doesn't want AI shoved into the browser. And so they were pretty tone deaf in just saying, guess what, everybody? All the people who are still stuck on Firefox, we're putting AI in your browser and you're going to love it. And then they had to walk back and say, OK, you can turn it off. But you have a whole thing about the new Firefox CEO here. In addition to that, I'm just like Firefox. This was part of the announcement. Yeah.
Wes Bos
So the new CEO comes in to sort of like save the currently plummeting Mozilla Firefox. You know, they just haven't been doing great for a number of years. And then they just released this huge rebrand. And I don't know, maybe six months ago, they also released, they changed their terms of service to say we will not, what was it? It was personally said, we will not sell your personal data. And they changed it to something like Mozilla doesn't sell data about you. And people lost their minds over that, which is, i understand that as well so like the mozilla's not been been doing great for people using that and then the new ceo comes in here ready To shake things up and he's like look like we're an ai not we're an ai browser but like that's essentially what they're going to be doing we're're putting AI in.
Scott Tolinski
And everybody lost their minds.
Wes Bos
And honestly, I don't think you guys should be giving Mozilla a hard time to be doing this thing. Because I think there's probably two outcomes here. Mozilla keeps, and I say this as a huge Firefox user, I love Mozilla as a browser engine. I think we as web developers need it. And it is so important to the web ecosystem. But most people don't care. They do not care about that type of stuff. And people are not choosing Firefox because of their flex box frames per second animations or things like that. People are choosing browsers based on features, on what they do for them. And if Firefox is going to be able to survive this, right, there's two options. Firefox continues to be the browser that they are, and they're going to slowly lose money. Most of the money from Firefox comes from Google Ads. More people are using AI. They're not searching Google for these things. So that money is going to go away, and then Firefox will just cease to exist. Right. So we could keep going that way, but that will probably only be another year or two and then Firefox will no longer be a thing at all. The other option is, is like, can we actually try to get some users that care about this stuff? We have the neckbeards and the techies, but you can't run a business on those people. You need actual people who, like regular users who care about features of the browser. And privacy is one of them. But unfortunately, regular people just want to do things like shop and get discount codes and have pages for them and all of these types of things as well. So as much as it kills me, literally every other browser is going to be doing this as well. ([Time 0:24:15](https://share.snipd.com/snip/db515008-844b-493e-be15-bd6c1df063a4))
- **Firefox's Existential Revenue Problem**
- Firefox faces a revenue shortfall as users rely less on search and more on AI, threatening its sustainability.
- The browser must either broaden mainstream appeal or risk disappearing despite its importance to web diversity.
Transcript:
Wes Bos
Because I think there's probably two outcomes here. Mozilla keeps, and I say this as a huge Firefox user, I love Mozilla as a browser engine. I think we as web developers need it. And it is so important to the web ecosystem. But most people don't care. They do not care about that type of stuff. And people are not choosing Firefox because of their flex box frames per second animations or things like that. People are choosing browsers based on features, on what they do for them. And if Firefox is going to be able to survive this, right, there's two options. Firefox continues to be the browser that they are, and they're going to slowly lose money. Most of the money from Firefox comes from Google Ads. More people are using AI. They're not searching Google for these things. So that money is going to go away, and then Firefox will just cease to exist. Right. So we could keep going that way, but that will probably only be another year or two and then Firefox will no longer be a thing at all. ([Time 0:26:07](https://share.snipd.com/snip/a4cecada-3676-4fee-b5d6-5f2bcdc9c391))
- **iOS Engine Choice Is Legal, Not Practical**
- Japan (and the EU earlier) now requires Apple to allow alternative browser engines on iOS, but practical alternatives remain scarce.
- Without broader regulatory or market incentives, vendors rarely build separate engines just for those markets.
Transcript:
Wes Bos
Of alternative browser engines apple now is allowing alternative browser in Japan. So under Japan's Mobile Software Competition Act, Apple must permit iOS browsers in Japan to use browser engines other than WebKit, such as obviously Blink or Gecko. Those are the other two big engines. Blink is Chrome, Gecko is Firefox. So this is kind of interesting, although let's talk about it this happened i looked it up two years ago two years ago yeah the eu mandated that this exact same thing in the european union And guess how many alternative browser engines there are not browsers browser engines meaning that like alternative browsers that use different something not webkit on on ios guess
Scott Tolinski
Zero i'll tell you zero yeah and there's a good reason for that there's a good reason for that it's that because that's the eu and now it's the eu in japan so maybe there's a bigger opportunity There but until the u.s has has this available to them there is no, there is zero incentive for Google to develop a web, or not a web kit, a Blink version of Chrome just for those markets, Right? Yeah, you're right.
Wes Bos
That's two different.
Scott Tolinski
Now they're forking their browser with two different rendering engines just for mobile. I want WebKit. Gosh, Google used to Chrome used to be WebKit. I'm still like my brain is still there. I want Blink.
Wes Bos
You can't change that. I want Blink on iOS.
Scott Tolinski
I do. I seriously do. And maybe Gecko. I don't really want Gecko on iOS if we're being honest, but I want Blink on iOS. And like, oh, come on. In the current US political landscape, there is 0% chance of any regulation happening to make Apple do this. And Apple is not going to do this without a regulation telling them to because there's no incentive for them. They want to own the mobile space on iOS. As long as apple owns the mobile rendering space on ios you're missing out on the world of browser apis and experiences that you could have off of webkit like come on yeah come bluetooth Many all kinds of, yeah, it drives me nuts. And then we all have to support, you know, Safari's jank and issues all the time on every mobile browser. And there's really no incentive to use other mobile browsers other than Safari, unless, of course, you like want to sync your bookmarks and stuff and then you just pick the browser. They're all the dang same. It's annoying.
Wes Bos
Yeah, I will say one good thing that has also come out of these things is the part of these mandates is not just being able to use different browser engines, but it's also to make the users Have a choice. You set up an iPhone, you choose which browser you want to use. You don't just default to Safari and you have to go download a new one. And I think that's good. ([Time 0:31:12](https://share.snipd.com/snip/7f5b2705-d4e2-4c7f-8278-17eff30ec4f9))
- **Format JSON For Human Readability**
- Use a human-friendly JSON formatter like Fractured JSON to improve readability for latitude/longitude and matrices.
- Prefer formats that keep related values together instead of one-item-per-line arrays from Prettier.
Transcript:
Wes Bos
A lighter note this is really simple fractured json js is a json formatter that formats json a way that is human readable. And I absolutely love this. You do. One thing I hate about Prettier and all of those Prettier compliant ones is they put arrays on one item per line. And that drives me nuts. Especially when you have things like latitude, longitude, or like you've got coupled values. This formats it in a way that is much more human readable. And as humans, we often read JSON. So this is just a little... Are you reading your code still? Sometimes, you know. Sometimes I read it, yeah.
Scott Tolinski
That's a little joke. Does this work with prettier or any of that stuff or is it just its own thing i was just looking into it and i was like someone's got to write like a plugin for oxlint or what is the other one
Wes Bos
That we were that clip got pretty popular over the over the holidays biome yeah someone's got to write like it's in javascript someone's got to write a plugin for Biome or Oxlant that Does this because I love this. And let me choose if I want my arrays to go on one line or like, I don't necessarily want them on one line. ([Time 0:36:12](https://share.snipd.com/snip/5df82914-7660-4c83-b6bc-88fb4f6b14de))
- **Be Cautious With Local Network Permissions**
- Approve local network access prompts only when a site legitimately needs to connect to devices on your LAN.
- Treat unexpected local network permission requests as suspicious to avoid device fingerprinting or malicious scanning.
Transcript:
Wes Bos
This is a new Chrome permissions dialogue. Look, and they'll say like, this website wants to look for and connect to any device on your local network. And that's kind of spooky when that pops up. So this is a new ish wired it seems like it's just been rolling out in chrome um permission for local network access so when a website wants to be able to ping fetch whatever like a a local Domain name on your network it's going to now ask for that. And you might be saying like, what the hell is the point of that? Turns out bad people were using this for malicious intent and for ad tracking. Because a website like wire.com, I don't know why this is popping up on wire.com, they are obviously doing a fetch request to like a 192.168 or like a.local domain name or a local host. And if things on your network are not locked down, or if you simply just want to check if they have them there, right? Because you might get like a cores error, but you know, ooh, that device does exist there. Then you know things about that, your user's local network. So like local routers, you could ping IoT devices that you know have security vulnerabilities, you could ping that don't have cores set up. A lot of stuff like that. So this, in my opinion, is a very good because almost never does a website actually need to access your local host. And if it does, then you would know. Yeah, of course. Like I'm using this WLED app and it's going to search my network for other instances of this LED controller. ([Time 0:37:48](https://share.snipd.com/snip/ca7dd734-e5fd-434b-9f72-0f545585b2a6))