ng

Searching for a mechanism: a history of cell bioenergetics / John N. Prebble

Hayden Library - QH510.P74 2019




ng

Bringing biology to life: an introduction to the philosophy of biology / Mahesh Ananth

Hayden Library - QH331.A49 2018




ng

Theoretical physics for biological systems / Paola Lecca, Researcher, Department of Mathematics, University of Trento, Italy, Angela Re, Postdoctoral Fellow, Center for Sustainable Future Technologies CSFT@Polito, Istituto Italiano di Tecnologia, Italy

Hayden Library - QH505.L397 2019




ng

The Prunus Mume Genome / edited by Zhihong Gao

Online Resource




ng

Aldehyde Dehydrogenases: From Alcohol Metabolism to Human Health and Precision Medicine / Jun Ren, Yingmei Zhang, Junbo Ge, editors

Online Resource




ng

Early Life Origins of Ageing and Longevity / Alexander Vaiserman, editor

Online Resource




ng

Exploring sources of variability related to the clinical translation of regenerative engineering products: proceedings of a workshop / Meredith Hackmann, Theresa Wizemann, and Sarah H. Beachy, rapporteurs ; Forum on Regenerative Medicine, Board on Health

Online Resource




ng

Developing norms for the provision of biological laboratories in low-resource contexts: proceedings of a workshop / Frances E. Sharples and Micah D. Lowenthal, rapporteurs ; Policy and Global Affairs, Board on Life Sciences, Division on Earth and Life Stu

Online Resource




ng

Horizontal gene transfer: breaking borders between living kingdoms / Tomás G. Villa, Miguel Viñas, editors

Online Resource




ng

Human flourishing in an age of gene editing / edited by Erik Parens, Josephine Johnston

Online Resource




ng

Biological clocks, rhythms, and oscillations: the theory of biological timekeeping / Daniel B. Forger

Hayden Library - QH527.F66 2017




ng

SIRT6 activities in DNA damage repair and premature aging: functions of SIRT6 / Shrestha Ghosh

Online Resource




ng

Optogenetics: from neuronal function to mapping and disease biology / edited by Krishnarao Appasani ; foreword by Georg Nagel

Hayden Library - QH642.O68 2017




ng

Biomarkers of human aging Alexey Moskalev, editor

Online Resource




ng

Extended heredity: a new understanding of inheritance and evolution / Russell Bonduriansky and Troy Day

Hayden Library - QH431.B6324 2018




ng

Biomedical odysseys: fetal cell experiments from cyberspace to China / Priscilla Song

Hayden Library - QH588.S83 S665 2017




ng

Genomic medicine in emerging economies: genomics for every nation / edited by Catalina Lopez-Correa, George P. Patrinos

Hayden Library - QH447.G4666 2018




ng

The dynamics of biological systems Arianna Bianchi, Thomas Hillen, Mark A. Lewis, Yingfei Yi, editors

Online Resource




ng

Trends in biomathematics: mathematical modeling for health, harvesting, and population dynamics: selected works presented at the BIOMAT Consortium Lectures, Morocco 2018 / Rubem P. Mondaini, editor

Online Resource




ng

Biometric recognition: 14th Chinese Conference, CCBR 2019, Zhuzhou, China, October 12-13, 2019, Proceedings / Zhenan Sun, Ran He, Jianjiang Feng, Shiguang Shan, Zhenhua Guo (eds.)

Online Resource




ng

Genomics, proteomics, and metabolomics: stem cells monitoring in regenerative medicine / Babak Arjmand, editor

Online Resource




ng

Springer handbook of microscopy / Peter W. Hawkes, John C.H. Spence (eds.)

Online Resource




ng

Autophagy: biology and diseases: basic science / Zheng-Hong Qin, editor

Online Resource




ng

Label-free monitoring of cells in vitro Joachim Wegener, editor ; with contributions by F. Alexander Jr. [and 22 others]

Online Resource




ng

Modeling survival data using frailty models / David D. Hanagal

Online Resource




ng

Experimenting at the boundaries of life: organic vitality in Germany around 1800 / Joan Steigerwald

Hayden Library - QH305.2.G3 S74 2019




ng

System Modeling in Cellular Biology: From Concepts to Nuts and Bolts.

