• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Dion Almaer

Software, Development, Products

  • @dalmaer
  • LinkedIn
  • Medium
  • RSS
  • Show Search
Hide Search

Mobile

Protopia of the Web

June 24, 2016 Leave a Comment


At the Progressive Web App Dev Summit in Amsterdam Jeremy Keith asked a panel consisting of representatives across Google (Chrome), Mozilla, Microsoft (Edge), Samsung (SBrowser), and Opera about the dystopian future that the Web may find itself in.

What if the Web dies out entirely? What if it finds a niche but it akin to radio compared to the world of TV? Radio is a fantastic medium and podcasting has brought back a renaissance of sorts, however the time spent listening to pure audio is dwarfed compared to time spent watching video, especially given that the audio capability is there too.

The analogy breaks down of course, because the capabilities that the Web and native have overlap much more readily and this overlap is growing. There are trade offs between the user platforms, based on both the natural focus of capabilities and the fact that one is a meta platform that lives atop others. Both sides can try to take the best from each other, but there are some universals.

We then talked a little about the utopian future. The Web that rules all.

We love black and white, but it never matches reality.

Utopia can never exist. Everything in life is a result of trade offs, so how could you have the best of every side?

Kevin Kelly talks about the state of protopia:

Protopia is a state that is better than today than yesterday, although it might be only a little better. Protopia is much much harder to visualize. Because a protopia contains as many new problems as new benefits, this complex interaction of working and broken is very hard to predict.

The constant drive that society has to improve. In the present it is hard to feel the massive changes that are happening to humanity, and sometimes you could argue there are step backs, but he argues that we are heading in the right direction.

There are no large releases for our world. We don’t sit in stasis and then once a year ship World 1234.9.34 (we would use semver right? ;). In many ways we are running countless A/B tests:

“The future is already here — it’s just not very evenly distributed.” — William Gibson

The Web ties to reality unlike many other platforms. The browsers are shipping much more constantly, and there are many of them, allowing for more iterative change. Elsewhere you tend to have the larger release cycles.

The same is mimicked elsewhere in the ecosystem. The Web itself is changing constantly and A/B testing and updates are baked in to our way of working. Native apps are getting more capabilities here, and some developers have created work around to enable more seamless updates (whether via meta platforms such as React Native or WebView, or through DSLs that script native views).

Not having big releases can be a weakness. There is no WWDC unveiling of the future. The ecosystem has to deal with the constant change, which has a cost.

It also means that we need to highlight our important moments through history. Instead of “behold the next version” we end up with “look at what is now possible”. We peak at the future with standards and open source code. What we lose in surprise we gain in the fact that anyone can collaborate and participate much earlier in the process.

The protopias that we have in computing and in life in general is so very messy. We each see different realities and can our individual consciousnesses can only parse so much of them.

Now and then I certainly worry about what the future will bring our species, and the role that technology will play. Innovations can touch lives at unprecedented scale. This power is amazing as well as scary. I hope that we push forward together on the amazing journey to the protopian land.

There is no utopia, and that is ok, as long as we keep improving and crank the flywheel. The world is better than even in so many ways, but there is so much more we need to do for people.


It has been helpful to think about the path to a better future over the long run at a time where my mother land (UK) has gone through a painful vote on a topic that can have ramifications around the world. As saddened as I am at the result, I know that I must push on, and that this may be a kink in the road of progress.

Team Web

June 20, 2016 Leave a Comment

Jake Archibald’s brings Rick and Morty to the PWA Dev Summit

I am at the Progressive Web Dev Summit in Amsterdam, surrounded not only by my Chromies, but also great web platform folk from Intel, Mozilla, Microsoft, Opera, and Samsung. We are also joined by awesome developers from all over, and it is interesting to note the issues they are dealing with.

One of them asked me “are you on Team Web?” and I had to ask he thought that meant. It came down to:

  • Believing in the philosophy behind the Web platform
  • Engaging and building to make the Web ecosystem better.

You can argue that most want to just get their job done, and that a thriving ecosystem needs the correct incentive structure. You would be correct, and this is why many of us spend a lot of time trying to help the ecosystem so it can better support the various players within it.

However, it is important to be able to note those who are on team web and thus the incentives that they have versus others. It is hard to talk about this without feeling like there is judgement here, but this isn’t the point. It can help you understand some of the discussions (e.g. meta frameworks using the web as one projection vs. framework that only runs on the web etc).

What is different about the Web philosophy?

In the universe of computing platforms (of which there are few with momentum) the Web has always been special to me due to its open properties. A typical computing ecosystem will have (at least) a triangle of actors: platform (who sets the design? who gets to be an implementor?), developers who build products on top of the platform, and users.

