Ship better software, faster

We help startups and scale ups build, modernize, and scale their apps - combining senior engineering with Ruby, Python, and Node to deliver measurable outcomes.

Crafting user experiences
Building scalable products

The challenges we solve every week

Experience the advantage of an all-inclusive project solution, where excellence, speed, and responsiveness converge to ensure the highest quality outcome.

  • Legacy apps slowing you down

    Modernization & upgrades with zero downtime

  • Backlog bigger than your team

    Elastic feature pods that integrate seamlessly

  • Want to add AI features

    Build, integrate, and deploy data-powered APIs fast

  • App performance issues

    Profiling and optimization across Ruby, Python, and Node

What We Do

Every project needs the right balance between delivery speed, architectural acumen and lasting quality. Infinity Loop brings a flexible, senior only engineering model that adapts to what your product actually needs. Ruby, Python, Node: we pick the stack that fits. Development services crafted to deliver value.

burger illustration

Modernization &
Upgrades

Refactor, upgrade, and stabilize existing apps without downtime.

Example: Rails 5 → Rails 7 migration completed in 6 weeks with 40% faster deploys.

Read more
burger illustration

Performance & Observability

Detect bottlenecks, optimize load times, and build reliability into every release.

Example: Reduced p95 latency by 63% across multi-stack API workloads.

Read more
burger illustration

AI-Enabled MVPs & Features

Build intelligent product features with Python/FastAPI and integrate them into Rails or Node apps seamlessly.

Example: Integrated ML-powered recommendations into SaaS product within 3 sprints.

Read more
burger illustration

More features

Neque Dolor, fugiat non cum doloribus aperiam voluptates nostrum.

Read more

How We Work

Delivery That’s Predictable and Proven. No jargons. Just clarity, accountability, and measurable progress.

Scope Clearly

Define success, risks, and metrics before we start.

icon illustration

Requirements Validation

Ensure goals, risks, and success metrics are fully understood and agreed upon from the start.

icon illustration

Clear Roadmap

Define deliverables, boundaries, and priorities so everyone knows what’s in-scope and what’s not.

scope clearly illustration
scope clearly illustration
scope clearly illustration

We’re Engineers Who Care About Results.

Infinity Loop is a UK-based software development partner led by senior engineers who’ve scaled products, rebuilt legacy systems, and delivered under tight deadlines.

We work asynchronously, communicate transparently, and measure what matters, so your roadmap actually moves.

Get started

Case Studies

Recent Work & Measurable Wins

Thoughts on design, business and indie-hacking

ruby-on-rails

Why Your Rails 7.0 or 7.1 App Is Already Unsupported

