Skip to main content
975

February 2nd, 2026 ×

What’s Missing From the Web Platform?

or
Topic 0 00:00

Transcript

Wes Bos

Welcome to Syntax. Today, we're talking about what is missing from the web platform. The the web platform, JavaScript, CSS, browsers, runtimes, syntax, APIs, all of that stuff. The last, I don't know, maybe two or three years, we've gotten this this massive swath of of APIs that if if you walk up to most developers and say, hey. Like like, what do you need? What's missing? A lot of people will go, like, men, things are actually in a pretty good shape, but there's still a handful of things that are are missing from the Wes, from us being able to build the best apps possible. So what we're gonna do is we asked, we asked on Twitter. Me and Scott have a huge list ourselves, a big wish list. We're gonna go through all of the different things that we wish we had from, like, primitives in the UI, different types of syntax we'd like to see added to to JavaScript, different APIs we'd like added, Bluetooth, serial, NFC, and then CSS browsers JS well as, of course, we'll talk about the AI access, and what those APIs might even look like in the browser. My name is Wes Bos. I'm a developer from Canada. With me, as always, is Scott Tolinski. Scott's a little hurt today. Uh-huh. Wanna give us the lowdown? I don't you know, I'm always hurty. I feel like, I feel like every other episode we do, I got some something going on. Some ailment? Some ailment. Yeah. No. I had I had an elective

Scott Tolinski

surgery done. I couldn't breathe. I had a deviated septum, so they had to go in and, let I'll I'll I'll save any of the gory details.

Scott Tolinski

They opened things up and fixed all that stuff so I right up. Yeah. So I can breathe. Like, I I was snoring and stuff, and it's not like sleep apnea. It's just because I broke my nose or whatever happened. Recovery JS not usually that bad. I was supposed to be good by, like, Saturday, Sunday, you know, after our surgery on Wednesday. And for the most part, my nose feels great, but I had some from the trachea they put in. My throat is all jacked. So I got I got throat numbness going on. I'm on some drugs, but I I feel I feel ready to go. I I can talk. Yeah. Let's go. I'm I'm excited about this, actually, because I was looking over your episode notes, and I had a couple of wild ideas myself of things that are are not likely. But, yeah, I no. I I'm I'm I'm curious because the web, does seem like there's just awesome stuff all the time these days, And

Wes Bos

I'm excited for what could be. You know? Yeah. Alright. So the first one we have here is better primitives, in the DOM. Right? So what that means is that, like, we have select. You've got, like, radio checkboxes. You've got, date picker, things like that. But, typically, nobody uses those primitives aside from maybe input type of text and input type of email.

Wes Bos

And and then past that, everybody's Npm installing something and and and using a whole bunch of JavaScript. And that's because, like, the the primitives suck. Like, the pnpm type of date sucks. Right? That's not a good experience to be able to do it. You can't style it how you want. You can't have full control over it.

Wes Bos

So the the web platform knows about this, and they've been working on it. And the the first big one we've had in terms of a very good primitive is the customizable select. And what that allows you to do now is you can now create a drop down with a select element, but you have full control over all of the CSS, what it looks like, all of that great stuff GitHub having to give up any of the downsides of, like, accessibility and keyboard control, things like that, as well as, like, you don't have to install a whole bunch of stuff, which is the customizable select is absolutely awesome. Huge improvement. Like, it it's this is almost like like moving into, like like, headless UI as Wes. Meaning that, like, headless UI is the browser will bring the functionality or your JavaScript library brings the functionality, and you bring the divs, you bring the CSS, and you can sort of render it out and and add whatever divs or spans or anything you want inside of there. Now that's great, and now they're working on, like, multi select as well as combo box, you know, be able to, like, filter, find people, drop down. And then a lot of people are saying, like, what other inputs do we need? Like, date picker is the big one as well. Working on combo box? I I didn't catch that. Yeah. Combo Bos is is being worked on right now, which is huge because you you wanna be able to, like, filter, and select multiples, you know, and and, select the three tags from this list. You wanna filter and select the items and have a list of the tags that you've selected.

Scott Tolinski

Yeah. I'm always looking at open UI for ideas for a lot of these things because it's like a a w three c community group where they're researching just UI elements and and what could be.

Scott Tolinski

And it's a good place to to list through the kind of things that we we would need. But, yeah, I I think that the first one you have here JS date picker. Yeah. We have a date picker. It's questionable.

Scott Tolinski

I don't I I I use it when I'm lazy. I'll say that. I'll I'll use the date picker when I'm lazy. But it it ultimately isn't as functional or as useful as other, you know, JavaScript based date pickers. So Yeah. To me, I I think that there's just, like, a major opportunity there to improve that.

Scott Tolinski

Make it stylable too. Like, come on. All this stuff. I don't feel I feel like nothing should be added that can't be styleable

Wes Bos

Node. I I don't think anything will ever be added that can't be styled, like, any longer. Right? Really? Yeah. Those days those days have passed. If you're if you're making any new primitives to to the browser, they're you gotta be able to fully control it. You gotta be able to render out the different parts of it. You can't just, like, write video tag and then and then that's it. Right? You should be able to have access to all of the like, a default UI, that's another Scott of people were saying that as well. It's like, have good default UI. That that's nice. Yeah. But also give us full control over these these parameters. So I don't think we'll ever see a date picker, and I'll tell you why. Because a date picker is so complex. Right? You you have range inputs. You want it sometimes you wanna be able to put things on the different days. Like, maybe you wanna put prices for, like, a flight or Airbnb.

Wes Bos

