Product

Future of the web

I recently had the opportunity to attend WordCamp Asia in Taipei. It was my first time in a WordPress community event. One of the key takeaways for me was that WordPress adoption was in decline. Not only that, behind closed doors, I got to hear that number of websites created on the web overall is slowing down as well (no data was shared unfortunately… but I believed the source)! This got me thinking… does WordPress no longer meet the needs of people? Or perhaps, websites are going away..?

Keynote presentation from Noel Tock: Future of WordPress

Search for answers like “can dogs eat mango” or “do butterflies pee” (yes, I’ve searched for both recently), you can easily see how Google’s negative influence on the web. Job of an indexer is to make sense of content and surface it appropriately. However, search is the window to the web, shifting some power from authors to the indexers of content. The web is, at least partially, shaped in the image of Google.

Despite search being the dominant player on the web, authors still get to style and present content in ways that reflect their branding and style. Websites are a reflection of an author’s intent. They get to take the consumer on a journey. Search is part of how content is organised. However, all of this lies in the hands of the author.

I asked ChatGPT the same questions above to get answers. Answers were instant. No bullshit ads or content hidden amongst a sea of SEO text. I was only regretful that I hadn’t done that as my first step. I’m still building my muscle memory to open ChatGPT instead of Safari.

There is something interesting about searches done through LLMs. LLMs drop all hints of what the original authors of this content intended to convey or how they wanted to present the information. Content is reduced all the way to what I personally wanted to know.

AI is becoming the translation layer between what authors created and what the consumer was looking for. This is causing a fundamental shift to how we think about the web. The presentation responsibility shifts from the author to consumer, reducing the burden on something like a website.

There are lots of down sides to this, of course. Content creators don’t get enough credit (hence, lawsuits) and we don’t read how content was intended to be consumed. We miss out on the motivations and stories behind what fuelled great writing or artwork. Yet, the significant amount of trash on the web today will move more people into this mode of using something like ChatGPT to discover content.

This isn’t a new phenomenon either. Google Maps is a good example of providing a different window to content around the web. That too, has a lot of complaints from content owners. However, Google Maps is something Google designs to be a specific lens into a type of content. It isn’t as personal to me specifically.

Web browsers have been the window to the web. If you had the opportunity to watch Halt and Catch Fire (season 2 and 3), Joe MacMillan has this epiphany. They don’t have to create their own network to get users. They just need to create a window to what is out there in other networks and servers with HTTP requests. It is so powerful. A web browser’s job is to present content an author has prepared using HTML and CSS. JavaScript makes things more fun and interactive.

Entering the AI age, the concept of a “web browser” takes a different shape. My browser should be different to yours because I, as a consumer, get to control how content is presented to me. Browsing will be deeply personal. I have the power to decide what I want to see. My bot / browser / companion / OS / computer / whatever I use… will understand me and shape content to help me easily consume it. It will help me make sense of the world.

It is started to happen: Arc Search

In fact, this will go so much further in the future. Bots will talk to other bots to learn about things and bring final outcomes back to the consumer. We’ll build more and more purpose driven applications/models that reduce vast amounts of information to simple consumable chunks.

It will be an absolute mess before we get it right. But it will be the begining of something new.

We may very well end up making a lot less websites in the future. This is not cause for alarm. Part of my current job includes looking at products like cPanel hosting. People aren’t reaching for those tools as much over time. However, more content is being hosted on the Internet than ever before, just not in traditional hosting. Social media collects incredible amount of content from users. These changes on the web will make consuming more content possible and CMSes and content creators will still be super important. They just might not exist in the current shape and form.

What will be important here is to figure out how do we continue to have a web that isn’t a series of walled gardens like Facebook, TikTok, Reddit, X and so on. Internet should be open. It should potentially be free to a large extent too. The benefits of it being that way are obvious: the free Internet has progressed our society at an incredible pace.

