<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Osedea - Medium]]></title>
        <description><![CDATA[Osedea is an innovation firm, specializing in software engineering, AI, custom robotics, and UX/UI design. Since 2011, we have embraced an innovation-driven approach to help clients in manufacturing, healthcare, mining, and finance deliver high-impact custom digital products. - Medium]]></description>
        <link>https://medium.com/osedea?source=rss----9329c044fe91---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Osedea - Medium</title>
            <link>https://medium.com/osedea?source=rss----9329c044fe91---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 19:14:46 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/osedea" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[The Agent Revolution: 2025 recap & 2026 outlook]]></title>
            <link>https://medium.com/osedea/the-agent-revolution-2025-recap-2026-outlook-8df99c88fee1?source=rss----9329c044fe91---4</link>
            <guid isPermaLink="false">https://medium.com/p/8df99c88fee1</guid>
            <category><![CDATA[generative-ai-tools]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[Marie Pier Houle]]></dc:creator>
            <pubDate>Mon, 23 Feb 2026 19:18:28 GMT</pubDate>
            <atom:updated>2026-02-23T19:18:28.438Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aq_g6yH9wgDMEAmdNrowlg.jpeg" /></figure><p>Yesterday I found myself looking back at old agentic projects from the prehistoric age of LLMs (2 years ago) and it really struck me how much the ecosystem has evolved. I went from hacking together hacky pizza ordering agents for drive-throughs with GPT 3.5 to shipping production-grade <a href="https://www.osedea.com/project/genius-solutions---genius-erp">agents through enterprise ERPs</a>. From speaking at WeAreDeveloper in Berlin to Confoo here in Montreal and NDC London, I’ve been fully tapped into the agent zeitgeist.</p><p>Everyone hyped 2025 as “the year of the agents,” and boy, did it deliver. Looking back at how much the ecosystem changed in just twelve months feels like watching a time-lapse of a city being built. Infrastructures emerged, standards solidified, and what were experimental hacks became production-grade systems almost overnight. So with all that time in the trenches, here’s my little recap on what made 2025 so pivotal and what I think 2026 might actually look like.</p><h3>The Foundations Were Laid Faster Than Anyone Expected</h3><p>Consider this: the Model Context Protocol (MCP) is barely a year old. Anthropic open-sourced it in November 2024, and by early February 2025, it had already become the standard context protocol for agent infrastructure. That’s adoption velocity that would make any technology founder weep with joy. Just this past month, MCP celebrated its first birthday with the launch of MCP 2.0, <a href="https://www.anthropic.com/engineering/code-execution-with-mcp">bringing code execution and multi-tool calling</a> capabilities that fundamentally change how agents orchestrate complex workflows.</p><p>In a surprising twist: major tech firms didn’t just watch from the sidelines or try to develop their own protocol, they went all in on MCP. Google recently announced <a href="https://techcrunch.com/2025/12/10/google-is-going-all-in-on-mcp-servers-agent-ready-by-design/#:~:text=year%20ago%20as%20an%20open,and%20standardizing%20AI%20agent%20infrastructure">fully managed MCP server endpoints</a> for its entire cloud stack, from Maps to BigQuery, making their services “agent-ready by design.” Instead of developers writing brittle custom connectors that break every time an API changes, an AI agent can now plug into Google’s APIs by pointing to a standardized MCP endpoint. That’s the kind of interoperability we want for agents.</p><p>And then there was <a href="https://www.osedea.com/insight/vibe-coding-fun-fast-but-not-always-good-vibes">“vibe coding”</a>. The term itself isn’t even a year old. Andrej Karpathy coined it in <a href="https://x.com/karpathy/status/1886192184808149383">February on X</a> to describe that moment when you give up trying to micromanage the coding agent and just vibe with it. Now it’s deeply engrained in business decisions, development workflows, and prototyping sessions. Sure, it’s sparked heated debates about technical debt accumulation, but the genie is out of the bottle. We’re coding differently now, and there’s no going back.</p><h3>The Creative Explosion</h3><p>Though not technically on the topic of agents, I felt this was worth noting. Shortly after vibe coding entered our lexicon, we witnessed the “<a href="https://www.forbes.com/sites/danidiplacido/2025/03/27/the-ai-generated-studio-ghibli-trend-explained/">ghiblification</a>” of the internet. OpenAI’s groundbreaking image generation model finally cracked perfect text-in-image and style transfer, making every marketer’s Pinterest board suddenly achievable. But that was quickly dwarfed by the late summer release of Nano Banana and Nano Banana Pro, which took image editing to photoshop-like precision without losing fidelity to the source image. As someone who can barely use GIMP properly, watching AI handle complex image edits feels like technological sorcery. I spent TWO DAYS ghibilifying images of my dog.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*v_Vz67RYR4XumBv75S0MCQ.png" /></figure><p>The video generation space exploded too. We went from Veo3 to Sora, which added synchronized sound and effects, to Cameos that brings your face into videos in ways that are both impressive and deeply unsettling. Netflix used <a href="https://techcrunch.com/2025/07/18/netflix-starts-using-genai-in-its-shows-and-films/">AI-generated content in productions</a> this year, Coca-Cola ran its second consecutive <a href="https://www.the-independent.com/life-style/coca-cola-christmas-ai-holiday-ad-santa-claus-truck-b2857982.html">Christmas campaign with generated ads</a>, and Disney struck a deal with OpenAI to include <a href="https://openai.com/index/disney-sora-agreement/">Disney characters in Sora</a>. And just when you think the pace might slow down, Meta drops their state of the art <a href="https://ai.meta.com/sam3d/">SAM 3D Model</a>, enabling image-to-3D generation that unlocks entirely new dimensions of creative potential.</p><h3>The Language of Agent Development Matured</h3><p>The agent development space matured so quickly that concepts that were foreign jargon at the start of 2025 are now deeply embedded in technical conversations. Prompt engineering and retrieval augmented generation (RAG) went from research papers to baseline expectations. But more interestingly, we’ve seen the rise of<a href="https://www.osedea.com/insight/context-engineering"> context engineering</a>, a term that encapsulates most of the agentic system design discipline while adding much-needed structure to the nomenclature.</p><p>Context engineering gave us a vocabulary to discuss problems we were all experiencing but couldn’t quite articulate. Terms like context compaction, context rot, and context poisoning allow us to better shape ideas and debug agent behaviors. It’s akin programming getting design patterns, suddenly we could all talk about the same problems using the same language.</p><p>Anthropic has been at the forefront of this innovation wave with Claude Code, tackling the genuinely hard problem of deep agents capable of reasoning over a codebase for extended periods. They demonstrated concepts like <a href="https://claude.com/blog/context-management">autonomous context compaction</a>, where the context gets intelligently summarized past a certain threshold, enabling those super long multi-turn conversations that would otherwise hit context limits and lose coherence.</p><p>Then in the fall, Anthropic introduced another crucial concept: <a href="https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents">agent harnessing</a>. This refers to the software scaffolding, control loops, and structured environments built around an AI model so it behaves like a reliable autonomous agent. The harness essentially battles the “memento” effect (that movie where the guy wakes up with no memory but looks at his tattoos for context) that agents experience when starting a new thread, helping them refocus on the overarching goal with proper context alignment. As their engineering team put it in their documentation, harnessing is what transforms a stateless model into a stateful, goal-oriented agent that actually gets things done over time.</p><h3>Open Standards For The Agentic Space</h3><p>Here’s where things get really exciting for 2026 and beyond. In December 2025, Anthropic donated MCP to the newly formed <a href="https://aaif.io/">Agentic AI Foundation (AAIF) </a>under the Linux Foundation umbrella. The AAIF launched with contributions from Anthropic, OpenAI, and Block, combining projects like MCP, OpenAI’s AGENTS.md spec for coding agents, and Block’s “goose” local-first agent framework. This open governance model signals that agent development has graduated from proprietary hacks into a collaborative ecosystem with serious institutional backing.</p><p>The heavy hitters are all in: AWS, Google, Microsoft, Anthropic, and OpenAI are all AAIF members. As the Linux Foundation stated, “<a href="https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation">Agentic AI represents a new era of autonomous decision making that will transform industries</a>,” underscoring that open governance is essential to ensure this technology evolves transparently and stably.</p><p>According to the Linux Foundation, MCP already has over 10,000 published server endpoints covering everything from developer tools to Fortune 500 databases. It’s been adopted in platforms ranging from Microsoft Copilot to OpenAI’s ChatGPT to Google’s Gemini. In 2026, we’re looking at true interoperability: agents built on different frameworks or clouds will speak a common “tool API” language. No walled gardens, no proprietary lock-in. Just standards.</p><h3>More Complex Multi-Agent Systems</h3><p>As individual agents become more capable, we’re witnessing the rise of multi-agent collaboration and richer long-term memory. A single AI agent handling simple tasks is useful, but complex, multifaceted problems benefit from specialized agents working in concert. Salesforce’s research noted that leading companies are “<a href="https://www.salesforce.com/uk/news/stories/the-future-of-ai-agents-top-predictions-trends-to-watch-in-2026">shifting from monolithic AI to an orchestrated workforce model</a>,” where a primary orchestrator agent delegates subtasks to smaller expert agents, much like a human manager coordinating a team.</p><p>In 2026, these multi-agent systems will hit mainstream deployment. A lone chatbot that only answers questions will be seen as what Salesforce calls “a dead-end island of limited value,” whereas a network of agents collaborating across departments and even across organizations can tackle end-to-end workflows.</p><p>This opens fascinating doors for cross-enterprise collaboration. Traditionally, organizations set up multi-agent systems hierarchically, but now we can have top-level agents representing entire organizations, negotiating and collaborating with other organizational agents. This is where something like <a href="https://www.coinbase.com/en-ca/developer-platform/products/x402">Coinbase’s x402 protocol</a> becomes relevant. It’s an open standard for internet-native payments that could enable agents to offer pay-per-use services, allowing one agent to delegate work to other autonomous agents without needing all capabilities in-house. Imagine an agent hiring another agent’s specialized service, paying in microtransactions, all without human intervention.</p><h3>Less Framework, More Observability</h3><p>A recently published study by IBM called “<a href="https://arxiv.org/abs/2512.04123">Measuring Agents in Production</a>” found that 85% of detailed case studies forgo third-party agent frameworks, opting instead to build custom agent applications from scratch. This aligns with <a href="https://www.osedea.com/insight/10-game-changing-ai-insights-for-mastering-agentic-rag">my personal experience</a> in this space as well. As agentic loops evolve and context engineering becomes more important, there’s evident value in orchestrating your steps yourself rather than fighting against framework opinions.</p><p>Additionally, there’s a deep realization emerging: in complex agentic systems, observability is no longer optional, it’s foundational. We’ll see more emphasis on agent evaluations and observability standards using OpenTelemetry, semantic conventions, and distributed tracing. Anthropic’s recent report “<a href="https://claude.com/blog/how-enterprises-are-building-ai-agents-in-2026">How enterprises are building AI agents in 2026</a>” details this growing complexity: “The shift from task automation to process orchestration represents a fundamentally different use case and a different value proposition. Organizations that master multistage and cross-functional agent deployments can unlock advantages in speed, consistency, and scale that simple automation can’t.”</p><p>Currently, according to the IBM report, 74% of production agents rely primarily on human evaluation, with more than half also using “LLM as judge” approaches but always with human verification. Only a minority build formal benchmarks, many teams rely on A/B tests, expert feedback, or custom tests. There’s enormous room to improve agent evaluation methodologies, and I expect 2026 will be the year we crack this problem.</p><h3>Security, Governance, and the “Agent as Employee” Mindset</h3><p>Microsoft’s security leadership argues that “<a href="https://news.microsoft.com/source/features/ai/whats-next-in-ai-7-trends-to-watch-in-2026">every agent should have similar security protections as humans</a>” in an enterprise context. This means deployed AI agents will each have a digital identity and access control limits, just like a human employee. Companies in 2026 will treat agents as first-class entities in identity management systems with unique credentials, audit logs of their actions, and permission boundaries. An agent might be granted permission to view certain data but not modify it, or to execute transactions up to a limit.</p><p>Organizations are implementing monitoring and guardrails where every action an agent takes can be traced and requires justification. Abnormal behavior like attempting unauthorized access will trigger alerts or automatic shutdown. We’ll see widespread use of sandboxing and policy enforcement layers, where agents can only perform whitelisted operations and sensitive data they produce gets automatically classified or redacted.</p><p>One concrete trend emerging is<a href="https://www.salesforce.com/uk/news/stories/the-future-of-ai-agents-top-predictions-trends-to-watch-in-2026"> instruction adherence </a>as a key metric for autonomous agents. Rather than just evaluating whether an agent produces correct output, companies will track how well agents follow directives and constraints. Experts predict the industry will adopt probabilistic adherence scores, essentially a rating of how likely an agent is to comply with guidelines, as a standard for AI governance. This echoes the shift from experimental to production mindset: reliability and predictability are paramount if agents are to be trusted with autonomous decisions.</p><h3>The Rise of Specialized Small Language Models</h3><p>Fine-tuned small language models will become more prevalent in enterprise agent deployments in 2026: As use cases flesh out and move to production, especially for on-premises compute and compliance requirements, effective harnessing and context engineering will place greater importance on inference speed, token optimization, and cost reduction.</p><p>With use cases gaining production usage and observability systems in place, golden datasets can be collected and used for downstream fine-tuning, increasing accuracy and reducing costs. The large language and reasoning models will often handle the master control of an agentic workflow, but purpose-built SLMs will very adequately deliver required accuracy and efficiency when trained for their dedicated job within the workflow. Across the board, businesses will understand the importance of their own data in driving AI value, and fine-tuned SLMs are key to unlocking that value in mature agentic solutions.</p><h3>From Experiments to Operations</h3><p>If 2025 was about experimenting with AI-powered assistants, 2026 will be about operationalizing AI agents as an everyday part of business. Done right, these agents can relieve employees of drudgery, unlock new levels of productivity, and open up creative ways of working that weren’t possible before. A finance team might close the books in seconds with an army of AI helpers, or a customer service department might offer genuine 24/7 instant resolution through a network of smart agents that actually understand context and can take action.</p><p>The infrastructure is in place. The standards are being adopted. The security frameworks are maturing. The tools are getting better every month. We’ve moved from “can we build agents?” to “how do we deploy them responsibly at scale?” That’s a fundamentally different question, and it’s the right question to be asking.</p><p>So as we move through 2026, keep your eyes on cross-enterprise agent collaboration, the maturation of observability standards and the rise of fine-tuned SLMs. If your organization is looking to move beyond experimentation and into production-grade agent deployments, we’d love to help. Whether you’re exploring how agents might fit into your workflows or ready to integrate them into your systems, we can help you navigate the complexity, avoid the pitfalls, and build something that actually works. Interested in chatting about what agentic AI could unlock for your organization?<a href="https://osedea.com/contact"> Reach out</a> and let’s figure it out together.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8df99c88fee1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/osedea/the-agent-revolution-2025-recap-2026-outlook-8df99c88fee1">The Agent Revolution: 2025 recap &amp; 2026 outlook</a> was originally published in <a href="https://medium.com/osedea">Osedea</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La diversité et l’inclusion : une « superpriorité »]]></title>
            <link>https://medium.com/osedea/la-diversit%C3%A9-et-linclusion-une-superpriorit%C3%A9-8ae28caf5df8?source=rss----9329c044fe91---4</link>
            <guid isPermaLink="false">https://medium.com/p/8ae28caf5df8</guid>
            <category><![CDATA[diversité]]></category>
            <dc:creator><![CDATA[Ana Collantes]]></dc:creator>
            <pubDate>Tue, 28 Jul 2020 14:53:17 GMT</pubDate>
            <atom:updated>2020-08-20T13:51:51.245Z</atom:updated>
            <content:encoded><![CDATA[<h3>La diversité et l’inclusion : une « superpriorité »</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zlT7-FyBfQPJmb3rxmtWyQ.png" /></figure><p><em>English version, </em><a href="https://medium.com/osedea/diversity-and-inclusion-more-than-a-priority-a-hyper-focus-631323b0a1aa?source=collection_category---4------0-----------------------"><em>here</em></a><em>.</em></p><p>Vous pouvez trouver cet article <a href="https://www.osedea.com/fr/blogue/la-diversit%C3%A9-et-linclusion-une-superpriorit%C3%A9-8ae28caf5df8">ici</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8ae28caf5df8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/osedea/la-diversit%C3%A9-et-linclusion-une-superpriorit%C3%A9-8ae28caf5df8">La diversité et l’inclusion : une « superpriorité »</a> was originally published in <a href="https://medium.com/osedea">Osedea</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Diversity and inclusion: more than a priority, a “hyper-focus”]]></title>
            <link>https://medium.com/osedea/diversity-and-inclusion-more-than-a-priority-a-hyper-focus-631323b0a1aa?source=rss----9329c044fe91---4</link>
            <guid isPermaLink="false">https://medium.com/p/631323b0a1aa</guid>
            <category><![CDATA[diversity]]></category>
            <category><![CDATA[diversity-in-tech]]></category>
            <category><![CDATA[diversity-and-inclusion]]></category>
            <dc:creator><![CDATA[Ana Collantes]]></dc:creator>
            <pubDate>Mon, 29 Jun 2020 20:52:48 GMT</pubDate>
            <atom:updated>2020-09-09T15:33:08.079Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zlT7-FyBfQPJmb3rxmtWyQ.png" /></figure><p>French version, <a href="https://medium.com/osedea/la-diversit%C3%A9-et-linclusion-une-superpriorit%C3%A9-8ae28caf5df8">here</a>.</p><p>We’ve moved this article <a href="https://www.osedea.com/fr/blogue/diversite-et-inclusion">here</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=631323b0a1aa" width="1" height="1" alt=""><hr><p><a href="https://medium.com/osedea/diversity-and-inclusion-more-than-a-priority-a-hyper-focus-631323b0a1aa">Diversity and inclusion: more than a priority, a “hyper-focus”</a> was originally published in <a href="https://medium.com/osedea">Osedea</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Droit au cœur : cultiver la reconnaissance au travail]]></title>
            <link>https://medium.com/osedea/droit-au-c%C5%93ur-cultiver-la-reconnaissance-au-travail-6973ec3d6c82?source=rss----9329c044fe91---4</link>
            <guid isPermaLink="false">https://medium.com/p/6973ec3d6c82</guid>
            <category><![CDATA[bonheur-au-travail]]></category>
            <category><![CDATA[culture]]></category>
            <category><![CDATA[reconnaissance]]></category>
            <dc:creator><![CDATA[Ivana Markovic]]></dc:creator>
            <pubDate>Mon, 01 Jun 2020 17:34:01 GMT</pubDate>
            <atom:updated>2020-09-09T14:05:52.888Z</atom:updated>
            <content:encoded><![CDATA[<h3>Droit au cœur : cultiver la reconnaissance au travail</h3><p><em>English version </em><a href="https://medium.com/osedea/straight-to-the-heart-building-a-culture-of-praise-in-the-workplace-a47ebb555849"><em>here</em></a><em>.</em></p><p>Vous pouvez trouver cet article <a href="https://www.osedea.com/fr/blogue/reconnaissance-travail-conseils">ici</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6973ec3d6c82" width="1" height="1" alt=""><hr><p><a href="https://medium.com/osedea/droit-au-c%C5%93ur-cultiver-la-reconnaissance-au-travail-6973ec3d6c82">Droit au cœur : cultiver la reconnaissance au travail</a> was originally published in <a href="https://medium.com/osedea">Osedea</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Simulating Bird Flocks — With TypeScript]]></title>
            <link>https://medium.com/osedea/boids-e98093b3b4fe?source=rss----9329c044fe91---4</link>
            <guid isPermaLink="false">https://medium.com/p/e98093b3b4fe</guid>
            <category><![CDATA[boid]]></category>
            <category><![CDATA[algorithms]]></category>
            <category><![CDATA[physics]]></category>
            <category><![CDATA[simulation]]></category>
            <dc:creator><![CDATA[Zack Therrien]]></dc:creator>
            <pubDate>Thu, 21 May 2020 15:41:53 GMT</pubDate>
            <atom:updated>2020-10-12T00:42:45.376Z</atom:updated>
            <content:encoded><![CDATA[<h3>Simulating Bird Flocks —Emergent Behaviour</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5aTYVGQNlztjDfy121wR2w.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@wuzclicks?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Aryan Singh</a> on <a href="https://unsplash.com/s/photos/animal-migration?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>This article is also available <a href="https://www.osedea.com/en/blog/TypeScript-boids">here</a>.</p><p>If you’re interested in: <em>simulations </em>🖥<em>, how the universe works </em>💫<em>, how an ant colony manages to gather 125kg of food a day </em>🐜<em>, how bird flocks emerge </em>🦅<em>,</em> then natural systems modelling may be the topic for you.</p><p>One example of natural systems are bird flocks. Simulating a flock of birds is surprisingly simple. There are 3 basic rules:</p><ul><li><strong>Cohesion</strong>: Birds will try to move towards other birds</li><li><strong>Separation</strong>: Birds will try to avoid crashing into other birds</li><li><strong>Alignment</strong>: Birds will try to move in the same direction as other birds</li></ul><p>Using these three simple rules, we can create impressively life-like simulations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*79dtG_pPI7a3L2_IsF8FyA.gif" /><figcaption>Boids algorithm example</figcaption></figure><p>The three rules mentioned above is known as the <em>Boids</em> algorithm, which was originally developed by Craig Reynolds in the 80’s and has been implemented <em>countless</em> times. From Wikipedia boid is defined as:</p><blockquote>The name “boid” corresponds to a shortened version of “bird-oid object”, which refers to a bird-like object. “boid” is also a New York Metropolitan dialect pronunciation for “bird”.</blockquote><p>This article is yet another tutorial on the amazing phenomena of emergent behavior based on simple rules.</p><h3>1. Basic structure</h3><p>I made a lightweight “rendering engine” for TypeScript that allows me to quickly prototype animations using the HTML5 Canvas. <a href="https://github.com/ZackTherrien/typescript-render-engine">View it on Github</a>. This is what I will be using here.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/cadcdfa97274fa506cfab925037c867f/href">https://medium.com/media/cadcdfa97274fa506cfab925037c867f/href</a></iframe><p>Let’s create our boids class which will hold our rendering engine, and all the birds tracked by the system.</p><p>In our constructor, we first define the canvas where the birds will be rendered with the call to “<em>new RenderingLayer()”.</em></p><p>We then add a few hundred birds to simulate. These birds will first start at random locations on the screen.</p><p>We can then start the rendering by calling the start method on the engine.</p><h4>1.1 Basic Bird Class</h4><p>Each bird has a position, velocity and acceleration vector. Just as we’ve learnt in physics, position is calculated from velocity, which in turn is calculated by the accelerations. Acceleration is found by the following equation:</p><p><em>Force = Mass*Acceleration </em>therefore<em> Acceleration= Force/Mass</em>. In a universe where there is no mass (our simulation), then<em> Acceleration = Force.</em></p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/ffbe8c4508d703b077c51957cd73efe3/href">https://medium.com/media/ffbe8c4508d703b077c51957cd73efe3/href</a></iframe><p>The velocity here is initially given based on a random initial angle. The X component of our velocity vector can be found using the cosine of our angle, whilst the Y component can be found using the sine.</p><p>However since this is graphics based mathematics, angles are not given in degrees, they are instead in radians.</p><p>Therefore, we must convert our random 0–360° into radians.</p><p>We then normalize this vector so it is of length one. This is important, because without this, birds going at 45° angles will be displaced further than birds going at a 90°. (Hint: a²+b² = c²). However this unit vector means birds will travel 1 pixel, every 16ms (1000ms / 60fps = 16ms per frame). Let’s change that by multiplying by the bird speed. This will result in a velocity of: 100px per 1000ms. Or 100px/second.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/5e2d58ea80a7aab188f5a8400327d12d/href">https://medium.com/media/5e2d58ea80a7aab188f5a8400327d12d/href</a></iframe><p>To render the bird, we can simply attach a render function to our bird.</p><p>Since we want our bird to have an orientation based on their velocity, we must rotate the canvas, then draw the bird, then undo the rotation so that the next bird can be rendered properly.</p><p>Here a bird is represented by a simple triangle.</p><p>I opt to rotate by the opposite values instead of saving canvas states and restore canvas for performance.</p><p>We end up with a decently interesting random mess already:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_2LH5TZTlE9TCfNDzF6cbw.png" /><figcaption>Random bird placement</figcaption></figure><h4>1.2 Adding velocity!</h4><p>By using the engine, we can add velocity with ease. We add an update function (which is an optional method on the IEntity interface) and take into account the time since the last render to get a fluid movement. Using deltaTime is useful for framerates that may not be constant (i.e. going from 30fps to 60fps would calculate position badly).</p><p>The <em>checkBoundary() </em>function simply wraps the bird around to the opposite side of the screen.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/1f844ae349c5fa45a076bdadd03b71fa/href">https://medium.com/media/1f844ae349c5fa45a076bdadd03b71fa/href</a></iframe><p>To get the position, we use the velocity and multiply by the amount of time this velocity was maintained. In this case, the velocity will be maintained for roughly 16ms, going at 100px/s the boid will have moved 1.6px.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BUu91lVHm4jkp-HKLzghkg.gif" /><figcaption>Random movement of boids</figcaption></figure><p>And with this, we are now ready to change their behavior!</p><h3>2. Implementing Boid Rules</h3><p>In my implementation, performance is a big factor, especially because it is ran in JavaScript (we all know it isn’t very performant…).</p><p>The pseudo-code for Boids algorithm is originally of O(rN²) where r is the amount of rules, in this case 3. I opted to increase performance by removing consecutive inner loops. This is done with accumulators, they add up the values of each boid, before being calculated. This reduces the complexity to O(N²).</p><p>A new function to perform all maneuvers will help separate our code out:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/597b8b34fb1ce9e8c384cbbaf99a9057/href">https://medium.com/media/597b8b34fb1ce9e8c384cbbaf99a9057/href</a></iframe><p>Each frame the rule accumulators are reset, and re-calculated. The acceleration is defined as the sum of all boid rules.</p><p>Birds can only see other birds if they are close by as birds are not omnipotent.</p><p>The velocity is then calculated from the acceleration.</p><p>Setting the magnitude of our velocity to the maximum bird speed will ensure that the birds don’t end up going the speed of light ⚡.</p><h4><strong>2.1 Cohesion</strong></h4><p>Cohesion says that birds will try to move towards the center mass of <em>nearby</em> birds. This can be done by adding the position of nearby birds together and then finding the distance from the current bird’s position.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d993dba9520c98d99701c95137e39aa2/href">https://medium.com/media/d993dba9520c98d99701c95137e39aa2/href</a></iframe><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/46993c2379c4916ddb21e11188bda390/href">https://medium.com/media/46993c2379c4916ddb21e11188bda390/href</a></iframe><p>The position of the nearby birds are accumulated by summing their positions.</p><p>And then the rule is performed by dividing by the amount of birds seen, and finding the distance between the current bird and the center of mass.</p><p>A constant can be used to resist this cohesion force.</p><p>Resulting in a pretty satisfying animation already.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ChqP0khbQ9pPxASsBEIrHA.gif" /><figcaption>Boids cohesion rule</figcaption></figure><p>However there is one problem… all the birds just collide together and will form a single dot. This is where the 2nd rule comes in…</p><h4>2.2 Separation</h4><p>Separation fixes the problem that cohesion brings, it isn’t very natural for birds to just collide together and not to drop out of sky 💀. A new rule — separation — is created to keep birds a certain distance away from other birds.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/eface632a06282c049c61405a58cddca/href">https://medium.com/media/eface632a06282c049c61405a58cddca/href</a></iframe><p>In this case, we accumulate the distance between two birds (if they’re within separation distance).</p><p>We can add this value directly to velocity to get the separation factor.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5HthlhrQaRxvuENUoW_J9g.gif" /><figcaption>Boids separation rule + cohesion</figcaption></figure><h4>2.3 Alignment</h4><p>Although we fixed the problem with cohesion by adding the separation rule, a new problem can be seen… The birds will just coalesce into a ball, and end up canceling the movement out. To fix this, we can add a new force aligning birds in the average direction of movement.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/5311ef0ae0dc1bf689f9da337626a402/href">https://medium.com/media/5311ef0ae0dc1bf689f9da337626a402/href</a></iframe><p>Alignment is defined as taking the average velocities of the nearby birds, and subtracting our velocity from this average.</p><p>The bird alignment eagerness constant is a meta variable allowing us to change the behavior of the flock from a constants file.</p><p>And there we have it. Add the three rules together… Change values for some meta variables… and we get flock simulation.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OHeclLf8sTf5dQLc7jG26w.gif" /><figcaption>Boids alignment rule + separation + cohesion</figcaption></figure><h3>3. Extras</h3><p>Original research by Craig Reynolds — <a href="http://www.red3d.com/cwr/boids/">http://www.red3d.com/cwr/boids/</a></p><p>Further improvement ideas:</p><ol><li>Hunger, exhaustion, maximum velocity change (before death), age;</li><li>Predators, Mating, different rule weights based on behavior;</li><li>Genetic algorithm! NEAT?;</li></ol><p>I wanted to add a nice background for the birds, so I made one using Perlin noise.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*v-AZ8mztbiilK487wwlzGg.gif" /></figure><p><a href="https://github.com/ZackTherrien/boids">Boids source code on Github</a> — <a href="https://zacktherrien.github.io/boids/">demo</a></p><p><a href="https://github.com/ZackTherrien/typescript-render-engine">TypeScript Render Engine on Github</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e98093b3b4fe" width="1" height="1" alt=""><hr><p><a href="https://medium.com/osedea/boids-e98093b3b4fe">Simulating Bird Flocks — With TypeScript</a> was originally published in <a href="https://medium.com/osedea">Osedea</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How our business practices prepared us for a worldwide crisis]]></title>
            <link>https://medium.com/osedea/how-our-business-practices-prepared-us-for-a-worldwide-crisis-570323d700da?source=rss----9329c044fe91---4</link>
            <guid isPermaLink="false">https://medium.com/p/570323d700da</guid>
            <category><![CDATA[team-collaboration]]></category>
            <category><![CDATA[good-business-practice]]></category>
            <category><![CDATA[entrepreneur]]></category>
            <category><![CDATA[business-strategy]]></category>
            <category><![CDATA[covid-19-crisis]]></category>
            <dc:creator><![CDATA[Martin Coulombe]]></dc:creator>
            <pubDate>Mon, 13 Apr 2020 13:56:59 GMT</pubDate>
            <atom:updated>2020-09-09T14:11:23.779Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0rAwi0vAfFaQs4oV7UoBSA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@lenneek?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Elena Koycheva</a> on <a href="https://unsplash.com/s/photos/success?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>We’ve moved this article <a href="https://www.osedea.com/en/blog/keep-business-running-during-crisis">here</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=570323d700da" width="1" height="1" alt=""><hr><p><a href="https://medium.com/osedea/how-our-business-practices-prepared-us-for-a-worldwide-crisis-570323d700da">How our business practices prepared us for a worldwide crisis</a> was originally published in <a href="https://medium.com/osedea">Osedea</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How Open Source allowed us to raise $5000 for a cause]]></title>
            <link>https://medium.com/osedea/how-open-source-allowed-us-to-raise-5000-for-a-cause-9ef905c4e3a6?source=rss----9329c044fe91---4</link>
            <guid isPermaLink="false">https://medium.com/p/9ef905c4e3a6</guid>
            <category><![CDATA[team-building]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[teamwork]]></category>
            <category><![CDATA[team-collaboration]]></category>
            <dc:creator><![CDATA[Martin Coulombe]]></dc:creator>
            <pubDate>Tue, 31 Mar 2020 19:10:24 GMT</pubDate>
            <atom:updated>2020-09-09T14:11:50.411Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uPK707OD_xnvCQhofyS7GA.jpeg" /></figure><p><em>Version française,</em><a href="https://medium.com/osedea/os4g-french-f4a2a9edc081"><em> ici</em></a><em>.</em></p><p>We’ve moved this article <a href="https://www.osedea.com/en/blog/open-source-for-good">here</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9ef905c4e3a6" width="1" height="1" alt=""><hr><p><a href="https://medium.com/osedea/how-open-source-allowed-us-to-raise-5000-for-a-cause-9ef905c4e3a6">How Open Source allowed us to raise $5000 for a cause</a> was originally published in <a href="https://medium.com/osedea">Osedea</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[5 000 $ pour une bonne cause grâce à l’open-source]]></title>
            <link>https://medium.com/osedea/5000-pour-une-bonne-cause-grace-a-lopen-source-f4a2a9edc081?source=rss----9329c044fe91---4</link>
            <guid isPermaLink="false">https://medium.com/p/f4a2a9edc081</guid>
            <category><![CDATA[team-collaboration]]></category>
            <category><![CDATA[team-building]]></category>
            <category><![CDATA[teamwork]]></category>
            <category><![CDATA[open-source]]></category>
            <dc:creator><![CDATA[Martin Coulombe]]></dc:creator>
            <pubDate>Tue, 31 Mar 2020 19:07:50 GMT</pubDate>
            <atom:updated>2020-09-09T14:12:24.798Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uPK707OD_xnvCQhofyS7GA.jpeg" /></figure><p><em>English version, </em><a href="https://medium.com/osedea/how-open-source-allowed-us-to-raise-5000-for-a-cause-9ef905c4e3a6"><em>here.</em></a></p><p>Vous pouvez trouver cet article <a href="https://www.osedea.com/fr/blogue/open-source-pour-une-bonne-cause">ici</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f4a2a9edc081" width="1" height="1" alt=""><hr><p><a href="https://medium.com/osedea/5000-pour-une-bonne-cause-grace-a-lopen-source-f4a2a9edc081">5 000 $ pour une bonne cause grâce à l’open-source</a> was originally published in <a href="https://medium.com/osedea">Osedea</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to learn smarter, not harder, in the age of time deficit]]></title>
            <link>https://medium.com/osedea/how-to-learn-smarter-not-harder-in-the-age-of-time-deficit-4829ba2258d6?source=rss----9329c044fe91---4</link>
            <guid isPermaLink="false">https://medium.com/p/4829ba2258d6</guid>
            <category><![CDATA[talent-management]]></category>
            <category><![CDATA[microlearning]]></category>
            <category><![CDATA[growth]]></category>
            <category><![CDATA[improvement]]></category>
            <category><![CDATA[training]]></category>
            <dc:creator><![CDATA[Ivana Markovic]]></dc:creator>
            <pubDate>Wed, 18 Mar 2020 13:11:04 GMT</pubDate>
            <atom:updated>2020-09-09T14:13:06.508Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*y3dkuNGZq-zghf1v1rCubw.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@gaellemarcel?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Gaelle Marcel</a> on <a href="https://unsplash.com/s/photos/learning?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>We have migrated this post <a href="https://www.osedea.com/en/blog/How-to-learn-smarter-not-harder">here</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4829ba2258d6" width="1" height="1" alt=""><hr><p><a href="https://medium.com/osedea/how-to-learn-smarter-not-harder-in-the-age-of-time-deficit-4829ba2258d6">How to learn smarter, not harder, in the age of time deficit</a> was originally published in <a href="https://medium.com/osedea">Osedea</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Four solid reasons why real pros are a must to develop your digital project]]></title>
            <link>https://medium.com/osedea/4-solid-reasons-why-real-pros-are-a-must-to-build-your-digital-project-4cdaeda36e82?source=rss----9329c044fe91---4</link>
            <guid isPermaLink="false">https://medium.com/p/4cdaeda36e82</guid>
            <category><![CDATA[best-practices]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[agile]]></category>
            <category><![CDATA[design-thinking]]></category>
            <category><![CDATA[technology]]></category>
            <dc:creator><![CDATA[Thierry Marcoux]]></dc:creator>
            <pubDate>Mon, 09 Mar 2020 19:20:17 GMT</pubDate>
            <atom:updated>2020-09-09T14:43:10.856Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XwgdXqvpWClzMeNtiwVkZQ.png" /></figure><p>We’ve moved this story <a href="https://www.osedea.com/en/blog/digital-solutions-and-why-you-need-pros">here</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4cdaeda36e82" width="1" height="1" alt=""><hr><p><a href="https://medium.com/osedea/4-solid-reasons-why-real-pros-are-a-must-to-build-your-digital-project-4cdaeda36e82">Four solid reasons why real pros are a must to develop your digital project</a> was originally published in <a href="https://medium.com/osedea">Osedea</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>