Mhmm. You wanna be able to not allow selecting of of certain ones. It is just far too complex for that type of thing. So I don't think we'll ever see a date picker. And in that case, if you have a complex date picker, that's something that you probably should still reach for an external UI for.

Scott Tolinski

Yeah. Yeah. I think I think that probably tracks. It is one of those things that feels like you need more often than Scott. And then every single time you're you're doing it, it's just you know?

Wes Bos

Yeah. Yeah. Yeah. It's one of those things. There's good ones out there. I think the idea with a lot of these primitives that we're getting, you know, Node, customizable ESLint, accordions, popover, anchor, a lot of these primitives are not meant to be like, you'll just use this thing straight. It's like, here is a primitive which you can then customize yourself or, like, Shad JS going to use these primitives in there, and that means they're gonna need a lot less JavaScript in order to make it work. And you can simply just pop it in, and you can you could just slap a select in there, and then you can import some external CSS library, and the thing will start looking pretty good. Yeah. I have tabs on here.

Scott Tolinski

Like, bro, tabs have been, like, the most common one of the most common UI elements of all time.

Scott Tolinski

And how do we not have a tab HTML system? I mean, we have accordions, details, and stuff like that. They could do anything with tabs. I I feel like this is

Wes Bos

just long overdue, personally. Can't you do that with an accordion or like like a details?

Scott Tolinski

I mean, no. Not not to the degree that you would want to. Like, the thing is is that you you'd want it to just function like tabs, like how how they how they function. And They don't wanna have to hack it. They don't wanna have to hack it. And and so for me, I I feel like this is

Wes Bos

the obvious one. But another one for me is, like, a file upload, at least being able to style it. And if it's like a like an image, you could preview it. Anytime you wanna, like, preview an image that somebody has uploaded, you gotta you gotta get the file reader API out. You gotta read that thing into, like like, a binary blob. Mhmm. And then you gotta paint that thing. You you either then convert that blob into, like, a URL, which you can then display as, like, an image, or you can paint that thing to a canvas, and then you can resize it based off of that. But so many times, I've just wanted a simple file upload, and then I want, like, a like, a half decent being able to style it.

Scott Tolinski

The the default styling for the default file upload is one of the worst things on the web.

Scott Tolinski

It's it's I I've made so many drop zone components for dropping files and stuff like that, and it's like Yeah. I always hate having to to, like, do that without an actual JavaScript based component. I actually do have something that is just a CSS version of that in in my Graffiti UI library.

Scott Tolinski

That is like a drop zone nicely styled, but it doesn't have the previews and stuff like that. So I can totally see. One that I have here is toggles. Yeah. We have a checkbox, and, yes, Safari does have toggles.

Scott Tolinski

Just add it to Chrome. Add it to Firefox. Like, do it already because the toggle is such a ubiquitous standard UI element at this point. The fact that Safari is the only one that has added it as an option, to be default styled and stuff, Just do it. Make it stylable.

Scott Tolinski

Toggles,

Wes Bos

come on. Yeah. This is it's so key because, like like, what are you gonna do otherwise? You're gonna make it not accessible. Right? You're gonna put a whole bunch of divs over top of the thing. You're gonna hide the actual checkbox, and, you gotta spend a whole bunch of extra work trying to get that thing to be accessible, or you're gonna install some third party component. Right. Toggle. Yeah. It's such a a good primitive that we should we we need to have. Right? We have progress. We have, like, the progress bar.

Wes Bos

That's we're almost there. Right? Yeah.

Scott Tolinski

Yeah. All of these ones. And, again, like, Safari did it. So, it's not like nobody's doing it, and it yeah. That that should be enough of a a good start. I don't know.

Scott Tolinski

Not adding this just feels weird to me at this point. I also have native drag and drop that doesn't suck. You Node, the the drag and drop just kind of aesthetic, it, like, ghosts it out in the way that native drag and drop works.

Scott Tolinski

Like, it's another one where it just feels half assed in terms of the implementation not matching how people actually wanna use

Wes Bos

drag and drop in real life. So, you know, it it's fine. It's never gonna happen. It's never gonna happen. If you take a look at Atlassian's pragmatic drag and drop. We had the developer on the show that drag and drop is such a can of worms that I think they did the right thing in that they they gave us the the correct browser primitives for draggable, droppable.

Wes Bos

They gave us the correct primitives for, like, drop zone, where you're allowed to drop things. They gave us all of the JavaScript events for that type of thing. But there's so many things, like, what happens when you start dragging it? Does it leave the old thing behind? Yeah. And and then ghost it out, or does it immediately, like, move up? Like, if you're dragging an item from a list, should immediately take it out of there? And what happens when you drop it? Does it make a copy of it? What there's so much to it that I think that this is absolutely one of those things where you need to reach for a library, and I don't think there's anything wrong with that. I feel like you're going to

Scott Tolinski

hear a fully version Vercel of idealistic Scott talking in this episode.

Scott Tolinski

I I I feel like there's a lot of people are gonna be like, yeah. This doesn't work. This doesn't work. And I will admit to my ideas here. A lot of the ideas in here being just fully idealist, not thinking about edge cases, not thinking about reality. I'm fully living in my, I just want this, mode in this episode. I'll I'll say that.

Wes Bos

In terms of syntax for the language, a lot of people said they want type annotations, which is they basically just want TypeScript in JavaScript.

Wes Bos

And there are kinda, like, two movements for that already. Right? There is a proposal for something called types as comments, meaning that you would be able to put your your TypeScript code in the browser, but the browser would simply just ignore it, meaning that it would it would treat the syntax of, like, the added TypeScript syntax. It would just treat that as a comment, meaning it would then ignore it.

Wes Bos