There’s a lot to figure out in this future. Its success will be determined by whether we can solve these problems.

  • How would we give credit and incentivise creators to continue to make great things? Imagine technology like ActivityPub and Activity Streams will play a key role in the distribution of content and credit.
  • How would we make the economics work? Advertising powers much of the Internet today. Websites can mix ads with content to make revenue. Reddit, X and others have closed their APIs and websites to crawlers that look to create LLMs to protect revenue. Would we end up with walled gardens of content that takes a fee to browse? Wouldn’t be a very open Internet anymore.
  • How do we evaluate such an unpredictable medium to be accurate enough or safe to use? Explainability will become important.

As someone who is obsessed with user experience, this is really exciting to think about. This fundamental shift will bring new ways to explore and consume information. There is so much innovation opportunities ahead of us.

How much planning is enough?

Few years back, I was sitting in Bunker Coffee with Luke for our 1:1.

Luke tells me, “you know, no matter how hard you plan, the error rate of our decision doesn’t change much. If we take path A today versus next week, after having a whole lot more meetings, we still don’t know what we don’t know. What do you think?” He’s always polite to leave space for me to respond.

We were just coming from a team discussion on how to implement a feature. The team couldn’t arrive at a decision. Our most experienced devs wanted to spend more time thinking and white-boarding a solution.

Luke was right of course. We needed to move forward and discover unknowns. But when do you “just start” versus spend time in the drawing board?

Luke doesn’t just write code. He also builds houses. He’s worked through many building projects to know that there has to be a solid plan. However, software is far more malleable. Most decisions made in code can be changed. What truly matters is understanding dependencies in the work being performed. Dependencies can make altering decisions far more challenging.

Generally speaking, further down the stack you go, more upfront thinking is required. In other words, volatility in code and product increases as systems get closer to customers. Remember images like below that encouraged us to front load all issue tackling to save money? Well, they are wrong. Most solutions can do with making mistakes and validating assumptions sooner than later.

Image showing cost of fixing bugs at different stages of development. Fixing in production is 150x costlier.

Not everything fits this model

The feature we were debating was for a mobile app that didn’t have a large number of users at this stage. That is the second piece to consider: customer impact. For systems that have broad customer impact, more consideration needs to be taken. If millions of users are going to be affected by a certain identity verification system, perhaps more thought should have been given. This is why as products scale, feature development does take a little longer.

Even when there are changes that are high impacting, there are tricks to go faster. It is even more important to learn about unknowns and arrive at informed decisions in these products. A simple way to get there is to reduce scope of changes. Scope can be reduced by either limiting customer exposure or breaking the change down to small iterations.

If you are running a project, always ask your team how something can be delivered in half the time. You can’t bend time and space; things will take longer than predicted. But you can have achieve outcomes sooner than you think.

Dependencies and customer impact

Many tend to be very risk averse, especially in high revenue environments. Like I talked about in “Companies Grow” post, this can become an attribute of growing companies, even to the point of rejecting innovative ideas altogether. More planning becomes the answer to please this conservativeness.

Moreover, developers are always looking to develop the ideal system; they hate writing throwaway stuff. There is natural inertia towards being careful with every change.

We should always keep in mind that these actions have a price attached to it. Being agile fundamentally requires us to try things, learn from them, and try again. We are always wiser for having reworked our solutions with new insight. Mature teams understand this. They aren’t afraid to test solutions, validate assumptions and go back to the drawing board. They aren’t afraid to fail. Like Luke reminded me, there is just always a chance of failure.

Lastly, remember… (maybe this is a construction industry thing) …as my house builder points out, “a plan is just a starting point.” Actual work lays ahead of you.

App Store

Something we used to talk about in university was the impact an operating system can have on people. A system designer imagines the future and creates capabilities that its users can leverage. It is a form of influence on users to adopt the imagined future. Users, however, behave in unpredictable ways. A system starts to take a life of its own when users leverage these capabilities in creative and innovative ways the author didn't anticipate. This leads to a relationship between the two parties where they influence the future together through observation, experimentation and imagination.

