• 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

Archives for January 2017

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.

The bar has risen again in 2017

January 10, 2017 Leave a Comment

Remember these and all of the 500 errors?

Evolution never stops. On some days it can feel exhausting and on others it is exhilarating.

I was thinking about the bar for user experiences and how far we have come as an industry. Users expect fast, reliable experiences that are silky smooth. Long gone are the 500 “Error can’t connect to the database” of the slashdot era. But we still see a tale of two Web’s as we browse around from link to link and sometimes time travel through experiences.

On one Web we have slow experiences that are pinch and zoom with poor performing ads weighing everything down. We see the scroll handlers freeze the world as we try to interact with the site. This is the Web that we curse. The one where we reach for the special reader mode.

But then we get to the delightful Web. This one works seamlessly across mobile and desktop. It is fast and snappy, with no dinosaurs to be found. We see pleasant non-janky animations that feel right. Gone are the awful signup forms and instead the browser and auth providers take care of it for you, even through a nice payments experience. We find ourselves going back to this Web when we can, and dreaming of a world in which more of it was like this.

To be able to build something that belongs in the world of delight we need to see the pioneering work of 2016 become the default of 2017.

To reach the optimal performance and reliability we need:

  • code splitting, prefetch-ing and pipeline of data to be tuned (e.g. PRPL)
  • service workers at the helm
  • and we need all of the tooling giving you the honest truth on where the current experience stands and where to go next.

Fortunately, many of the frameworks are taking the work done on the leading edge and baking it into their CLIs and when I find myself on something slow, I often go over and tap on a fast bookmark.

Going beyond performance, there are new capabilities coming this year that will open up more “wow, I didn’t know the Web could do that” and I am excited to see what people come up with there.

Sailing on the Web

January 3, 2017 Leave a Comment


Is the opposite of user experience, developer experience? No, and this is why I enjoyed Malte’s post on how the AMP project thinks about both and the real (some being obvious) trade offs that are made. The vectors effect each other, and they are related, but they do not have a binary relationship to the other.

It got me thinking of the old parable of the sea

Let’s say that we want to get people from London to Boston, across the Atlantic ocean. We want to get them there as quickly as possible, but we also care about their comfort and amenities (pure performance vs. features). Certain amenities may require a material slowing down of the vessel, while others have no adverse effect on speed what so ever.

Some engineers are responsible for building the ship. They are making these trade offs for their passengers, and they are also using tools and components to pull this off. They could do everything from scratch, but that would take a lot of time, so it is expedient to get as much leverage as possible from the work of others.

The tool and component builders are selling to the boat engineers, so they have to make trade offs that they think will help them sell. Making better tools and more reusable components can have a massive effect on the speed to develop and quality of the ship!

When things are working well the role of the user, first party engineers, and third party engineering providers work together to create something that works well for everyone.

Some of the tension right now is that in the digital world the metrics aren’t always transparent. How fast is fast enough for someones particular journey? There are some rules of thumb “the customer won’t come back if it takes longer than X to get value Y” but it is hard to map a distance (value) to everything you are providing so context then gets mapped on top of things. There is the same nuance in the tools and the vessel. Which boat will win over passengers? Which tools will be the right choice? Or maybe you are the lucky one that first realizes that it is better to own a key part of the water and tax everyone going over it!! 🙂

The Web platform is one of the oceans, and we are debating if climate change has changed how choppy it is, which tools are required or need to be changed, and how we should compete with the trains and airplanes that are competing for the same passengers.

As always, if we all work together we can collectively help the passengers and our form of transportation.

Primary Sidebar

Twitter

My Tweets

Recent Posts

  • I have scissors all over my house
  • GenAI: Lessons working with LLMs
  • Generative AI: It’s Time to Get Into First Gear
  • Developer Docs + GenAI = ❤️
  • We keep confusing efficacy for effectiveness

Follow

  • LinkedIn
  • Medium
  • RSS
  • Twitter

Tags

3d Touch 2016 Active Recall Adaptive Design Agile 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 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 Family Fitness Founders Future GenAI Gender Equality Google Google Developer Google IO Habits Health HR Integrations JavaScript Jobs Jquery Kids Stories Kotlin Language Leadership Learning 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 Software Software Development Spaced Repetition Speaking Startup Steve Jobs 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

  • 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 © 2023 · Log in

 

Loading Comments...