RSSAmplifier

Blog

Ian Bull

Another Technology Blog.

ianbull.comRSS feed ↗63 posts

Latest posts

Prompt Creep - When Prose Becomes Procedural Logic

When prompts grow procedural logic, reliability degrades in ways that look like reasoning errors but aren't.

Sinks, Not Pipes: Software Architecture in the Age of AI

Software architecture principles like low coupling, high cohesion, and minimal side effects matter more than ever when AI agents are the ones navigating your codebase.

Beads - Memory for your Agent and The Best Damn Issue Tracker Your're Not Using

A practical guide to Steve Yegge's git-native task system for AI coding agents.

In 2026, Technical Skills Are No Longer Enough

The skills that differentiated engineers for decades are becoming commoditized. What's scarce now are the skills they were never taught.

In 2026, Planning Is Becoming the Bottleneck

When AI makes code cheap, planning and decision-making become the real bottleneck.

2026 Prediction - The Year Agents Get S#&t Done

2026 is the year orchestration becomes the dominant abstraction for finishing tasks.

Vibe Decoding

Vibe Decoding is a personal experiment in using events, Kafka, and AI agents to turn everyday signals into timely, contextual insight.

In 2026, Code Reviews Are the Wrong Abstraction

Code reviews made sense when code was scarce; in 2026, the real bottleneck is judgment, not syntax.

From AI-Enabled to AI-Native

Why 2026 Will Be the Year of Real-Time, Agent-Driven Work

Towards an AI-Native Development Workflow (Using Jujutsu as the Backbone)

A practical AI native development workflow that uses Jujutsu, temporary intent files, and structured planning to keep AI generated code fast, controlled, and meaningfully organized.

How Much Can You Ask an LLM to Track? Finding the Working Memory Cliff

A short, practical look at how far you can push an LLM's working memory before accuracy falls off a cliff.

Why Embedding a JavaScript Runtime Inside an LLM Is a Big Deal

This post explains why giving LLMs a built-in JavaScript runtime unlocks far more accurate, scalable, and flexible computation than traditional tool-calling approaches.

Using Practical AI to Design and Build My Deck

In this article, I share how I used AI tools to transform my backyard deck project from a vague vision into a tangible reality.

J2V8 6.3.4 - A Major Publishing Pipeline Overhaul and a Fresh Release

This blog explains the major overhaul of J2V8’s build and publishing pipeline and announces the successful release of version 6.3.4 to Maven Central.

Modernizing J2V8 - Technical Debt, Tooling Upgrades, and Cross-Platform Chaos

I spent two weeks modernizing J2V8 by updating its V8 engine, migrating the entire build system to current tooling, fixing cross-platform and Android linking issues, and adding full multi-architecture support to ensure compatibility with newer Android devices that now require 16K page sizes.

Skating on Streams with Confluent Cloud

Building a simple event-driven pipeline from rinkside data capture to real-time visualization for youth hockey with Confluent Cloud

Tokio A Deep Dive into Concurrency Vs. Parallelism

In this article, I explore the differences between concurrency and parallelism in Rust using Tokio, and provide insights into effectively managing async tasks and CPU-bound workloads.

A Gentle Introduction to Axum, Tracing, and Logging

In this article, I demonstrate how to build a simple Axum-based REST API in Rust and leverage the `tracing` crate for enhanced logging and diagnostics.

Enhancing Rust Streams with `Ext` Traits and Futures

In this article, I delve into how to extend Rust's stream functionality using `Ext` traits, providing a step-by-step guide to implementing and using `next`, `map`, and `take` methods with practical examples.

Compiled Fresh

In this article, I guide you through creating and packaging a simple Deno Fresh application as a self-contained executable for easy on-premises deployment.

What Does Idiomatic Rust Really Mean

This article shares my journey and insights into writing idiomatic Rust, focusing on leveraging the language’s unique features like the borrow checker, expressions, `Option` and `Result` types, iterators, and Clippy to write clearer and more efficient code.

Rust Custom Allocators

In this article, I delve into Rust's custom allocators, exploring how to build and use a simple bump allocator for performance optimization in specific scenarios.

Bridges Summit - Engineering Leadership Motivations

I attended the Bridges Summit where thought leaders and practitioners gathered to explore motivations in engineering leadership and brainstorm ideas for thriving in the industry.

Stubs, Spies, Mocks, Oh My!

In this article, I explore the differences between stubs, mocks, and spies in testing frameworks, highlighting their unique roles in ensuring effective code verification.

Director of Fastball Report for 2024

Carnarvon Fastball celebrated a successful season with impressive tournament performances, increased player registrations, and strong community involvement, as I reflect on my rewarding tenure and transition from the VP of Softball role.