Mobile operating systems are the most impactful operating system of our day. Billions of people are in a serious, intimate relationship with their mobile devices. This relationship, however, is not a traditional 2-way pairing. Modern operating systems have APIs that application developers can take advantage to enter into this conversation between users and system authors.

App stores are a crucial piece of this relationship. They directly impact the type of relationships we have and who we meet in this ecosystem. That shapes our experience and our future.

Apple should be careful steering its App Store.

App Store policies have a specific function: policies keep the ecosystem at a healthy state. Healthy ecosystems grow and flourish. Apple's main viewpoint in keeping its store healthy is to create a safe environment. This ecosystem is diverse, many of whom are non-tech-sperts (like my mum), who needs help with technology. This is a good strategic differentiation for Apple's brand and offering.

Safety has a lot of layers. To name a few: protecting users from scams, preventing issues on devices, enforcing age appropriate content and privacy, are all parts of feeling safe. These help users.

Developers also need safety. That is done by having access to robust tools, cover from external pressures (like litigation) and an environment where they can compete fairly to gain the favour of users.

App Store does implement many policies around these issues. They scan applications, weed out bad actors, have features like "privacy labels" to ensure transparency. For developers, they provide tools, APIs that make it easier to build wonderful experiences and at times, protection from litigation (from pesky patent trolls).

The issue is that App Store policies aren't all targeted at creating a "healthy ecosystem". They are also targeted at the ecosystem yielding high revenue. Now that most people who needs an iPhone has an iPhone, growth has to come from services and future hardware products. App Store revenue is important to this formula. This is similar to issues faced by Netflix: successful companies running out of room to grow.

There are few spots being targeted for revenue on the App Store: payments, ads and competing services.

Ads are not on brand for Apple. It is a premium product, nobody wants to see cheap casino ads. The issue here is that ads are in direct competition with privacy. Good ads are context sensitive and relevant to the user. Recent ads debacles show that they need to dive deeper to make a great ads product (the kind Kevin Systrom will be proud of).

The payments situation is a mess. There was clear thinking around app sales tax (30%) and in-app purchases for a while. However, users and developers are behaving in unpredictable ways. Technology is moving quickly with new payment types and ways to deliver experiences. The system author has given rise to these innovations but now has to grapple with the reality that they don't generate revenue.

Few things come to mind:

  • Bitcoin, Blockchains and NFTs have ushered in new ways to own and purchase goods. App Store policies are hurting NFT trading altogether.
  • Games are moving towards subscriptions and "stream on any device" models. App Store policies simply don't allow for such innovations to play in the ecosystem.
  • Modern day social media was born out of iPhones. Their existence has transformed many areas like marketing, shopping and entertainment. App Store is yet again trying to apply old rules onto these new spaces.

Read more: Apple flexes its control over App Store

These actions show App Store is unprepared for the innovation that is flourishing in the ecosystem.

Beyond payments, Apple is competing with other services in the App Store like music streaming. This is causing developers to realise the relationship is not built on mutual trust and equality. There is a clear dominant party here.

So, there are some problems.

Apple's focus has been to increase revenue from its service offerings. That has required them to test the boundaries of the relationship they have with developers and users. All the while, the platform is moving forward in unpredictable ways. Innovation is taking place under their noses.

I think it is time for Apple to observe and adjust its policies and systems so that innovation continues on their platform. I dislike seeing developers pull features from their apps on iOS. It is feeling like owning an iPhone has become a disadvantage.

There is nothing wrong with getting return on the investments made on these amazing devices and software platforms. It has to be done in a way that doesn't strain the relationship we have with them. The only real way to make long term revenue from services is to work on keeping the ecosystem healthy. It needs to stay safe and have room to grow.

A messy change in direction for iPad

Enjoyed reading this article from David Pierce at TheVerge on Stage Manager. It is not going well for Apple as far as iPadOS is concerned.

Here in the real world, trying to figure out how Stage Manager works turns into a wild puzzle requiring a wall of Polaroids and a ball of yarn.