Online Resource




ng

Cellular and animal models in human genomics research / edited by Katherina Walz, Juan I. Young

Online Resource




ng

Sounding Bodies Sounding Worlds: an Exploration of Embodiments in Sound / Mickey Vallee

Online Resource




ng

Everything flows: towards a processual philosophy of biology / edited by Daniel J. Nicholson and John Dupré

Dewey Library - QH331.E85 2018




ng

Gaia, psyche and deep ecology: navigating climate change in the anthropocene / Andrew Fellows

Dewey Library - QH331.F35 2019




ng

Mechanics of biological systems: introduction to mechanobiology and experimental techniques / Seungman Park and Yun Chen

Online Resource




ng

The structure of moral revolutions: studies of changes in the morality of abortion, death, and the bioethics revolution / Robert Baker

Dewey Library - QH332.B25 2019




ng

Whales of the Southern Ocean: Biology, Whaling and Perspectives of Population Recovery, / Yuri Makhalev

Online Resource




ng

Characterization of biological membranes: structure and dynamics / Edited by Mu-Ping Nieh, Frederick A. Heberle, John Katsaras

Hayden Library - QH601.C43 2019




ng

The demon in the machine: how hidden webs of information are solving the mystery of life / Paul Davies

Dewey Library - QH501.D38 2019




ng

Interfacing bioelectronics and biomedical sensing Hung Cao, Todd Coleman, Tzung K. Hsiai, Ali Khademhosseini, editors

Online Resource




ng

Recoding Life: Information and the Biopolitical.

Online Resource




ng

The future of low dose radiation research in the United States: proceedings of a symposium / Ourania Kosti, rapporteur ; Nuclear and Radiation Studies Board, Division on Earth and Life Studies, the National Academies of Sciences, Engineering, Medicine

Online Resource




ng

Altered inheritance: CRISPR and the ethics of human genome editing / Franc̦oise Baylis

Dewey Library - QH438.7.B38 2019




ng

Genetics and genomics in nursing and health care / Theresa A. Beery, M. Linda Workman, Julia A. Eggert

Hayden Library - QH447.B44 2018




ng

Advanced computing in electron microscopy Earl J. Kirkland

Online Resource




ng

Stem cells: from myth to reality and evolving / Khawaja Husnain Haider (ed.)

Dewey Library - QH588.S83 S7456 2019




ng

Troublesome science: the misuse of genetics and genomics in understanding race / Rob DeSalle and Ian Tattersall

Hayden Library - QH455.D47 2018




ng

What Can Bike Sharing Apps Teach Us About Mobile On-boarding Design?

Given the proliferation of bike/scooter sharing services these days, I thought it would be interesting to compare the mobile app on-boarding experiences of the ones I could access. To do so, I went through the new customer flow for six of these services.

While the mobile on-boarding I experienced across these services looked really similar, the end result differed dramatically -from me abandoning the process to walking away a delighted customer. Understanding how product design impacted these outcomes is critical for anyone trying to grow a new mobile business.

Applying Design Patterns

My first encounter with bike sharing, appropriately, was in Amsterdam. I was outside the city center for a meeting and encountered a rack of Hello-Bikes. So why not bike back to my hotel in town? Here’s what happened when I tried.

Hello-Bike’s mobile on-boarding consists of several common patterns: a splash screen, a sign-up form, terms and conditions, and a tutorial. Though widely used, starting the design process off with these types of patterns often results in a flow that seems right in mock-ups or wireframes but fails to solve actual customer needs.

The designer thinks: “I know what an on-boarding flow is. It’s a splash screen, a sign-up screen and a tutorial people can swipe through.” The resulting customer experience in filling in form fields, scrolling through 17 screens of terms & conditions (yes, you are required to scroll through all of them), granting location permissions (because “background location-tracking is required”), and skipping through 6 tutorial screens featuring critical knowledge like “Welcome to Hello-Bike.”

After maneuvering through all this, I found out there were no docking stations in central Amsterdam because of government regulation. So I actually couldn’t use the Hello-Bike service to ride to my hotel. Starting the design process from the perspective of the customer would likely have revealed the importance of communicating these kinds of constraints up front. Starting by selecting design patterns would not.

