Technical writing

Notes on parsing, private AI, and computer science learning

Practical guides grounded in Yusuf Gadelrab’s work in freight intake parsing, CS tutoring, and bilingual computer science education.

Backend, APIs & data engineering

Backend engineering · API design

Idempotency keys: making a FastAPI intake endpoint safe to retry

Client-generated keys, request-hash checks, atomic writes, and expiration so a retried request never becomes a duplicate row.

Read the guide →

AI systems · Backend engineering

Confidence gating for LLM-extracted fields: deciding what a human must review

Per-field confidence tiers, evidence-span matching, and deterministic cross-checks so review time goes to the fields that actually need it.

Read the guide →

Backend engineering · Testing

API integration tests: prove the contract without calling production

Use representative fixtures, strict outgoing-request assertions, deterministic clocks, and a narrow live smoke check to make API changes reviewable.

Read the API testing guide →

Backend engineering

Integrating third-party APIs: the failure modes that only appear in production

Timeouts, retries with jitter, idempotency keys, rate limits, pagination, and webhook verification.

Read the API integration guide →

Backend engineering · Observability

Structured logging in Python: turning print statements into a debugging tool

JSON formatters, LoggerAdapter for shared context, and a level discipline that keeps alerts meaningful instead of noisy.

Read the structured logging guide →

Testing · Python

Pytest fixtures and parametrize for a data pipeline: testing the same step against many inputs

Fixtures for shared setup, parametrize for input variation, and when a parametrized fixture is worth the extra layer.

Read the pytest testing guide →

Data analytics · Python

A pandas data-cleaning pipeline that stays debuggable

Named single-purpose steps, row-count logging between them, and an explicit validation pass instead of one dense method chain.

Read the pandas pipeline guide →

Databases

SQL joins and indexes: the parts that quietly change your answer

Why a LEFT JOIN plus a WHERE becomes an INNER JOIN, how NULLs break NOT IN, and when an index is ignored.

Read the SQL guide →

Backend · APIs

Cursor versus offset pagination in a REST API

Why OFFSET duplicates and skips rows on a table still being written to, why deep pages get slower, and how a keyset cursor with a unique tiebreaker fixes both.

Read the pagination guide →

Databases

Alembic migrations you can actually roll back

Why autogenerate turns a renamed column into data loss, how to write data migrations that keep working, and the three-deploy pattern for adding a NOT NULL column.

Read the Alembic guide →

Freight intake automation

Designing a freight intake schema for messages that were never forms

How to preserve evidence, represent missing information, and build a reviewable intake workflow.

Read the intake schema guide →

Existing guide

Parsing unstructured freight messages into structured load data

How to combine normalization, deterministic patterns, constrained models, and human review.

Read the freight parsing guide →

Developer tooling, build systems & open source

Open source

Writing a secret-detection rule for gitleaks: what a pattern has to prove

How the Supabase token shape was established from evidence, why one key is deliberately not flagged, and what the false-positive tests pin down. The pull request is open and unmerged.

Read the gitleaks walkthrough →

Build tooling

SOURCE_DATE_EPOCH: why a build timestamp is a reproducibility bug

Deterministic SBOM timestamps, defining what counts as a valid value, and the test-isolation trap that appears the moment you read an environment variable.

Read the reproducible builds guide →

Developer tooling

Docker for CS coursework: reproducible environments without falling down the rabbit hole

When a container is worth it, a minimal Python and C++ setup, bind mounts, and the mistakes that cost an evening.

Read the Docker guide →

Local-first document parsing

Run small language models where the data lives

A practical architecture for extracting useful fields from private client text without making a hosted model the default data path.

Read the local-model guide →

CS education & bilingual learning

Teaching

Tutoring computer science when the student is also learning English

Telling a language gap from a concept gap in ninety seconds, keywords as symbols, reading error messages by shape, and what the research does and does not support.

Read the bilingual tutoring guide →

Conference notes

Notes on a SIGCSE TS 2026 poster: what two hours at a poster board actually demands

What the poster format can and cannot carry, using the bilingual coding poster Yusuf co-authored as the worked example.

Read the SIGCSE poster notes →

Bilingual CS education

Bilingual computer science education starts by separating logic from language

A field guide for language-aware instruction, grounded in Yusuf’s ACM SIGCSE 2026 poster collaboration.

Read the bilingual CS education guide →

CS tutoring

A computer science tutoring guide for learning to explain, trace, and debug

Concrete study and debugging routines drawn from Yusuf’s tutoring work at SJSU since August 2024.

Read the CS tutoring guide →

Bilingual programming

Programming syntax can be the barrier—not programming logic

A focused introduction to separating conceptual understanding from English-heavy programming notation.

Read the syntax guide →

Programming learning

Learning programming across languages without treating syntax as the whole skill

A method for identifying transferable concepts, comparing syntax, and testing assumptions with small experiments.

Read the programming languages guide →

Academic recovery

Academic recovery in computer science: a practical reset

A candid, employer-safe guide to assessing a difficult term and building a sustainable recovery routine.

Read the academic recovery guide →

Search & SEO

Search and SEO

The future of search engines: what AI changes about SEO, and what it does not

Zero-click data, retrieval versus ranking, structured data and entity identity, the llms.txt myth, and the crawler economics that will decide what the corpus contains.

Read the search and SEO essay →

More writing

Related work

Research context and poster citation

Explore the ACM SIGCSE 2026 poster collaboration and Yusuf’s 2025 SJSU research presentation.

Explore the research summary →