
    <rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
      <channel>
        <title>Shaiju Edakulangara</title>
        <link>https://eshaiju.com/blog</link>
        <description>Software Architect | Integrations, Identity &amp; AI Systems
Hands-on with Rails, React, Node.js, and Swift.</description>
        <language>en-US</language>
        <managingEditor> (Shaiju Edakulangara)</managingEditor>
        <webMaster> (Shaiju Edakulangara)</webMaster>
        <lastBuildDate>Sun, 01 Feb 2026 00:00:00 GMT</lastBuildDate>
        <atom:link href="https://eshaiju.com/feed.xml" rel="self" type="application/rss+xml"/>
        
          <item>
            <guid>https://eshaiju.com/blog/nodellm-1-10-middleware-system</guid>
            <title>NodeLLM 1.10: Production-Grade Middleware System</title>
            <link>https://eshaiju.com/blog/nodellm-1-10-middleware-system</link>
            <description>NodeLLM 1.10 introduces a full middleware architecture for intercepting LLM requests, responses, tool executions, and errors. Build PII protection, cost guards, and custom pipelines—without changing your business logic.</description>
            <pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>NodeLLM</category><category>Node.js</category><category>LLM</category><category>Middleware</category><category>Infrastructure</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/nodellm-monitor-production-observability</guid>
            <title>NodeLLM Monitor: Production Observability for LLM Applications</title>
            <link>https://eshaiju.com/blog/nodellm-monitor-production-observability</link>
            <description>Introducing @node-llm/monitor—a production-grade observability layer for LLM applications. Track costs, latency, token usage, and debug AI interactions with a built-in real-time dashboard.</description>
            <pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>NodeLLM</category><category>Node.js</category><category>LLM</category><category>Monitoring</category><category>Observability</category><category>DevOps</category><category>Infrastructure</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/vercel-ai-sdk-vs-node-llm-comparison</guid>
            <title>Vercel AI SDK and NodeLLM: Choosing the Right Layer</title>
            <link>https://eshaiju.com/blog/vercel-ai-sdk-vs-node-llm-comparison</link>
            <description>Vercel AI SDK is the industry standard for shipping fast. NodeLLM is an architectural layer designed for long-term stability and backend reliability.</description>
            <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>NodeLLM</category><category>AI</category><category>Node.js</category><category>Architecture</category><category>Vercel</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/nodellm-testing-deterministic-ai</guid>
            <title>Building a more predictable way to test LLMs: Introducing @node-llm/testing</title>
            <link>https://eshaiju.com/blog/nodellm-testing-deterministic-ai</link>
            <description>Testing AI systems is often frustrating and expensive. I’ve been working on a small utility to make testing LLM interactions a bit more predictable and secure—here is `@node-llm/testing`.</description>
            <pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>NodeLLM</category><category>Testing</category><category>Node.js</category><category>AI</category><category>Open Source</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/llm-security-defense-in-depth</guid>
            <title>The Invisible Perimeter: Hardening LLM Flows in the Age of Autonomous Exploits</title>
            <link>https://eshaiju.com/blog/llm-security-defense-in-depth</link>
            <description>Prompt injection is the new SQL injection. This post explores the security architecture required for 2026 AI Agents and how NodeLLM provides the necessary guardrails.</description>
            <pubDate>Sat, 24 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Security</category><category>NodeLLM</category><category>Node.js</category><category>LLM</category><category>Bedrock</category><category>Architecture</category><category>AI-Agents</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/custom-nodellm-provider-oracle</guid>
            <title>Beyond the Big Three: Building Custom NodeLLM Providers for Enterprise Cloud Gateways</title>
            <link>https://eshaiju.com/blog/custom-nodellm-provider-oracle</link>
            <description>Infrastructure doesn&#39;t stop at OpenAI. Learn how to extend NodeLLM to support proprietary gateways like Oracle Cloud&#39;s Generative AI Service using a clean, zero-dependency, interface-driven approach.</description>
            <pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Node.js</category><category>NodeLLM</category><category>Oracle Cloud</category><category>Cohere</category><category>Architecture</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/nodellm-1-7-0-extended-thinking</guid>
            <title>NodeLLM 1.7.0: Standardizing &#39;Extended Thinking&#39; Across Providers</title>
            <link>https://eshaiju.com/blog/nodellm-1-7-0-extended-thinking</link>
            <description>NodeLLM 1.7.0 introduces a unified interface for reasoning-focused models. Standardize how you handle Claude 3.7 Thinking, DeepSeek R1 Reasoning, and OpenAI o1/o3 Effort with a single, fluent API.</description>
            <pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>NodeLLM</category><category>Node.js</category><category>LLM</category><category>Claude 3.7</category><category>DeepSeek R1</category><category>OpenAI o1</category><category>Infrastructure</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/building-ai-agents-nodejs</guid>
            <title>Building Your First AI Agent in Node.js: A Deep Dive</title>
            <link>https://eshaiju.com/blog/building-ai-agents-nodejs</link>
            <description>AI Agents are more than chatbots—they&#39;re systems that can reason, plan, and act. This post breaks down what an agent actually is, how the execution loop works under the hood, and gives you a copy-paste-ready agent using NodeLLM.</description>
            <pubDate>Wed, 21 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Node.js</category><category>LLM</category><category>Agents</category><category>Tool Calling</category><category>NodeLLM</category><category>AI</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/stop-redesigning-chat-databases</guid>
            <title>Stop Redesigning Chat Databases: The Case for a Universal AI ORM</title>
            <link>https://eshaiju.com/blog/stop-redesigning-chat-databases</link>
            <description>Every time I start a new AI project, I find myself redesigning the same four database tables. Here is why we need a universal persistence layer for AI, and how @node-llm/orm brings Rails-like sanity to the Node.js AI ecosystem.</description>
            <pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Node.js</category><category>LLM</category><category>Prisma</category><category>Next.js</category><category>Persistence</category><category>NodeLLM</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/stop-building-toy-chatbots</guid>
            <title>Stop Building Toy Chatbots: A Guide to Streaming, Persistence, and RAG in Node.js</title>
            <link>https://eshaiju.com/blog/stop-building-toy-chatbots</link>
            <description>Building a chatbot that lists models is easy. Building one that remembers users, persists tool calls, and handles real-time streaming in a production Next.js app is hard. Here is how we do it with @node-llm/orm.</description>
            <pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Node.js</category><category>LLM</category><category>Prisma</category><category>Next.js</category><category>Persistence</category><category>NodeLLM</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/nodellm-1-5-0-security</guid>
            <title>NodeLLM 1.5.0: Putting Security in the Driver&#39;s Seat</title>
            <link>https://eshaiju.com/blog/nodellm-1-5-0-security</link>
            <description>NodeLLM 1.5.0 adds runtime safety for AI integrations: mandatory timeouts, tool call limits, human-in-the-loop approvals, and global token protection.</description>
            <pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Security</category><category>NodeLLM</category><category>Node.js</category><category>LLM</category><category>Infrastructure</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/tool-calling-in-llms</guid>
            <title>Tool Calling in LLMs: How Models Talk to the Real World</title>
            <link>https://eshaiju.com/blog/tool-calling-in-llms</link>
            <description>LLMs are great at thinking, but terrible at doing. Learn how Tool Calling bridges the gap between text generation and real-world action.</description>
            <pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>NodeLLM</category><category>LLM</category><category>AI</category><category>Node.js</category><category>Architecture</category><category>ToolCalling</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/introducing-node-llm</guid>
            <title>Introducing NodeLLM: The Backend-First AI SDK for Node.js</title>
            <link>https://eshaiju.com/blog/introducing-node-llm</link>
            <description>Announcing NodeLLM, the Backend-First infrastructure layer for building production-grade AI agents in Node.js. Provider-agnostic, zero-dependency, and built for long-running processes.</description>
            <pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>NodeLLM</category><category>Node.js</category><category>LLM</category><category>AI</category><category>Architecture</category><category>Backend</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-10-15-preload-has-many-associations-in-graphql-ruby-using-graphql-preload</guid>
            <title>preload has_many associations in graphql-ruby using graphql-preload</title>
            <link>https://eshaiju.com/blog/2017-10-15-preload-has-many-associations-in-graphql-ruby-using-graphql-preload</link>
            <description>Efficiently preload has_many associations in GraphQL Ruby to eliminate N+1 queries using the graphql-preload gem.</description>
            <pubDate>Sun, 15 Oct 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>GraphQL</category><category>Ruby</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-10-14-graphql-ruby-mutation-with-input-object-type</guid>
            <title>GraphQL Ruby Mutation with input object type</title>
            <link>https://eshaiju.com/blog/2017-10-14-graphql-ruby-mutation-with-input-object-type</link>
            <description>Improve your GraphQL mutations by using InputObjectType to group and clean up mutation arguments.</description>
            <pubDate>Sat, 14 Oct 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>GraphQL</category><category>Ruby</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-08-23-deccan-rubyconf-2017-first-experience-as-a-speaker</guid>
            <title>Deccan RubyConf 2017 - First Experience as a speaker</title>
            <link>https://eshaiju.com/blog/2017-08-23-deccan-rubyconf-2017-first-experience-as-a-speaker</link>
            <description>Recap of my first experience speaking at a major conference, Deccan RubyConf 2017, held in Pune.</description>
            <pubDate>Wed, 23 Aug 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Conference</category><category>GraphQL</category><category>Ruby</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-08-05-graphql-security-issues-and-solutions</guid>
            <title>GraphQL Security Issues and Solutions</title>
            <link>https://eshaiju.com/blog/2017-08-05-graphql-security-issues-and-solutions</link>
            <description>Protect your GraphQL server from DDoS attacks and resource exhaustion by implementing timeouts, max depth, and complexity limits.</description>
            <pubDate>Sat, 05 Aug 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>GraphQL</category><category>Ruby</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-06-09-dry-graphql-definitions-using-interfaces</guid>
            <title>DRY GraphQL definitions using interfaces</title>
            <link>https://eshaiju.com/blog/2017-06-09-dry-graphql-definitions-using-interfaces</link>
            <description>Use GraphQL Interfaces to share common fields across different types and make your schema definitions more maintainable.</description>
            <pubDate>Fri, 09 Jun 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>GraphQL</category><category>Ruby</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-05-31-graphql-ruby-error-handling</guid>
            <title>GraphQL ruby error handling</title>
            <link>https://eshaiju.com/blog/2017-05-31-graphql-ruby-error-handling</link>
            <description>Learn how to effectively handle and expose errors in your GraphQL Ruby API, from validation failures to unexpected exceptions.</description>
            <pubDate>Wed, 31 May 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>GraphQL</category><category>Ruby</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-05-15-graphql-mutation-query-implementation-ruby-on-rails</guid>
            <title>GraphQL -Mutation query implementation - Ruby on Rails</title>
            <link>https://eshaiju.com/blog/2017-05-15-graphql-mutation-query-implementation-ruby-on-rails</link>
            <description>Mutation is a special type of query used to change data in the database like Creating, Editing or Deleting Records from a table or Store. These are th...</description>
            <pubDate>Mon, 15 May 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>GraphQL</category><category>Ruby</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-05-11-graphiql-ide-alternativs-for-development-testing-exploring-graphql-servers</guid>
            <title>GraphiQL IDE Alternatives for Development/Testing/Exploring GraphQL Servers</title>
            <link>https://eshaiju.com/blog/2017-05-11-graphiql-ide-alternativs-for-development-testing-exploring-graphql-servers</link>
            <description>Explore powerful alternatives to the default GraphiQL IDE for better query management and header support.</description>
            <pubDate>Thu, 11 May 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>GraphQL</category><category>GraphiQL</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-05-09-solving-n-plus-1-query-in-graphql-using-graphql-batch</guid>
            <title>Solving N+1 query in GraphQL using graphql-batch</title>
            <link>https://eshaiju.com/blog/2017-05-09-solving-n-plus-1-query-in-graphql-using-graphql-batch</link>
            <description>Solve the common N+1 SQL query problem in GraphQL Ruby applications using the graphql-batch gem.</description>
            <pubDate>Tue, 09 May 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>GraphQL</category><category>Ruby</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-05-08-graphql-server-nested-query-implemenation-example-in-ruby-on-rails</guid>
            <title>GraphQL Server - Nested Query Implementation Example in Ruby on Rails</title>
            <link>https://eshaiju.com/blog/2017-05-08-graphql-server-nested-query-implemenation-example-in-ruby-on-rails</link>
            <description>Learn how to implement nested data sets in GraphQL to fetch complex data structures in a single request.</description>
            <pubDate>Mon, 08 May 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>GraphQL</category><category>Ruby</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-05-06-a-graphql-server-implementation-ruby-on-rails</guid>
            <title>A GraphQL server implementation - Ruby On Rails</title>
            <link>https://eshaiju.com/blog/2017-05-06-a-graphql-server-implementation-ruby-on-rails</link>
            <description>Introduction to implementing a GraphQL server in Ruby on Rails, covering schemas, types, and queries.</description>
            <pubDate>Sat, 06 May 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>GraphQL</category><category>Ruby</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2017-01-19-delayed-job-web-web-interface-for-monitor-delayed-job</guid>
            <title>delayed_job_web - A resque inspired interface for delayed_job</title>
            <link>https://eshaiju.com/blog/2017-01-19-delayed-job-web-web-interface-for-monitor-delayed-job</link>
            <description>Monitor your background jobs with a Resque-inspired web interface for delayed_job.</description>
            <pubDate>Thu, 19 Jan 2017 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2016-02-25-profile-api-endpoints-using-rack-mini-profiler</guid>
            <title>Profile API endpoints Using rack-mini-profiler</title>
            <link>https://eshaiju.com/blog/2016-02-25-profile-api-endpoints-using-rack-mini-profiler</link>
            <description>Fine-tune your API performance by profiling endpoints with the rack-mini-profiler gem.</description>
            <pubDate>Thu, 25 Feb 2016 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2016-02-16-slide-active-record-basics</guid>
            <title>slide-Active Record Basics</title>
            <link>https://eshaiju.com/blog/2016-02-16-slide-active-record-basics</link>
            <description>An introduction to Active Record basics and core CRUD operations in Rails.</description>
            <pubDate>Tue, 16 Feb 2016 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2016-02-15-apipi-dumping-examples-in-to-apipie-examples-file</guid>
            <title>Apipie - Dumping Examples into apipie_examples File</title>
            <link>https://eshaiju.com/blog/2016-02-15-apipi-dumping-examples-in-to-apipie-examples-file</link>
            <description>Learn how to record and store API examples in JSON format using Apipie-rails.</description>
            <pubDate>Mon, 15 Feb 2016 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2016-02-15-rails-5-belongs-to-associations-default-to-required-true</guid>
            <title>Rails 5 &#39;belongs_to&#39; associations default to required true</title>
            <link>https://eshaiju.com/blog/2016-02-15-rails-5-belongs-to-associations-default-to-required-true</link>
            <description>Rails 5 introduces a change where belongs_to associations are required by default. Learn how to manage this new behavior.</description>
            <pubDate>Mon, 15 Feb 2016 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category><category>Rails 5</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2016-02-08-camaleon-cms-new-ruby-on-rails-cms-framework</guid>
            <title>Camaleon CMS - Wordpress Alternative built in Ruby on Rails 4</title>
            <link>https://eshaiju.com/blog/2016-02-08-camaleon-cms-new-ruby-on-rails-cms-framework</link>
            <description>Camaleon CMS is a powerful open-source alternatives to WordPress, built specifically for Ruby on Rails.</description>
            <pubDate>Mon, 08 Feb 2016 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2016-01-28-create-rails-application-from-edge-version-rails-5-0-beta</guid>
            <title>Create Rails Application from Edge Version -- 5.0.0.beta1.1</title>
            <link>https://eshaiju.com/blog/2016-01-28-create-rails-application-from-edge-version-rails-5-0-beta</link>
            <description>Setup a new Rails application using the edge version to test new features like Action Cable and API mode.</description>
            <pubDate>Thu, 28 Jan 2016 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-08-09-travis-ci-integration-step-by-step-tutorial</guid>
            <title>Travis CI integration - Step by step tutorial</title>
            <link>https://eshaiju.com/blog/2015-08-09-travis-ci-integration-step-by-step-tutorial</link>
            <description>Learn how to integrate Travis CI with your GitHub repository for automated builds and testing.</description>
            <pubDate>Sun, 09 Aug 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>General</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-07-24-slide-playing-with-active-record-migrations</guid>
            <title>Slide - Playing with Active Record Migrations</title>
            <link>https://eshaiju.com/blog/2015-07-24-slide-playing-with-active-record-migrations</link>
            <description>A session covering the essentials of Active Record Migrations in Ruby on Rails.</description>
            <pubDate>Fri, 24 Jul 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-07-10-slide-an-introduction-to-active-record-associations</guid>
            <title>Slide - An introduction to Active Record Associations</title>
            <link>https://eshaiju.com/blog/2015-07-10-slide-an-introduction-to-active-record-associations</link>
            <description>Introduction to the basic concepts of Active Record Associations in Ruby on Rails.</description>
            <pubDate>Fri, 10 Jul 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-07-02-slide-an-introduction-to-ruby-on-rails</guid>
            <title>Slide - An Introduction To Ruby On Rails</title>
            <link>https://eshaiju.com/blog/2015-07-02-slide-an-introduction-to-ruby-on-rails</link>
            <description>Introduction to Ruby on Rails slides for beginners and new joiners.</description>
            <pubDate>Thu, 02 Jul 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-02-18-rspec-run-specific-set-of-tests-using-tag-option</guid>
            <title>Rspec Run specific set of tests using --tag option</title>
            <link>https://eshaiju.com/blog/2015-02-18-rspec-run-specific-set-of-tests-using-tag-option</link>
            <description>Speed up your development by running a specific subset of tests using RSpec&#39;s tagging feature.</description>
            <pubDate>Wed, 18 Feb 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category><category>Rspec</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-02-15-implement-dependent-select-in-active-admin</guid>
            <title>Implement Dependent select in Active Admin</title>
            <link>https://eshaiju.com/blog/2015-02-15-implement-dependent-select-in-active-admin</link>
            <description>Learn how to implement dependent select boxes in ActiveAdmin to populate options based on previous selections.</description>
            <pubDate>Sun, 15 Feb 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category><category>ActiveAdmin</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-02-08-ruby-on-rails-applications-security-vulnerability-checking-tool-brakeman</guid>
            <title>Ruby on Rails applications security vulnerability checking tool - Brakeman</title>
            <link>https://eshaiju.com/blog/2015-02-08-ruby-on-rails-applications-security-vulnerability-checking-tool-brakeman</link>
            <description>Brakeman is a static analysis tool that checks Ruby on Rails applications for security vulnerabilities without needing a full execution stack.</description>
            <pubDate>Sun, 08 Feb 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-01-25-translate-active-record-model-name-attrbutes-with-rails-internationalization-i18n-api</guid>
            <title>Translate Active Record Model Name, Attributes, and Error Messages with Rails Internationalization (I18n) API</title>
            <link>https://eshaiju.com/blog/2015-01-25-translate-active-record-model-name-attrbutes-with-rails-internationalization-i18n-api</link>
            <description>The Ruby I18n gem provides an easy-to-use framework for translating your application&#39;s models, attributes, and validation messages.</description>
            <pubDate>Sun, 25 Jan 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-01-22-two-ways-to-avoid-cors-issue-in-development-environment</guid>
            <title>Two Ways to Avoid Cross-Origin Resource Sharing Issues in Development Environment</title>
            <link>https://eshaiju.com/blog/2015-01-22-two-ways-to-avoid-cors-issue-in-development-environment</link>
            <description>Solve CORS issues in development by setting up a reverse proxy or disabling browser security checks.</description>
            <pubDate>Thu, 22 Jan 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>General</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-01-19-activeskin-flat-skin-for-active-admin</guid>
            <title>ActiveSkin - Flat skin for active admin</title>
            <link>https://eshaiju.com/blog/2015-01-19-activeskin-flat-skin-for-active-admin</link>
            <description>Active Admin is a Ruby on Rails plugin for generating administration style interfaces. ActiveSkin is a beautiful flat skin for it.</description>
            <pubDate>Mon, 19 Jan 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category><category>ActiveAdmin</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-01-16-standard-for-the-order-of-associations-scopes-includes-validations-in-a-rails-model</guid>
            <title>Standard for the Order of Associations, Scopes, Includes, and Validations in a Rails Model</title>
            <link>https://eshaiju.com/blog/2015-01-16-standard-for-the-order-of-associations-scopes-includes-validations-in-a-rails-model</link>
            <description>Maintain a consistent order of associations, scopes, and methods in your Rails models for better readability.</description>
            <pubDate>Fri, 16 Jan 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-01-15-check-rspec-test-coverage-with-simplecov-gem</guid>
            <title>Check Test Coverage With SimpleCov Gem</title>
            <link>https://eshaiju.com/blog/2015-01-15-check-rspec-test-coverage-with-simplecov-gem</link>
            <description>SimpleCov is a code coverage analysis tool for Ruby. Set it up with just a few lines of code to get detailed coverage reports.</description>
            <pubDate>Thu, 15 Jan 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-01-13-password-policy-implemenation-with-devise-and-devise-security-extension</guid>
            <title>Password Policy Implementation with Devise and Devise Security Extension</title>
            <link>https://eshaiju.com/blog/2015-01-13-password-policy-implemenation-with-devise-and-devise-security-extension</link>
            <description>Implement banking-grade password policies in Rails using the Devise gem and Devise Security Extension.</description>
            <pubDate>Tue, 13 Jan 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-01-09-apipie-rails-rails-api-documentation-tool</guid>
            <title>Apipie-rails - Rails API documentation tool</title>
            <link>https://eshaiju.com/blog/2015-01-09-apipie-rails-rails-api-documentation-tool</link>
            <description>Document your RESTful API in Rails using Apipie, a DSL that lets you describe your code through the code itself.</description>
            <pubDate>Fri, 09 Jan 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-01-08-spree-add-extra-fields-to-product-model-with-deface-and-decorator</guid>
            <title>Spree - Add extra fields to product model with deface and decorator</title>
            <link>https://eshaiju.com/blog/2015-01-08-spree-add-extra-fields-to-product-model-with-deface-and-decorator</link>
            <description>Customize Spree Commerce models by adding extra fields using decorators and Deface.</description>
            <pubDate>Thu, 08 Jan 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Spree</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-01-05-multiple-language-site-in-refinery-with-i18n</guid>
            <title>Multiple language sites in Refinery CMS with i18n</title>
            <link>https://eshaiju.com/blog/2015-01-05-multiple-language-site-in-refinery-with-i18n</link>
            <description>Make your Refinery CMS site multilingual using the refinerycms-i18n gem.</description>
            <pubDate>Mon, 05 Jan 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Refinery CMS</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2015-01-03-custom-html5-validation-error-messages-with-civem-dot-js</guid>
            <title>Custom HTML5 Validation Error Messages with Civem.js</title>
            <link>https://eshaiju.com/blog/2015-01-03-custom-html5-validation-error-messages-with-civem-dot-js</link>
            <description>HTML5 allows us to implement client-side form validation without coding. Learn how to customize the error messages with Civem.js.</description>
            <pubDate>Sat, 03 Jan 2015 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>General</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2014-07-27-deploying-ruby-on-rails-application-to-cloud-application-platform-openshift</guid>
            <title>Deploying Ruby On Rails Application To Cloud Application Platform - Openshift</title>
            <link>https://eshaiju.com/blog/2014-07-27-deploying-ruby-on-rails-application-to-cloud-application-platform-openshift</link>
            <description>OpenShift is a Platform as a Service (PaaS) from RedHat. Learn how to deploy a Rails application to OpenShift gears.</description>
            <pubDate>Sun, 27 Jul 2014 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category><category>Deployment</category><category>Openshift</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2014-04-30-in-page-editing-in-rails-active-admin-using-gem-best-in-place</guid>
            <title>In Page Editing In &#39;Active Admin&#39; - Using Gem &#39;Best In Place&#39;</title>
            <link>https://eshaiju.com/blog/2014-04-30-in-page-editing-in-rails-active-admin-using-gem-best-in-place</link>
            <description>Add in-place editing to ActiveAdmin pages using the Best In Place gem for a seamless user experience.</description>
            <pubDate>Wed, 30 Apr 2014 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category><category>ActiveAdmin</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2014-03-16-nested-forms-for-belongsto-relationship</guid>
            <title>Nested forms for belongs_to relationship - ActiveAdmin</title>
            <link>https://eshaiju.com/blog/2014-03-16-nested-forms-for-belongsto-relationship</link>
            <description>Implement nested forms for belongs_to relationships in ActiveAdmin using accepts_nested_attributes_for.</description>
            <pubDate>Sun, 16 Mar 2014 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category><category>ActiveAdmin</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2014-03-05-fullcalendar-integration-with-ruby-on</guid>
            <title>FullCalendar - Integration with Ruby On Rails</title>
            <link>https://eshaiju.com/blog/2014-03-05-fullcalendar-integration-with-ruby-on</link>
            <description>FullCalendar is a jQuery plugin that provides a full-sized drag-and-drop calendar. Learn how to integrate it with a Rails application.</description>
            <pubDate>Wed, 05 Mar 2014 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category><category>ActiveAdmin</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2014-02-04-activeadmin-adding-filter-on-hasone</guid>
            <title>ActiveAdmin- adding a filter on has_one through association</title>
            <link>https://eshaiju.com/blog/2014-02-04-activeadmin-adding-filter-on-hasone</link>
            <description>Setup a has_one :through relationship filter in ActiveAdmin with Project, Task, and Activity models.</description>
            <pubDate>Tue, 04 Feb 2014 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category><category>ActiveAdmin</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2014-01-01-autocomplete-using-chosen-in-rails</guid>
            <title>Autocomplete using Chosen in Rails Active_admin</title>
            <link>https://eshaiju.com/blog/2014-01-01-autocomplete-using-chosen-in-rails</link>
            <description>Implement autocomplete in the active_admin interface to select one or more users from the user list using the Chosen library.</description>
            <pubDate>Wed, 01 Jan 2014 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Ruby On Rails</category><category>ActiveAdmin</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2013-11-03-changing-kannel-log-level-log-rotation</guid>
            <title>Changing Kannel Log Level &amp; Log Rotation</title>
            <link>https://eshaiju.com/blog/2013-11-03-changing-kannel-log-level-log-rotation</link>
            <description>Reduce Kannel logs by changing the log level or setting up log rotation with logrotate.</description>
            <pubDate>Sun, 03 Nov 2013 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Kannel</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2013-10-31-installing-and-configuring-sql-based</guid>
            <title>Installing and configuring SQL-Based queue engine for Kannel (SQL box)</title>
            <link>https://eshaiju.com/blog/2013-10-31-installing-and-configuring-sql-based</link>
            <description>SQL box is a special Kannel box that sits between bearer box and SMS box and uses a database queue to store and forward messages.</description>
            <pubDate>Thu, 31 Oct 2013 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Kannel</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2013-10-03-kannel-monitoring-tool-ruby-gem</guid>
            <title>Kannel monitoring tool - Ruby Gem</title>
            <link>https://eshaiju.com/blog/2013-10-03-kannel-monitoring-tool-ruby-gem</link>
            <description>Over the past few months, I have been facing many issues with the Kannel SMS gateway. I decided to write a tool to monitor Kannel activities.</description>
            <pubDate>Thu, 03 Oct 2013 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Kannel</category><category>RubyGem</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2013-10-01-a-gem-for-generating-custom-error-pages</guid>
            <title>A Gem for generating Custom error pages in Rails Application</title>
            <link>https://eshaiju.com/blog/2013-10-01-a-gem-for-generating-custom-error-pages</link>
            <description>Writing a Ruby Gem was a long-time wish of mine. This generator automatically generates custom code for handling 404 and 500 errors and pages in Rails applications.</description>
            <pubDate>Tue, 01 Oct 2013 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>RubyGem</category><category>Ruby On Rails</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2013-09-09-configuring-mysql-dlr-storage</guid>
            <title>Configuring MySQL DLR storage</title>
            <link>https://eshaiju.com/blog/2013-09-09-configuring-mysql-dlr-storage</link>
            <description>To support MySQL, we need to recompile Kannel with --mysql. To store DLR information in a MySQL database, you can use the dlr-storage = mysql configuration directive.</description>
            <pubDate>Mon, 09 Sep 2013 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Kannel</category>
          </item>
        
          <item>
            <guid>https://eshaiju.com/blog/2013-09-01-kannel-installation-and-configuration</guid>
            <title>Kannel Installation and Configuration as SMS Gateway Server</title>
            <link>https://eshaiju.com/blog/2013-09-01-kannel-installation-and-configuration</link>
            <description>Kannel is an open-source WAP and SMS gateway for GSM networks. Learn how to install and configure it to link HTTP-based services with SMS centres.</description>
            <pubDate>Sun, 01 Sep 2013 00:00:00 GMT</pubDate>
            <author> (Shaiju Edakulangara)</author>
            <category>Kannel</category>
          </item>
        
      </channel>
    </rss>
  