Lessons Learned:
  • Set expectations appropriately, so potential customers don’t end a lengthy sign-up process in disappointment or frustration.
  • While convenient, design patterns are no substitute for understanding and designing with your customers & their goals top of mind.

Having Desktop Bias

While modern mobile devices have been around for over ten years, desktop devices have had at least 3x more time to influence and bias our approach to software design. That’s why it’s not surprising to see desktop design concepts permeate mobile apps. In the case of Jump’s mobile on-boarding, they are all over the place.

Following the obligatory splash screen, Jump animates through a series of safety tips calling out the unique features of electric bikes. Unfortunately, so many steps follow these tips that I can’t imagine anyone remembering them when they are finally allowed to ride one of Jump’s electric bikes.

Next up are a series of permission dialogs for access to Motion & Fitness and Location data. Both requests are accompanied by explanatory text that suggests Jump needs access to this information in order to “gather data about how electric bikes affect travel patterns.” Sounds like a good thing for Jump, but it’s not clear why customers should participate or even care.

This mindset permeates the rest of Jump’s on-boarding as well: choose one of our bike “networks”, select one of our plans, verify your phone number, pick a 7 character password with numbers and uppercase letters, agree to our terms and conditions, put money into one of our accounts, etc. After ten steps of doing things for Jump and seeing no progress toward actually riding a bike, I abandoned at the “Enter Credit Card” step.

Perhaps someone at Jump heard completion rates for forms go up when you place each question on a separate screen (I’ve seen no evidence of this), but the cumulative effect of going through a desktop-design influenced e-commerce checkout flow one step at a time on my phone was quite painful.

Lessons Learned:
  • Make sure your customers always feel like they are making progress toward their goals, not yours.
  • Desktop paradigms often aren’t a great fit for mobile. For instance, do you really need a checkout form? As we’ll see later, no.

Right Time, Right Place

After abandoning the bike-sharing process with both Hello-Bike and Jump, I had my first successful on-boarding with Spin. That’s not to say there wasn’t a lot of room for improvement. With mobile on-boarding it’s not just what we ask people to do it’s also when we ask them to do it. Spin starts off with a tutorial, which explains they are smart, I can park anywhere, and scanning a bike’s QR code will let me ride it.

Turns out that’s not entirely true as I needed to give them my email address, create a password, provide location permissions, and agree to three separate terms of service. It’s only after this gauntlet, that I’m actually able to scan the QR code on the bike in front of me. Why couldn’t we just have started the process there?

It is worth noting, however, that Spin provides much better explanations for its permission requests. When requesting location permissions, Hello-Bike told me: “background-location tracking is required” and Jump explained I could help them “gather data about how electric bikes affect travel patterns.” Spin, on the other hand, explained they use location to help me find pick-up and drop off points. They also explained they needed camera permissions so I can scan the QR code on a bike to unlock it.

After I did, my next step was to reload my Spin account, with the only reloading option being $5. This immediately felt odd as the bike ride itself was advertised as $1. So if I never rode another Spin bike again, they had 4 more dollars from me... hmmmm. On a positive note, Spin integrated with Apple Pay which meant I simply had to tap a button on the side of my phone to approve payment. No checkout forms, shopping carts, or credit card entry forms required. See? We can do things in a mobile-native vs. desktop way.

Following the payment process, I was greeted with a another tutorial (these things sure are popular huh? too bad most people skip through them). This time 4 screens told me about parking requirements. But wait… didn’t the first tutorial tell me I could park anywhere? Next Spin asked to send me notifications with no explanation as to why I should agree. So I didn’t.

Once I rode the bike and got to my destination, I received a ride summary that told me my ride was free. That’s much appreciated but it left me asking again… couldn’t we have started there?

Lessons Learned:
  • When you surface information to customers is critical. Spin could have told me my ride was free well before asking me to fill my account with a minimum of $5. And their Parking tutorial was probably more appropriate after my ride when parking my bike, not before it.
  • Get people to your core value as soon as possible, but not sooner. It took 7 steps before I was able to scan the bike in front of me and 9 more steps before I could actually ride it. Every step that keeps customers from experiencing what makes you great, leaves them wondering why you’re not.

Tricky, Tricky