So that's being worked on. Whether we'll ever get that or not, remains to be seen, but it seems to be that the the browser will not care about that or Node will not use any of that that information.

Wes Bos

What do you think? Should should TypeScript be added to it? Like, it's in Node already. Right? You can run dot TS files in Node with no problem, install nothing, and it just works. I feel like we are so far beyond belong the point of where TypeScript

Scott Tolinski

was a question mark. I have not written non TypeScript in just about I don't know when the last time I wrote straight up JavaScript Wes. Seven, eight years? Oh, it it has been it's been so long since I've made a dot JS file. I it's it it's actually wild because there was a point during this I mean, this podcast had been around long enough that, TypeScript was, competing with, what was it, flow and with reason. Yeah. There I mean, there was there was no, like, guarantee that TypeScript is gonna become the thing. But TypeScript is not just the thing to me. TypeScript is JavaScript at this point. I I don't I don't see it any other way, and I would be shocked if if people are out there writing JavaScript today. Like, straight up shocked, especially because now it's so much easier to just run TypeScript whether you have bun or anything here.

Wes Bos

Yeah. So,

Scott Tolinski

like, at this point,

Wes Bos

just do it. Yeah. It's gotta be it. Yeah. This is one of those things where I I don't mind them taking their time because it's not that big of a pain in my butt to run TypeScript in the browser. The the amount of times I have to, like, I can't copy paste this into my, like, terminal. Maybe that's the thing JS I just want Chrome DevTools to be able to strip it out for me when I sometimes paste TypeScript into that. But Sure. There is a world where TypeScript is not it, and TypeScript looks like something else. So taking a look at that whole landscape, not necessarily, like, what it does because this this is simply just syntax, but, looking at how how what are the downsides to to TypeScript, and and maybe we could

Scott Tolinski

make some improved syntax and and allow that. Yeah. Why are we thinking about downsides? Just do it.

Wes Bos

No. That's the thing JS that if you everybody said that with, jQuery as Wes. You know? Just just No. Just just add jQuery to the browser. And they took their time, and they figured out, like like, what actually works for the long term health of the Wes. And I think that is fine.

Scott Tolinski

This is why you don't let me on any of these committees. I am I'm way too yellow at. I'm just, like yeah. I'm too far gone in that direction on everything. Operator is one that I would absolutely love to see. So in JavaScript, if you've Scott, like like, imagine you have, like, a whole bunch of promises that are are chained,

Wes Bos

then then then then then. Right? Like, that's not the pipe operator, but that allows you to read your code sort of, like, top to bottom or or sync await. Right? But sometimes you're you're not dealing with with code that looks like that, and you simply just want to take the output of something and then pipe that into something else. And and right now, what you have to do is you have to wrap those functions. So you you end up with this, like, sort of blooming onion of functions Wes if you wanna know what it does, you go to the middle, and then you start, like like, stepping it back until you you reach the outsides.

Wes Bos

A pipe operator would be so nice to be able to just, like, run a function, take the output of that, and immediately pipe that into the next function. And it's been a proposal for many, many years. I'm not sure we'll ever get it, but I would love it. Yeah. It it is one of those ones that's just been hanging around.

Scott Tolinski

It it does feel like some of these things just sit in limbo forever. And I I mean, again, I the the entire, like, process of that needs to take time for the reasons we've already outlined. So, yeah, it's I it's something I would absolutely take.

Wes Bos

It's stage two and was last updated three years ago. Oh, okay. Cool. So Wow. Three years. Great. Yeah. Not looking great. Yeah. Just in in limbo. Yeah. Next one is APIs.

Wes Bos

These are APIs that we want to be added to the web platform.

Wes Bos

One API this is not something I want, but something that was really cool is I I just started up Riverside here with with Scott, and he's like, yeah. Your your video JS a little choppy. And then Riverside popped up this little thing that says, hey. Plug your computer in, and you'll get better you'll get better perf. Right? Like, browsers will sometimes throttle things in the browsers if you're on battery.

Wes Bos

And as soon as I plugged it in to power, that little thing went away, and that's the navigator.get battery API. That's a beautiful, beautiful use case of that API. And those are the types of things where you we used to complain that, like, native had a lot of these APIs, and now we that's just in a website. That works great. Yeah. But Yeah. Things we actually want.

Wes Bos

Please, oh, please, oh, please give me an API for doing cookie banners. I am so sick of the web.

Wes Bos

You visit any website, you blasted with a cookie banner, and, like, they never remember what you want. You know? Like, accept all cookies or whatever, and you gotta stare and think about, what do I want? I don't care.

Wes Bos

Get it out of my face. I know that there's browser, like, extensions you can, like, you can ignore them and all that. Yeah. We need a set of APIs for opting in to cookies, opting consent integration, what people have consented to, saving that in the actual browser. We need those APIs, like, yesterday. Like, yesterday. Yeah. Web is a mess with cookie banners. Yeah. And so many of the cookie banners are coded poorly or

Scott Tolinski

they feel like they they they're like dark patterns all over the place that's like either, Wes, I want the browser to accept all my cookies or Node. This is dangerous. You don't accept it. Like, the so many people are like, the the way that they present these banners to you are not nice. I'll just say that. They're not nice for the user in in in many ways. So, yes, standardizing it, I I feel like at this point Node to have happened. You know what's a nice website that doesn't absolutely blast you in the face with cookie banners? Oh, I got a feeling right? Yeah. Oh, yeah. This [email protected]

Wes Bos

slash syntax is they got rid of all of their cookies on their website, and they had, like, a massive project to go through. Like, something as little as embedding a YouTube video requires a cookie banner.

Wes Bos

