Technology Tales

Notes drawn from experiences in consumer and enterprise technology

15:32, 6th June 2026

FastAPI is a popular Python framework for building modern APIs, valued for its speed, clean syntax and developer-friendly design. It scales from simple back-ends to machine learning applications, making it a practical choice across a wide range of projects.

A range of GitHub repositories can help developers learn the framework in different ways. These cover curated ecosystem resources, full-stack project templates combining FastAPI with React, PostgreSQL and Docker, practical coding tips for writing cleaner applications, and small stand-alone examples suited to beginners. Further repositories address user authentication and management, step-by-step project-based learning, reusable project templates for more scalable builds, microservices architecture using Docker Compose and Nginx and the use of FastAPI in AI image generation and machine learning model serving.

FastAPI Cloud offers a managed deployment platform that takes a locally built application live through a command-line interface with minimal configuration. Features include interactive API documentation, log monitoring and integrations comparable to other modern managed hosting platforms.

15:26, 6th June 2026

As Python datasets grow beyond what standard tools like pandas can handle, seven libraries have emerged as practical solutions for large-scale data processing. Each addresses a different constraint, whether that is memory, speed, distribution or latency.

PySpark brings distributed computing across clusters and supports both batch and streaming workloads alongside built-in machine learning capabilities. Dask closely mirrors the pandas and NumPy programming interfaces, scaling existing workflows to larger-than-memory datasets through lazy evaluation and parallel execution. Polars, written in Rust and built on the Apache Arrow columnar format, consistently outperforms pandas through parallelised operations and query optimisation before execution.

Ray, originally developed at UC Berkeley, enables distributed machine learning training and straightforward parallelisation of Python functions across clusters. Vaex takes a different approach, handling billions of rows on a single machine by memory-mapping data from disk rather than loading it fully into memory. Together, the two cover the spectrum from multi-node distributed training to single-machine scale without the overhead of a full cluster.

For real-time event streaming, Apache Kafka along with its Python clients manages millions of events per second with low latency and durable distributed storage. DuckDB operates as an in-process analytical database requiring no server setup, running fast SQL queries directly against local files in formats such as Parquet and CSV, with zero-copy integration with pandas and Arrow.

15:21, 6th June 2026

Python rewards developers who move beyond the basics, and five areas in particular repay the investment.Python rewards developers who move beyond the basics, and five areas in particular repay the investment. Each builds on core language features to unlock cleaner, faster and more maintainable code.

Type hinting pairs Python's typing module with the MyPy static analysis tool to annotate code with explicit data types. This catches mismatches before execution and makes codebases far easier to maintain at scale.

Functional programming tools such as map(), filter(), groupby() and itertools.chain() enable elegant, memory-efficient data manipulation by pushing iteration to optimised low-level internals. The result is cleaner code that avoids the overhead of manual Python loops.

Python's approach to multiple inheritance relies on C3 linearisation to determine method resolution order. Using super() correctly ensures that each constructor in an inheritance chain is called exactly once, avoiding the pitfalls of the diamond problem.

Introduced in Python 3.10, structural pattern matching via match and case goes well beyond a simple switch statement, allowing developers to match both the shape and values of complex data structures in a single declarative step. This proves especially valuable when processing API payloads or building state machines.

Finally, moving beyond basic pip installations and requirements files to modern dependency management tools such as Poetry or Conda provides deterministic, fully reproducible environments. Poetry offers strict lockfiles for application development, while Conda handles non-Python binary dependencies common in data science workloads.

15:16, 6th June 2026

Polars is a Rust-based DataFrame library that offers substantial performance advantages over Pandas when working with large datasets, owing to its parallel execution, lazy evaluation and single-pass algorithms. Three practical data problems illustrate where these gains are most pronounced.

The first involves ranking users by email activity. Polars replaces an expensive rank function with a simple row count after sorting, while its parallel group-by aggregation runs significantly faster than the sequential Pandas equivalent.

The second identifies returning customers who made a follow-up purchase within seven days of their first. The Pandas approach creates five separate in-memory copies of the data through deduplication, sorting, pivoting and filtering, whereas the Polars lazy chain allocates no memory until the final collection step, computing the earliest purchase date per user in a single pass.

The third calculates a cumulative monthly sales average. Polars pushes filter conditions before the join executes, reducing the volume of data processed from the outset, and its cumulative mean runs entirely in Rust without the Python-level loop overhead that affects the Pandas expanding window method.

Across all three cases, the performance gap is negligible on small datasets but grows considerably as row counts reach into the millions. That makes Polars a compelling option for analysts who regularly encounter the memory and speed limitations of Pandas at scale.

15:12, 6th June 2026

Vector search improves on traditional keyword matching by converting documents and queries into numerical vectors called embeddings, where geometric proximity in high-dimensional space reflects semantic similarity. A tutorial published by KDnuggets walks through building a functional vector search engine using only NumPy in Python, covering the core mechanics step by step.

The process involves storing product descriptions as simulated eight-dimensional embeddings arranged in three semantic clusters representing electronics, clothing and furniture, then normalising those vectors so that cosine similarity can be computed efficiently as a dot product. A simple index class handles storage and retrieval, with the search method performing a matrix multiplication against all stored vectors to rank results by similarity score. Query vectors constructed near each cluster centre consistently return the most relevant results, with scores approaching 1.0 indicating near-identical directional alignment in embedding space.