If your application is running Rails 7.0 or 7.1, you probably still think of yourself as being on a modern stack. You're not. On 29 October 2025, the Rails core team announced that **Rails 7.0 and 7.1 had reached end of life** and would receive no further security patches. Rails 7.0.10 and Rails 7.1.6 were the final releases of those series. For teams that upgraded off Rails 6 in the last couple of years, this is uncomfortable news. The upgrade felt recent. The codebase is still using Hotwire, Turbo, and Stimulus. The Gemfile looks current. And yet, as of writing, the application is running on a framework version that has moved outside the Rails support window. This isn't a "next year" problem. It's already happened, and the consequences are already measurable. ## The Hard Dates Rails follows a fixed, published support policy. From Rails 7.2 onwards, each minor release receives one year of bug-fix support and two years of security support from its release date, after which the version reaches end of life. Here's where the recent versions actually stand: |Rails Version|First Released|Status| |---|---|---| |Rails 6.1|December 2020|EOL since October 2024| |Rails 7.0|December 2021|EOL since 1 April 2025| |Rails 7.1|October 2023|EOL since 1 October 2025| |Rails 7.2|August 2024|Security support until 9 August 2026| |Rails 8.0|November 2024|Security support until 7 November 2026| |Rails 8.1|October 2025|Current stable (8.1.3 as of March 2026); security support until 10 October 2027| Two things stand out. First, **Rails 7.1 only reached end of life seven months ago**. That feels recent enough that many teams haven't internalised it yet. The codebase still appears healthy day to day, CI passes, deployments succeed, users are unaffected, which makes it easy to forget that support has already ended. Second, **even Rails 7.2 has less than three months of security support remaining**. It is already outside the bug fix window, so treating 7.2 as a long term stopping point is still a short lived plan. ## The March 2026 Patch You Didn't Receive The most concrete cost of running an unsupported Rails version isn't theoretical. It's measurable in CVEs. On 23 March 2026, the Rails core team released coordinated security patches across all supported branches: Rails 7.2.3.1, 8.0.4.1, and 8.1.2.1. The following day, Rails 8.0.5 and 8.1.3 shipped as regular bug-fix releases that also included those security fixes. These releases addressed ten vulnerabilities including path traversal issues, cross-site scripting vectors, and denial-of-service paths. Applications on Rails 7.2 or later received the fixes the day they shipped. Applications on Rails 7.0 or 7.1 received no official patched release. Some or all of these vulnerabilities may affect those branches, but unsupported versions are not included in the official fix train. The exploit paths are now publicly documented in the CVE database; the corresponding patches are not available through the standard upstream path. This is the structural shape of every future security release. The Rails team will patch the supported branches. Anything older stays exposed. The gap doesn't close, it widens. ## The Ruby Compounding Problem Rails 7.0 and 7.1 don't fail in isolation. They tend to be paired with Ruby versions that are themselves on the way out, or already gone. On 1 April 2026, **Ruby 3.2 entered end-of-life status**, shortly after the 3.2.11 release on 27 March 2026. Ruby 3.3 dropped to security-only maintenance the same day. Ruby 4.0 shipped on Christmas Day 2025 and is now the current stable line. Many Rails 7.0 and 7.1 applications were originally deployed on Ruby 3.1 or earlier. Ruby 3.1 reached end of life in March 2025. One common configuration from teams that upgraded several years ago looks like this: - Rails 7.1 (EOL October 2025) - Ruby 3.1 (EOL March 2025) That's a double end-of-life configuration. Both the framework and the runtime are unsupported. Security patches in either layer will no longer arrive through the standard upstream maintenance path. Even teams that paired Rails 7.1 with Ruby 3.2, which was the modern choice when 7.1 shipped, are now operating on a runtime that no longer receives any updates. The protection window closed in March. This is the part teams often miss. Rails EOL and Ruby EOL aren't separate problems. They compound. An unpatched runtime exposes the application below the framework layer, where Rails-level defences don't apply. ## Compliance Isn't Theoretical Anymore For teams in regulated sectors, financial services, healthcare, public sector, running unsupported framework versions has stopped being a soft issue. Frameworks such as PCI DSS explicitly require organisations to protect system components from known vulnerabilities by applying applicable vendor-supplied security patches. SOC 2 and ISO 27001 audits commonly evaluate vulnerability and patch management controls, so unsupported framework versions may become evidence of unmanaged risk during audit and vulnerability reviews. The questions auditors are now asking: - What's your upgrade plan? - What's the timeline? - What compensating controls are in place during the gap? If you can't answer those clearly, expect findings. Findings turn into remediation deadlines. Remediation deadlines turn into emergency upgrades, which are the most expensive kind. ## The Hiring Signal A Rails 7.1 codebase in mid-2026 can also send a negative hiring signal. Senior Rails developers often look for evidence that a team keeps dependencies current, has an upgrade roadmap, and avoids multi-year framework debt. When the version itself answers those questions badly, the strongest candidates self-select out before the interview. The roles still get filled, but the candidate pool narrows in ways that aren't always visible from inside the hiring process. There's a retention angle too. Engineers joining a codebase without a visible upgrade roadmap may perceive accumulating technical debt as a signal about engineering priorities. The cost of the upgrade is bounded; the cost of repeatedly replacing engineers who came in expecting modern tooling is not. ## Ecosystem Drift Is Already Underway The Rails community moves forward whether your team is ready or not. Ecosystem drift is likely to accelerate now that 7.0 and 7.1 sit outside the supported window: - Gem maintainers have less incentive to keep CI matrices covering EOL Rails versions. - New gems and major version bumps increasingly assume Rails 8-era defaults. - Documentation, tutorials, and Stack Overflow answers skew towards current patterns. - Deployment tooling like Kamal 2 is built around current conventions. This is the slow erosion. Development friction tends to increase over time as newer libraries, documentation, and defaults increasingly target supported Rails versions. The cost of every individual change goes up, quietly, until the team notices that they're delivering less than they used to and can't pinpoint why. ## What Upgrading Actually Looks Like The good news: the upgrade path from 7.1 to 8.1 is genuinely manageable. It's far less work than the 6.x to 7.x jump was, and the tooling has improved. The recommended sequence: ``` Rails 7.1 → 7.2 → 8.0 → 8.1 ``` Each step should be: 1. **Bounded**, one minor version per pull request, merged independently. 2. **Tested**, the existing test suite is your safety net; if coverage is thin, that's the first investment. 3. **Deployed**, each version reaches production before the next begins. 4. **Reversible**, feature flags and dual-running where the risk profile demands it. Many teams find a 7.1 → 8.1 upgrade achievable within several weeks of focused work, although timelines vary substantially by application complexity and test coverage. The 7.0 → 8.1 path involves an additional minor-version hop. Applications with significant custom middleware, heavy Active Record extensions, or thin test coverage can take longer. Ruby should be upgraded in parallel, ideally to 3.4 or 4.0, depending on gem compatibility. Both are in normal maintenance. Their official end-of-life dates are still listed as TBD, but either is a safer runtime target than Ruby 3.1 or 3.2 and resets the runtime support window for years. ## The ROI Is Clearer Than the Cost Upgrade projects feel expensive because the cost is concentrated and the benefit is distributed. But the benefit compounds: - **Security patches resume.** Future Rails security fixes will once again reach your application. - **Compliance answers become straightforward.** Framework-support findings become significantly easier to address. - **Hiring improves.** A Rails 8.1 codebase signals technical health. - **Delivery accelerates.** Modern tooling, better error messages, faster feedback. - **Future upgrades are smaller.** Teams that stay on supported versions face one-minor-version upgrades, not multi-year migrations. The cost of staying put isn't static. Every quarter the gap widens, the gem ecosystem drifts further, and the eventual migration grows. ## The Honest Conclusion If you're on Rails 7.0 or 7.1, you're not behind. You're unsupported. There's a difference, and it matters. "Behind" implies time to catch up. "Unsupported" means the next security advisory will not include you, the next audit is harder to answer, and the next senior candidate may read the version as a signal before they ever review the codebase itself. The upgrade path exists. The tooling is mature. The community has done it thousands of times. The only real question is whether the work happens on your schedule or in response to an incident. --- ### Ready to upgrade your Rails application? We help teams move from Rails 6.x and 7.x to current supported versions without disrupting production. Audit first, incremental migration, zero downtime, knowledge transfer to your team. Get in touch at [wm@wagnermatos.co.uk](mailto:wm@wagnermatos.co.uk).