By now, Ofo’s mobile on-boarding process will seem familiar: location and notification permission asks without any useful explanations, an up-front tutorial, a phone number verification flow, a camera permission ask, and more.

For many mobile apps, phone number verification can replace the need for more traditional desktop computer influenced sign-up process that require people to enter their first and last names, email addresses, passwords, and more into a series of form fields. When you’re on a phone, all you need to verify it’s you is your phone number.

With this simplified account creation process, Ofo could have had me on my way with a quick QR code scan. But instead I got a subscription service promotion that suggested I could try the service for free. After tapping the “Try it Free” button, however, I ended up on a Choose your Plan page. It was only when I used the small back arrows (tricky, tricky) that I made it back to the QR code unlock process which let me ride the Ofo bike in front of me with no charge.

Lessons Learned:
  • Mobile device capabilities allow us to rethink how people can accomplish tasks. For instance, instead of multiple step sign-up forms, a two step phone verification process can establish someone’s account much quicker by using what mobile devices do well.
  • While companies have revenue and growth needs, unclear flows and UI entrapments are not the way to build long-term customer loyalty and growth. You may trick some people into subscribing to your service but they won’t like you for it.

But Why?

Starting Bird’s mobile on-boarding gave me high hopes that I had finally found a streamlined customer-centric process that delivered on the promise of fast & easy last-mile transportation (or micro-mobility, if you must).

Things started out typically, a splash screen, an email form field, a location permission ask, but then moved right to scanning the QR code of the scooter in front of me and asking me to pay the $1 required to get started. Great, I thought… I’ll be riding in no time as I instantly made it through Apple Pay’s confirmation screen.

As a quick aside, integrating native payment platforms can really accelerate the payment process and increase conversion. Hotel Tonight saw a 26% increase in conversion with Apple Pay and Wish used A/B testing to uncover a 2X conversion increase when they added Apple Pay support. Turns out people do prefer to just look (Face ID) or tap (Touch ID) to pay for things on their phones instead of entering credit card or banking account details into mobile keyboards.

But back to Bird... I scanned the QR code and authorized Apple Pay. Time to ride right? Not quite. Next I was asked to scan the front of my drivers’ license with no explanation of why. Odd, but I assumed it was a legal/safety thing and despite having a lot of privacy reservations got through it. Or so I thought because after this I had to scan the back of my drivers’ license, scroll through all 15 screens of a rental agreement, and tick off 6 checkboxes saying I agreed to wear a helmet, not ride downhill, and was over 18 (can’t they get that from my driver’s license?).

Then it was back to scanning the QR code again, turning down notification permissions, and slogging through a 4 screen tutorial which ended with even more rules. The whole process left me feeling the legal department had taken over control of Bird’s first time customer experience: rental contracts, local rules, driver’s license verifications, etc. -really not in line with the company’s brand message of “enjoy the ride”. I left being intimated by it.

Lessons Learned:
  • Rules and regulations do exist but mobile on-boarding flows shouldn’t be driven by them. There’s effective ways to balance legal requirements and customer experience. Push hard to find them.
  • When asking for personal (especially highly personal) information, explain why. Even just a sentence about why I had to scan my driver’s license would have helped me immensely with Bird’s process.

Core Value, ASAP

By now, we’ve seen how very similar companies can end up with very different mobile on-boarding designs and results. So how can companies balance all the requirements and steps involved in bike-sharing and still deliver a great first-time experience? By always looking at things from the perspective of your customer. Which Lime, while not perfect, does.

Lime doesn’t bother with a splash screen showing you their logo as a first step. Instead they tell you upfront that they know why you’re here with a large headline stating: “Start Riding Now”. Awesome. That’s what I’ve been trying to do this whole time. On this same screen are two streamlined sign-up options: phone number verification (which makes use of native device capabilities) and Facebook -both aimed at getting you started right away.

Next, Lime takes the time to explain why they are asking for location permissions with the clearest copy we’ve seen in all these examples: “to find nearby bikes and scooters”. Sadly, they don’t apply this same level of clarification to the next permission ask for Notifications. But smartly, they use a double dialog solution and if you say no (which I did), they try again with more clarity.

It’s become almost standard practice to just ask for notification permissions up front in mobile apps because up to 40% of people will just give them to you. So many apps figure, why not ask? Lots of people will say no but we’ll get some people saying yes. Personally, I feel this is an opportunity to improve for Lime.

