Top web developer pain points in 2021
We survey a part of the ecosystem every quarter. Here are some of our findings.
About Me: Paul Kinlan
I lead the Chrome Developer Relations team at Google.
We want people to have the best experience possible on the web without having to install a native app or produce content in a walled garden.
Our team tries to make it easier for developers to build on the web by supporting every Chrome release, creating great content to support developers on web.dev, contributing to MDN, helping to improve browser compatibility, and some of the best developer tools like Lighthouse, Workbox, Squoosh to name just a few.
Sorry Safari team
We shared some incorrect data at Chrome Dev Summit. Here's my apology and what lead to the mistake.
Chrome 100 - Does it break user agent checking?
Does the 100 in the User Agent break anything?
Browser Compat Data - developer gold
MDN created Browser Compat Data and it's a goldmine. We should be using it a lot more
Building an NPM downloads dashboard with Google Sheets
I'm in the lucky position that our team is very productive and we've built a lot of amazing tools on NPM that developers for the most part love to use. The manager in me likes to quickly get a picture of how the web is doing, and how the work that our team does is going, so I end up building a lot of dashboards. One area that was a frustration was that I would have to go through each of our teams NPM modules by hand and see how they are doing.
Getting Feedback in to Chrome: Web Developer Insights Community
How do we get your feedback in to the Chrome Web Platform team?
The unofficial way to embed Squoosh into your web app.
I wanted the functionality of Squoosh, but in my web app. Here's how I did it.
Putting an image on the page is easy, until it's not
It should be easier to put an image on the page.
My Drafts
I want to share my thinking with you, and to refine my thoughts with feedback from developers.
Web Developers. Want help? I want to help. Book a meeting with me.
After the Chrome Dev Summit, I had the chance to take some time off and spend it with my family, and during the downtime I got to think about all that has happened over the last year. I'm incredibly proud of my team and how they responded to the crisis that hit the world this year - we built tools like web.dev/covid to give developers advice on how to keep sites up and running, set up a forum for public services support during the lock-downs; ran web.
Creating a quick launcher for Android using the web
The web is a powerful thing, with the right capabilities you can create tools and services that can be deployed without a central authority and can also deeply integrate with the peoples devices. I love being able to tinker and scratch an itch quickly. The itch in question was that I'm a heavy user of .new domains and I wanted a quick way to have access to them on my Android home screen so that I can start a task without having to find the app, go through its menus and then create the "new" thing.
Bookmarklet to download all images on a page with the File System API
My daughter is attending nursery school and every day they post photos of the baby to a special portal so we can see what she has been doing. The web site, is, err, well... functional. However they block the ability to download the photos in their UI, I've no clue why, but it's super frustrating. I love Bookmarklet because they let me quickly augment a site without having to build a full extension, and this is no exception.
FAB without JavaScript
Just after my daughter was born we needed a simple way to track "Baby Habits" (Read: Eat, Poop, Wee, Sleep, and maybe a bit of Vom). During my baby duties when the baby was asleep I built Akachan.app to help us keep on top of things. I wanted this app to load instantly, and given that JavaScript is one of the biggest contributors to a slow page load, I gave myself the challenge to build Akachan as a SPA without client-side JS (more in another post), which for the most part I was able to do this with traditional POST's and a hefty amount of Service Worker logic.
Simulating Apache mod_include for Vercel
I run a static site, it's built with Hugo and hosted on the edge with Vercel. Sometimes, I just want to include a small piece of server-side logic (Copyright notice anyone?) without having to spin up a complex node server or api endpoints. Sometimes I want to be able to drop a small piece of dynamic content in one single page on my static site. That's what I loved about Apache mod_include.
I finished reading my first book in Japanese today
I've been learning a bit of Japanese for a little while now and whilst I find it very hard, I was quite happy to have read this book to my daughter today though!
Streaming Templates in node and the browser
I'm currently building a simple web app and I needed a simple templating engine that can stream dynamically generated responses to the network. It's hard to build sites that are fast. One known pattern for building sites that render quickly is to ensure that the browser gets the HTML as quickly as possible. Yet, many of the tools (middleware and templating engines) that developers use to build sites wait for the response from the server application to be completely created before they are put on to the wire and send to the client.
Shiming Request.formData in Safari
I'm currently building a simple CRUD client-side only data logger PWA that contains no client-side JavaScript apart from what is inside the service worker. To do that I am following basic REST principles, and just using the Form element to submit data to the service-worker that then stores in it IndexedDB and renders the results back out to the client. I will explain more in another post, but in this post I want to quickly document how I fixed an issue in Safari.
:D tabs open
Idly browsing the web whilst I'm on paternity leave and saw that I have a lot of open tabs. :D
Twitter is using PWA shortcuts
I thought this was rather cool and I discovered it by accident, but it looks like Twitter implemented shortcuts. It's great to see web sites and web apps being able to do things that users expect installed applications to be able to do.