It doesn't mean that you have to get rid of all cookies. Right? Like like a login cookie or session cookie, those Yarn fine, but, like, a cookie that tracks you across Wes, those you have to actually opt into. So Sentry went on this huge thing to remove them from their platform entirely, which was absolutely awesome. So you should probably use Sentry for, for your website, for your bugs, for fixing your code. And I got this AI thing called Seer that will, take a look at your bugs and automatically fix them and send you a pull request. It's fantastic. Cent century .io forward slash syntax. Yeah. Did you know, Wes, that, like, there's a billion companies that use Century? Like, Claude,

Scott Tolinski

Anthropic uses uses Century.

Scott Tolinski

Disney plus uses Scentry. There there's just, like, some of the Peloton uses Century. Every time I'm on my my doing Peloton, I think about that. We're tonal. So, shout out to all the companies using Sanity out there in the world.

Scott Tolinski

Next one I have here, this is, I I don't know if this will be controversial, but Sanity.

Scott Tolinski

Oh, there's so many I don't and I'm gonna say, I don't know how this would work. Technical details seem like a nightmare for this. We log in. Most of us are logged ESLint our browser. Like, it should be easy enough to use that state of login whether it is via passkey or whatever to use that login state on an app. Now I get it. A lot of people are gonna hate this idea because you want to have the individual app have the login and everything like that. But it does feel like there has to be some sort of way to use identity easy on your site and not have to reinvent the the auth wheel on every single website. Yeah. Just it just feels like there has to be some way to do that.

Wes Bos

Yeah. Some sort of like, Passkey was not entirely that. Right? But Yeah. Passkey was an attempt to make the pain of logging in much easier, and I love it when it works.

Wes Bos

Man, logging ESLint GitHub with a passkey, absolutely love it. Right? But I think that at the end of the day, this is going to be a a phone in your pocket thing.

Wes Bos

People are gonna be able to sign in with the phone in their pocket or Yeah. Scott your retina or something like that. Yeah. Like, why can't, like like, face ID

Scott Tolinski

be the thing? I guess you're almost there with, like, sign in with Apple. Right? You're yeah. Sure. But it's still at the end of the day, what it's doing is it's creating a record in the database with the email address and whatever, and then that is control like, I don't know. Yeah.

Scott Tolinski

I don't know. I again, idealistic Scott says, hey. We're reinventing the wheel so much here.

Wes Bos

Yeah. One thing I have wanted for the longest time, and I've actually written this function myself, is get element by text, meaning that, like, you can select an element based on its IDs or attributes or or, based on the children it has or if it has a specific thing, but you cannot select an element based on the text that is inside of it, either in JavaScript or in in CSS.

Wes Bos

And I would love, love, love, especially with a lot of these agentic browser things, you know, an MCP server with Playwright.

Wes Bos

You can select an element by text.

Wes Bos

I would love a native API for that. I don't know if we'll ever get it. It was doable with XPath before we had not before we had document dot query selector all. Yeah. Not before we had document dot get element by ID, we had this thing called XPath, which is a way for you to select elements based on their XML indentation. And there was something in there that would allow you to select based on the actual text of the element, and that would be sick.

Scott Tolinski

Yeah. Did you ever think that we had, XPath the same time we had XPOC? Do you remember XPAC? What's XPAC? He was like a a a two thousands era professional wrestler.

Wes Bos

Oh, man.

Scott Tolinski

Oh. I'm from the.

Scott Tolinski

Oh, I just googled him. He's doing the suck it. You're my man. Wes. He he was he was the guy. He was the suck it guy. He was the suck it guy. He was the guy. Oh, yeah. Yeah. I mean, he might not have been the only he's definitely not the only guy, but he was, like,

Wes Bos

he was mister suck it, I think, for sure. I did not watch wrestling growing up. I had no idea, but me and my friends would walk around school being like, suck it. And I had no idea what that meant. You know? Everybody did. Yeah. Just saying. Nobody knew what they were doing. Node I'm older, I'm like, oh, I probably shouldn't have been saying that. Oh, yeah. There was a time, I think, when I was in, like, ninth grade Wes I I don't think you could have not watched wrestling, for that one year. I've I don't I've maybe watched, like, one or two wrestling. And then Mhmm. What's the one where everyone beats the shit out of each other, but it's real?

Scott Tolinski

Oh, I don't know.

Wes Bos

No. It's, like, it's huge right now. Backyard ESLint? Or Dana White.

Scott Tolinski

Oh oh, UFC. Oh, okay. Yeah. UFC. I went to a UFC party once. Holy hell. Not for me. That's a lot to watch. I watch a lot. I well, I don't lately, but I did watch a lot of, MMA, to the point where I was watching, like, minor league circuit stuff and stuff.

Scott Tolinski

But, yeah, I know. I I I like combat sports. That's for sure. I I don't watch, professional wrestling, though. Alright. This is probably high on my list with browser primitives, and this is just native

Wes Bos

reactive templates, meaning that you have a variable. You put that variable in the DOM somewhere, and when that variable updates, so does the DOM. Right? Some sort of templating, some sort of reactive variables, whether that is with, like, signals or whatever they choose to do. I would absolutely love something because I, myself, if I'm coding up something very quickly in in vanilla JavaScript, I'll always just make some sort of, like, rerender string where you watch the variable to change. It'd be great to have that as a a browser primitive.

Scott Tolinski

Yeah. Here's another Node. Sync protocol.

Scott Tolinski

Wouldn't it be great if you had some kind of CRDT sync setup that you could just access like fetch? Now granted, there's gotta be a server involved, so you'd have to have some sort of a sync server.

Scott Tolinski

