Python

What's a URL? Please Provide Your Email Address! The Complexity of Parsing Structured Identifiers
What's a URL? Please Provide Your Email Address! The Complexity of Parsing Structured Identifiers

“Please enter a valid email address.” “Please provide a valid website URL.” If you build web applications, APIs, or user interfaces, you have almost certainly written or reviewed code that displays those two demands. Because every user recognises an email address and …

Parsing CSV and Delimited Files: The Deceptive Traps of Tabular Text
Parsing CSV and Delimited Files: The Deceptive Traps of Tabular Text

Every software engineer has, at some point, written a CSV parser in a single line of code. When you receive a comma-separated file, calling line.strip().split(",") feels delightfully clean and efficient. You run a quick test on three rows of mock data, confirm the output matches your …

Parsing and Formatting Numbers: Why Commas and Dots Break Software
Parsing and Formatting Numbers: Why Commas and Dots Break Software

At first glance, numbers appear to be the simplest data type in computer science. Unlike natural languages with irregular grammar and complex idioms, numbers feel purely mathematical, universal, and unambiguous. You collect a string of digits from an input field, pass it to your language’s …

Handling Currency Calculations: Why Floats Break Financial Software
Handling Currency Calculations: Why Floats Break Financial Software

When building an application, you inevitably reach a screen where money enters the picture. You need to calculate a 20% VAT rate, split an invoice between team members, or apply a discount code at checkout. You see a price like £19.99 with two neat decimal digits and assume a standard …

Never Roll Your Own Date Maths: The Deceptive Complexity of Time
Never Roll Your Own Date Maths: The Deceptive Complexity of Time

At some point in every developer’s career, a tempting thought arrives. You need to add seven days to an appointment, schedule a task for tomorrow morning, or calculate the duration between two events. You glance at your standard library, see a hefty date module, and think: “A day is …

Python's Hidden Gems: Packages and Patterns
Python's Hidden Gems: Packages and Patterns

Following up on my previous post about What’s New in Python 3.14 and 3.15, I want to shift focus to the broader Python ecosystem. While everyone knows about Pandas and Requests, there is a treasure trove of lesser-known packages and modern patterns that can drastically improve your workflow. …

What's New in Python 3.14 and 3.15
What's New in Python 3.14 and 3.15

Python continues to evolve at a breakneck pace, and the recent releases are bringing some of the most fundamental shifts the language has seen in years. If you’ve been busy writing code, you might have missed the massive structural changes introduced in Python 3.14, and the exciting …

Querying Precisely: Type-Safe GraphQL in Python with Strawberry
Querying Precisely: Type-Safe GraphQL in Python with Strawberry

Connecting client applications to database records requires a clear, reliable communication contract. For years, Representative State Transfer (REST) has served as the default architecture for modern web applications. If you read my previous guide, Building Modern APIs with FastAPI and Python, you …

Connecting LangGraph Agents to FastMCP Servers
Connecting LangGraph Agents to FastMCP Servers

Connecting large language models (LLMs) to local tools and system resources has historically required a lot of custom integration work. This friction makes agentic systems difficult to scale and maintain. Fortunately, the Model Context Protocol (MCP) provides a standard way to expose tools, …

From Insight to Production: Software Engineering Habits for Data Scientists
From Insight to Production: Software Engineering Habits for Data Scientists

If you come from a data science background, your core strength lies in translating complex, messy datasets into actionable business insights. You are likely a master of statistical modelling, feature engineering, and extracting patterns from noise. However, a common bottleneck arises when you need …

Building Agentic System Tools with FastMCP and Python
Building Agentic System Tools with FastMCP and Python

If you have spent any time building agentic systems recently, you have likely encountered the integration bottleneck. Connecting large language models (LLMs) to local tools, internal databases, or system utilities has historically meant writing custom APIs for every single integration. This …

Building Modern APIs with FastAPI and Python
Building Modern APIs with FastAPI and Python

If you’re starting a new Python backend project today, you’re almost certainly going to use FastAPI. It has rapidly displaced older frameworks to become the industry standard for API development. The reasons are simple: it’s fast, it embraces modern Python type hints, and it does …