RSSAmplifier

Blog

Web Browser Engineering

News, new chapters and blog posts

browser.engineeringRSS feed ↗24 posts

Latest posts

Reusing Previous Computations

Invalidation is a key technique all major browsers use to make for fast rendering and smooth interactions, but it’s also famously difficult. Chapter 16 explains how to make it work right.

Supporting Embedded Content

Images and iframes introduce performance and security concerns that impact browser architecture, but they also build on and extend existing concepts like event loops, rendering, and accessibility in an elegant way. Chapter 15 explains how.

Making Content Accessible

Accessibility is an important topic, and often not well understood. Chapter 14 of Web Browser Engineering explains how it works, and also how almost every web user benefits from it in one way or another.

Animating and Compositing

Animations make browsers more fun, but they also require solving a lot of really interesting algorithmic and design challenges to utilize GPU-accelerated compositing. Find out how in our new chapter, Animating and Compositing!

Scheduling Tasks and Threads

With a new year and then some more time to actually finish things, we present a new chapter on Scheduling Tasks and Threads. This chapter splits the browser into multiple threads, with threaded raster and scrolling, in only a couple thousand lines of code.

Adding Visual Effects

Today we’re releasing a chapter on Adding Visual Effects. This first chapter on Modern Browsers swaps in modern libraries and implements some recent web features like blending, stacking contexts, surfaces, and clipping.

Keeping Data Private

Today we’re releasing a chapter on Keeping Data Private. Cookies enable a whole economy of personalized web applications—but also raise issues of security and privacy. New, powerful browser-side tools can help.

Running Interactive Scripts

Today we’re releasing a chapter on Running Interactive Scripts. Binding a JavaScript engine to our browser—and building the system for passing data between JavaScript and browser code—makes possible a whole new world of interactive web applications.

Sending Information to Servers

Today we’re releasing a chapter on Sending Information to Servers. In it, our browser becomes an application platform, starting with a 90s-style guest book. The next few chapters will explore that theme, building more and more capable web applications as we go.

Handling Buttons and Links

Today we’re releasing a chapter on Handling Buttons and Links. This is the chapter when the browser really starts surfing the web. It also becomes a pretty good way to read this book!

Applying User Styles

Today we’re releasing a chapter on Applying User Styles. I hope you’ll find that building a simple CSS parser and implementing selector matching and inheritance is interesting, approachable and fun!

Why Widgets?

We’re working interactive widgets to Web Browser Engineering to better explain the concepts and to make room for discoveries. But it’s not easy!

History of the Web

Today we’re releasing a new chapter on the History of the Web. The rest of the book is about how web browsers work, but this chapter is about why. It’s about the goals and motivations for the web and for web browsers, which shape the way they work.

Laying Out Pages

We’re releasing Chapter 5. It introduces layout trees, the data structure at the center of layout. Building, laying out, and rendering layout trees is how every web page you view is rendered!

Browsers and the Web

The intro chapter is here! Now you get to find out why this book was worth writing, mostly in Chris’s words. Plus you’ll learn a few things about where the web came from and how the sausage is made.

Constructing the Document Tree

Chapter 4 is out! It’s decked out with HTML parsing and error handling, and starts building out the core data structures of the browser. Plus, it has tips for leveraging implicit tags to make your HTML cleaner and simpler!

Code Outlines

I’ve added a code outline tool to help you see the intermediate-level structure of a web browser. As Chris and I write more chapters, it’ll become more and more useful.

Formatting Text

Chapter 3 is ready. Read about typography, baselines, and tags! Our browser lines up text with style! My favorite aside is the Michigan Supreme Court case on font sizes.

Why Python?

Why is Web Browser Engineering in Python? In short, Python is popular, readable, and has access to standard system APIs.

Introducing Chris Harrelson

Have you noticed that the byline on https://browser.engineering has changed? Chris Harrelson will be joining Web Browser Engineering as a co-author. He’s already working to make WBE deeper and more realistic based on his experience on the Chrome team.

Drawing to the Screen

Chapter 2 is ready. Read about window handles, display lists, and events. Our browser creates a window, draws text to it, and tells a story about a monkey. (My favorite part is the aside on Chinese line layout.)

Typos and Comments

I’ve written some code to crowdsource typo corrections and comments from readers. Looking forward to seeing your feedback!

The Beginning

A quick backstory behind the book, and my plan for writing it.

Downloading Web Pages

Chapter 1 is about URLs, sockets, and HTTP requests. Read about how a browser creates a network connection, what the OS does to help, and how it requests specific web pages.