The issue seems to lie in "product vision" part. I think David nails it.

The company has a complicated history with multitasking in general. Jobs was famously and loudly against the entire concept — he believed in helping people focus on one thing at a time, not in helping them overwhelm themselves with windows. In Jobs’ mind, the best thing to do for users was to make it easy to switch between tasks rather than do several tasks at once.

...

This tension is only becoming more acute, too. Apple is now all-in on keyboard attachments for iPads — it even moved the camera on the new 10th-gen iPad to the center in landscape mode, which is as clear a sign as you’ll ever see that most people use their iPads horizontally on a desk. Apple’s also trying to break down barriers between Mac and iPad so that you can do all your work on all your devices.

It is not easy to switch out the direction of a product that is already performing well in the market. Expectations are high. It is even harder to do it with yearly releases cycles for software and 2-3 year release cycles for devices. We're in that messy transition where it isn't quite clear whether Apple's confused about what role iPad plays in their line up, or is it just taking so many years to change course for their new vision for the device...

Twitter thread on "preventing frustration"

Found this awesome Twitter thread by Ken Kocienda while reading about iPhone keyboard complaints in Hacker News.

"This gets back to the idea of preventing frustration. I determined that it would be more frustrating to have autocorrection “guess wrong” and erroneously fix broken typing."

Read the full thread. It is great, including the constallation algortihm idea.

Thoughts on “Scaling Technology”

I had the privilege to take part a panel discussion on “scaling technology” for go1’s offsite. It got me thinking…

Software products are (usually) written to meet product outcomes. Initially, these outcomes tend not to include deliverables like “used by millions” or “developed by 1000s”. As a product grows and matures, these concerns start to bubble to the top. Sustaining growth requires businesses to take on “scaling” activities. They help build a lasting product.

Scaling tends to be forced upon a team on 2 directions:

  1. As market adoption increases, there’s more inbound traffic and opportunities. Product team will start to pile on new features to improve conversion and stickiness. Organisation may acquire horizontal pieces of technology to integrate and grow the business. With such rapid growth, software applications starts to breakdown under its own weight.

  2. With more customers, comes more funding and interest from the wider organisation. That means more developers start to push code into the mix. Operations start to slow down as overheads, dependencies and complexity of collaboration increases.

Scaling systems will both help continued growth and reduce some of these issues. Often, that’s not enough to be successful. We also have to evolve people’s mindset to support the growth in business (i.e. scaling people).

Scaling systems

This is a large topic. There are lots of books about achieving scalable systems. Here, I’ll focus on some ideas I’ve seen teams miss out on.

Scaling systems is a lot about having a strong architectural direction, aligned to business strategy. Where do pieces of your system go and how do they fit in? “Highly cohesive, loosely coupled” pieces that support where the business is taking the product.

The architecture cannot be “too clever” and should be easy to reason with. Sometimes, we forget that we will have more people with diverse skill levels working in the system. With more people comes more misunderstandings and confusion. Simplicity does well here… as long as simplicity doesn’t adversely affect the competitive advantage a business has.

One mistake I’ve seen made over and over is that we tend to design for the problems we face today. Scaling requires imagination and creativity to identify and agree on a future vision. This has to be done with stakeholders from other disciplines. Tradeoffs and constraints applied for future has to be made together deliberately.

Think about a road vs a F1 car design. What changes and tradeoffs are made to achieve the outcome of going around a circuit significantly faster? F1 car only carries 1 person. It has to have extreme turn around time when swapping out modules like tires and pieces of the body. It’ll support lots of configurations and costs a fortune to maintain and improve one. Scaling is a lot about trying to figure out how you can turn your road car to a race car.

Architecture should be thought as an organic/fluid element of the product. There is little chance that a living product reflect any idealised architecture design. Some parts will lag behind while others will evolve rapidly. That’s the nature of large software applications. Systems are always in motion, much like the business itself.