Ignoring the notifications prompt, the rest of Lime’s on-boarding process is fast and efficient: scan the QR code (once again with a clear explanation of why camera permissions are needed), authorize Apple Pay to pay for your ride. Lime doesn’t either bother to provide other payment options. They know the user experience and conversion benefits of Apple Pay and rely on it exclusively.

And… that’s it. I’m riding. No tutorial! Shocking I know, but they do offer one on the map screen if you’d like to learn more before riding. User choice, not company requirement.

In their mobile on-boarding, Lime deftly navigated a number of significant hurdles: account set-up/verification, location & camera permissions and payment -the minimum amount necessary to ride and nothing more. They did so by explaining how each of these steps got me closer to my goal of riding and worked hard to minimize their requirements, often relying on native mobile functionality to make things as fast and easy as possible.

Lessons Learned:
  • It’s not about you, it’s about your customer. Put your customer’s goals front and center in your mobile on-boarding process. It starts from the first screen (i.e. “Start Riding Now”)
  • Lean into mobile-native solutions: phone verification, integrated payments, and more.

More On On-boarding

For a deeper look into mobile on-boarding design, check out this 20 minute segment of my Mobile design and data presentation at Google Conversions this year:

You can also read Casey Winter’s article about on-boarding, which does a great job outlining the concept of getting people to your company’s core value as fast as possible, but not faster.




ng

An Event Apart: Designing Progressive Web Apps

In his The Case for Progressive Web Apps presentation at An Event Apart in Chicago, Jason Grigsby walked through the process of building Progressive Web Apps for your Web experiences and how to go about it. Here's my notes from his talk:

  • Progressive Web Apps (PWAs) are getting a lot of attention and positive stories about their impact are coming out. PWA Stats tracks many of these case studies. These sorts of examples are getting noticed by CEOs who demand teams build PWAs today.
  • A PWA is a set of technologies designed to make faster, more capable Web sites. They load fast, are available online, are secure, can be accessed from your home screen, have push notifications, and more.
  • But how can we define Progressive Web Apps? PWAs are Web sites enhanced by three things: https, service worker, and a manifest file.
  • HTTPS is increasingly required for browsers and APIs. Eventually Chrome will highlight sites that are not on https as "insecure".
  • Service Workers allow Web sites to declare how network requests and the cache are handled. This ability to cache things allows us to build sites that are much faster. With service workers we can deliver near instant and offline experiences.
  • A Web manifest is a JSON file that delivers some attributes about a Web site. Browsers use these files to make decisions on what to do with your site (like add to home page).
  • Are PWAs any different than well-built Web sites? Not really, but the term helps get people excited and build toward best practices on the Web.
  • PWAs are often trojan horses for performance. They help enforce fast experiences.

Feels Like a Native App

  • Does your organization have a Web site? Do you make money off your Web site? If so, you probably need a Progressive Web Site.
  • Not every customer will have your native app installed. A better Web experience will help you reach people who don't. For many people this will be their first experience with your company, so you should make it as good as possible.
  • Getting people to install and keep using native apps is difficult. App stores can also change their policies and interfaces which could negatively impact your native app.
  • The Web can do much more than we think, the Web has APIs to access location, do fast payments using fingerprint identification, push notifications, and more.
  • What should we use to design PWAs? Native app styles or Web styles? How much does your design match the platform? You can set up PWAs to use different system fonts for iOS and Android, should you? For now, we should define our own design and be consistent across different OSs.
  • What impact does going "chrome-less" have on our PWAs? You loose back buttons, menu controls, system controls. Browsers provide us with a lot of useful features and adding them back is difficult. Especially navigation via the back button is complex. So in most cases, you should avoid going full screen.
  • While not every person will add your PWA to their home screen, every person will "install" your PWA via the service worker.
  • An app shell model allows you put your common UI (header, footer, nav, etc.) into the app cache. This makes the first loading experience feel a lot faster. Should you app shell or not? If you have architected as a single page app, this is possible but otherwise might not be worth the effort.
  • Animating transitions can help with way-finding and polish on the Web. This gives Web sites even more personality.