But, like, the again, this is never gonna happen. But, like, a primitive for accessing sync with a CRDT or even creating that Vercel.

Scott Tolinski

Like, I mean, we have WebSockets. Right? That's what I'm saying. So Some something along a protocol like WebSockets or even even how about this ESLint terms of the same world of a data or, local first or whatever? Just databases that don't don't suck built into the browser.

Wes Bos

Because what do we have? We've got, like, local storage, not really database. We've got more of, like, a key value string store. You've got IndexedDB.

Wes Bos

Right? Yeah.

Wes Bos

There's implementations of SQLite,

Scott Tolinski

but you want something that's that's a little better? Yeah. Yeah. Something along along with what they're doing with, like, Postgres in in Wes. You know? Yeah. Virtualization that doesn't suck. What do you mean by this? Yeah. Like, virtualized lists. You Node, all all the virtualized list solutions, especially in, like, React or React Virtualize or whatever that was. Virtualization, for people who don't know, is that it renders you could you could have a wrapper that like, if you have a list of a 100 items and that wrapper is only, like, five items visible, the additional 100 items or 95 items are not going to render, basically saving your browser from having to do that work. The problem is is a lot of these virtualization libraries then break search. And then if you do command f on the page, it doesn't find the item because it's not being loaded. So, like Yeah. Something that, controls rendering in that way that still doesn't break command f.

Scott Tolinski

Those types of things.

Wes Bos

Content visibility in CSS is supposed to do this. So the it controls whether an element renders its contents at all along with forcing a strong set of containment, allowing agents to potentially omit large swatches of layout and rendering work until it becomes needed. Meaning that, like, you have a list of 20,000 list items.

Wes Bos

You can put a content visibility property on there, and then the browser will defer rendering it until it thinks it it actually needs it. This is one of those things where I don't think we need APIs for this.

Wes Bos

I just think that, like like, I've had I've had problems with content visibility where I took it off, and my performance drastically increased. It was way better. Right? Yeah. I think the browsers just need to sort this out, and then we can just we can use as much HTML and and you figure it out. Right? You're the rendering agent. Yeah. Yeah. I don't know. Yeah. Why why why am I figuring you should know if something is on the screen or not and and control how that works and Yeah. For sure.

Wes Bos

Ollie Williams, hype dev on Twitter says, we want put, patch, and delete on form. So form elements in the browser can only do two things, get or post. Right? And if you're building an API, you should be using the rest of those, which is put, patch, delete. I think there's a couple other ones. Options, that's a stumped question for later.

Wes Bos

But if you're trying to build your app in a way that will ideally work without JavaScript or you're trying to build on, like, web standards and then using JavaScript to, like, progressively enhance, If you're updating an item and you wanna, like, use a patch or, like, a put or if you're deleting something and you wanna simply just have a button that deletes that item via a form submission, you're kinda out of out of luck. You gotta, like, you gotta put that into a a post. Right? And then you gotta put it on a different endpoint of, like, delete item. So that would be that'd be pretty nice as well. Yeah. I'll take that. I never understood why we have those verbs and they're not stalled there. That's a great question. Like, why why did they invent those as the browser or not they didn't invent it as a browser. They built it as part of, like, networking stack. Yeah. But why did we never implement those in it? Another one from Yarn, Snorkel TV says text metrics get bounding box of individual characters.

Wes Bos

Being able to measure the actual size of it. And we'd the text Bos trim has been a fantastic addition to CSS. Mean that if you've ever had that weird thing where your your your text is a certain height, but, like, the text is at the bottom Yeah. But, like, the line height is not centered, text box trim takes care of so many of those use cases, which honestly is probably better than having to measure characters. But there still are especially in the animation world, there's still lots of cases where you would want to measure how big a letter is. And right now, your only option is saran wrap. Wrap every single character in a span. Yeah. Hell, yeah.

Scott Tolinski

For low lower level of connections, you have, like, Bluetooth listed here.

Scott Tolinski

Am I wrong? I thought there was a Bluetooth API. I I I've used this, by the way. Yeah.

Wes Bos

So there is a Bluetooth and a web serial API, which allows you to talk directly over, obviously, Bluetooth or USB.

Wes Bos

And this is super handy for things like, programming microcontrollers or being able to update the firmware on your headphones without having to download, like, some sketchy, like, install thing just to simply update the firmware. Right? And that's why a lot a lot of devices, if you wanna update the firmware, you you don't download an app. You don't visit a website. You you get the iPhone app. Right? And the iPhone app is gonna be able to do it. So there are Bluetooth and web Vercel, fantastic APIs, but they have not made their way into standards. They have not made their way. Safari says no way. Firefox hasn't implemented it. So, that would be really nice to have control over those things.

Wes Bos

Sockets.

Wes Bos

We have Wes sockets. Right? And this is a security thing as well. You're not gonna be able to access sockets directly. But, when I was driving my Roomba with JavaScript and when I was flying the drone with JavaScript, both of those things communicate from the computer to the the wireless device over a socket. So you open up a socket, and then you just have these these lanes where you can send data back and forth.

Wes Bos

And in order to actually access that data in the in the browser, you need to create a server that runs on your computer, and you gotta hot potato the data. So the data goes from the drone to a node server, and then the node server sends it over a WebSocket so you can actually access it in the browser.

Wes Bos

NFC, RFID, again, that those things would be fantastic in the browser, especially if you're trying to you're making, like, a progressive web Wes app where you wanna be able to scan something with RFID.

Scott Tolinski

Yeah. Dude, NFC is so underrated in general.

Wes Bos