With closed platforms there is often one controlling platform vendor who calls the shots and sets up the incentive structures and rules for the players. Good ones will make sure to take care of developers and users else they may not get too far, unless the platform is SO valuable itself.

We need to rely on competition between closed platforms in a given market to keep the power dynamic intact.

A great example of this was the early gaming console era. Read Console Wars for a reminder of how ruthless Nintendo was at its peak. They not only chose the games, but also the number cartridges you would get! We often complain about the rules of the app store, but this pales in comparison to other closed platforms.

Fortunately, there was room for Sega and others to find their own piece of the market. Being too strict will naturally allow for competition from a more open partner.

If we look at iOS, there were more forces at play. With the iPhone tied to AT&T, suddenly you saw a coalition of the willing; Verizon (and other carriers), Motorola (and other device manufacturers) are out in the cold when Google rocks up with Android. ⚡

Competing closed platforms can work, but you are relying on strong competition without players becoming too dominant.

The Web is an open platform with standards and multiple platform vendors (browsers) working together. To remain healthy you still require that no one vendor runs the entire show, but this is much easier to do with a meta platform. The meta platform has weaknesses, because it won’t be able to jump onto one new capability that is added to one system, but the long term trade off is that you can build experiences that run across more systems. This gives you a diversity in reach, which becomes more important when there are more competing platforms as the cost of rebuilding experiences is prohibitive.

Today, you have a desktop experience that normally means a certain screensize, with mouse and keyboard inputs (touch is already making headway too).

On mobile you have more constraints, whether it be screensize, network, storage or compute.

Fast forward a lil and the inputs will be separated. Screens will be everywhere, with projections onto walls and eyeballs, and sitting on your wrist. The compute and storage may all run from the mixture of you cloud environment and the super computer in your pocket. Voice and gestures will join touch, mice, and keyboards.

We will have to think so differently about delivering our services across all of these. Shits gunna get crazy.

Who will own the dominant platforms? I certainly hope that the Web will be a driving force.

I have been fortunate enough to work for companies that have a strong love of the Web: Google, Mozilla, and even Palm. I have also worked on startups and enterprises where I needed to think in practical terms on what would be best for my customers. This time has been important as it allows me to empathize with those who aren’t driven by platform ideology or philosophy.

Mozilla, as a mission driven organization fights for an open web. They fight for it similarly to someone who may fight for democracy. It feels like the best long term vehicle, yet as die hard as these people can be, they also tend to know its warts in detail.

Opera has always been a fierce driver of the Web, and it has been fantastic to see Microsoft’s recent work and plans. I am so excited to have all of these companies join the Progressive Web Summit this week, and I feel like people are really coming together and pushing the web platform along quickly.

The fact that no one entity owns the Web is what many hold as the most important value.

If you take a look at other single vendor platforms, you can see the differences. As a single gatekeeper, if the platform provider gets enough market share that developers feel like they need to target it, you end up with:

  • Charging a developer a percentage to get their experiences into the hands of a user
  • A series of rules can be setup, including those that favor the platform vendor, and they can always be changed
  • Censorship of content
  • A single place for a government to go to sue / get information

It is often the case that platform rules are such that end users don’t even understand them. For example, someone was complaining to me about the new Gboard keyboard last week. They were big fans of it, but mad at Google for not providing voice dictation. You can’t blame them, it feels like a big sacrifice compared to the default keyboard. Why didn’t Google just put that in? It isn’t as though they don’t have the technology to do so?

Technically though, there is no way to access the microphone, so it is impossible for a third party keyboard to offer this feature. You could argue that it may be in the name of security, but these type of systems make it very hard to break into certain services, and the platform owner weilds a large amount of power.

I will always have a special place for Team Web as it embodies a long term experiment that balances the forces better than anything else I have seen. These platforms have such leverage and global reach that it is important to keep that balance working for all.

So, thank you to everyone who self identifies as a member of Team Web, as well as those of you that are doing great work for the Web regardless of the philosophy.

The Ideal Web Experience

May 25, 2016 Leave a Comment

When you name something you need to define it. Once you do that it is natural to have the definition poked at, and you run examples through those definitions. “What is different between a cat and a dog?”.

I am seeing some robust discussions about progressive web apps. What makes foo.com a progressive web app? What if it didn’t have this feature or that feature?

You tend to start with the definition, which leads you to Alex Russell’s original post and look through the attributes of a progressive web app:

  • Responsive: to fit any form factor
  • Connectivity independent: Progressively-enhanced with Service Workers to let them work offline
  • App-like-interactions: Adopt a Shell + Content application model to create appy navigations & interactions
  • Fresh: Transparently always up-to-date thanks to the Service Worker update process
  • Safe: Served via TLS (a Service Worker requirement) to prevent snooping
  • Discoverable: Are identifiable as “applications” thanks to W3C Manifests and Service Worker registration scope allowing search engines to find them
  • Re-engageable: Can access the re-engagement UIs of the OS; e.g. Push Notifications
  • Installable: to the home screen through browser-provided prompts, allowing users to “keep” apps they find most useful without the hassle of an app store
  • Linkable: meaning they’re zero-friction, zero-install, and easy to share. The social power of URLs matters.

