• 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

Web Development

Ecosystem Engineering

August 17, 2017 Leave a Comment

“An ecosystem engineer is any organism that creates, significantly modifies, maintains or destroys a habitat”

— Wikipedia

When you are working on platforms, you have the needs of the producers, consumers, and the market itself. As the market, or platform owner, your job is to make sure that the ecosystem as a whole is healthy.

One key is to not get too greedy at the platform layer, as Bill Gates put it:

“A platform is when the economic value of everybody that uses it, exceeds the value of the company that creates it. Then it’s a platform.”

This is somewhat common sense, but why do we often do such a poor job of taking care of our ecosystems?

One reason is that it is a hard, complex slog. When you are building something new you have a lovely green field and pivoting doesn’t have the number of side effects. You don’t have as many dependencies to manage, so you can run fast and break things. You have built a lean product team with top notch engineers who are cranking through their sprints like Usain Bolt.

Then something happens. The success of the work slowly changes the game, and before you know it you may be in a situation where the team members don’t really know it has changed! The incentive structures in the company may have been setup to reward the wrong things.

For example, as an engineer, the way to get promoted is to tackle harder and more complex problems, delivering fantastic solutions, in record and reliable time. You level up by showing how your craft has improved. This may be utterly at odds with the needs of the day.

Let’s look at a real world example. The Web is too slow and this causes a major drag to the ecosystem health, resulting in the current epidemic. If you are an engineer on a browser team, you will be working on more and more complex technical solutions to either:

  • Taking the existing content, speed it up in the browser. Incredible work has been done here, and it gets harder and harder (and more complex). Compare older browsers and how they blitted pixels to the screen vs. the complex GPU architecture that is in there now.
  • Build new standards and implementations that have faster paths. This is geological time, and a ton of work too…… and the solution isn’t enough, you need adoption.

If your core metrics are based on browser metrics, these are the paths you will take. However, if your core metrics are around the speed of the Web at large, which includes other browsers, then your point of view may change. Your investigation occurs at another layer and you may end up with totally different conclusions.

For example, WordPress is a huge percentage of the Web, including new content. This may have you conclude that helping make WordPress faster (better AMP support, service workers, etc etc) will actually generate a truly massive impact on the perceived performance of the Web at large, and it may also cause a competitive push with other CMSes. We see this happen again and again. For example, Flipkart being the “Google Maps of PWA” drove a lot of mindshare in India on investing in performance, especially from the eCommerce vertical. But this work is far from sexy. Many engineers would rather NIH yet another amazing CMS versus go in and make WordPress better.

Engineering teams are naturally working on the next feature / version of the platform. Take something like iOS or Android. Their yearly drumbeat is intense. I get to see this first hand by witnessing the mammoth effort that the Android team takes on. As we tick to the N+1 version, it is natural to focus on solutions there, but the ecosystem lags behind.

This is why work such as the Android Support Library came from Chris Banes, an engineer in Android DevRel. If you are talking to developers everyday, you are living in the real world constraints of today.

It is critical that we line up the outcomes at the ecosystem level, allowing you to really wrestle with the problems that you face at scale. It is important to look at all the tools at your disposal to enact the painful, necessary change. You need to think through all of the carrots and sticks. This kind of engineering effort deals with much outside of the scope of code. Psychology, and economics, can be front and center.

This is when other functions come in. Is the full go to market team in line with the same metrics? E.g. BD, Marketing, Sales? When everything is aligned magic happens, however often I see this break down due to us wanting to break down the problem into small chunks. If we aren’t tying everything together we end up with small product teams that are focused on their product, versus the ecosystem. The goals revolve around adoption. Everyone is pushing their shiny thing.

As I continue to see this pattern, I keep realizing that we need more ecosystem engineering, and we need to change the incentives to truly allow “Product Excellence”.


NOTE: There are some teams that I have seen that go above and beyond here. One great example here is Rick Byers and his team, and their maniacal dedication to bring predictability to the platform.

Google I/O 2017: Invented w/ Others

May 17, 2017 Leave a Comment

Watch live!

