# WyeWorks > WyeWorks builds the future of software with AI, trust, and human connection. We combine deep expertise in JavaScript, Ruby, Rust, and Elixir with AI engineering to help teams modernize systems, ship elegant and scalable web apps, and integrate AI into their products. WyeWorks is a software consultancy founded in 2008. We partner with startups and established companies as their engineering team, offering full-stack development, AI engineering, product strategy, and technical leadership. The site is available in English (default) and Spanish (under `/es/`); URL slugs are identical across locales. The blog is English only. ## Main pages - [Home](https://wyeworks.com/): WyeWorks builds the future of software with AI, trust, and human connection: elegant, scalable web apps and expert engineering teams. - [Services & Solutions](https://wyeworks.com/services): From modern web development to AI engineering, the services and solutions that help your product move fast and grow. - [About Us](https://wyeworks.com/about-us): A software team driven by a love for programming and a commitment to doing things differently, with craft and care. - [Our People](https://wyeworks.com/our-people): Meet the engineers and leaders behind WyeWorks: our greatest strength is our people. - [Careers](https://wyeworks.com/careers): We're always looking for talented, kind, and curious people to build great software together. - [Blog](https://wyeworks.com/blog): Insights, engineering deep dives, and leadership lessons from the WyeWorks team. ## Services & Solutions - [AI-Driven Development Consulting](https://wyeworks.com/services/ai-driven-development-consulting): Integrate AI-powered tools and workflows into your development process, adopting best practices for AI-assisted coding, testing, and deployment. - [Ruby and Elixir Expertise](https://wyeworks.com/services/ruby-and-elixir-expertise): Comprehensive tech reviews, code quality improvements, and scaling for complex Ruby and Elixir applications. - [Product Strategy AI-First](https://wyeworks.com/services/product-strategy-ai-first): Assess your AI readiness and find opportunities where AI innovation can elevate your business. - [Rust Development](https://wyeworks.com/services/rust-development): Mission-critical, memory-safe systems built with Rust when performance, security, and efficiency are essential. - [Tech Reviews](https://wyeworks.com/services/tech-review): An outside read on your codebase, delivered in writing in two to three weeks, with a prioritized list of what to address. - [AI Engineering](https://wyeworks.com/services/ai-engineering): AI systems that hold up under real load: hybrid architectures, retrieval pipelines, autonomous agents, and evaluation infrastructure. - [Rapid Prototyping](https://wyeworks.com/services/rapid-prototyping): From concept to MVP in weeks, pairing AI coding agents with senior engineering oversight to move fast without sacrificing quality. - [Modern Web Development](https://wyeworks.com/services/modern-web-development): Full-stack web development, backend and frontend: databases, server-side programming, APIs, and JavaScript frameworks. ## Case Studies - [Fayron](https://wyeworks.com/case-studies/fayron): Turned a networking idea into a Go-To-Market strategy and an MVP ready to raise capital, as product and technology partner. - [Clear Session](https://wyeworks.com/case-studies/clear-session): Helped a healthcare founder transform an idea into a working platform for doctors and patients, built from scratch. - [Crazy Egg](https://wyeworks.com/case-studies/crazy-egg): Scaled the business by developing core features and refining engineering processes. - [AIA](https://wyeworks.com/case-studies/aia): Delivered trust across the entire organization, meeting critical deadlines and doubling team velocity. - [Code Climate](https://wyeworks.com/case-studies/code-climate): Led the Quality development efforts, delivering impactful improvements from week one. - [Argos](https://wyeworks.com/case-studies/argos): Revamped an educational platform, improving the Elixir & LiveView codebase and adding SSO and payments. - [Flavorpill](https://wyeworks.com/case-studies/flavorpill): Achieved an 18-fold increase in concurrent users and sharply reduced response times. - [Fountain](https://wyeworks.com/case-studies/fountain): Launched several new products in a matter of months, enabling the hiring of hundreds of thousands of workers. - [Packlane](https://wyeworks.com/case-studies/packlane): Became the expert engineering team Packlane could trust, launching Shiplane and owning their core product. - [Prisma Live](https://wyeworks.com/case-studies/prisma): Built a learning platform from scratch with deep collaboration on product and design. - [Supreme Golf](https://wyeworks.com/case-studies/supreme-golf): Improved engineering culture to enhance quality and value delivery over a 3+ year partnership. - [Wildfire](https://wyeworks.com/case-studies/wildfire): Developed the social media marketing application that let companies monetize engagements across social platforms. - [ZOZI](https://wyeworks.com/case-studies/zozi): Turned a basic platform for selling discounted experiences into a sophisticated, intuitive e-commerce system. ## Blog - [We Have a Code Review Problem](https://wyeworks.com/blog/2026/08/07/we-have-a-code-review-problem): Coding agents made code cheap to produce, but human review just became scarce. A look at why review effort should be allocated deliberately instead of uniformly, and what to measure before reducing it. - [Agentic Development Starts With Team Ownership](https://wyeworks.com/blog/2026/07/21/agentic-development-starts-with-team-ownership): AI can write most of the code, but requirements, architecture, and verification still depend on judgment. A look at how our teams are learning to own the workflow that makes coding agents reliable. - [Is Learning to Code Still Worth It in the Age of AI?](https://wyeworks.com/blog/2026/05/28/is-learning-to-code-still-worth-it): What does it actually mean to know how to program in the age of AI? Notes from an internal WyeWorks debate between two camps, and the contextual middle ground. - [The Workflow Is the Product: Building Specialized Pipelines for Coding Agents](https://wyeworks.com/blog/2026/05/13/custom-agentic-workflows-for-coding-agents): Treating the workflow as the product: how decomposition, validation, and feedback loops made AI-assisted website implementation reliable. - [What Value Does a Software Developer Bring in the Age of Coding Agents?](https://wyeworks.com/blog/2026/02/25/what-value-does-software-developer-brings-in-age-coding-agents): If AI writes code… where does a developer's value actually live? It doesn't disappear — it moves. - [Trapped in My Own Loop](https://wyeworks.com/blog/2026/02/20/trapped-in-my-own-loop): A simple question from a colleague made me realize I'd been reading every interaction through a lens of negativity — and that escaping that loop was my responsibility. - [I Used to Think Reading Was a Waste of Time](https://wyeworks.com/blog/2026/01/08/i-used-to-hate-reading): Reading felt pointless to me — until I discovered that every book is a capsule of someone else's transformation, and that witnessing those transformations helps us find our own. - [The Drills and the Birdsong](https://wyeworks.com/blog/2026/01/08/living-with-contrast): Life is full of contrasts — noise and silence, anxiety and calm, uncertainty and clarity. When we stop pretending they don't coexist, we become better prepared for both. - [I Had to Stop Giving Answers](https://wyeworks.com/blog/2026/01/02/respond-with-questions): Answering every question feels good in the moment — but is it actually helping your teammates grow? A look at how responding with questions changes everything. - [Leading Dictations](https://wyeworks.com/blog/2025/12/18/leading-dictations): This article was first published in The Clarity Journal, our WyeWorks newsletter on leadership, uncertainty, and the craft of self-management. If you'd like to receive new editions as they come out, you can subscribe below. - [Leadership Has Nothing to Do With Rank](https://wyeworks.com/blog/2025/12/12/leadership-without-clich%C3%A9s): David Foster Wallace cuts through the clichés to reveal what a real leader actually is — and why rank has nothing to do with it. - [Why I Wash My Pan Like It's the Only One on Earth](https://wyeworks.com/blog/2025/12/12/the-sacred-bond): There's something sacred in the bond between a person and their solution. And it has everything to do with how we delegate. - [Uncertainty Isn't the Price You Pay](https://wyeworks.com/blog/2025/12/12/walking-with-uncertainty): After years building a personal project, one mental state shows up more than any other — uncertainty. But what if it's not an opponent to conquer, but a companion to know? - [Tips for effective prototyping with Rails 8 and Claude Code](https://wyeworks.com/blog/2025/11/26/tips-for-effective-prototyping-rails-claude-code): Practical tips to keep prototypes under control without sacrificing speed, while leveraging AI assistance to its fullest. - [Awaken the Leader Within: 5 Practices to Influence and Inspire](https://wyeworks.com/blog/2025/11/18/awaken-the-leader-within): How five simple practices helped me discover my own leadership style — without a title, a promotion, or a manual. - [Embrace Uncertainty to Ship Better AI](https://wyeworks.com/blog/2025/10/27/embrace-uncertainty-to-ship-better-ai): AI-powered features introduce a new kind of uncertainty — not about when we'll ship, but about what the AI can actually achieve. Here's how we handle it. - [AI Conversations That Replace Forms](https://wyeworks.com/blog/2025/08/01/ai-conversations-that-replace-forms): A case study on building a conversational form-filling system with LLMs — from a single monolithic prompt through iterative improvements to a production-ready architecture. - [The Rise of Coding Agents: A Comparative Analysis](https://wyeworks.com/blog/2025/07/03/coding-agents-comparison): A real-world comparison of autonomous coding agents — Google Jules, OpenAI Codex, GitHub Copilot Agent, Claude Code, and Cursor Agent. - [AI Engineering Explained: Building the Future of Software](https://wyeworks.com/blog/2025/05/12/ai-engineering-explained): An overview of AI Engineering as a discipline, covering foundation model integration, tradeoffs in AI systems, evaluation pipelines, and emerging architectural patterns. - [Async Rust: When to Use It and When to Avoid It](https://wyeworks.com/blog/2025/02/25/async-rust-when-to-use-it-when-to-avoid-it): A comprehensive guide to asynchronous programming in Rust, covering concurrency vs parallelism, threads, async runtimes like Tokio, and when to choose async over synchronous approaches. - [Building a ChatGPT client using Rust with Makepad](https://wyeworks.com/blog/2024/06/27/building-chatgpt-client-using-makepad): A step-by-step guide to building a cross-platform ChatGPT client application using Rust and the Makepad framework, covering UI layout, event handling, and API integration. - [Integrating LiveView and JavaScript](https://wyeworks.com/blog/2024/02/27/integrating-live-view-and-js): Practical techniques for making Phoenix LiveView and JavaScript work together, covering LiveView.JS commands, phx-hook, phx-update ignore, and the onBeforeElUpdated callback. - [Why You Should Consider Rewriting Your Legacy System in Rust](https://wyeworks.com/blog/2024/02/20/why-you-should-consider-rewriting-your-legacy-system-in-rust): Exploring the compelling reasons to consider rewriting legacy systems in Rust, including its safety features, concurrency model, modern tooling, and incremental migration strategies. - [Building a LiveView component with Github Copilot and ChatGPT: Reflections.](https://wyeworks.com/blog/2023/07/04/building-a-live-view-component-with-github-copilot-and-chatgpt-part-3): Reflections on using ChatGPT and GitHub Copilot for Phoenix LiveView development, including when to switch between AI assistance and manual coding, and the state of these tools with Elixir. - [Building a LiveView component with GitHub Copilot and ChatGPT - Part 1](https://wyeworks.com/blog/2023/06/26/building-a-live-view-component-with-github-copilot-and-chatgpt-part-1): Experimenting with ChatGPT and GitHub Copilot to build a Phoenix LiveView calendar component, exploring how AI tools assist in generating boilerplate and markup code. - [Building a LiveView component with GitHub Copilot and ChatGPT - Part 2](https://wyeworks.com/blog/2023/06/26/building-a-live-view-component-with-github-copilot-and-chatgpt-part-2): Continuing the LiveView calendar component build with AI tools, exploring ChatGPT's refactoring suggestions, Copilot's code completion in Elixir, and the importance of code ownership. - [Migrating your existing Ruby on Rails codebase to Elixir/Phoenix](https://wyeworks.com/blog/2023/06/06/migrating-from-rails-to-elixir-phoenix): Key considerations for migrating a Ruby on Rails application to Elixir and Phoenix, covering paradigm shifts, concurrency, real-time features, and incremental rewriting strategies. - [Our take on onboarding: You, at the center of it all](https://wyeworks.com/blog/2023/03/01/our-take-on-onboarding): A look at WyeWorks' onboarding process, designed to help new team members discover the company culture, develop skills, and grow into their unique version of a wyeworker. - [Material Interaction States with Tailwind](https://wyeworks.com/blog/2022/11/15/material-interaction-states-with-tailwind): How to build a Tailwind plugin that implements Material Design 3 interaction states, generating hover, press, focus and disabled colors from a single color pair. - [What lies beneath our short ramp-up time](https://wyeworks.com/blog/2022/11/11/what-lies-beneath-our-short-ramp-up-time): The three key attributes that enable WyeWorks teams to ramp up quickly on new engagements: fast learning, flexibility, and experience from years of consulting. - [Mode-aware colors with TailwindCSS](https://wyeworks.com/blog/2022/10/12/mode-aware-colors-with-tailwind-css): How to build a Tailwind plugin that abstracts dark mode color pairs into single utility classes, eliminating repetitive dark: prefixes from your markup. - [Prioritizing High-leverage Activities](https://wyeworks.com/blog/2022/09/26/prioritizing-high-leverage-activities): Practical advice on increasing your engineering leverage: teach along the way, try new tools, and automate repetitive tasks to maximize value per time invested. - [Optimizing Expensive React Component Mounts](https://wyeworks.com/blog/2022/09/12/optimizing-expensive-react-component-mounts): How to use React Reverse Portals to avoid costly remounts of heavy components, with real-world examples and caveats from a video-heavy application. - [Adding E2E tests to an Elixir library](https://wyeworks.com/blog/2022/04/21/adding-e2e-tests-to-an-elixir-library): How to set up end-to-end tests for an Elixir library using Wallaby, with a Phoenix test application and a custom Mix task for CI integration. - [Screenshot testing React Components with Viteshot](https://wyeworks.com/blog/2022/03/16/screenshot-testing-react-components-with-viteshot): How to use Viteshot for automated screenshot testing of React components, including CI integration with GitHub Actions and dark mode support. - [Benefits of outsourcing to a software agency](https://wyeworks.com/blog/2021/08/23/benefits-of-outsourcing-to-a-software-agency): Why hiring a software agency like WyeWorks gives you a functional team from day one, along with a support system that goes beyond just engineering talent. - [Harnessing the Power of Responsive CSS Grids](https://wyeworks.com/blog/2021/08/07/harnessing-the-power-of-responsive-css-grids): A step-by-step guide to building a fully responsive pricing table using CSS Grid, with no duplicated markup, leveraging grid-area and overlapping elements. - [About agile project estimation](https://wyeworks.com/blog/2020/10/30/about-agile-estimation): A critical look at estimation techniques in agile software projects, exploring story points, t-shirt sizing, and the #NoEstimates movement. - [WyeWorks Playbook: How We Work](https://wyeworks.com/blog/2020/09/24/wyeworks-playbook-how-we-work): An overview of how WyeWorks engineering teams operate, covering team composition, values, agile process, dev practices, and company support structure. - [Our values](https://wyeworks.com/blog/2020/07/27/our-values): How WyeWorks discovered and defined its core values to preserve company culture while embracing growth and new team members. - [What to expect when starting a project with WyeWorks](https://wyeworks.com/blog/2020/04/02/what-to-expect-when-starting-a-project-with-wyeworks): A step-by-step guide on how WyeWorks kicks off new client engagements, from initial conversations through trial projects to long-term partnerships. - [Breaking up a Phoenix LiveView module into components](https://wyeworks.com/blog/2020/03/03/breaking-up-a-phoenix-live-view): How we refactored a growing Phoenix LiveView module into smaller, focused components using live_component, with practical examples from the Elixir Web Console project. - [Our Growth Framework](https://wyeworks.com/blog/2019/12/05/our-growth-framework): How WyeWorks built a growth framework focused on helping people reach their maximum potential, moving away from traditional performance evaluation models. - [How we facilitate The Sprint Retrospective meeting](https://wyeworks.com/blog/2019/09/02/how-we-facilitate-the-sprint-retrospective-meeting): Two short videos explaining how WyeWorks facilitates retrospective meetings to help engineering teams get actionable and valuable output. - [Slimming down fat channels in Phoenix](https://wyeworks.com/blog/2019/07/19/slimming-down-fat-channels-in-phoenix): An approach to splitting a growing Phoenix channel module into smaller, focused modules using Elixir metaprogramming and a custom DSL. - [Why we have engineers run interviews instead of HR](https://wyeworks.com/blog/2019/06/07/why-we-have-engineers-run-interviews-instead-of-hr): Why WyeWorks chooses to have engineers conduct interviews instead of outsourcing to HR, and the benefits this brings to candidates, interviewers, and the company. - [Foster an adaptive mindset](https://wyeworks.com/blog/2019/04/01/foster-an-adaptive-mindset): Why embracing change and stepping out of our comfort zone is essential for growth, and how shifting our perspective can turn incoming changes into opportunities. - [Emotion Driven Habits](https://wyeworks.com/blog/2019/03/08/emotion-driven-habits): How developing emotion-driven habits through the New Habit Formula can help software engineers build emotional intelligence and prevent emotional hijacking at work. - [To use or not to use the ++ operator in Elixir](https://wyeworks.com/blog/2019/03/01/to-use-or-not-to-use-the-++-operator-in-elixir): A deep dive into the performance implications of the ++ operator for list concatenation in Elixir, with benchmarks comparing multiple implementation strategies. - [Why we invest in having our teams visit clients](https://wyeworks.com/blog/2019/02/21/why-we-invest-in-having-our-teams-visit-clients): How in-person visits to client offices provide invaluable context, strengthen team bonds, and unlock opportunities to add value beyond technical expertise. - [What makes a great software engineer great](https://wyeworks.com/blog/2019/01/18/what-makes-a-great-software-engineer-great): Beyond programming skills, great software engineers need a hungry mindset, team player attitude, business partnership thinking, and strong communication skills. - [Why a full day of Agile/Scrum?](https://wyeworks.com/blog/2018/09/27/why-a-full-day-of-agile): WyeWorks organized an internal Agile/Scrum training session to align the team's knowledge of Agile principles and Scrum practices after 10 years of practice. - [Celebrating 10 years of WyeWorks](https://wyeworks.com/blog/2018/09/25/celebrating-10-years-of-wyeworks): WyeWorks celebrates its 10 year anniversary, reflecting on the journey from founding in 2008 to building an excellent team focused on quality work. - [Automating your infrastructure deployments](https://wyeworks.com/blog/2018/06/11/automating-your-infrastructure-deployments): Learn how to automate the creation and deployment of cloud infrastructure using Terraform and CircleCI, with a practical example and workflow. - [Change your Daily Scrum Meeting](https://wyeworks.com/blog/2018/05/24/change-your-daily-scrum-meeting): How shifting the Daily Scrum meeting from an individual-centered to a story-centered approach improved team efficiency and collaboration. - [Infrastructure as Code: A beginner's perspective](https://wyeworks.com/blog/2018/02/08/infrastrucutre-as-code-a-beginners-perspective): An introduction to Infrastructure as Code, the problems it solves, and how tools like Terraform can help automate infrastructure provisioning. - [Testing Vue.js in Rails with Webpacker and Jest](https://wyeworks.com/blog/2018/01/16/Testing-Vuejs-in-Rails-with-Webpacker-and-Jest): A step-by-step guide to setting up Jest for testing Vue.js components in a Rails application using Webpacker. - [Automatically managing personal and work git configurations](https://wyeworks.com/blog/2018/01/15/automatically-managing-personal-and-work-git-configurations): Learn how to automatically switch between personal and work Git usernames, emails, and SSH keys based on your project directory. - [How to quickly deploy a VueJS app to Heroku](https://wyeworks.com/blog/2018/01/08/how-to-quickly-deploy-a-vuejs-app-to-heroku): A step-by-step guide to deploying a VueJS project to Heroku with automated builds, without checking the dist folder into Git. - [Using git hooks to improve your day-to-day workflow](https://wyeworks.com/blog/2018/01/03/using-git-hooks-to-improve-your-day-to-day-workflow): Learn how to use git hooks like pre-commit, commit-msg, and pre-push to automate linting, test validation, and branch protection in your development workflow. - [New features in Ruby 2.5.0](https://wyeworks.com/blog/2017/12/28/new-features-in-ruby-2-dot-5-0): A rundown of the most interesting new features in Ruby 2.5.0 including Hash#slice, Hash#transform_keys, pattern arguments on Enumerable methods, reverse backtraces, and PP by default. - [Unopinionated comparison of Glimmer and React](https://wyeworks.com/blog/2017/12/20/unopinionated-comparison-of-glimmer-and-react): A practical comparison of Glimmer and React covering state management, templating, component composition, and lifecycle hooks through hands-on code examples. - [Remote Retrospectives using Trello](https://wyeworks.com/blog/2017/12/18/remote-retrospectives-using-trello): How WyeWorks conducts effective Sprint Retrospectives with distributed teams using Trello as a lean, flexible digital board for data gathering, prioritization, and action planning. - [A review of Server Side Rendering in Javascript frameworks](https://wyeworks.com/blog/2017/09/06/a-review-of-ssr-in-javascript-frameworks): An overview of the current state of Server Side Rendering across major Javascript frameworks including Ember, React, VueJS, and Angular, with a look at their SSR solutions and complementary tools. - [What the tag? Episode 1 - The Document object](https://wyeworks.com/blog/2016/09/28/what_the_tag_series_ep1_document_object): A deep dive into the HTML Document object, exploring resource metadata management and DOM tree accessors from the Living Standard specification. - [Reinventing our continuous learning practice](https://wyeworks.com/blog/2016/09/22/reinventing-our-continuous-learning-practice): How WyeWorks evolved its Technical Thursdays from fixed group sessions to a self-directed marketplace model, boosting motivation and commitment through intrinsic learning. - [Making page objects to play nicely with ember-wormhole](https://wyeworks.com/blog/2016/08/03/making-page-objects-to-play-nicely-with-ember-wormhole): How to use ember-cli-page-object's testContainer option to test elements rendered outside the Ember application container via ember-wormhole. - [Better tests feedback with ember-qunit-nice-errors](https://wyeworks.com/blog/2016/07/29/better-tests-feedback-with-ember-qunit-nice-errors): Introducing ember-qunit-nice-errors, an Ember addon that automatically improves QUnit assertion error messages by including the expressions being asserted. - [Six useful Ember addons for testing](https://wyeworks.com/blog/2016/07/18/six-useful-ember-addons-for-testing): A curated list of six Ember addons that improve testing workflows, covering API mocking, test doubles, page objects, multi-version testing, parallelization, and better error output. - [Behavior changes in Ruby 2.4](https://wyeworks.com/blog/2016/06/22/behavior-changes-in-ruby-2.4): An overview of important behavior changes in Ruby 2.4, including Fixnum/Bignum unification into Integer, Unicode case conversion, and time zone preservation. - [Using "async" and "await" with ember-cli-page-object](https://wyeworks.com/blog/2016/06/13/using-async-and-await-with-ember-cli-page-object): How to use TC39's async/await proposal with ember-cli-page-object to write cleaner Ember acceptance tests, replacing andThen callbacks with modern syntax. - [Our Onboarding Process](https://wyeworks.com/blog/2016/06/02/our-onboarding-process): How WyeWorks onboards new team members, from the first day welcome through the learning phase and into client projects, regardless of their programming background. - [Wye Tech News #15](https://wyeworks.com/blog/2016/03/22/wye-tech-news-15): A curated list of tech news including the power of Arel, upgrading to Rails 5, Ember releases, WebAssembly milestones, and CSS best practices. - [Wye Tech News #14](https://wyeworks.com/blog/2016/03/14/wye-tech-news-14): A curated list of tech news including Rails 4.2.6 and 4.1.15 releases, ActionController::Parameters#dig, Rails 5 etag changes, Ember updates, and more. - [Wye Tech News #13](https://wyeworks.com/blog/2016/03/07/wye-tech-news-13): Weekly tech news roundup featuring Rails security releases, file_fixture in Rails 5, jQuery 3 updates, Ember 2.4, and software deployment practices. - [Wye Tech News #12](https://wyeworks.com/blog/2016/02/29/wye-tech-news-12): Weekly tech news roundup featuring Rails 5 beta3, Ruby 2.0/2.1 support plans, Ember's first LTS release, and PostgreSQL index fundamentals. - [Wye Tech News #11](https://wyeworks.com/blog/2016/02/22/wye-tech-news-11): Weekly tech news roundup featuring Rails 5 API guide, belongs_to required by default, frozen string literals performance, and Ember CLI 2.3. - [Wye Tech News #10](https://wyeworks.com/blog/2016/02/15/wye-tech-news-10): Weekly tech news roundup featuring Ruby performance benchmarks, debugging techniques, Action Cable tutorials, and CSS variables. - [Wye Tech News #9](https://wyeworks.com/blog/2016/02/01/wye-tech-news-9): Weekly tech news roundup featuring Rails 5 chess with Action Cable, JRuby+Truffle performance, OpenSSL security fixes, and web streams. - [Upgrading to Ruby on Rails 5.0](https://wyeworks.com/blog/2016/01/26/upgrading-to-ruby-on-rails-5-0): A detailed walkthrough of upgrading a Rails 4.2.5 application to Rails 5.0 beta, including debugging regressions and contributing fixes back to Rails. - [Wye Tech News #8](https://wyeworks.com/blog/2016/01/25/wye-tech-news-8): Weekly tech news roundup featuring RubyGems stats for 2015, the new Rails identity, the Rails Doctrine, and Action Cable updates. - [Wye Tech News #7](https://wyeworks.com/blog/2016/01/18/wye-tech-news-7): Weekly tech news roundup featuring the evolution of Rails, per-form CSRF tokens, jQuery releases, and Ember security updates. - [Improvements to error responses in Rails 5 API mode](https://wyeworks.com/blog/2016/01/12/improvements-to-error-responses-in-rails-5-api-mode): How Rails 5 improves error response formatting for API applications, including format negotiation, development mode debugging, and a web-console fix. - [Wye Tech News #6](https://wyeworks.com/blog/2016/01/11/wye-tech-news-6): Weekly tech news roundup featuring Ruby bytecode cache, Rails 5 features, PostgreSQL 9.5 UPSERT, and Git 2.7. - [Wye Tech News #5](https://wyeworks.com/blog/2016/01/04/wye-tech-news-5): Weekly roundup of interesting news and articles about Ruby, Rails, JavaScript and web development. - [Wye Tech News #4](https://wyeworks.com/blog/2015/12/28/wye-tech-news-4): Weekly roundup of interesting news and articles about Ruby, Rails, JavaScript and web development. - [Wye Tech News #3](https://wyeworks.com/blog/2015/12/21/wye-tech-news-3): Weekly roundup of interesting news and articles about Ruby, Rails, JavaScript and web development. - [Sometimes, it's good to be shy](https://wyeworks.com/blog/2015/12/15/sometimes-its-good-to-be-shy): How writing shy code — following DRY, Tell Don't Ask, and the Law of Demeter — leads to more flexible, maintainable software. - [Wye Tech News #2](https://wyeworks.com/blog/2015/12/14/wye-tech-news-2): Weekly roundup of interesting news and articles about Ruby, Rails, JavaScript and web development. - [Wye Tech News #1](https://wyeworks.com/blog/2015/12/07/wye-tech-news-1): A curated weekly roundup of articles and news about Ruby, Rails, JavaScript, and web development. - [Immutable strings in Ruby 2.3](https://wyeworks.com/blog/2015/12/01/immutable-strings-in-ruby-2-dot-3): An in-depth look at frozen string literals in Ruby 2.3 — covering immutability, thread safety, performance benchmarks, and migration strategies. - [Understanding unknownProperty in Ember](https://wyeworks.com/blog/2015/11/24/understanding-unknownproperty-in-ember): How to use Ember's unknownProperty and setUnknownProperty handlers to build dynamic proxies, with a practical localStorage service example. - [Living with singleton controllers](https://wyeworks.com/blog/2015/11/12/living-with-singleton-controllers): Practical strategies for dealing with Ember's singleton controllers — from slim controller patterns to automatic reset mixins. - [Using UNIX tools](https://wyeworks.com/blog/2015/11/02/using-unix-tools): A step-by-step guide to solving problems with UNIX tools like grep, sed, awk, and sort — building solutions incrementally with immediate feedback. - [When is ssh -A insecure?](https://wyeworks.com/blog/2015/08/05/when-is-ssh-a-insecure): A hands-on experiment demonstrating the security risks of SSH agent forwarding and how an attacker can hijack forwarded credentials. - [Technical Thursdays or: how we do continuous learning](https://wyeworks.com/blog/2015/07/16/technical-thursdays-or-how-we-do-continuous-learning): How WyeWorks fosters continuous learning through dedicated Technical Thursdays where the team shares knowledge and explores new technologies. - [How to build a Rails 5 API only and Ember application](https://wyeworks.com/blog/2015/06/30/how-to-build-a-rails-5-api-only-and-ember-application): A walkthrough of integrating a Rails 5 API-only backend with an Ember.js TODO application using Active Model Serializers. - [How to build a Rails 5 API only and Backbone application](https://wyeworks.com/blog/2015/06/11/how-to-build-a-rails-5-api-only-and-backbone-application): A step-by-step guide to building a Rails 5 API-only backend integrated with a Backbone.js TODO application. - [Using the Page Object pattern with Ember CLI](https://wyeworks.com/blog/2015/05/13/using-the-page-object-pattern-with-ember-cli): How the Page Object pattern can simplify Ember acceptance tests by encapsulating HTML structure and making test intentions clearer. - [Rails API to be part of Rails 5](https://wyeworks.com/blog/2015/04/20/rails-api-is-going-to-be-included-in-rails-5): Rails API is being incorporated into Rails core, bringing trimmed-down controllers and middleware for API-only applications to Rails 5. - [ActiveModel::Serializers Rewrite (upcoming 0.9.0.pre version)](https://wyeworks.com/blog/2013/10/15/active_model_serializers_rewrite): A deep dive into the ActiveModel::Serializers rewrite — cleaner code, better performance, improved tests, and 50% fewer lines of code. - [Rails 4 links compilation](https://wyeworks.com/blog/2012/11/13/rails-4-compilation-links): A curated compilation of pull requests, commits, posts, videos, and more about Rails 4 features and changes. - [Rails 4 in 30'](https://wyeworks.com/blog/2012/10/29/rails-4-in-30-minutes): Slides from a RubyConf Argentina presentation covering what's new in Rails 4, with an invitation to reuse and improve the material. - [Rails 4 in a MindNode](https://wyeworks.com/blog/2012/09/20/rails-4-in-a-mindnode): A high-level overview of what's being added, removed, and deprecated in Rails 4, organized as a MindNode mind map. - [Ruby Refinements landed in trunk](https://wyeworks.com/blog/2012/08/03/ruby-refinements-landed-in-trunk): An introduction to Ruby Refinements — a safer alternative to monkey patching that limits class extensions to a specific scope. - [Rails for API applications (rails-api) released](https://wyeworks.com/blog/2012/04/20/rails-for-api-applications-rails-api-released): Introducing rails-api, a plugin that trims Rails for API-only applications by removing unneeded browser middleware and view generation. - [My OS X Rails installation using Homebrew and rbenv, step by step](https://wyeworks.com/blog/2012/04/13/my-osx-rails-installation-using-homebrew-and-rbenv-step-by-step): A step-by-step guide to setting up a Ruby on Rails development environment on Mac OS X using Homebrew, rbenv, MySQL, PostgreSQL and Memcached. - [bundle exec rails ... executes Bundler.setup 3 times](https://wyeworks.com/blog/2011/12/27/bundle-exec-rails-executes-bundler-setup-3-times): Why you shouldn't use bundle exec before the rails command — it already handles Bundler setup, and the extra invocation just adds overhead. - [Ruby 1.9.3 and ruby-debug](https://wyeworks.com/blog/2011/11/01/ruby-1-9-3-and-ruby-debug): How to get ruby-debug working with Ruby 1.9.3 by installing the unreleased but fixed version from Rubyforge. - [Client - Developer relationships](https://wyeworks.com/blog/2011/04/11/client-developer-relationships): Practical tips for building strong client-developer relationships, from gaining trust and being transparent to knowing when to say yes or no. - [RailsConf 2010: Interview with Caike Souza](https://wyeworks.com/blog/2011/03/25/railsconf-2010-interview-with-caike-souza): An interview with Caike Souza at RailsConf 2010, discussing agile software craftsmanship, code dojos, and the Ruby community. - [Metaprogramming in Ruby slides from my talk at RubyConf Uruguay](https://wyeworks.com/blog/2010/11/04/metaprogramming-in-ruby-slides-from-my-talk-at-rubyconf-uruguay): Slides from Santiago Pastorino's talk on Metaprogramming in Ruby at RubyConf Uruguay. - [Creating your own generators on Rails 2.3](https://wyeworks.com/blog/2010/09/23/creating-your-own-generators-on-rails-2-3): A practical guide to building custom Rails 2.3 generators using NamedBase, manifest templates, and argument parsing. - [RailsConf 2010: Interview with George Guimarães](https://wyeworks.com/blog/2010/07/28/railsconf-2010-interview-with-george-guimaraes): An interview with George Guimarães at RailsConf 2010, co-founder of Plataforma Tec, discussing open source work and the Ruby community. - [RailsConf 2010: Interview with Fabio Akita](https://wyeworks.com/blog/2010/07/01/railsconf-2010-interview-with-fabio-akita): An interview with Fabio Akita at RailsConf 2010, discussing what makes the Ruby and Rails community special. - [Making Paperclip work with Sinatra & Datamapper](https://wyeworks.com/blog/2010/02/10/making-paperclip-work-with-sinatra-datamapper): A step-by-step guide to using Paperclip for file uploads in a Sinatra application with DataMapper, including the Mash workaround. - [4 Ways to Retrieve a Twitter List Timeline](https://wyeworks.com/blog/2010/02/01/4-ways-to-retrieve-a-twitter-list-timeline): Exploring four approaches to retrieve a Twitter list timeline using the twitter gem — from basic search to OAuth and a custom unauthenticated solution. - [Rails Bugmash an exciting first experience](https://wyeworks.com/blog/2010/01/19/rails-bugmash-an-exciting-first-experience): A recap of participating in the Railsbridge Bugmash, testing Rails 3, fixing bugs, and contributing patches to the Rails Core. - [Modifying Recurring Billing Transactions](https://wyeworks.com/blog/2009/11/16/active-merchant-recurring-billing-part-2): How to modify existing recurring billing transactions using Active Merchant with the BeanStream gateway. - [Active Merchant Recurring Billing](https://wyeworks.com/blog/2009/10/07/active-merchant-recurring-billing): Adding recurring billing support for BeanStream gateway to Active Merchant, with examples for creating and canceling subscriptions. - [Generating PDF with odf-report and images support](https://wyeworks.com/blog/2009/09/18/generating-pdf-with-odf-report-and-images-support): Adding image substitution support to the odf-report gem for PDF generation using ODF templates in Ruby. - [My Emacs for Rails](https://wyeworks.com/blog/2009/09/11/my-emacs-for-rails): A curated Emacs configuration and plugin bundle for an enhanced Ruby on Rails development experience, with installation instructions. - [Scheduling in Ruby](https://wyeworks.com/blog/2009/08/10/scheduling): An introduction to the Whenever gem for scheduling tasks in Ruby using clean syntax, with Capistrano integration tips. - [Method missing to simplify queries to an external service](https://wyeworks.com/blog/2009/08/05/method-missing-to-simplify-queries-to-an-external-service): Using Ruby's method_missing to create a clean proxy for the Brightcove Media Read API, forwarding method calls as API commands. - [Drag & Drop Sortable Lists](https://wyeworks.com/blog/2009/07/27/drag-drop-sortable-lists): How to build drag and drop sortable lists in Rails using Prototype and Scriptaculous, with acts_as_list for position management. - [RVideo for video processing and inspection](https://wyeworks.com/blog/2009/07/20/rvideo-for-video-processing-and-inspection): An introduction to using the RVideo gem for inspecting video file encoding and metadata via ffmpeg, simplifying media file processing in Ruby. - [Paperclip file rename](https://wyeworks.com/blog/2009/07/13/paperclip-file-rename): How to customize Paperclip file naming with custom interpolations to enforce naming restrictions on uploaded files. - [Rails delegate method](https://wyeworks.com/blog/2009/06/04/rails-delegate-method): An introduction to Rails delegation, showing how to simplify method calls across associated models using the delegate macro. - [Wildcard search with Thinking Sphinx](https://wyeworks.com/blog/2009/04/20/wildcard-search-with-thinking-sphinx): How to enable wildcard search in Sphinx using Thinking Sphinx, covering enable_star, min_prefix_len, and min_infix_len settings. - [We're attending Locos X Rails !](https://wyeworks.com/blog/2009/03/30/locosxrails): WyeWorks is heading to the Locos X Rails conference in Buenos Aires, featuring speakers like Obie Fernandez, Yehuda Katz, and David Heinemeier Hansson. - [Install Emacs 23 from CVS](https://wyeworks.com/blog/2009/03/23/emacs-cvs-installation): A step-by-step guide to installing Emacs 23 from CVS repositories on Unix-based systems, covering required libraries and compilation options. - [Parsing an OPML with Ruby](https://wyeworks.com/blog/2009/02/20/parse-opml-with-ruby): A simple recursive Ruby function to parse OPML files and extract web feed URLs, preserving the document structure using REXML. - [Google Analytics with AJAX](https://wyeworks.com/blog/2009/02/11/google-analytics-with-ajax): How to track AJAX requests in Google Analytics using Prototype's Ajax.Responders to fire the tracker after each completed request. - [Dumb script to reassemble HTML + SSI pages](https://wyeworks.com/blog/2009/01/31/dumb-script-to-reassemble-html-ssi-pages): A simple Ruby script to reassemble HTML pages that use Apache Server Side Includes, making it easier to preview static websites with separated headers, menus, and footers. - [Setting up Passenger in Linux](https://wyeworks.com/blog/2009/01/28/setting-up-passenger-in-linux): A guide to setting up Phusion Passenger as an Apache module for hosting Rails applications in a Linux development environment. - [Twenty Reasons I Love Ruby](https://wyeworks.com/blog/2009/01/23/twenty-reasons-love-ruby): Inspired by Hal Fulton's article, here are twenty reasons to love Ruby — from its pure object-oriented design to its expressive syntax and powerful built-in features. - [Gravatars in Mephisto (article's title included)](https://wyeworks.com/blog/2009/01/23/gravatars-in-mephisto-article-s-title-included): How to display gravatars not only for comments but also in article titles in Mephisto, using a simple initializer and Liquid templates. ## Optional - [Privacy](https://wyeworks.com/privacy) - [Terms](https://wyeworks.com/terms) - [Cookies](https://wyeworks.com/cookies)