minute read
ruby-on-rails software-modernization

The True Cost of Staying on Rails 6 A Business Case for Upgrading

If your application is still running Rails 6, you're not just behind on features. You're exposed. Rails 6.0 reached end of life in **mid-2023**. Rails 6.1 reached **end of maintenance in late 2024**. As of January 2026, both versions are **unsupported by the Rails core team and no longer receive official security patches or bug fixes**. And yet, thousands of production applications continue to run on these versions. This isn't a technical problem you can defer indefinitely. It's a business risk that compounds daily. Let's break down what staying on Rails 6 actually costs, and why the ROI on upgrading is clearer than ever. ## The Security Reality Since Rails 6.1 went end of life, the framework has received multiple security patches, none of which apply to your application. Recent CVEs affecting Rails include: **CVE-2025-24293** - A critical vulnerability in Active Storage that, in certain configurations, allows remote code execution through image transformation methods. Security researchers documented exploit paths and attack surfaces. **CVE-2025-55193** - ANSI escape injection in Active Record logging, enabling potential log manipulation attacks. **CVE-2024-27282** - An arbitrary memory address read vulnerability affecting Active Storage sessions. These patches were released for **supported Rails branches at the time** (including 7.1.x, 7.2.x, and 8.0.x). If you're on Rails 6, you received nothing. This isn't theoretical. The exploit code exists. The attack surfaces are documented. Security researchers have published proof-of-concept demonstrations. Every day your application remains unpatched is another day of exposure. ## The Ruby Compounding Problem Rails 6 doesn't just have a Rails problem. It has a Ruby problem. Rails 6.x **allows** older Ruby versions that are themselves unsupported: | Rails Version | Minimum Ruby | Ruby Status | | ------------- | ------------ | ------------------------------ | | Rails 6.0 | Ruby 2.5 | EOL since April 2021 | | Rails 6.1 | Ruby 2.5 | EOL since April 2021 | | Rails 7.2 | Ruby 3.1 | EOL since March 2025 | | Rails 8.0 | Ruby 3.2 | Security-only until March 2026 | | Rails 8.1 | Ruby 3.2 | Security-only until March 2026 | Ruby 4.0 was released in December 2025, introducing performance improvements and ongoing advances in Ruby’s execution and JIT infrastructure. Running Rails 6 on Ruby 2.7 or 3.0? You're operating on a double-EOL stack: an unsupported framework running on an unsupported runtime. This isn't just about patches. It's about the security perimeter of your entire application. ## Hiring Friction Is Real Technical debt has a recruiting cost. Rails developers evaluate potential employers partly on their stack. A Rails 6 codebase signals several things to experienced candidates: **Deferred maintenance.** If upgrades have been postponed for years, what else has been neglected? **Modernisation debt.** They'll be spending months upgrading before shipping features. **Tool limitations.** Modern gems, deployment tools, and developer experience improvements aren't available. Senior Rails developers want to work with current tooling. They want Hotwire, Turbo, Stimulus, Solid Queue, Kamal 2, and the productivity improvements that Rails 7 and 8 deliver. Advertising a Rails 6 role in 2026 narrows your candidate pool significantly, and often attracts engineers looking for any job rather than the best engineers looking for the right opportunity. The cost isn't just in recruitment fees. It's in the quality and motivation of the team you're able to build. ## Ecosystem Drift Rails doesn't exist in isolation. Your application depends on dozens of gems, each with their own maintenance cycles. As the ecosystem moves forward, compatibility with Rails 6 drops. Here's what's happening now: **Gem abandonment.** Many gems no longer test against Rails 6. Some explicitly drop support. **Dependency conflicts.** Security updates in gems may require Rails 7+ features. **CI/CD friction.** Build matrices that once included Rails 6 are being trimmed. **Documentation gaps.** Guides, tutorials, and Stack Overflow answers increasingly assume Rails 7+. This creates a slow erosion. Features that would take a day to implement on Rails 8 take a week on Rails 6, if they're possible at all. Gem authors aren't obligated to maintain backward compatibility forever. The community moves forward, and stragglers are left behind. ## What You're Missing Rails 8.1, released in October 2025, represents the current state of the framework. Here's what it offers that Rails 6 doesn't: **Improved job resiliency** - Rails 8 introduces better primitives and patterns for handling long-running and restart-safe background jobs. **Local CI Ergonomics**** - Rails 8 improves conventions and tooling around test execution and environment consistency. **Native Markdown Rendering** - First-class support for rendering `.md` files as pages, critical for AI-integrated applications. **Solid Queue, Solid Cache, Solid Cable** - Database-backed alternatives to Redis for queues, caching, and WebSockets—reducing infrastructure complexity. **Kamal 2** - Production deployment with a single `kamal setup` command, including the new Kamal Proxy. **Deprecation Warnings for Associations** - Mark associations as deprecated to surface legacy code usage systematically. Rails 8 simplifies deployment, reduces dependencies, and improves developer productivity across the board. Rails 6 offers none of this. ## The ROI of Upgrading Upgrade projects have a clear return on investment: ### Security Posture Eliminate known vulnerabilities. Reduce incident response risk. Satisfy compliance requirements (SOC2, PCI DSS, HIPAA). ### Developer Productivity Modern tooling, better error messages, faster feedback loops. Features that took days take hours. ### Hiring Advantage Attract and retain senior talent. Signal that you take technical excellence seriously. ### Reduced Maintenance Fewer workarounds. Better gem compatibility. Simpler deployments. ### Future Proofing Position for Ruby 4.0 adoption. Stay on supported Rails versions without emergency migrations. The cost of not upgrading isn't static. It compounds. Every quarter you wait, the gap widens, and the eventual migration becomes more expensive. ## The Path Forward Upgrading from Rails 6 to Rails 8 is not a single leap. The recommended path: ``` Rails 6.1 → 7.0 → 7.1 → 7.2 → 8.0 → 8.1 ``` Each step should be: 1. **Tested thoroughly**: Comprehensive test coverage before you start 2. **Incremental**: One minor version at a time 3. **Monitored**: Deployment observability at each stage 4. **Documented**: Capture learnings for future upgrades A typical Rails 6 → Rails 8 migration for a mid-sized application takes 4 - 8 weeks with dedicated effort. Larger applications with significant legacy code may take longer. The key is starting. ## How We Approach Upgrades At Infinity Loop, we've modernised Rails applications from versions as old as 4.2 to the latest stable releases. Our approach: **Audit First**: We assess your codebase, gem dependencies, and test coverage before proposing a plan. **Incremental Migration**: Step by step upgrades with production deployment at each stage. **Zero Downtime**: Your application stays live throughout the process. **Knowledge Transfer**: Your team learns the upgrade patterns for future maintenance. We've completed Rails 5 → 7 migrations in as little as 6 weeks, with 40% faster deploy times as a side benefit. ## Final Thoughts Staying on Rails 6 isn't neutral. It's a decision with real costs: - Security exposure that increases daily - Hiring friction that limits your team - Ecosystem drift that slows every feature - Technical debt that compounds quarter over quarter The upgrade path is well-documented. The tooling exists. The community has done it thousands of times. The only question is when, and whether you'll do it on your timeline or in response to an incident. If your application is running Rails 6, the business case for upgrading has never been clearer. ### Ready to modernise your Rails application? We help teams upgrade, stabilise, and accelerate delivery across Ruby, Python, and Node stacks, without risking production.