I am so excited the time has come for Google I/O to kick off for the second year in our backyard, with thousands of developers coming to join hundreds of Google engineers as we geek out on tech in a festival atmosphere. I have already been at several pre-events, and what blows me away the most about conferences like this is how international they are. With all that is going on in the world, it feels great to come together as one. An immense amount of work goes into putting on the event, crafting great content for developers, and of course building the products that come to life. This isn’t just about the products that we build at Google, but a ton of partners work incredibly hard to get things ready to showcase platforms and ecosystems.

As I reflect on what I am most proud about this year, one theme is exactly this: working together with partners and ecosystems. We are fortunate enough to have a few large and mature platforms out there such as Android and the Web, and each is still pushing the boundaries and innovating. We also have new platforms and extensions that tie together our own services as well as these ecosystems. I have seen an increased effort to unifying and working together where it makes sense. For example, running Android apps on ChromeOS, running Web apps as first class experiences via PWA, having immersive reality (VR and AR) come to various platforms, and glueing things together with IoT and Actions on Google.

Computing is unbundling, and individual components have more wiggle room and ability to connect and compose with each other. These connections are supported by empowering glue such as Cloud Functions, and machine learning is there to make experiences work optimally for uses. When mobile first hit, much of the UX hit was around coming up with the right interaction on the small device and how it tied into the context it now had about you (from your location to your contacts). Now, the best experiences take that attention to detail, and they marry it with smarter services. Google Photos is a canonical example that has a very nice UI for sure, but the magic is in how I can search for [my son in green when he was four] and get results. Slack has done a great job with their UI, but it was their search functionality that originally won me over from Campfire. It is becoming a given that you should be thinking about how you can best use data to up level your experiences. We have a lot of talks on TensorFlow from beginner to advanced, but we also have many APIs that do the work for you (e.g. vision APIs). You don’t have to take a linear algebra course again to get started (but I recommend this fun way of doing so!).


Not Just Invented Here

Meanwhile in Kotlin slack…
Welcome! https://t.co/GhrhxcY4Km pic.twitter.com/4BsKz7ndMc

— Kotlin by JetBrains (@kotlin) May 17, 2017

I am really excited to hear how Android developers react to the Kotlin announcement today. I have heard developers ask about our support for such as long time, I am really excited to let them know that we are standing by it. I first used Kotlin several years back when I was frustrated at the level of Java language support, and it is a fantastic modern language. Since then the community has grown, and it has broadened its targets. I am so happy that we have embraced this rather than trying to do something new for the sake of it. We have a lot of great information on how to get started.

Beyond Kotlin, we have great new improvements in the tools and SDKs. The new architecture components such as the lifecycle management helpers are going to save so much time (and frustration). Chet, Tor, and Romain are going to have a whale of a time on stage this year showing off all the goodness. This has been the best developer-focused Android release in awhile, and this is just the start for Kotlin and these developer tools.


All boats rising

The Web has always been about community and shared evolution. It is the democracy that, yes requires compromise and working together, but results in shared change that doesn’t give too much power to a particular entity. This year we see the Web innovate faster than ever, resulting in great new experiences such as Twitter’s new PWA that comes in at a tiny bundle to get going quickly and picks up steam from there. And then there is the amazing Wego experience. The story behind that is particularly fun, as an app developer picked up Polymer (2.0 just released!) and two months later had it up and running.

We have new tools to help you take your web experience to the next level. Lighthouse 2.0 was announced and now comes baked into Chrome DevTools, and Workbox takes our battle tested sw-toolbox and sw-precache and packages it in a nicer bundle that lets you pick and choose what you want to bring service workers to your app. But again, it isn’t about what we are doing. Microsoft talked about their support for PWAs at Build last week, and other browser vendors are working with us to support the latest and greatest as soon as possible. Outside of the browsers, the framework and app developers are busy working on how to optimize for the constraints and opportunities of mobile, whilst also getting their support to desktop and other (sometimes surprising!) form factors. The Web continues to be about reaching out to all of your users and meeting them where they are.

We built a fun Google I/O action!

Reaching the full bundle

As the mature platforms continue to push the bar, we are seeing other form factors come to life too. Whether it be Actions on Google that can reach users through their Google Home, phones (and more!) giving you multi-modal access to services at the flick of a voice or text gesture, immersive new VR and AR experiences, or Android Things packaging IoT in a manner that makes it incredibly approachable and powerful.


Bringing it together

