What’s Missing From the Web Platform? ![rw-book-cover](https://img.youtube.com/vi/bdw10C0wxiQ/maxresdefault.jpg) 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 just 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?" Uh, a lot of people will go, hm, like, man, things are actually in a pretty good shape, but there's still a handful of things that are are missing from the web, from us being able to build the best apps possible. So, what we're going to do is we asked uh we asked on Twitter, me and Scott have a huge list ourselves, a big wish list. We're going to 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, um, Bluetooth, serial, NFC, and then CSS, browsers, as well as, of course, we'll talk about the AI access, um, and what those APIs might even look like in the browser. My name is Wes Boss. I'm a developer from Canada. With me as always is Scott Tinsky. Scott's a little hurt today. You want to give us the lowdown? >> I don't, you know, I'm always hurty. I feel like uh 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 surgery done. I couldn't breathe. I had a deviated septum, so they had to go in and uh uh let I'll save any of the gory details. They opened things up and fixed all that stuff right up. Yeah. So I can breathe. Like I I was snoring and stuff and it's not like sleep apnnea. It's just because I broke my nose or whatever happened. Recovery is not usually that bad. I was supposed to be good by like Saturday, Sunday, you know, after a 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 um >> yeah. >> Yeah. I No, I'm I'm I'm curious because the web uh does seem like there's just awesome stuff all the time these days and I'm excited for what could be, you know. Yeah. All right. So, the first one we have here is better primitives um in the DOM, right? So, what that means is that like we have select, you've got like radio checkboxes, you've got uh date picker, things like that. But typically, nobody uses those primitives aside from maybe input type of text and input type of email >> and and then past that everybody's npm installing something and and using a whole bunch of JavaScript. And that's because like the the primitives suck like the input 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. 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 without 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 this is almost like like moving into like headless UI as well. 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. are working on combo box. I I didn't catch that. >> Yeah, combo box is is being worked on right now, which is >> huge because you you want to be able to like filter um and select multiples, you know, and and >> uh select the three tags from this list. You want to filter and select the items and have a list of the tags that you've selected. Yeah, I'm always looking at open UI for ideas for a lot of these things because it's like a a W3C community group where they're researching just UI elements and and what could be 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 as date picker. Yeah, we have a date picker. It's questionable. I don't I I I use it when I'm lazy. I'll say that. I I'll use the date picker when I'm lazy, but it ultimately isn't as functional or as useful as other, you know, JavaScript based date pickers. So, to me, I I think that there's just like a major opportunity there to improve that. Um, make it stylable, too. Like, come on. Uh, all this stuff I don't feel I feel like nothing should be added that can't be stylable anymore. >> No, I don't think anything will ever be added to that can't be styled like any longer, right? because >> those days those days have passed. If you're if you're making any new primitives to to the browser, you got to be able to fully control it. You got to 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 a lot of people were saying that as well. It's like have good default UI that that's nice, but also give us full control over these these. 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 to sometimes you want to be able to put things on the different days, like maybe you want to put prices for like a flight or Airbnb. Um, you want to 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. >> Yeah. Yeah. I think that probably tracks. It is one of those things that feels like you need more often than not and then every single time you're you're doing it, it's just, you know, uh >> Yeah. >> Yeah. Yeah. >> There's good ones out there. I think the idea with a lot of these primitives that we're getting, you know, like customizable select, accordians, pop over, 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 CN is going to use these primitives in there and that means they're going to 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. Uh I have tabs on here. Uh, like, bro, tabs have been like the most common, one of the most common UI elements of all time. And how do we not have a tab HTML system? I mean, we have accordionss, details, and stuff like that. They could do anything with tabs. I I I feel like this is just long overdue, personally. >> Can't you do that with an accordion or like like a details? >> 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 >> you don't want have to hack it. >> You don't want to have to hack it. And and so for me, I I feel like this is >> the obvious one. But >> uh 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. Um anytime you want to like preview an image that somebody has uploaded, you got to you got to get the file reader API out. You got to read that thing into like like a binary blob. Um, and then you got to 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 like a half decent being able to style it. Um, >> the the default styling for the default file upload is one of the worst things on the web. 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 uh 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. Uh 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. Just add it to Chrome, add it to Firefox, like uh 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 uh to be default styled and stuff, just do it. Make it stylable toggles. Come on. >> Yeah, this is is so key because like like what are you going to do otherwise? You're going to make it not accessible, right? You're going to put a whole bunch of divs over top of the thing. You're going to hide the actual checkbox and um you got to spend a whole bunch of extra work trying to get that thing to be accessible. Um or you're going to install some third party component. Um toggle J. Such a a good primitive that we should we we need to have, right? We have progress. We have like the progress bar. >> That's you're almost there, right? Yeah. Yeah. All of these ones. And again, like Safari did it. So, uh it's not like nobody's doing it and it that that should be enough of a a good start. I don't know. Not adding this just feels weird to me at this point. >> I also have native drag and drop that doesn't suck. You know, the the drag and drop just kind of aesthetic that like ghosts it out in the way that native drag and drop works. like it's another one where it just feels halfass in terms of the implementation not matching how people actually want to use drag and drop in real life. So, you know, it's fine. >> That's never going to happen. >> It's never going to 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 dragable, droppable. They gave us the correct primitives for like drop zone where you are 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 it 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 hear a fully version version of idealistic Scott talking in this episode. I I I feel like there's a lot of people are going to 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 uh mode in this episode. But I I'll say that >> um 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. Um and there are kind of 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 um 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. Um, so that's being worked on. Whether we'll ever get that or not um remains to be seen, but it seems to be that the the browser will not care about that or not will not use any of that that information. Uh what do you think? Should should TypeScript be added to it? Like it's in Node already, right? You can run.ts files in Node with no problem. install nothing and it just works. >> I feel like we are so far be belong the point of where Typescript was a question mark. I have not written non-typescript in just about I don't know when the last time I wrote JavaScript was >> seven eight years. >> Oh, it it has been it's been so long since I've made ajs file. I it's it it's actually wild because there was a point during this I mean this podcast has been around a long enough that uh typescript was uh competing with what was it flow and with reason uh there I mean there was there was no like guarantee that typescript is going to 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 um especially because now it's so much easier to just run typescript whether you have bun or anything here. >> Yeah. >> So, like at this point, just do it. Yeah. It's got to 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, oh, I can't copy paste this into my like terminal. Maybe that's the thing is I just want Chrome DevTools to be able to strip it out for me when I sometimes paste TypeScript into that. But >> there is a world where Typescript is not it and type JavaScript looks like something else. So taking a look at that whole landscape, not necessarily like what it does cuz this this is simply just syntax, but um looking at how how what are the downsides to to TypeScript and and maybe we could make a some improved syntax and and allow that. >> Yeah. Why are we thinking about downsides? Just do it. No, that's the thing is that if you everybody said that with jQuery as well, you know, 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 web. And I think that is fine. >> 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. >> Type operator is one that I would absolutely love to see. So in JavaScript, if you've got like like imagine you have like a whole bunch of promises that are are chained um 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 a weight, 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 bloom and onion of functions where if you want to know what it does, you go to the middle and then you start like like stepping it back until you you reach the outsides. 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 just been hanging around. 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. Um >> it's stage two and was last updated 3 years ago. >> Oh okay cool. >> So >> wow >> not looking great. >> Yeah >> not looking great. >> Yeah just in limbo. Yeah. >> Next one is APIs. Um, these are APIs that we want to be added to the web platform. Um, 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 is 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 PF, right?" Like browsers will sometimes throttle things in the browsers if you're on battery. And as soon as I plugged it in to power, that little thing went away. And that's the navigator.get battery API. And 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 >> things we actually want, please. Oh, please. Oh, please give me an API for doing cookie banners. I am so sick of the web. You visit any website, you're blasted with a cookie banner and like they never remember what you want, you know, like accept all cookies or whatever and you got to sit there and think about what do I want? I don't care. 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 because the web is a mess with cookie banners. >> Yeah. And so many of the cookie banners are coded poorly or they feel like they they they're like dark patterns all over the place. It's like either Yes. Uh I want the browser to accept all my cookies or no 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 yeah, standardizing it I I feel like at this point needs to have happened. >> You know what's a nice website that doesn't absolutely blast you in the face with cookie banners? >> Ooh, I got a feeling right. Yeah. Ooh. Yeah. >> This sentry at centry.io/sax 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. It doesn't mean that you have to get rid of all cookies, right? like like a login cookie, a recession cookie, those are fine, but like a cookie that tracks you across the web. 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 you should probably use Sentry for uh for your website, for your bugs, for fixing your code. They got this AI thing called Seir that will uh take a look at your bugs and automatically fix them and send you a pull request. It's fantastic. syntax centry.io/sintax. >> Yeah. Did you know, Wes, that like there's a billion companies that use Sentry? Like Claude, uh, Anthropic uses uses Sentry. Um, Disney Plus uses Sentry. There there's just like some of the Pelon uses Sentry. Every time I'm on my my dang Pelon, I think about that or Tonal. So, uh, shout out to all the companies using Sentry out there in the world. Um, next one I have here, this is uh I I don't know if this will be controversial, but identity. Oh, there's so many I don't I'm going to 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 into our browser like it should be easy enough to use that state of login whether it is via pass key or whatever to use that login state on an app. Now, I get it. A lot of people are going to 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 off wheel on every single website. >> Just it just feels like there has to be some way to do that. >> Yeah. Some sort of like Pasy was >> not entirely that, right? But pass key was an attempt to make the pain of logging in >> much easier. And I love it when it works, man. Log into GitHub with a pass key. >> Absolutely love it. Right. But I I think that at the end of the day, this is going to be a a phone in your pocket thing. Um people are going to be able to sign in with the phone in their pocket >> or scan your retina or something like that. Yeah. Like why can't like like Face ID 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, >> I don't know. I again idealistic Scott says, "Hey, we're reinventing the wheel so much here." Um 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. Um and I would love love love especially with a lot of these agentic browser things you know MCP server with playright you can select an element by text. I would love a native API for that. I don't know if we'll ever get it. Um, it was doable with XPath. Before we had >> not before we had document.query selector all not before we had document getelement by ID. We had this thing called XPath which was 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. >> Yeah. Did you ever think that we had uh X Path the same time we had XOXO? Do you remember X? >> What's XOC? >> He was like a a a 2000s era professional wrestler. >> Oh man. H >> Oh, I just Googled him. He's doing the sucket. You man. >> Yes, he he was he was the guy. He was the sucket guy. He was the guy. Oh, yeah. Yeah. I mean, he might not have been the only I mean, he's definitely not the only guy, but he was like he was Mr. Suck it, I think, for sure. >> I did not watch wrestling growing up. I had no idea, but we me and my friends would walk around school being like, "Suck it." And we had no idea what that meant, you know? Just just saying. Nobody knew what they were doing. Now 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 where I I don't think you could have not watched wrestling for that one year. >> I' I don't I've maybe watched like one or two wrestling and then what's the one where everyone beats the [ \_\_ ] out of each other but it's real. >> Oh, I don't know. >> No, it's like it's huge right now. >> Backyard wrestling or >> Dana White. Um >> Oh. Oh, UFC. Oh, okay. >> Yeah, UFC. I went to a UFC party once. Holy hell. Not for me. That's awful to watch. >> I watch a lot. Well, I don't lately, but I did watch a lot of uh MMA. Uh to the point where I was watching like minor league circuit stuff and stuff. Um but yeah, no, I I I like combat sports, that's for sure. I don't watch uh professional wrestling, though. >> All right, this is probably high on my list with browser primitives, and this is just native reactive templates. Um, 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 um 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 would be great to have that as a a browser primitive. >> Yeah, here's another one. Uh sync protocol. Wouldn't it be great if you had some kind of uh CRDT sync setup that you could just access like fetch? Now granted, there's got to be a server involved, so you'd have to have some sort of a sync server. Um, but like the again, this is never going to happen, but like a primitive for accessing sync with a CRDT or even creating that server >> like I mean we have websockets, right? >> That's what I'm saying. some something along a protocol like websockets or even even how about this in terms of the same world of a data or a local first or whatever just databases that don't don't suck built into the browser because what do we have we've got like local storage not really database got more of like a key value string store you've got index DB right >> um there's implementations of SQLite >> but you want something that's that's a little better Yeah. Yeah. Something along lines what they're doing with like Postgress in in Wom, you know. >> Yeah. Virtualization that doesn't suck. What do you mean by this? >> Yeah. Like virtualized lists, you know, all all the virtualized list solutions, especially in like react list or react virtualize or whatever that was. Virtualization for people don't know is that it renders you could you could have a wrapper that like if you have a list of 100 items and that wrapper is only like five items visible. the additional 100 items or 95 items are not going to render. Uh 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 >> uh something that uh controls rendering in that way that still doesn't break command F. Um those types of things. >> Content visibility in CSS is supposed to do this. Um, so the it's a 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. Um, 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. Um, 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? I think that 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 why why am I figur you you should know if something is on the screen or not and and control how that works and >> Yeah, for sure. Um, Olly 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. Uh, 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 want to like use a patch or like a put or if you're deleting something and you want to simply just have a button that deletes that item via a form submission, >> you're kind of out out of luck. You got to like you got to put that into a a post, right? and then you got to put it on a different endpoint of like delete item. So that would be that would be pretty nice as well. >> Yeah, I'll take that. I never understood why we have those verbs and they're not just all 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? Um, another one from Carl. Um, Snorl TV says, "Text metrics get bounding box of individual characters. Being able to measure the actual size of it and we the textbox 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 of like the line height and it's not centered. Textbox trim takes care of so many of those use cases. Um, which honestly is probably better than having to measure characters. But there still are, especially in like an 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 sparan wrap. Wrap every single character in a span. >> Yeah. Hell yeah. Um, for low lower level of connections, you have like Bluetooth listed here. Am I wrong? I thought there was a Bluetooth API. I I I haven't used this, by the way. Yeah. >> So, there is a Bluetooth and a web serial API which allows you to talk directly over obviously Bluetooth or USB. Um, and this is super handy for things like uh 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? Um, and that's why a lot a lot of devices if you want to 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 going to be able to do it. So there are Bluetooth and web serial fantastic APIs, but they have not made their way into standards. They've not made their way. Safari says no way. Firefox hasn't implemented it. So um that would be really nice to have control over those things. Sockets, you we have web sockets, right? And this is a security thing as well. you're not going to be able to access sockets directly. But, uh, 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. 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 got to hot potato the data. So the data goes from the drone to a node server and then the node server sends it over a web socket so you can actually access it in the browser. 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 app where you want to be able to >> scan something with RFID. >> Yeah, dude. NFC is so underrated in general. 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 here's the the NFC card. >> And I've got this little >> um this is called a Prox Mark III little NFC RFID writer. >> Oh, cool. >> I've been using that for my Bamboo Lab. 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, uh, one thing I love about you, you always got some [ \_\_ ] 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. >> Um, USB UART. >> Um, so this is connecting >> serial. My sister got like a some broken thing and I I soldered to it and I could see the boot logs of that device. What else I got here? Some glue. I have a a terminal screen. I love this thing. >> Oh, 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. So, it has a set number of screens that it changes between >> an e- in display for our audio listeners. >> Oh, yes. It has it's an e- in display and you set up essentially scenes and those scenes uh change every 15, 20 minutes or whatever. But you can also say, "Hey, don't hit the web to update your data unless it's every like 4 hours or even every day or whatever." 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. For some reason, I have an iPhone 3 um cuz 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 making some bins for my 3D printing. So, I was measuring the spoon and I never brought that back up. >> What? You got a blower? >> A Wolf Box blower. It's blowing. I got a a silicon soup thing that Do you have one of these? >> Silicon soup thing. No, >> you put it in the microwave and then you put your soup on it whenever you're microwaving it. And then if I need to carry it to my office, like I often do, you just pick up this and carry it into your office like that. >> Uh, that's what your sleeves are for. >> Bro, I've spilled so much soup. I I've I've burn Yeah, I got to have a silicon soup sleeve. >> I got the MadCSS logo, by the way. If you haven't checked that out, go to madcss.com. We're doing a major CSS battle tournament. It's going to be awesome. >> Yeah. Wow. 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. Um Nick Williams says a way to specify speed. Example, pixels a second for transition animations rather than just a duration. >> That's that's really cool, right? Because if you have an animation, you tell it, I don't know, 100 seconds or 300 milliseconds, 200 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, um it would be cool to get the physics of that rather than just break it in the middle of a bezier curve and then just reverse it from from there on out. That would be sick in CSS. Yeah. >> Yeah. Yeah. I agree. I I I don't know if yeah if I I'm dying for that but yeah more the merry >> CSS strict mode there's a lot of like baggage in in CSS right like what how long has CSS been around for 100 years so there's a hundred years of baggage in CSS and there are a lot of weird >> like oddities that you just kind of 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 you can pop at the top of your JavaScript file. Or if you simply just use an ES 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 mode, right? Turn border box um on by default. >> Yeah. And there there's so many dumbly named properties and stuff 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. Um, get rid of some of the croft uh stuff that you don't need. Uh, and make Yeah. >> Uh, one for browsers. Christopher Vanhton says, "I'd like to see Safari move to Chromium." You hear this a lot. A lot of people say, "Everybody just move to Chromium. It would be so much easier for me." I I'm going to 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 going to cause the web to stagnate. That's going to cause a whole lot of a lot of pain. You do need these things to compete. >> I want iOS Safari to be to be blank. That's it. That's it. Yeah. I don't know how 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. You can get you can have normal Safari on WebKit. Keep the uh keep the variety going or whatever, but like iOS Safari or just give me effing Chrome with Blink on iOS, please. Like I'm so sick of of >> But give it to everybody though cuz otherwise like normies are not going to change their browser engine on iOS. I just Yeah, just for my own personal uh sanity, >> some countries have already done it. We talked about that a couple episodes ago. >> They shouldn't have to have the countries force the company to do the right thing. >> Yeah. >> Um AI access as a native API. Um I'm going to tell you, and I actually had several calls with folks that work on on Chrome, and I don't think we need this yet because I don't think that we have figured out what these APIs need to look like. And if you rush these APIs out the door based 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 going to use them because they're just well, these are not nearly as good as as what we have. But >> that's what happened with web components. Yes, 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 going to get to a spot where you will be able to use your computer's bakedin 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 load in yourself kind of like transformers.js maybe you load like I don't know a gig model um into your application because it's well worth it for that. Um 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 model or whatever that is on there then it becomes private it becomes free right >> yeah the user is paying for it in their battery in their device but it's it's it could be significantly faster like what happens when you can run inference on absolutely everything what happens when it's extremely fast where it doesn't take four five 100 milliseconds a second to come back. What happens when it's like an instant? Um, that opens up a lot of possibilities. >> Yeah, really cool. I I've been I've been thinking a lot about this kind of stuff lately. Yeah, for sure. >> Chrome is working on this. They have I'm in I'm in the beta um 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 going to use the the paid one. Yeah. >> But like even things like date picker input like natural language to date picker, right? The date picker of the future will simply just be me typing in February 18th 3 years ago or the last 40 days starting from next Tuesday. you know, you'd be able to just type those in in natural language, have a model compute what that actually is, and then return to you some temporal durations that will match it. >> A AGI is me entering my credit card expiration date in any gosh darn format that I want and having it just understand it. Oh man, let me tell you about postal codes inputs in Canada. Holy hell. So, postal codes in Canada are uh like like a like a letter, a number, I don't even know. 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 you put a space in between the first three and the the second three numbers or or digits, but sometimes you don't. And then like the validation on postal codes is a nightmare. >> Sucks. I sucks. >> We 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 got to you got to 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, you know. >> Yes, I I'll >> that seems like a good use case. I'm going to uh uh to echo David Kramer's sentiment lately and it's it's the the people in in January 2025 who are still loling 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 got to 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 loling it because you think it's not capable, you are >> it's not good. It makes so many mistakes. >> Tailwind. >> Yes. >> I was thinking about that as an episode. What do you What do you think about that is like let's go on Blue Sky and ask what people's hang-ups are. >> Mhm. >> Um and like like not just like h it's actually really good cuz like there a lot of it sucks, right? freaking have you ever tried to like fix a CSS bug with AI? It's it's awful at that. >> There's all kinds of things. Yes. And some things take longer. Absolutely. Uh >> it's not worth it. And lots >> some things are absolutely not worth it. When I did the the hack week project, uh for our sin hacks, our CSS battles thing. Uh man, it was way faster to do all that by myself. Uh 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. >> All right, I'm going to I'm putting that on. I'm going to Blue Sky. I'm going to get absolutely destroyed. But we'll uh we we'll like put together all of like people's thoughts and like why they don't use it. Um and then we'll we'll just like kind of 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 your stance on not using AI, >> would it hurt you to not be such an [ \_\_ ] Like crazy. People are just yelling at people all like, "Look at this stupid loser who's using AI." Wes did something. Wes had some tweet about 3D on AI and and there's just some absolute loser on Twitter uh just calling him names for no reason. Like >> what was this? >> Somebody called me a name. >> Bro, you were quote tweeting them. >> Oh, I forget what that was. >> But you Yeah. You're >> to be fair, there is 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. Um, 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, >> that's where we're at. >> Just be reasonable, folks, please. >> All right, last thing we got here is APIs in Node, Bun, Dino, whatever. Um, Justin White says, "I want the web speech API in bun or node." >> Yeah, >> I I agree. And I 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 web speech API. >> Yeah. >> Nobody uses it cuz it sucks. >> Sounds bad, >> you know? >> Yeah. >> It's it's awful. Or like and we're talking both like text to speech and speech to text. Um and there's always going to be better models out there. Um so what we really need is yes, you should be able to use like the Siri voice built into 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. Yes. You know what? In that same regard, like give us good uh text to speech. I just did a texttospech server myself and it's not a problem. I have a texttospech server running full-time on my my laptop and anytime I need text to speech, uh 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 uh any of the APIs that are in the browser. And it wasn't that hard. >> Bonsy buddy sounding, >> right? And and the voice it it's not like uh what's the one that we 11 Labs. It's not like 11 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 uh it it's taking research topics for me and turning them into personalized podcasts uh and those types of things. And setting that text to speech up has been such a nice thing for me in my learning capabilities cuz I'm not reading anymore. I'm not using the built-in Mac OS one that also sucks. Um, so yeah, Texas Beach, make it nice. >> Um, Alibaba just released a model called Quen TTS. >> Um, which is >> in my opinion as good as a lot of the 11 Lab stuff. Um, 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 cents per 10,000 characters, which that's a lot, right? You want to you want to read a 5,000word blog post? Oh, no. 5,000 characters. 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 >> ethical problem. >> Yeah, I don't I don't need anything to replace my voice. I don't need anything like that. I just want to listen to somebody teach me things rather than um >> Yeah. >> Yeah. >> Beauty. All right. Let us know down below in the comments. What is the web missing for you? What do you want to see added? Cuz people are watching. People that do the standards are are constantly asking this question. They want to hear what do people actually want. Leave them down in the comments. Let us know down below what you know. Um let's do sick picks. Wes, you got a sick pick? I got a sick pick while you're waiting. Uh you know what? Uh, I was just talking to producer Randy the other day about like budgeting and stuff like that and it made me remember that I I've sick ppicked this a couple times before but not recently and it is new year. I lean really hard on budgeting software and uh 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 was 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, uh, whatever. 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 sand key reports of where your money is going every month, every year, whatever. And I got to say, the whole thing is just a beautiful, well-made app. It alerts you for uh reoccurring transactions that you you can be cutting back on, and it helps with so much. And Courtney and I now go through this our budget every other weekend um 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. >> All right, my sick pick. I've sickpicked this a couple years ago, but I do it again cuz 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 cuz you're using the teleprompter. 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 Sloanic rechargeable headlamp. I've had this thing for probably four years. It is freaking fantastic. I'll tell you tell you what I like about it. It's USBC rechargeable. It has a removable 18650 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. Um, it is bright as heck, you know, like I'm always working on something where it's super dark and I just want to light the thing up or I'm at the cottage and it's like super dark and I want to see where the dog is. Um, go into the washer, make sure he doesn't get eaten by a wolf. It is awesome. The elastic on it has like out over four years, it is still in really good shape. It just is comfortable on my head. I've My kids have some really crappy headlamps I've gotten as gifts and they always take mine cuz this one is the best. So, if you are looking for a nice quality headlamp, it's a very dad purchase, but check out these Sloonic headlamps. 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. Peace., What’s Missing From the Web Platform?, YouTube, 01kgfw1azawtcsexa3m0fh1qmf.