Think about where “rubbish is collected”. Every system produces waste as more development occurs. Waste usually floats to the top of the stack because these parts tend to be more volatile. Can you isolate areas of high waste production so they can be renewed with low friction?

Example of this is edge services (or backend-for-frontend APIs). Most changes goes into the edge to drive changes in clients. Overtime, they are natural places for bloat. They need to be regularly refactored.

Lastly, any new architecture should have an incremental migration plan. Businesses continue to operate and make money. This means that rewrites are expensive and downright dangerous. Go incremental. If you are not convinced, read the big redesign in the sky.

Scaling people

Scaling people is much harder. Even when the technology is thoughtfully designed, it may not yield good results if people didn’t learn to think from a point of scale.

All teams and companies have an equilibrium: a “default” mode of operation. New systems and processes tend to devolve back to the state of legacy systems when nothing’s done to move existing equilibrium state. Many disregard this as an issue because it is the current playbook to company’s success. Problem is, to make more money, to have scale, you have to move your equilibrium.

Example... You may build a new CI/CD system that takes an application from monthly releases to 15min. It is hailed as a victory for how quickly issues can be resolved in production. However, team’s scrum process may dictate that sprints can’t change after they are set every 2 week. This leads to bugs sit in queue for 2 weeks before picked up anyway. Team may decide it is not valuable to release all the time since the testers are over worked with hourly releases. Couple of mishaps have led to some bad performance reviews. Slowly, things move back to monthly releases. Pipelines degrade because speed is no longer a priority. PR sizes go back up since no one’s trying to push atomic changes to production.

The “way of work” has a direction, even if no ones designed it to have one. The way people work is what yields the system we are trying to replace. So we have to pair the system change with a people direction change as well. These changes have to compliment each other so we get the most out these changes.

Continuing our CI/CD example... Team may move to a Kanban model (or swim lanes for issues). Testers have to be integrated to the process in a different way. A new support process with daily triaging and SLAs will push the team towards monitoring quality. Reporting on revenue from customer value delivered may motivate the team.

On the thinking front, individuals can end up in 2 places.

  • People who have seen high collaboration at smaller scale would long for glory days of the past and continually fight for it to return. They’d want to work with a trusted few and smash out features like they used to — “who cares about design systems and business domains?!”.
  • Others will create hard boundaries in their minds and never go past to make outcomes happen. A lot of “that’s not my job” proclamations and meetings about “ownership”.

Neither of these help to achieve scale and get shit done. Most leaders lean on continuing to maintain hard boundaries and tinkering with process. These tend to have low yield.

Changing mindsets and how people think is the ultimate challenge for an organisation. Everyone has to be given a path to mentally transition from where they are to where they need to be.

…I am a frontend developer who had full autonomy to prototype and release a new UI patterns to production. Now that we are larger, customers need to have a consistent set of patterns to work with. This will help them navigate the product better. It is still important to innovate so I should discuss the new pattern with a designer to understand wider concerns. I should pitch my prototype as an opportunity to gather data on customer behavior. It will help us decide if we should deploy this pattern across the product to have wider impact than my single concern…

Elevating people who reflect the mindset required to achieve scale can help. Allowing them to take up leadership positions and making decisions can guide the rest of the organisation to see new thinking in action. It shift the organisational equilibrium quickly.


There is a lot more to changing processes and mindsets at a company. I’ve spent the last 5 years pushing for a new identity of “Maker” within Expedia to aid its transition. I hope to be writing about it more in the future.

For now, I hope these thoughts will help you scale your company better.

Why Facebook is having a tough time regulating content?

It is a diversity problem.

Facebook sees its users as a singular global community, much like how we are all citizens of planet Earth. Facebook regulates by having a common set of rules it has decided as the community standard. This standard evolves and changes all the time as it is challenged with new and interesting scenarios.

Good background listen: RadioLab — Post No Evil Redux

As communities scale up to 1000s, 10000s, millions and billions, these standards start to break down.

