Calculate Scroll Depth as a percentage of page height and send custom events to Plausible, the GDPR-compliant analytics platform. Vanilla JavaScript only.
By Christoph Schiessl on JavaScript
Use event handlers to detect exit intent so you can react to grab your website visitors' attention before leaving and perhaps convert them into repeat visitors.
By Christoph Schiessl on JavaScript
Cut the number of required PostgreSQL server round-trips by up to 50% using the AND CHAIN
parameter of the COMMIT
and ROLLBACK
statements.
By Christoph Schiessl on PostgreSQL
<link>
your Blog's Atom/RSS Feed from HTML Pages
Learn how to <link>
Atom and RSS feeds from your HTML documents to make them discoverable for clients and, by extension, for your readers.
By Christoph Schiessl
Returning multiple values from a function using tuples. Understand the syntax and how to write correct type annotations.
By Christoph Schiessl on Python
Creating directories in Python using the pathlib
module, including normal and recursive creation, handling existing directories, and file system permissions.
By Christoph Schiessl on Python
getattr()
, hasattr()
, setattr()
, and delattr()
Functions
Exploring working with instance variables and customizing attribute access in Python, including the use of getattr()
and magic methods.
By Christoph Schiessl on Python
uvicorn
Workers with the SIGHUP
Signal
Learn about process management in Python's uvicorn
web server and how to use signals to restart workers and to increment/decrement the number of workers.
By Christoph Schiessl on Python
If-Match
Header to Avoid Collisions
Prevent lost updates in HTTP APIs using ETag
and If-Match
headers to block conflicting updates and ensure data integrity.
By Christoph Schiessl on Python and FastAPI
ETag
Headers with FastAPI
Comparison of strong and weak ETag
headers in HTTP caching, with an example using FastAPI to demonstrate their behavior.
By Christoph Schiessl on Python and FastAPI
sorted()
Function
Python's sorted()
function makes sorting easy and performant, guaranteeing stability and allowing descending order and custom mapping.
By Christoph Schiessl on Python
uvicorn
in the Background
Learn how to start and stop uvicorn
in the background using a randomly selected free port number. Useful for running test suites that require live-webservers.
By Christoph Schiessl on Python
chr()
and ord()
Functions
Discover Python's built-in functions chr()
and ord()
for handling Unicode characters and converting between integers and characters.
By Christoph Schiessl on Python
304 Not Modified
in FastAPI's StaticFiles
Dealing with caching issues in FastAPI's StaticFiles
sub-application and a monkey patching workaround to disable caching.
By Christoph Schiessl on Python and FastAPI
bin()
, oct()
and hex()
Functions
Learn about the Python built-in functions bin()
, oct()
, and hex()
functions for converting integers to binary, octal, and hexadecimal representations.
By Christoph Schiessl on Python
@overload
Decorator
Python doesn't support true function overloading, but can fake it using the typing
module's @overload
decorator.
By Christoph Schiessl on Python
Learn how to validate the word count of your pages for SEO purposes. It uses JavaScript to parse your sitemap.xml
and count the words on all mentioned pages.
By Christoph Schiessl on JavaScript
min()
and max()
Functions
Python's min()
and max()
functions can take an iterable
or multiple positional parameters, and support a key parameter for custom comparisons.
By Christoph Schiessl on Python
Learn how to have your OS randomly select a port number for your web server to get around the issue of hard-coded ports during development.
By Christoph Schiessl on Python, FastAPI, and DevOps
sum()
Function
In this article, we explore Python's built-in sum()
function, its parameters, and some extreme use cases it wasn't even designed for.
By Christoph Schiessl on Python
Last-Modified
and If-Modified-Since
Headers
Learn about timestamp-based caching in HTTP using the Last-Modified
and If-Modified-Since
headers, with Python's FastAPI as an example.
By Christoph Schiessl on Python and FastAPI
Learn how to use JavaScript to programmatically check the meta information of all pages listed in your sitemap.xml
to potentially rank better on Google.
By Christoph Schiessl on JavaScript
sitemap.xml
with JavaScript
Learn JavaScript techniques needed to parse your sitemap.xml
in order to obtain a list of all pages making up your website.
By Christoph Schiessl on JavaScript
Learn about the custom date/time formatting rules defined in legacy standards like RFC 5322 and how to work with them using Python's datetime
module.
By Christoph Schiessl on Python
Do you struggle with inconsistent JSON formatting across your Git repository? Learn how to reformat everything using Python with this step-by-step guide.
By Christoph Schiessl on DevOps, Git, and Python
ETag
and If-None-Match
Headers
Learn how to use ETag
and If-None-Match
headers to limit your web application's resource consumption by preventing data retransfers.
By Christoph Schiessl on Python and FastAPI
This article explains how to use the Levenshtein algorithm to compare sentences by looking for word differences instead of character differences.
By Christoph Schiessl on Python
Learn about encapsulation in Python. This article explains public, protected, and private members and the conventions used to implement them.
By Christoph Schiessl on Python
Learn how to use catch-all parameters in Python functions with this guide. Capture excess positional and keyword arguments to make your functions more flexible.
By Christoph Schiessl on Python
undefined
Isn’t What You Think It Is
In this informative article, you learn that undefined
is not a keyword in JavaScript, and it's up to you to ensure it refers to the value its name suggests.
By Christoph Schiessl on JavaScript
REINDEX
ing
This article outlines how to rebuild indexes with REINDEX
. As an example, we will deliberately corrupt an index for a column that uses a custom ENUM
column.
By Christoph Schiessl on PostgreSQL
Learn how to use PostgreSQL's built-in RANDOM()
function to generate pseudo-random numbers, which are uniformly, exponentially, or normally distributed.
By Christoph Schiessl on PostgreSQL
ENUM
Type Columns and ORDER BY
Learn how custom ENUM
types in PostgreSQL can affect SELECT
queries and ORDER BY
clauses. Be mindful of indexing and typecasting.
By Christoph Schiessl on PostgreSQL
Learn how to manipulate PostgreSQL's query planner to force it to use your indexes while working on optimizing the performance of your queries.
By Christoph Schiessl on PostgreSQL
Learn how to avoid permission issues when creating files on a Docker bind-mount volume from within a container and manage user IDs and group IDs on Linux.
By Christoph Schiessl on DevOps and Docker
Fully understand Python's boolean operators for negation, conjunction, and disjunction. Master operator precedence and short-circuiting.
By Christoph Schiessl on Python
any()
Function
Learn how to use the built-in any()
function in Python to determine if any element in an iterable
is True
, with implementation and performance insights.
By Christoph Schiessl on Python
id()
Function
Learn about object identities and comparisons in Python. Discover the built-in id()
function, the is
and is not
operators, and more.
By Christoph Schiessl on Python
Learn how to calculate a month's first and last days using Python's built-in datetime
module, with step-by-step explanations and code examples.
By Christoph Schiessl on Python
bool()
Class
Learn about boolean values in Python and the standard truth testing procedure. Understand how objects are converted to True
or False
.
By Christoph Schiessl on Python
Learn how to find the first and last day of a year with Python's datetime
module. This article explains step by step what you need to know.
By Christoph Schiessl on Python
Learn how to serve a static site using FastAPI. Perfect for locally testing statically generated websites, for instance, with httpie
.
By Christoph Schiessl on Python and FastAPI
Learn about the Levenshtein distance algorithm, a popular and easy-to-implement way to measure the similarity between two strings.
By Christoph Schiessl on Python
Learn about keyword-only parameters in Python, how to define them, and their interplay with position-only parameters.
By Christoph Schiessl on Python
Learn about positional parameters in Python and a special syntax that allows functions to declare certain parameters as position-only.
By Christoph Schiessl on Python
Learn about Python functions with default parameters. Understand how default parameters work and some essential restrictions and evaluation rules.
By Christoph Schiessl on Python
callable()
Function
Learn about the callable()
function in Python. This article explains how everything in Python is potentially callable, including classes and instances.
By Christoph Schiessl on Python
Learn about functions with simple parameters in Python, including how the called can decide to use positional or keyword notation.
By Christoph Schiessl on Python
Explore Python's function definition statement and discover its features with this series of articles. Get started with this simple introduction.
By Christoph Schiessl on Python
libpq
Learn how to remove LDAP support from PostgreSQL packages to remove indirect dependencies, thereby making your programs more portable across systems.
By Christoph Schiessl on DevOps, PostgreSQL, and Docker
all()
Function
Learn how to use the built-in all()
function in Python for boolean logic, with examples and different implementations.
By Christoph Schiessl on Python
MATERIALIZED VIEW
s
Learn how to use PostgreSQL's MATERIALIZED VIEW
s to improve performance of complex queries. Persist query results and refresh them manually or automatically.
By Christoph Schiessl on PostgreSQL
Learn about Git's internal data structure and how orphaned branches can be used to create separate histories with their own root commits.
By Christoph Schiessl on DevOps and Git
Software Engineering is often driven by fashion, but swimming with the current is rarely the best choice. In addition to knowing what to do, it's equally important to know what not to do. And this is precisely what my free Web App Reverse Checklist will help you with.
Subscribe below to get your free copy of my Reverse Checklist delivered to your inbox. Afterward, you can expect one weekly email on building resilient Web Applications using Python, JavaScript, and PostgreSQL.
By the way, it goes without saying that I'm not sharing your email address with anyone, and you're free to unsubscribe at any time. No spam. No commitments. No questions asked.