Migrating an Astro Blog to Deno Deploy

In this article, I share my experience migrating my Astro-based website from Netlify to Deno Deploy, exploring the challenges and advantages of adopting a hybrid approach that combines static and dynamic content.

Rusty Large Language Models

In this article, I explore the integration of Large Language Models (LLMs) with Rust, demonstrating how to create efficient software tools using Rust's powerful features like safety and concurrency alongside libraries such as Askama and Serde for structured outputs and robust templating.

Canoeing Around Lake Wakomata

After 25 years of visiting Camp, we finally paddled around the island in the center of Wakomata Lake

Rust - Put It in a Box and Win It

An eight-line changeset in Deno led me to question how wrapping a large structure in a `Box` improves performance, and if this approach works in general.

Early Return in Rust Nightly

In this article, I explore the Rust programming language's question mark (`?`) operator, explaining how it works for error handling and early returns, and demonstrate its usage with a BlackJack dealer game.

Rust For Computer Scientists

As a computer science enthusiast, I delve into the intricacies of Rust, exploring the underlying mechanisms of its memory management through hands-on tutorials and sharing my own solutions and bug fixes on GitHub.

Rust FFI Builds With Rayon

In this post I describe how I reduced our Llama.rs build times from 1.5h to 16min using Rayon

One Year With Rust

This article details my one-year journey learning Rust, from a beginner to building an LLM Inference Engine, working with Bindgen and FFI, and implementing TypeScript libraries in Rust.

Llamas and Dinosaurs

In this post I share insights from my 10-day visit to Germany, where I advanced AI-powered projects and explored scalable technologies, while also enjoying cultural and team-building experiences.

ESM Module Loader and Deno

This article explores how JavaScript modules behave when imported multiple times in Deno, discussing shared state retention, the implications of importing different module versions, and the potential for subtle bugs due to version range specifications and import order.

Web APIs and Shell Scripts: Scripting with Deno

In this blog, I share my experience of transitioning from Bash to TypeScript for scripting at Mediform, highlighting TypeScript's advantages in tooling, module management, and maintainability within a diverse technology environment.

Skiing Mt Washington

Our family's ski trip to Mt. Washington was a tapestry of clear skies, spirited runs, cozy lunch breaks, and an afternoon of challenging slopes, all wrapped up in the warmth of togetherness and memorable mountain moments.

Fixing my ErgoDox

This blog post shares my personal experience with the ErgoDox EZ ergonomic mechanical keyboard, emphasizing its customizable features and durable design, alongside a recent DIY repair that refreshed the keyboard for the new year.

Packing Structs with Deno FFI

In the post, I discuss the technical journey and challenges of integrating large language model inference into Typescript using Deno's FFI, particularly when interfacing complex data structures between Rust and Deno, and share some code snippets and resources that helped navigate these complexities.

Christmastime Work and Wanderlust in Karlsruhe

My recent trip to Karlsruhe, Germany, was a delightful mix of exploring traditional Christmas markets, attending a medieval market in Durlach, hiking in the Black Forest, and making significant progress on the AI Inference Engine for MediForm, all while bonding with coworkers.

A Feast for the Senses at Brewery and The Beast

Our day at Brewery and The Beast was an unforgettable experience, indulging in an array of expertly grilled meats and local brews, with live music enhancing the vibrant atmosphere of this meat-lover's paradise in Victoria, BC.

A Humble Ride Up Stewart Mountain: Bike Hiking in Victoria's Highlands

Our recent biking venture to Stewart Mountain was a humbling blend of pedaling and pushing our bikes uphill, rewarding us with spectacular highland views and a gratifying descent back home in Victoria, BC.

Running LLMs on Kubernetes

How to configure an EKS Kubernetes Cluster to deploy Large Language Models

Updating To Astro 3.0

Information on how I updated my site to Astro 3.0

Sticky Sessions with Kubernetes

How to enable sticky sessions with Kubernetes

How I use Obsidian

An overview of how I make use of Obsidian for my daily notes.

Introducing My New Blogging Platform

My new blogging platform built on Astro Build and Astro Paper

Carnarvon Fastball — Provincial Champions

The Carnarvon Black Ice are Provincial Champions!

Campfire Treats with a Twist: The Bull's Cookie S'mores Creation

Enjoy a heartwarming glimpse into our family's campfire evening, where we turn s'mores into an extraordinary treat with homemade chocolate chip cookies and perfectly toasted marshmallows.

Sun-Kissed Slopes: A Family Ski Day at Mount Washington

Our family's ski day at Mount Washington turned into a sunny T-shirt affair, complete with laughter, T-shirt weather, and our youngest, Maggie, leading the charge down the beautiful slopes.