It is more important to look at the motivation and the outcomes that you are really looking for though.

I will talk a lil about the past, and then talk about the journey from about:blank to what I think would be the Ideal Web Experience.

AJAX to Ajax

When Ajax first came along it was talked about as an acronym, but we quickly saw that this wasn’t what we actually meant:

  • If you used JSON instead of XML do I have an Ajax app?
  • The killer feature of Google Maps was the panning and loading of tiles, which wasn’t about Ajax

What mattered was that we had enough tools to deliver a great desktop web experience, and that people were on the journey to build these. And, it was a journey. People talked about the various states of ajax adoption, and often the path was ugly.

We had to deal with legacy systems and you would often see a app.foo.com approach until that experience could eat http://www.foo.com. We also see the regression of behavior, when people would focus on the new shiny and leave behind some of the great features of the web (accessibility, progressive enhancement, etc). Evolution is messy, but many got through to the other side.

We are starting the same journey again. This time around we are dealing with constrained mobile devices and networks, and new great capabilities due to sensors and context. The browsers had to quickly optimize themselves for this new world. We are seeing some early success stories where we finally see proof that this is worthwhile, for users and businesses.

The Journey

It has helped me to think about the Web experiences that I look forward too. Those that reach the ideal. What do they look like?

  • They are predictably fast (all across RAIL, all the time, all devices, via any deep link entry point)
  • They are secure (https all the things, CORS, CSP)
  • They are accessible (everyone in the world can experience them)
  • They have low friction (if I want to get to one from my home screen I can. If I want to easily pay without filling out forms AGAIN I can. If I want to be notified to re-engage, I can, …. etc etc)
  • They are resilient (shit happens, they deal with it)
  • They are adaptable (responsive across the board, from screens to inputs to context)
  • They are progressive (they are always the best they can be given the constraints of their environment. no lowest common denominator, they keep getting better and better and they use ever capabilities that makes sense)

Now, let’s get back to reality from my idealistic view, and put the “is it a progressive web app if….” questions to the test.

These answers are my opinionated ones:

My experience is kinda slow, but it has all of the cool new features, is that good enough?
No. Performance on mobile at the center of this. Sorry.

If you deliver an experience that focuses on mobile is that a PWA? Yes. It is far from ideal though. We cracked the progressive nut and it is a huge advantage of the Web, so please keep going on the journey! Other form factors such as desktop and tablets are still huge, and I often see some a-ha moments when talking about how you can use a feature such as push to reach your users on the desktop!

If your experience only works with service workers is it a PWA?
No. Come on, Service Workers are designed to be progressive enhancement, please don’t mess with that!

If your experience only works on Chrome is it a PWA?
No. We went through the “best viewed on X” era. It’s not good enough. I know that all of the browsers aren’t fully shipping everything yet but they are doing pretty well. Being a Web developer means that you write to the platform across implementations

If you don’t want to hide the URL bar is it not a PWA?
No. This can be a choice. The important part is that you have the possibility to go full screen / immersive.

If you don’t support $BROWSER yet is it a PWA?
Yes. Flipkart went down this path. While I would have loved for them to ship to more browsers, they decided to ship earlier and iterate and the important point is that they HAVE kept going on the journey and they now support browsers such as Safari and UC Browser

Is it OK to ship pwa.foo.com first?
It’s your choice! If that is the best way to ship and learn, go ahead. Just please keep going and reach for the ideal of One URL across desktop, mobile, etc etc.

Is it OK to ship on http?
Nope, sorry. Safety is too important. I know that it takes effort to get over to HTTPS but it has never been easier, so get on that journey

Is it OK to not be that accessible?
No. I know it takes effort here too, but it is much easier to start with accessibility in mind (and security, and performance) so try to get that habit going.

Is it OK to require JavaScript?
This is another type of “accessibility”. It’s business importance may differ depending on the demographic and what you are building, but…. remember the BILLIONS of people coming online that use browsers such as Opera Mini? This is an age old debate that will come and go, but the context is important.

What if I don’t support Add To Homescreen?
Really? Is that so much work? I get it…. this isn’t the part that MAKES it a PWA, but why not allow that option for your users?

What if I don’t use push notifications?
If there isn’t a valid use case for you or your users, then THANK YOU for not needlessly sending push messages.

What if I am building “websites” not “webapps”
All good! Just don’t ignore the capabilities that can make the website fantastic.

