<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Posts on Eoin Hurrell</title>
    <link>https://www.eoinhurrell.com/posts/</link>
    <description>Recent content in Posts on Eoin Hurrell</description>
    <generator>Hugo -- 0.162.1</generator>
    <language>en</language>
    <lastBuildDate>Mon, 19 May 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.eoinhurrell.com/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Inboxer: A Plugin for Obsidian</title>
      <link>https://www.eoinhurrell.com/posts/20250519-inboxer-an-obsidian-plugin/</link>
      <pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate>
      <guid>https://www.eoinhurrell.com/posts/20250519-inboxer-an-obsidian-plugin/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m excited to announce that &lt;a href=&#34;https://github.com/eoinhurrell/obsidian-inboxer&#34;&gt;Inboxer&lt;/a&gt;, a small Obsidian plugin I created for my own workflow, is now available in Obsidian through Community Plugins.&lt;/p&gt;
&lt;p&gt;As an ML engineer, I spend a lot of time in Obsidian managing research notes, and I kept running into an annoying workflow issue.&lt;/p&gt;
&lt;h2 id=&#34;the-problem&#34;&gt;The Problem&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;d found there was a lot of friction when trying to add details to a note, say a project or an idea, in a structured way. I&amp;rsquo;m in the habit of keeping an &amp;lsquo;INBOX&amp;rsquo; heading where I can append random thoughts, links, websites etc, and for projects a &amp;lsquo;TIMELINE&amp;rsquo; heading to record events and progress. It became annoying switching to a note, finding the heading and adding a subheading whenever I had new information. Context switching kills my flow, and those small interruptions add up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building a Multi-Agent Code Review System Using the Viable System Model</title>
      <link>https://www.eoinhurrell.com/posts/20250306-viable-systems-ai/</link>
      <pubDate>Thu, 06 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://www.eoinhurrell.com/posts/20250306-viable-systems-ai/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been investigating multi-agent systems and their applications in development workflows. After reading Anthropic&amp;rsquo;s recent &lt;a href=&#34;https://www.anthropic.com/research/building-effective-agents&#34;&gt;guide to agent coordination patterns&lt;/a&gt;, I wanted to experiment beyond established patterns like Evaluator-optimizer and Orchestrator-worker workflows.&lt;/p&gt;
&lt;p&gt;For this exploration, I&amp;rsquo;ve chosen automated code review as a sufficiently complex problem domain. I&amp;rsquo;m building a multi-agent system structured according to the Viable System Model (VSM) – a cybernetics framework that provides an elegant organizational structure for complex systems. This post explores how VSM can serve as a foundation for implementing a multi-agent code review system that&amp;rsquo;s both effective and adaptive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RetentionCast: Building Real-Time Churn Prediction with Change Data Capture</title>
      <link>https://www.eoinhurrell.com/posts/20250221-retentioncast/</link>
      <pubDate>Fri, 21 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://www.eoinhurrell.com/posts/20250221-retentioncast/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;This is a quick write-up of RetentionCast, a system I built to predict customer churn in real-time using Change Data Capture. The system processes live transaction data through Kafka and Debezium to calculate churn probability and Customer Lifetime Value. Check out the &lt;a href=&#34;https://github.com/eoinhurrell/RetentionCast&#34;&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;the-churn-problem&#34;&gt;The Churn Problem&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;ve worked in e-commerce or SaaS, you know customer churn is the silent killer of growth. Traditional approaches to churn prediction often involve batch processing - running models overnight on yesterday&amp;rsquo;s data. But by the time you&amp;rsquo;ve identified that a customer is at risk, they might already be gone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easy Semantic Search with Custom Vector Embeddings and Typesense</title>
      <link>https://www.eoinhurrell.com/posts/20240603-easy-semantic-search-typsesense/</link>
      <pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://www.eoinhurrell.com/posts/20240603-easy-semantic-search-typsesense/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been kicking the tires on &lt;a href=&#34;https://typesense.org/&#34;&gt;Typesense&lt;/a&gt;, an open-source search engine and alternative to &lt;a href=&#34;https://www.elastic.co/elasticsearch&#34;&gt;Elasticsearch&lt;/a&gt;, for a personal project. So far I&amp;rsquo;m quite impressed with it. This is a small post recording how easy it was to set up vector embedding fields using a custom model.&lt;/p&gt;
&lt;p&gt;It is getting much easier to build semantic search applications. In previous work when I was setting up semantic search it was both exciting and frustrating, because the tooling wasn&amp;rsquo;t there and you had to build basically every piece yourself. It was cutting-edge, but you had to make your own cutting tools before you really saw the benefit. In my case, I had been using Elasticsearch and had to augment it with &lt;a href=&#34;https://github.com/spotify/annoy&#34;&gt;annoy&lt;/a&gt;, (using approximate K nearest neighbour in place of cosine distance, until Elasticsearch added vector search support).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Data Enrichment with LLMs for Obsidian: Better Tags</title>
      <link>https://www.eoinhurrell.com/posts/20240425-data-enrichment-llm-tags/</link>
      <pubDate>Thu, 25 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://www.eoinhurrell.com/posts/20240425-data-enrichment-llm-tags/</guid>
      <description>&lt;p&gt;One issue I have using Obsidian is that I feel I don&amp;rsquo;t use enough of its feature set. I have lots of notes, but few are tagged particularly well, so it makes tags less useful overall. I would like to be able to make surprising connections and surface related items, which means imprecise tags are preferable to no tags, so false positives are less of a concern to me, and very low risk.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Retrieval-Augmented Generation Experiments (Part 1)</title>
      <link>https://www.eoinhurrell.com/posts/20240214-rag-blog-part-1-how/</link>
      <pubDate>Wed, 14 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://www.eoinhurrell.com/posts/20240214-rag-blog-part-1-how/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been researching LLMs, trying to find practical ways I can use them for myself, in my work or at home. One area that interests me is as tool to better understand the notes I&amp;rsquo;ve taken, topics I frequently learn about and areas I might want to explore more. I&amp;rsquo;m not the first to explore this territory (&lt;a href=&#34;https://x.com/fortelabs/status/1749861644245848361)&#34;&gt;https://x.com/fortelabs/status/1749861644245848361)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll be looking at using a local model and building the system myself. I&amp;rsquo;m going to detail how I&amp;rsquo;ve built a toy system to chat with my notes. I&amp;rsquo;ll be using Ollama&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; to serve an open-source model locally, and building the application using LangChain&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; and StreamLit&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building a Data Product to Search People in Your Network</title>
      <link>https://www.eoinhurrell.com/posts/building_a_data_product_to_search_people_in_your_network/</link>
      <pubDate>Fri, 06 Oct 2017 00:00:00 +0100</pubDate>
      <guid>https://www.eoinhurrell.com/posts/building_a_data_product_to_search_people_in_your_network/</guid>
      <description>&lt;p&gt;&lt;em&gt;The below was originally written for and &lt;a href=&#34;https://medium.com/cohort-analysis/building-a-data-product-to-search-people-in-your-network-5443ab992e90&#34;&gt;published on&lt;/a&gt; the Cohort company blog,
Oct 6, 2017.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Dr. Eoin Hurrell leads Data at Cohort. Here, he reflects on what’s involved in
designing a system to ingest and analyze massive volumes of public data, to make
predictions on relationships, and things people are knowledgable on.&lt;/p&gt;
&lt;p&gt;Cohort helps you find the people you need, through the people you already know
and trust. It sounds simple, but the experience of existing social search is
much closer to “I am looking to follow/connect with a person on this site”.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