Yeah. It's it's really good. Look at this. I've got I've got, like, a a YOTO that I've been been hacking right here, and then here's the the NFC card. Yeah. And I've got this little, it's called a Proxmark three, little NFC RFID writer. Oh, cool. Yeah. I've been using that for my BambooLab, the little things that go on the spools of filament so you can write them. It's it's a wild world. Very fun. I'm gonna say, Wes,

Scott Tolinski

one thing I love about you. You always got some shit on your desk that's going on. That's that's cool. A lot. Can I can we play what are the most random things you can find on your desk? Yeah.

Wes Bos

USB UART.

Wes Bos

So this is connecting Oh. Serial. My sister got, like, some broken thing, and I I soldered to it. And I could see the boot logs of that device. What else do I have here? Some glue.

Scott Tolinski

I have a, terminal screen.

Scott Tolinski

I love this thing. That's cool. Yes. Do you know the terminal screen can last for months because it doesn't update the data on it? It doesn't hit the web very often.

Scott Tolinski

So it has a set number of screens that it changes between it. E ink display for our audio listeners? Oh, yes. It has it's an e ink display, and you set up essentially scenes.

Scott Tolinski

And those scenes, change every fifteen, twenty minutes, or whatever.

Scott Tolinski

But you can also say, hey. Don't hit the web to update your data unless it's every, like, four hours or even every day or whatever.

Scott Tolinski

And, therefore, because of that, just on this little battery in here, the screen just lasts forever. I mean, it's, like, got my calendar, all kinds of stuff on here, just cycling through everything. Yeah. Love it. Love that.

Wes Bos

For some reason, I have an iPhone three.

Wes Bos

Because one of my kids had it the other day, and I was like, hey. That's history. Don't where did you find that? They probably went through my boxes and took it out. Salad spoon. I was I was writing or or making some bins

Scott Tolinski

for my three d printing. So I was measuring the spoon, and I never brought that back up. Yeah. I got a We got a blower. A WolfBox blower. It's blowing. I got a a silicone soup thing that you do you have one of these? Silicon soup thing. No. You put it in the microwave, Bro, I've spilled so much soup.

Scott Tolinski

I I've I've ESLint yeah.

Wes Bos

I've

Scott Tolinski

Bro, I've spilled so much soup. I I've I've burnt yeah. I gotta have a silicone soup sleeve.

Wes Bos

I got the mad CSS logo. By the way, if you wanna check that out, go to madcss.com.

Wes Bos

We're doing a major CSS battle tournament. It's gonna be awesome.

Scott Tolinski

Yeah.

Scott Tolinski

Wow.

Wes Bos

The rest of the stuff on my desk is related to my surgery. I'll tell you that. I could go I could go all day, but I think that's enough. Let's talk about CSS, things that we want in CSS aside from some of the, like, primitives being able to style them.

Wes Bos

Nick Williams says a way to specify speed, example, pixels a second for transition animations rather than just a duration.

Wes Bos

Mhmm. That's that's really cool. Right? Because if you have an animation, you tell it, I don't know, hundred seconds or three hundred milliseconds, two hundred milliseconds, but you don't know how far that is actually going. And if you want all of your if you want them all to feel the same way, same thing where, like, if you, like, cancel a transition halfway through, it would be cool to get the physics of that rather than just break it in the middle of a curve and then just reverse it from from there on Wes. That would be sick in in CSS. Yeah. Yeah. Yeah. I agree. I I don't know if, yeah, if I I'm dying for that, but, yeah, more the merrier. CSS strict mode, there's a lot of, like, baggage in Yeah. In CSS. Right? Like, what how long has CSS been around for? A hundred years? So there's a hundred years of baggage in CSS, and there are a lot of weird, like, oddities that you just kinda have to deal with because they don't you can't break backwards compat of the web. But what if we could? What like, in in JavaScript, we did it. Right? You you just have, like, a use strict.

Wes Bos

You can pop at the top of your JavaScript file. Or if you simply just use an Wes module, then that's considered strict mode, and all of the baggage of the weird web is is gone. You break those APIs. So can't we also get strict Node? Right? Yes. Return border Bos, on by default?

Scott Tolinski

Yeah. And there there's so many dumbly named properties and stuff. Like Yeah. Right? Like, I'm fine with breaking things if you if you have a version or a strict mode or whatever. I'm fine with that.

Scott Tolinski

Get rid of some of the craft, stuff that you don't need, and maybe yeah.

Wes Bos

One for browsers. Christopher Van Houten says, I'd like to see Safari move to Chromium. You hear this a lot. A lot of people say, everybody just moved to Chromium. It would be so much easier for me.

Wes Bos

I I'm gonna tell you, you do not want that. We do not want a world where there is one browser engine. As easy as it would make your life to be able to just run one engine and run everything, and it runs absolutely everywhere, you do not want a single browser engine. That's what's going to cause the web to stagnate. That's going to cause a whole Scott lotta pain. You do need these things to compete.

Scott Tolinski

I want iOS Safari to be to to be blink. That's it. That's it. Yeah. I don't know. Like, iOS Safari is the dumbest one to to debug, and I have so many issues with it. And there's so many, like, little things here and there with iOS Safari.

Scott Tolinski

You can you can have normal Safari on WebKit, keep the, keep the variety going or whatever. But, like, iOS Safari or just give me effing Chrome with Blink on iOS, please. Like Yeah. I'm so sick of of But give it to everybody, though. Because otherwise,

Wes Bos

like, normies are not gonna change their browser engine on iOS. I just yeah. Just for my own personal,

Scott Tolinski

sanity. Some countries have already done it. We talked about that a couple episodes ago. They shouldn't have to have the com countries force the company to do the right thing.

Scott Tolinski