What if I don’t have an app shell architecture?
All good! That is just one option than people are exploring, especially for certain types of experiences.

For me when I go through this thinking, I land right where I was back in the days of Ajax. I want the browsers, frameworks, and developers to be pushing each other in the right direction, evolving so that we can deliver amazing web experiences.

We aren’t yet at the ideal web experience, but I think that we are at least poised better with the technology and thinking around progressive web apps. It is all well and good to expect every development team behind a website to be craftsmen with infinite time to build the perfect experience, but the world isn’t like that. There are a slew of problems, a ton of legacy, and piles of work to do. All we can hope for is that this work is prioritized.

The PWA term itself is also useful as it was with Ajax. It gives you something to talk about with your clients, or with your business partner.

“We really need to prioritize some of these new capabilities, have you seen the results companies are getting? And the types of experiences? There may be some tech debt to pay off as we get the foundations cleaned up, but now is the time.”

Chances are you may be a lil sick of the term already. That’s OK…. but it has its uses.

We are right in the middle of some messy evolution, but I am so excited with the direction and enjoy working with the chaotic and passionate web community to keep on trucking.

« Previous Page
Next Page »

Primary Sidebar

Twitter

My Tweets

Recent Posts

  • Stitching with the new Jules API
  • Pools of Extraction: How I Hack on Software Projects with LLMs
  • Stitch Design Variants: A Picture Really Is Worth a Thousand Words?
  • Stitch Prompt: A CLI for Design Variety
  • Stitch: A Tasteful Idea

Follow

  • LinkedIn
  • Medium
  • RSS
  • Twitter

Tags

3d Touch 2016 Active Recall Adaptive Design Agile AI Native Dev AI Software Design AI Software Development Amazon Echo Android Android Development Apple Application Apps Artificial Intelligence Autocorrect blog Bots Brain Calendar Career Advice Cloud Computing Coding Cognitive Bias Commerce Communication Companies Conference Consciousness Cooking Cricket Cross Platform Deadline Delivery Design Design Systems Desktop Developer Advocacy Developer Experience Developer Platform Developer Productivity Developer Relations Developers Developer Tools Development Distributed Teams Documentation DX Ecosystem Education Energy Engineering Engineering Mangement Entrepreneurship Exercise Eyes Family Fitness Football Founders Future GenAI Gender Equality Google Google Developer Google IO Google Labs Habits Health Hill Climbing HR Integrations JavaScript Jobs Jquery Jules Kids Stories Kotlin Language LASIK Leadership Learning LLMs Lottery Machine Learning Management Messaging Metrics Micro Learning Microservices Microsoft Mobile Mobile App Development Mobile Apps Mobile Web Moving On NPM Open Source Organization Organization Design Pair Programming Paren Parenting Path Performance Platform Platform Thinking Politics Product Design Product Development Productivity Product Management Product Metrics Programming Progress Progressive Enhancement Progressive Web App Project Management Psychology Push Notifications pwa QA Rails React Reactive Remix Remote Working Resilience Ruby on Rails Screentime Self Improvement Service Worker Sharing Economy Shipping Shopify Short Story Silicon Valley Slack Soccer Software Software Development Spaced Repetition Speaking Startup Steve Jobs Stitch Study Teaching Team Building Tech Tech Ecosystems Technical Writing Technology Tools Transportation TV Series Twitter Typescript Uber UI Unknown User Experience User Testing UX vitals Voice Walmart Web Web Components Web Development Web Extensions Web Frameworks Web Performance Web Platform WWDC Yarn

Subscribe via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Archives

  • October 2025
  • September 2025
  • August 2025
  • January 2025
  • December 2024
  • November 2024
  • September 2024
  • May 2024
  • April 2024
  • December 2023
  • October 2023
  • August 2023
  • June 2023
  • May 2023
  • March 2023
  • February 2023
  • January 2023
  • September 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • November 2021
  • August 2021
  • July 2021
  • February 2021
  • January 2021
  • May 2020
  • April 2020
  • October 2019
  • August 2019
  • July 2019
  • June 2019
  • April 2019
  • March 2019
  • January 2019
  • October 2018
  • August 2018
  • July 2018
  • May 2018
  • February 2018
  • December 2017
  • November 2017
  • September 2017
  • August 2017
  • July 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016
  • August 2016
  • July 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • February 2016
  • January 2016
  • December 2015
  • November 2015
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • February 2014
  • December 2013
  • November 2013
  • October 2013
  • September 2013
  • August 2013
  • July 2013
  • June 2013
  • May 2013
  • April 2013
  • March 2013
  • February 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012

Search

Subscribe

RSS feed RSS - Posts

The right thing to do, is the right thing to do.

The right thing to do, is the right thing to do.

Dion Almaer

Copyright © 2026 · Log in

Loading Comments...