This year we brought Fabric together with Firebase, and today we are open sourcing more of the product (with more coming!) right as we add new functionality across the platform, including large new initiatives such as Firebase Performance.

What I love about Firebase is how it brings you the best tools to help you build your applications, all packed with a top notch API console and SDKs that work together.

This is all the tip of the iceberg. Unifying the unbundle, together is the cheesiest thing I have written in some time, but that is what I see when I look at where things are coming together this year. All platforms innovating quickly, but coming together where it makes sense to solve problems.

All the prep is done, now the fun part…. getting to meet old friends and new at Google I/O.

If you can’t be here in person or at an I/O Extended event, please tune in, and we are bringing more Google Developer Days to you this year!


“platforms innovate

together computing unbundles

and then we all unify.” — Stephen Colbert

Flexibility brought to you by P, W, and A!

January 19, 2017 Leave a Comment

As I reflect on 2016, one of the highlights was working with companies who were reinvesting in the Web. I got to hear a lot of stories about their business and their technology stacks as they wrestled through how to get from here to there. It is one thing to understand that there are exciting new capabilities, but the reality is that websites are at varied stages of evolutions and there are practical constraints to work through.

You can look at this in a negative way, but you can also recognize that this is often a good problem to have. Dealing with a legacy system that runs a substantial business is a good problem indeed. It is vital to take care as you change a ship that is on an important journey, but fortunately the Web is very well suited to the job. Thanks to the loose architecture of URLs coupled with the fact that you can ship down code at will means that the logical representation of the business is very much abstracted from the physical.

Evolving your experience is similar to evolving your codebase. You make many choices that have trade offs. For example, at companies such as Google they have often taken an interesting approach of keeping One Large Codebase where everyone works as close to master as possible. What happens if you are are all evolving the same codebase together? It means that if you fix a bug in your SSL library it can be rolled out to all of your services in record time. It also means that you need to be vigilant at keeping up to date all the time, with is definitely a tax, especially if you don’t have tools to handle this.

In general it is good practice to have a strong master. I often look at the source tree and map it to a real tree. You want a strong trunk that is always growing enough to handle the branches that come off of it. You don’t want the opposite, a weak trunk with heavy branches that eventually makes the tree fall over.

How do you keep complexity down, and try to make sure that person A isn’t causing problems for person B in another part of the codebase?

One solution is small modules that can be easily composed. We see this in areas such as UNIX, node, and React. The key is the composition of the pieces, which is different to separate units that can’t be reused. Composition not solely isolation.

Native has been around long enough now that all of this has come up too. How do you handle a large codebase? What about once you have multiple apps? What do you want to share between them? There are many techniques to help here, but none are quite as flexible as the URL + Web delivery.

Speaking of which, let’s get back to evolving your Web app in 2017

After talking to many developers and companies, three patterns emerged for the journey, and I will force them into the same acronym as the latest Web revolution itself, just to be confusing:

Piece

Take one user journey, or sub-site, and make it a PWA. For example, Air Berlin did this by creating a post-purchase experience that keeps your boarding pass offline and ready for you. This then feels like a mini app, akin to early mobile apps that focus on one use case and do a good job. One of the under-explored areas of PWAs is the fact that you can mint them in any way that makes sense for your service. For example, HBO could have an overarching app for their service, but you could also choose to just have a launcher into a particular show, all in a natural way that doesn’t need multiple entries in a store if not desired.

Whole

You could take on the whole enchilada. This is ideal if you are looking to do a re-think of your experience any way. Let’s say that you haven’t done that responsive design re-do yet and have separate “mobile” and “desktop” sites? Maybe you were thinking about trying one of those shiny new frameworks that you were hearing about? Maybe your product and design team were feeling the itch anyway? Well, the water has never been warmer. If you have the buy off from the business to do this you can look at rolling out a spanking clean, offline first, super fast reliable experience that works progressively. You lucky pup!

API

Maybe there is a particular new capability that would be impactful for your business. A PM comes running in with a glint in their eye as they tell you how fantastic it would be to bump up re-engagement via push notifications. This is exactly where The Weather Channel started their journey. Once you get the infrastructure in place (e.g. make sure to get onto https) you can add a feature like push without large changes to the web app.

There are many ways to skin the cat, to start your journey to an ideal web experience, and as always, the key is to get started.

« 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...