Each of us hold a very different opinion of our world due our diverse backgrounds. Usually, we find ways to form groups and micro-communities to be with their like-minded counterparts. People in these communities start to congregate and solidify ideas around some key principles that guide their path in the world. Micro-communities strengthen the core beliefs of their members. While each individual may have slightly differing viewpoints, it is often overridden by their appetite to be in a community. Humans are, after all, communal creatures. This has allowed us to survive and dominate the planet for all this time.

For humans, the differences of their ideology is just as important. Their backgrounds and histories fuel them to appreciate and maintain the differences. These attributes help us grow and progress as people. This diversity of thought makes us creative and innovative. Therefore, it becomes important for us to support the idea of multiple micro-communities with diverse viewpoints.

What this really means is that there is no one standard we can apply to a billion people. If you look around, these diverse sets of standards are everywhere in our physical world. Whether it is countries states and districts or competing supermarket chains, people follow ideologies and split themselves up to identifiable groups. It helps them have a sense of belonging, self-worth and feel safe.

So, Facebook should stop maintaining their big list of opaque community standards. There is just no one way to define what is an acceptable level of nudity in the platform (among many other debates…).

They should move towards a model like Reddit’s where there is only a base set of company standards everyone adheres. These standards are just minimal expectations. Each of the micro-community (subreddit) moderators have the opportunity to set their own rules that build upon the base ones. This model appreciates the diversity in our community.

The problem no one has definitively solved is the one of allowing these diverse ideas to mix. How do we meaningfully facilitate the crossover of these ideas? Learning from each other is very much part of us growing as a community. For a platform like Facebook, it is also their business model. There is huge monetary value and opportunity in being able to inject new ideas into existing groups of people.

This is where simplistic metrics like “user engagement” starts to work against big platforms. A peaceful community is at medium engagement at best. Everyone is talking about new ideas and learning from one another. With higher levels of engagement, we might be looking at conflict points. Algorithms have to take more care; they are the spreaders (and catalysts) of ideas in these modern day social platforms after all. They have to work against their own appetite to engage users. Or perhaps, work as a set of algorithms that compete for balance of some sort.

If we inspect how moderation happens in the physical world, you can think of legal and justice systems as micro-communities too. Some individuals and groups respond to the calling of maintaining peace and safety. Platforms like Facebook shouldn’t be creating “a global court system”. It feels like a silly idea stemming from the belief that a community has a global standard. Instead, they should encourage and facilitate the creation of entities that uphold peace and safety. Their base standards should only allow to restrict poor business practices and guard against more universally accepted destructive human behaviour. They need to elevate groups that hold communities together and hold them accountable to the standards they set. Means for content moderation should be built on the back of these key community interactions.

We have to stop thinking of ourselves as one big idealistic western-valued society. We are not. This is working against our progress as a society. We are a diverse group, learning to exist together in a common place. Facebook should embrace the diverse nature of humanity.

A litmus test for strategy

Recently, I was questioning why I felt uneasy about some strategy talks I’ve been having with my peers. While something felt off, I was unable to articulate the why. Things didn’t come together till my friend, Scott Horn, threw in this great heuristic. It is a wonderful litmus test if you are thinking strategically about your approach.

If the opposite of your strategy doesn’t exist, it is not strategy at all.

Imagine we made a Music app with the highlight feature being “Playlists”. In order to compete with many dozens of music apps out there, You start looking around. We have…

  • Pandora making intelligent playlists out of music attributes
  • Google making playlists out of gathered data
  • Spotify allowing customers to share playlists with each other

Perhaps, our playlist solution needs to be “curated by experts”?

If our competitors are already doing this well, then it wouldn't be a great approach. It would not grant us any competitive advantage.

If a strategy is what all competitors are already executing on, then it wouldn't mean much. It would be “business as usual”. It wouldn't help the product grow as much.


Update: Having done more reading, this is possibly where these words of wisdom originated from: https://www.bridgespan.org/insights/library/strategy-development/roger-martins-unconventional-wisdom#.VRW6sZOsUYc

Wonderful read with far better examples!