Principal component analysis is then used to project the eight-dimensional data down to two dimensions, revealing how cleanly the clusters separate and where query vectors land relative to their target groups. A bar chart visualising similarity scores across the full catalogue further illustrates the gap between relevant and irrelevant results, which in a real system could inform a threshold below which results would be suppressed. The tutorial concludes by noting that the index logic requires no modification to work with real embeddings generated by a model such as sentence-transformers.

15:08, 6th June 2026

Five Python decorators have proven particularly effective at keeping AI and machine learning code clean and well-structured. A concurrency limiter uses semaphores to throttle asynchronous requests to third-party large language models, preventing errors caused by free-tier rate limits. A structured logging decorator formats function executions and errors into searchable JSON logs, making debugging in production environments far more manageable than relying on standard print statements. A feature injector decorator ensures that raw input data undergoes consistent transformations before reaching a deployed model, removing the manual effort of replicating preprocessing steps from development into production. A deterministic seed setter locks random seeds during experimentation and hyperparameter tuning, isolating variables so that performance changes can be attributed to deliberate adjustments rather than random weight initialisation. Finally, a development-mode fallback decorator intercepts failures caused by external factors such as connection timeouts or API limits and returns predefined mock data instead, preventing an entire application from halting when a dependent service temporarily becomes unavailable.

15:05, 6th June 2026

Building LLM applications requires a range of specialised Python libraries, each serving a distinct role in the development process. The Transformers library from Hugging Face acts as a foundational layer for loading models, tokenising input and fine-tuning on custom data, while LangChain provides structure for connecting prompts, tools, retrievers and APIs into coherent multi-step workflows. LlamaIndex focuses on grounding model responses in real data through retrieval-augmented generation pipelines, making it particularly suited to document-heavy and knowledge-base applications. For serving open-source models efficiently at scale, vLLM offers fast inference and improved GPU memory utilisation, and Unsloth lowers the hardware barrier for fine-tuning through efficient LoRA and QLoRA workflows. On the agent side, CrewAI enables structured multi-agent collaboration with defined roles and tasks, AutoGPT supports goal-driven autonomous task execution and LangGraph provides stateful workflow orchestration with branching logic and memory for more complex agent systems. DeepEval rounds out the stack by offering a structured framework for evaluating outputs against metrics such as relevance, faithfulness and hallucination, while the OpenAI Python SDK provides a straightforward route to building API-based LLM features without managing model infrastructure directly.

12:50, 6th May 2026

The 1.119 release of Visual Studio Code introduces enhancements to agent interactions, observability and security controls, with agents now able to request browser access for real-time validation and iteration in web development workflows. Optimised token usage is achieved through a lightweight model for managing to-do lists, while OpenTelemetry tracing enables detailed monitoring of agent sessions. Trust and security improvements include reduced interruptions for network access and temporary file writes, alongside new settings for managing sandboxed environments. Markdown preview functionality has been refined for easier switching between source and preview views and engineering updates include the migration of webviews to CSS anchor positioning for improved performance and the adoption of TypeScript 7 to accelerate typechecking. Deprecated features such as Edit Mode are being phased out, with support ending in a future version.

12:47, 6th May 2026

The 2026.05.0 release of Positron introduces several enhancements aimed at improving workflow efficiency and user experience. A new Packages pane offers streamlined package management for Python and R, allowing users to view installed packages, their status and update them directly within the IDE. Inline output for Quarto documents is now available as a preview feature, addressing a common user request by enabling automatic kernel activation and collapsible outputs. Extensions are now sourced from Posit Public Package Manager by default, with options to revert to Open VSX if preferred. The Notebook Editor has advanced to beta status, incorporating improvements such as cleaner git diffs, enhanced R support with debugging capabilities and refined user interface elements. Two new AI tools, Posit Assistant and Posit AI, provide integrated code assistance, with Posit AI available as a subscription service. Additional updates include improved session tracking, enhanced console functionality and various bug fixes to ensure smoother operation across notebooks, consoles and extensions.

12:21, 15th April 2026

The second April 2026 release of Visual Studio Code introduces enhancements to agent interactions, including the ability to view debug logs from previous sessions, configure thinking effort in Copilot CLI for balancing response quality and latency and interact with terminal sessions directly from agent tools. GitHub Copilot is now a built-in extension, eliminating the need for separate installation. Improvements to chat user experience include streamlined diffs, faster rendering and better handling of terminal input, while accessibility features in the Agents app support keyboard and screen reader navigation. The integrated browser is more accessible via new entry points and the JS/TS Chat Features extension offers skills for modern TypeScript projects. Additionally, background terminal notifications are enabled by default and the release includes updates to the Agents app, such as improved theming and session handling. Deprecated features like Edit Mode are being phased out and contributions from the community have addressed various bugs and enhancements across the codebase.

  • The content, images, and materials on this website are protected by copyright law and may not be reproduced, distributed, transmitted, displayed, or published in any form without the prior written permission of the copyright holder. All trademarks, logos, and brand names mentioned on this website are the property of their respective owners. Unauthorised use or duplication of these materials may violate copyright, trademark and other applicable laws, and could result in criminal or civil penalties.

  • All comments on this website are moderated and should contribute meaningfully to the discussion. We welcome diverse viewpoints expressed respectfully, but reserve the right to remove any comments containing hate speech, profanity, personal attacks, spam, promotional content or other inappropriate material without notice. Please note that comment moderation may take up to 24 hours, and that repeatedly violating these guidelines may result in being banned from future participation.

  • By submitting a comment, you grant us the right to publish and edit it as needed, whilst retaining your ownership of the content. Your email address will never be published or shared, though it is required for moderation purposes.