Yeah.

Wes Bos

AI access as a native API.

Wes Bos

I'm gonna tell you and I actually had several calls with folks that work on on Chrome, and I don't think we need this yet Yeah. Because I don't think that we have figured out what these APIs need to look like.

Wes Bos

And if you rush these APIs out the door Bos on, like, what we need right now, which is, like, prompting and streaming back text into a chat, then these are the APIs where you just people are just not gonna use them because they're just oh, these are not nearly as good as as what we have. But That's what happened with web components.

Wes Bos

Yes.

Wes Bos

We do eventually need, I think, some sort of AI access in the browser that will allow you. And my my idea is that, eventually, we're gonna get to a spot where you will be able to use your computer's baked in model if if you want to. Meaning that, like, hopefully, in my ideal world, this API would be you can use the local AI that lives on the device or you can swap that out for a model that you Node in yourself, kinda like transformers JS. Maybe you load, like, I don't know, a gig Node, into your application because it's well worth it for that.

Wes Bos

Or you can hit, like, an external API for that type of thing. One API that will be able to do that. And then if you can access your your like, the iOS model or your Mac's model or whatever that is on there, then it becomes private. It becomes free. Right? Yes. Your the user's paying for it in their battery, in their device, but it's it's it could be significantly faster. Like, look, what happens when you can run inference on absolutely everything? What happens when it's extremely fast Wes it doesn't take four or five mill hundred milliseconds a second to come back? What happens when it's, like, an instant? That opens up a lot of possibilities.

Scott Tolinski

Yeah. Really cool. I I've been I've been thinking a lot about this kind of stuff lately. Yeah. For sure.

Wes Bos

Chrome is working on this.

Wes Bos

They have I'm in I'm in the beta, that you can, like, test it out. There's, like, local AI models. And what it does is Chrome just downloads a small enough model, and then it will run it on your machine, and then you can just ask it for things. But it's slow. It's not very good, and it's at a spot now where people will go, cool demo, but I'm not actually going to use that because it's it's not very good. I'm just gonna use the the paid one. Yeah. But, like, even things like date picker pnpm, like, natural language to date picker. Right? The date picker of the future will simply just be me typing in February 18 three years ago or the last forty days starting from next Tuesday. You know, you'd be able to just type those in a natural language, have a model compute what that actually is, and then return to you some temporal durations

Scott Tolinski

that will match it. A AGI is me entering my credit card expiration date in any background format that I want and having it just understand it.

Wes Bos

Oh, man. Let me tell you about postal codes inputs in Canada. Holy hell. So postal codes in Canada are, like like a like a letter, a number. I don't even Node, but it's so obnoxious because first of all, on iOS, you have to switch between every other letter. You have to switch between the keyboard and the number input, and sometimes they have to be capitals, and you generally put a space in between the first three and the the second three numbers or or or digits, but sometimes you don't. And then, like, the validation on postal codes is a nightmare.

Wes Bos

Sucks. I Sucks. Wes need AI for these things. You know? Like, I I know a lot of you listening are big thumbs downers on our AI episodes, but, like, you gotta you gotta agree with me that, like, a like an AI local free private model that can parse data inputs for you or just, like, simply just, like, fix your validation errors that are, oh, I've put a space after my email address.

Scott Tolinski

You know? Yes. I I'll you know? Like a good use case. I'm gonna end, to echo David Kramer's sentiment lately.

Scott Tolinski

And it's it's the the people in in in January 2025 who are still LOL ing about AI coding not being useful or good, bro, you are missing it. You're you're missing it entirely. I I think I think you you Scott, update your brain because Yeah. Things have changed. The the landscape has changed. Everything has changed. I can understand ethical in in those types of, stances on things. But if you're if you're LOL ing it because you think it's not capable, you are good. It makes so many mistakes.

Wes Bos

You are very wrong. Tailwind. Yes. I was thinking about that as an episode. What do you what do you think about that? It's like, let's go on Blue Sky and ask what people's hang ups are. Mhmm.

Wes Bos

And, like like, not just like, it's actually really good. Because, like, they're a lot of it sucks. Right? Freaking have you ever tried to, like, fix a CSS bug with AI? It's it's awful

Scott Tolinski

to at that time. There's all kinds of things. Yes. And and some things take longer. Absolutely.

Scott Tolinski

It's not worth it. And Scott of things Yarn absolutely not worth it. When I did the the Hack Week project, for our SYN HACKS, our CSS battles thing, man, it was way faster to do all that by myself.

Scott Tolinski

That that's for dang sure. But, like, there's a lot of things that it can save you a whole ton of time on for sure. Alright. I'm gonna I'm putting that on. I'm going to blue sky. I'm gonna get absolutely

Wes Bos

destroyed. Yes. But we'll, we'll we'll, like, we'll put together all of, like, people's thoughts and, like, why they don't use it.

Wes Bos

And then we'll we'll just, like, kinda go through them and say, like, that's valid or that's I I think you are wrong there. Here's how you could you can fix that type of thing. And people, when you are defending

Scott Tolinski

your stance on not using AI, would it hurt you to not be such an asshole? Like, crazy. People Yarn just yelling at people all, like, look at this stupid loser who's using AI. Wes did something. West had some tweet about three d on AI, and and there's just some absolute loser on Twitter, just calling him names for no reason. Like, what Somebody

Wes Bos

called me a name?

Scott Tolinski

Bro, you were quote tweeting them.

Wes Bos

Oh, I forget what that was. But yeah. You're you're brain To be fair, there are so many obnoxious people in this space. There are so many obnoxious people. Yes. And, like, people that have obviously vested interest in saying that this is the next thing, and lots of people just straight up lying.