Installation and Discovery

  • Using a Web manifest file, allows you specify a number of declarations for your app. In addition to name, icon, and even theme colors.
  • Once you have a PWA built and a manifest file, browsers will being prompting people to install your Web site. Some Browsers have subtle "add" actions. Other use more explicit banner prompts. "Add to home screen" banners are only displayed when they make sense (certain level of use).
  • Developers can request these banners to come up when appropriate. You'll want to trigger these where people are mostly likely to install. (like checkout)
  • Microsoft is putting (explicitly and implicitly) PWAs within their app store. Search results may also start highlighting PWAs.
  • You can use Trusted Web Activity or PhoneGap to wrap native shells around your PWA to put them into Android and iOS app stores.

Offline Mode

  • Your Web site would benefit from offline support. Service Workers enable you to cache assets on your device to load PWAs quickly and to decide what should be available offline.
  • You can develop offline pages and/or cache pages people viewed before.
  • If you do cache pages, make it clear what data hasn't been updated because it is not available offline.
  • You can give people control over what gets cached and what doesn't. So they can decide what they want available for offline viewing.
  • If you enable offline interactions, be explicit what interactivity is available and what isn't.

Push Notifications

  • Push notifications can help you increase engagement. You can send notifications via a Web browser using PWAs.
  • Personal push notifications work best but are difficult to do right. Generic notifications won't be as effective.
  • Don't immediately ask people for push notification permissions. Find the right time and place to ask people to turn them on. Make sure you give people control, if you'd don't they can kill them using browser controls.
  • In the next version of Chrome, Google will make push notification dialogs blocking (can't be dismissed) so people have to decide if they want notifications on or off. This also requires you to ask for permissions at the right time.

Beyond Progressive Web Apps

  • Auto-login with credential management APIs allows you to sign into a site using stored credentials. This streamlines the login process.
  • Apple Pay on the Web converged with the Web Payment API so there's one way to use stored payment info on the Web.
  • These next gen capabilities are not part of PWAs but make sense within PWAs.

How to Implement PWAs

  • Building PWAs is a progressive process, it can be a series of incremental updates that all make sense on their own. As a result, you can have an iterative roadmap.
  • Benchmark and measure your improvements so you can use that data to get buy-in for further projects.
  • Assess your current Web site's technology. If things aren't reasonably fast to begin with, you need to address that first. If your site is not usable on mobile, start there first.
  • Begin by building a baseline PWA (manifest, https, etc.) and then add front-end additions and larger initiatives like payment request and credential api later.
  • Every step on the path toward a PWAS make sense on their own. You should encrypt your Web sites. You should make your Web site fast. These are all just steps along the way.




ng

An Event Apart: Putting Design in Design Systems

In his Putting the 'Design' in Design Systems presentation at An Event Apart in Seattle, Dan Mall talked about the benefits of design systems for designers and how ensure they can be realized. Here's my notes from his talk:

  • Most content in design systems are not for designers but for developers. This helps to scale design efforts when there's a lot more developers than designers (typical in many companies).
  • But where does design and designers fit within a design system? Are they no longer required?
  • Design can be part of strategy and big picture thinking but most designers are good at making designs and iterating them, not working across the company on "big D" design.
  • When it comes time to make a design system, most people start with "let's make some components!". This is problematic because its missing "for ____". What's the purpose of our design system? Who is it for?
  • Design systems need a focus. One company's design system should not work for another company. A good "onlyness" statement can only apply to one company, it would not work for other companies.
  • Design system principles can guide your work. Some are universal like: accessible, simple. Others should be very specific so you can focus on what matters for you.
  • An audit of common components in design systems shows the coverage varies between companies; the components can focus on their core value.
  • Instead of starting with making design components, think about what components you actually need. Then make some pilot screens as proofs of concept for a design system. Will you be able to make the right kinds of things?
  • Don't start at the abstract level, start at the extract level. Take elements from within pilot designs and look for common components to pull out for reuse. Don't try to make it cover all use cases yet. As you work through a few pilots, expand components to cover additional use cases you uncover.
  • The most exciting design systems are boring. About 80% of the components you're making can be covered by your design system. They allow you to remake product experiences quickly. The remaining 20% is what designers still need to do: custom design work.
  • A good design system takes care of the stuff you shouldn't reinvent and allows you to spend time on where it matters.
  • Creative people are driven by autonomy, mastery, and purpose. A good design system will enable all of these.
  • The most common benefits of design systems are greater efficiency and consistency. But another important one is relief from having to do mundane design work. (editor's note: like maintaining & updating a design system!)
  • The real value of a design system is to help us get back to our real work.




ng

An Event Apart: Move Fast and Don’t Break Things

In his Move Fast and Don’t Break Things presentation at An Event Apart in Seattle, Scott Jehl shared a number of resilient patterns and tools to help us establish and maintain performant access to our Web sites. Here's my notes from his talk:

  • For successful Web design, people used to suggest we move fast and break things. Today we've become more responsible but things can still break for our users if we're not mindful.
  • So many factors that can compromise the delivery of our Web sites are out of our control. We need to be aware of these in order to build resilience into our designs.
  • We used to use browser detection and feature detection to ensure our sites were supported across Web browsers. Progressive enhancement's importance ballooned as a wide range of new devices for accessing the Web, touch interactions, and more browsers became popular.
  • Trying to make a Web site look and work the same across devices was broken, we realized this was the wrong goal and we need to adapt to varying screens, networks, input types, and more.
  • Some practices stay good. Progressive enhancement and accessibility prepared us for many of these changes but it is also a performance enhancement on its own.
  • Figuring out how to make Web sites faster used to be hard but the tools we have for measuring performance have been improving (like PageSpeedTest and WebPageTest).

Making Web Sites Fast

  • First meaningful content: how soon does a page appear to be useful to a user. Progressive enhancement is about starting with meaningful HTML and then layering additional enhancements on top of it. When browsers render HTML, they look for dependencies in the file (CSS and Javascript) before displaying anything.
  • CSS and Javascript are most often the render-blockers on sites, not images & videos. Decide if they need to load at high priority and if not, load async or defer. If you need them to run right away, consider server push (HTTP2) to send files that you know the browser needs making them ready to render right away.
  • If your server does not support push, you can inline your critical CSS and/or Javascript. Inlining however is bad for caching as it does not get reused by other pages. To get around this you can use the Cache API to inline content and cache it as a file for reuse.
  • Critical CSS tools can look over a series of files and identify the common CSS you need across a number of different pages for initial rendering. If you inline your critical CSS, you can preload the rest of your CSS (not great browser support today).
  • Inlining and push are best for first time visits, for return visits they can be wasteful. We can use cookies for checking for return visits or make use of Service Worker.
  • Time to interactive: time it takes a site to become interactive for the user. We should be aiming for interactivity in under 5seconds on a median mobile phone on 3G. Lower end phones can take a long time to process Javascript after it downloads.
  • More weight does not mean more wait. You can prioritize when things load to make pages render much faster.

Keeping Web Sites Fast

  • Making a web site fast is easier than keeping it fast. Over time, Web sites will add a number of third party services with unknown performance consequences.
  • We can use a number of tools, like Lighthouse, to track performance unfriendly dependencies. Speed Curves will let you set performance budgets and see when things are over. This allows people to ask questions about the costs of what we're adding to sites.
  • Varying content and personalization can increase optimizations but they are costly from a performance perspective since they introduce a second meaningful content render. Moving these features to the server-side can help a lot.
  • Cloudflare has a solution that allows you to manipulate pages on their server before it comes down to browser. These server-side service workers allow you to adjust pages off the client and thereby avoid delays.
  • Homepages and landing pages are often filled with big images and videos. They're difficult to keep performant because the change all the time and are often managed outside of a central CMS.
  • For really image heavy pages, we can use srcset attributes to define multiple sizes of images. Writing this markup can be tricky if written by hand. Little helper apps can allow people to write good code.
  • Soon we'll have a native lazy load feature in browsers for images and iframes. Chrome has it in testing now and can send aspect ratios before actual images.




ng

Environmental groups are taking Norway to court over oil drilling in the Arctic

It’s against the Constitution, and means Norway will not respect the Paris Agreement, argues Tina Andersen Vågenes.




ng

Remembering Lord Joel Joffe

The world will miss the lawyer and philantrophist who defended Mandela and was chair of Oxfam, writes Mari Marcel Thekaekara.