Debugging Kubernetes

23 Jul 2024

Helpful tips for debugging applications running in k8s

build/k8s.png

Handling multiple errors in Rust iterator adapters

17 Dec 2023

Approaches for handling multiple errors within iterator adapters

build/rust.png

Better FastAPI Background Jobs

29 Aug 2022

A more featureful background task runner for Async apps like FastAPI or Discord bots

build/fastapi_logo.png

Useful Linux Examples

21 Dec 2021

A plethora of helpful tips for working in Linux

build/bash_logo.png
Continue to all blog posts

Python While True Counter

I was recently trying to find a clean way of doing something like the following, except for a while True loop (without a known list_of_values up front)

for i, value in enumerate(list_of_values):
    do_something(i, value)

I was trying to paginate though an as yet unknown number of pages to be returned by an API

Something like this would work, but it seemed too verbose (3 lines to achieve my goal):

page = 1  # 1
all_page_data = []
while True:  # 2
    page_data = get_page_data(page=page)
    all_page_data.extend(page_data)
    if page_data == []:
        break
    page += 1  # 3

I ended up finding a nice alternative in the standard library itertools, which felt a bit cleaner (1 line, ignoring import)

import itertools

all_page_data = []
for page in itertools.count(start=1):  # 1
    page_data = get_page_data(page=page)
    all_page_data.extend(page_data)
    if page_data == []:
        break

Cleaning up to just the important info:

import itertools

for i in itertools.count(start=1):
    do_something(i)

    if condition:
        break