Wes Bos

So I get it. But I feel like I'm not one of those people, and I feel like I have a pretty good stance on this stuff. Yes.

Wes Bos

That's where we're at. Just be reasonable, folks, please. Alright. Last thing we got here is APIs in Node, Node, Deno, whatever.

Wes Bos

Justin White says, I want the Wes speech API in BUN or Node.

Wes Bos

Yeah. I I agree. And Sure. I don't know that that you want just, like, a straight up like, that's that's what happened to Chrome. Chrome implemented the Wes speech API. Yeah. Nobody uses it No. Because it sucks. Sounds good. You know? Yeah. It's it's awful. And we're like and we're we're talking both, like, text to speech and speech to text. Yep. And there's always gonna be better models out there.

Wes Bos

So what we really need is, yes, you should be able to use, like, the Siri voice built in to the browser if you if you want, but you should also be able to load in additional models. And and I think that this gets wrapped up in some sort of AI APIs that are built into the browser that let us optionally use the things that are available on the user's device.

Scott Tolinski

Yes. You know what? In that same regard, like, give us good, text to speech. I just did a text to speech server myself, and Yeah. It's not a problem. I have a text to speech server running full time on my my laptop. And anytime I need text to speech, whether it is through my agent setup or whatever, it just pings my laptop. It's got the voice. It's got the whatever. And it's it's it's it's, like, really, really good quality compared to, any of the APIs that are in the browser. And it wasn't that hard to set it bunsy

Wes Bos

buddy sounding.

Scott Tolinski

Right. And and the voice, it it's not like, what's the one that we Eleven Labs? It's not like Eleven Labs good, but it's approaching that good, and it's it's way better than than a robot voice. I'll tell you that. I love text to speech. I've been using text to speech so much with my setup that's generating, it it's taking research topics for me and turning them into personalized podcasts, and those types of things. And Yeah. Setting that text to speech up has been such a nice thing for me in my learning capabilities because I'm not reading anymore. I'm not using the built in Wes one that also sucks.

Scott Tolinski

So, yeah, text to speech. Make it nice.

Wes Bos

Alibaba just released a model called Wes, t t s Yeah. Which is, in my opinion, as good as a lot of the ElevenLab stuff.

Wes Bos

And you can you can apparently, you can run it on, like, relatively normal hardware. Like, you could run it on your laptop if if you wanted to, or you can 10¢ per 10,000 characters, which that's a lot. Right? You wanna you wanna read a 5,000 word blog post? Oh, no. 5,000 characters. Yeah. Yeah. It probably can get expensive, but it's it it's not that expensive. And you can train it on your own voice, which is, again, another ethical

Scott Tolinski

ethical problem. Yeah. I don't I don't need anything to replace my voice. I don't need anything like that. I just wanna listen to somebody teach me things rather than,

Wes Bos

question. They want to hear what do people actually want. Leave them down in the comments. Let us know down below

Scott Tolinski

what you know.

Scott Tolinski

Let's do sick picks. Wes, you got a sick pick? I got a sick pick while you're waiting.

Scott Tolinski

You know what? I was just talking to producer Sanity the other day about, like, budgeting and stuff like that, and it made me remember that I I've sick picked this a couple times before, but not recently.

Scott Tolinski

And it is New Year. I lean really hard on budgeting software, and, it's important to to have a good handle on your your finances at all times. So I I pay for a service called Monarch, and Monarch Wes, like, a good successor to, like, Mint if you used Mint, but it's so much better. And anybody who says Mint was, like, the pinnacle of this kind of stuff is just, you know, nostalgia, whatever.

Scott Tolinski

But they recently redid their goals system because their goals were, like, one of the things that was lacking. The goals are so much better. They give you, like, Sanity key reports of where your money is going every month, every year, whatever.

Scott Tolinski

And I gotta say, the whole thing is just a beautiful, well made app. It alerts you for, reoccurring transactions that you you can be cutting back on, and it helps with so much. And and Courtney and I now go through this, our budget, every other weekend, and and go through the accounts and are all working on it together. And it's such a nice, great system. So check it out, Monarch. I'll have a link in the show notes if you aren't using it. Alright. My sick pick, I've sick picked this a couple years ago, but I didn't do it again because it's one of those things I just absolutely love. Wow. That looks so cinematic on camera right now. Does it? I think it's probably because you're using the teleprompter.

Wes Bos

It's, like, giving a nice diffuse look. It's wow. It's beautiful. Yeah. It's hitting the glass of the teleprompter. Anyway, this is a Sloaneck rechargeable headlamp. I've had this thing for probably four years.

Wes Bos

It is freaking fantastic. I'll tell you tell you what I like about it. It's USB c rechargeable.

Wes Bos

It has a removable eighteen six fifty cell, meaning that if if this thing dies, it's not e waste. You know? You just you you buy one little battery, you replace it.

Wes Bos

It is bright as heck. You know? Like, I'm always working on something where it's super dark and I just wanna light the thing up, or I'm at the cottage and it's, like, super dark and I wanna see where the dog JS, go into the washer, make sure he doesn't get eaten by a wolf.

Wes Bos

It is awesome. The elastic on it has, like, out of over four years, it is still in really good shape. It just it's comfortable on my head. I've my kids have some really crappy headlamps I've gotten as gifts, and they always take mine because this one is the best. So if you are looking for a nice quality headlamp, it's a very dad purchase, but check out the Sloaniq headlamps.

Scott Tolinski

Yeah. Heck yeah. Cool. Well, check us out on YouTube. Check us out on your podcast player, all that good stuff, and we will see you next time. Peace.

Share