Scrollable Grid with Just-in-Time Data Loading – Part 5: Hooking Up the Database

Our GraphQL endpoint currently generates faked-out employee data. Once we update our GraphQL resolver to query the Employee table in our database, we will have a truly full-stack implementation of just-in-time data loading (finally!). Wondering how we got here? The first four posts in this series describe how to: Fetch data in batches with react-window’s […]

Scrollable Grid with Just-in-Time Data Loading – Part 4: Fetching Data with Apollo Client and GraphQL

Today I’ll explain how to use Apollo Client to fetch data in batches from a GraphQL endpoint and hook that data up to Infinite Loader. By the end of this post, you’ll have an (almost!) full-stack, just-in-time loading list. How did we get here? In my last few posts, I’ve explained how to: Fetch data […]

Scrollable Grid with Just-in-Time Data Loading – Part 2: Storing and Restoring Scroll Position with React Window

On my current project, we’re using just-in-time loading on a grid that might render up to twenty thousand rows. Each of these rows represents a product and is clickable. On row click, the user is redirected to another page (a product detail page). A user might want to check out these product details and then […]

Asking for Things in SQL: Postgres Conditional Expressions and Window Functions

Recently, I worked on a project with a lot of complex data relationships. To abstract away some of this complexity, my team defined database views that summarized the information that matters to us. When building up those views in PostgreSQL, I found a couple of patterns particularly useful. I used conditional expressions (CASE and COALESCE) […]

Single Sign-On/Sign-Out With SAML 2.0

SAML 2.0 is an authentication protocol, an agreed-upon way to transfer authentication information between parties. It was approved as an OASIS standard in 2005, and there are SAML Protocol Documents with details about the protocol. The protocol is complex (the core document alone is 86 pages) and has a wide range of capabilities. In this post, I’ll scratch […]