minute read

Marketing in the Age of AI: How Intelligent Systems Power the Infinity Loop

I think is fair to say that there are lot of talk of AI replacing marketeers, but we think AI didn’t replace marketers. We believe it replaced **guesswork**. In 2025, the brands pulling ahead are working *smarter*, using intelligent systems to create faster feedback loops, deeper personalization, and scalable creativity. At **Infinity Loop Marketing**, AI isn’t a buzzword or a shortcut. It’s the engine that keeps the loop spinning. This post breaks down how AI powered marketing fits perfectly into the Infinity Loop philosophy, and how businesses can use it to unlock sustainable, compounding growth. ## The Problem With “More Content” Marketing Most brands feel stuck on a hamster wheel: - More posts - More emails - More ads - More effort Yet results stay flat. Why? Because **volume without intelligence creates noise, not momentum**. Modern customers expect: - Relevance - Timing - Personalization - Value AI enables all four *at scale*. ## AI as the Brain of the Infinity Loop Think of the Infinity Loop as a living system. AI acts as its **central nervous system**. It listens, learns, adapts, and responds continuously. ### AI powers every stage of the loop: ### Discovery & Awareness - Predictive keyword research - Content gap analysis - Trend identification before competitors see it - Smarter ad targeting ### Engagement & Nurture - Dynamic content personalization - Behavior based email flows - Chatbots that actually help (not annoy) - Adaptive landing pages ### Conversion - AI optimized offers - Smart timing for CTAs - Predictive lead scoring - Friction reduction in buyer journeys ### Retention & Advocacy - Churn prediction - Personalized upsell paths - Loyalty optimization - Referral triggers Every interaction feeds data back into the system, strengthening the loop. ## Why AI + Infinite Loops Beat One Time Campaigns Traditional campaigns end. AI powered loops **learn**. ### Continuous Improvement Each click, scroll, and conversion refines future experiences. ### Real Time Adaptation AI reacts faster than teams ever could manually. ### Personalization Without Burnout One strategy. Thousands of customized experiences. ### Scalability Without Chaos Growth without constant reinvention. This is how brands move from reactive marketing to **predictive growth**. ## Common AI Marketing Myths (That Hold Brands Back) ### “AI removes the human touch” **Truth:** AI enhances human creativity by handling analysis, repetition, and optimization. ### “It’s only for big companies” **Truth:** Small and mid-sized brands benefit the most from AI efficiency. ### “AI replaces strategy” **Truth:** AI amplifies strategy, it doesn’t create it. At Infinity Loop, strategy always comes first. AI simply executes it at a higher level. ## How Infinity Loop Marketing Uses AI Differently We don’t plug in random tools and hope for magic. We design **intentional systems**: - AI enhanced content engines - Feedback driven funnels that never stop evolving - Unified data across channels - Human led strategy + machine led optimization Every decision feeds the loop. Every insight compounds. ## The Competitive Advantage of Intelligent Loops In a crowded digital world, attention is scarce but intelligence is powerful. Brands that combine: - AI - Continuous value creation - Relationship-driven marketing - Data-backed decisions Don’t just survive. **They thrive.** ## Final Thought: The Future Isn’t Automated, It’s Intelligent Marketing will never be “set and forget.” But it *can* be designed to learn, adapt, and grow endlessly. That’s the power of AI driven Infinity Loops. And that’s how modern brands win.

minute read

Subscribe to our newsletter

Join 10,000+ entrepeneurs and get creative site breakdowns, design musings and tips directly into your inbox.