<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ruby on Rails on Rietta Cybersecurity</title>
    <link>https://rietta.com/tags/ruby-on-rails/</link>
    <description>Recent content in Ruby on Rails on Rietta Cybersecurity</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <copyright>1999-2026 Rietta Inc. All Rights Reserved.</copyright>
    <atom:link href="https://rietta.com/tags/ruby-on-rails/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Government Rails Site Hit Hours After CVE Patch</title>
      <link>https://rietta.com/blog/ruby-on-rails-cve-exploited-hours-after-patch/</link>
      <pubDate>Fri, 04 Sep 2026 12:55:00 -0400</pubDate>
      <guid>https://rietta.com/blog/ruby-on-rails-cve-exploited-hours-after-patch/</guid>
      <description>After hours on Wednesday, July 29, 2026, Rietta executed our emergency hotfix procedure across our entire client base for sites impacted by a severe remote code execution vulnerability in ActiveStorage, a component of Ruby on Rails 8 and newer. We worked off the initial GitHub Security Advisory, published the same day the patch shipped. Ethiack, one of the research teams that discovered the flaw, dubbed it KindaRails2Shell (CVE-2026-66066) in their initial disclosure post that same day, July 29th, with a full technical deep-dive following the next day on July 30th.</description>
    </item>
    <item>
      <title>Protect Production SQL Databases from AI/LLM Agentic SQL Query Risks</title>
      <link>https://rietta.com/blog/ai-sql-database-data-protection-read-replica/</link>
      <pubDate>Wed, 04 Feb 2026 08:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/ai-sql-database-data-protection-read-replica/</guid>
      <description>Overview Many are concerned with how to protect production databases from AI query agents, a subset of AI coding agents, designed to assist in writing SQL queries against a database using natural-language prompts. It is helpful to think about this new capability as a pseudo-deterministic compiler that takes a prompt, reads the schema of the database, and produces dynamic queries that are executed against the production database with minimal human intervention.</description>
    </item>
    <item>
      <title>Use AI to Describe Images as a Background Job in Ruby on Rails</title>
      <link>https://rietta.com/blog/llm-ai-as-background-job/</link>
      <pubDate>Fri, 23 Jan 2026 06:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/llm-ai-as-background-job/</guid>
      <description>Recently I wrote about how I run a Local AI Setup with Ollama and Nvidia GPU on Ubuntu Linux, but today I want to touch a bit more about how one can fit Artificial Intelligence (AI) into your Ruby on Rails application.&#xA;At the risk of oversimplication, let&amp;rsquo;s start with an example: you allow users to upload an image to your Ruby on Rails application and provide a place for them to enter alternative text (the ALT HTML attribute) for each image that describes the content.</description>
    </item>
    <item>
      <title>A Journey From QBasic Random Access Files to PostgreSQL</title>
      <link>https://rietta.com/blog/random-access-files-to-databases/</link>
      <pubDate>Tue, 11 Jun 2024 08:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/random-access-files-to-databases/</guid>
      <description>As a practicing developer, I have a good bit of experience working with software that needed to store data. In this article I am going to recount a brief history of the world of databases, the long version would take a book, as I personally experienced working on code for the last 28 years. This should be informative to readers who want to understand more about just how powerful modern database systems are in comparison.</description>
    </item>
    <item>
      <title>Streamlining Workflows With Docker</title>
      <link>https://rietta.com/blog/streamlining-workflows-with-docker/</link>
      <pubDate>Tue, 09 Feb 2021 11:00:00 -0500</pubDate>
      <guid>https://rietta.com/blog/streamlining-workflows-with-docker/</guid>
      <description>Every week, our team puts most of our hours towards helping our long term, stable client applications stay up to date. From dependency upgrades to changes in the code base, we make sure these older rails apps are kept secure and functioning. Some of our clients choose to hire us because the amount of time spent securely maintaining their app does not justify the cost of hiring a full-time developer, while others are looking for a trustworthy assistance after losing a key developer.</description>
    </item>
    <item>
      <title>Learning Object-Oriented Programming in Ruby vs C/C&#43;&#43;</title>
      <link>https://rietta.com/blog/learning-oop-ruby-vs-c/</link>
      <pubDate>Tue, 15 Dec 2020 10:00:00 -0500</pubDate>
      <guid>https://rietta.com/blog/learning-oop-ruby-vs-c/</guid>
      <description>As a newcomer to Ruby, the ease of using the language was a welcomed surprise.&#xA;In the comp sci program at UC Davis, many of the core lower division courses, including those that introduce students to object-oriented programming (OOP), are taught in C/C++. Simultaneously learning the fundamentals for memory management and OOP, along with the unique C/C++ syntax, can quickly become a headache for those of us just starting out in computer science.</description>
    </item>
    <item>
      <title>Remote Team Culture - Code Review and Style Guides</title>
      <link>https://rietta.com/blog/code-styles-in-small-remote-teams/</link>
      <pubDate>Sat, 12 Dec 2020 02:30:00 -0600</pubDate>
      <guid>https://rietta.com/blog/code-styles-in-small-remote-teams/</guid>
      <description>Code Review at Rietta When joining a new team, a developer can be nervous when making their first pull request or contribution to a codebase.&#xA;The thought of your team going through your code and ripping it to shreds is both reasonable and scary. So how does a team eliminate this fear and instead, encourage newer developers to greet code reviews as a opportunity to not only improve their code, but to encourage a healthier environment to actually collaborate?</description>
    </item>
    <item>
      <title>The convergence of Ruby on Rails and #AppSec Podcast Appearance</title>
      <link>https://rietta.com/blog/ruby-on-rails-and-appsec/</link>
      <pubDate>Wed, 07 Oct 2020 08:00:00 -0500</pubDate>
      <guid>https://rietta.com/blog/ruby-on-rails-and-appsec/</guid>
      <description>I recently appeared as a guest on the Application Security Podcast with Chris Romeo to talk about the convergence of Ruby on Rails and #AppSec.&#xA;The discussion covered a range of topics including secure coding with Ruby on Rails, RoR vs other languages and culture, the importance of CI/CD, and more.&#xA;Check it out!</description>
    </item>
    <item>
      <title>Dependency Security and Hacking Rails with Jason Swett (Podcast)</title>
      <link>https://rietta.com/blog/dependency-security-and-hacking-rails-with-jason/</link>
      <pubDate>Tue, 21 Apr 2020 10:00:00 -0500</pubDate>
      <guid>https://rietta.com/blog/dependency-security-and-hacking-rails-with-jason/</guid>
      <description>I recently appeared in Episode 41 of The Rails with Jason Podcast for a wide-ranging discussion about Ruby on Rails security, the security value of keeping gems updated, the security risk of infrequent deployment, state-sponsored hacking, and practical tips on how to protect your organization.&#xA;Give it a listen to better understand some common ways that production projects go south in their security practices and why solid test coverage, regular reviews of your dependencies, and frequent deploys help make you much more secure.</description>
    </item>
    <item>
      <title>Dependency Management and Security</title>
      <link>https://rietta.com/blog/dependency-management-and-security/</link>
      <pubDate>Thu, 06 Feb 2020 10:00:00 -0500</pubDate>
      <guid>https://rietta.com/blog/dependency-management-and-security/</guid>
      <description>Security in web development touches all avenues of the field from requests, session hijacking, SQL injections and many more mentioned on the Open Web Application Security Project (OWASP). Many buffers now exist between developers and situations where malicious users can capitalize on dependency management oversights. Hackers are resourceful in their exploits of known (and sometimes unknown) vulnerabilities.&#xA;As one of our developers Rob mentions on his blog post, &amp;ldquo;A Newer Dev&amp;rsquo;s Perspective on Learning OWASP&amp;rdquo;,</description>
    </item>
    <item>
      <title>AppSec as a Requirement in the Development Process</title>
      <link>https://rietta.com/blog/appsec-dev-process-requirement/</link>
      <pubDate>Mon, 13 Jan 2020 09:30:00 -0500</pubDate>
      <guid>https://rietta.com/blog/appsec-dev-process-requirement/</guid>
      <description>We&amp;rsquo;re now well underway for the year 2020. People from time-to-time will make predictions about what is to come and when we look back, one has to laugh at how wrong they were. If you had asked me in 2005 if I thought we would be dealing with SQL injection 15 years later in 2020, I would have told you no, it will surely be solved by then. At the time I was still a student at Georgia Tech and wrote on this blog about SQL injection and presented a paper on application layer detection at the ACM South Eastern Conference.</description>
    </item>
    <item>
      <title>Ruby Gems Supply Chain Vulnerability</title>
      <link>https://rietta.com/blog/rubygems-supply-chain-vulnerability/</link>
      <pubDate>Fri, 06 Sep 2019 11:00:00 -0400</pubDate>
      <guid>https://rietta.com/blog/rubygems-supply-chain-vulnerability/</guid>
      <description>&lt;p&gt;Every Ruby on Rails application depends on Ruby Gems, the third party open source libraries that make development possible. A brand new Ruby on Rails 6 application, with default options, depends upon 75 Gems before the developer makes any customizations to the app! These Gems are produced by volunteer open source maintainers, many of whom are not paid anything to work on open source, and distributed for free via &lt;a href=&#34;https://rubygems.org/&#34;&gt;rubygems.org&lt;/a&gt;. This is a fantastic resource that makes it possible to create so many good Ruby-based applications with minimum effort re-inventing the wheel. However, how is a developer to know the Gems he or she has in a project are in fact safe.&lt;/p&gt;&#xA;&lt;p&gt;There have been malicious backdoors distributed in multiple Gems this year. These supply chain attacks have been detected and remediated by the RubyGems community, but it will happen again. Let&amp;rsquo;s look at the patterns common among the malicious Gems and the how you can go about protecting your own application.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Case for 2FA, Post Rest-client Gem CVE</title>
      <link>https://rietta.com/blog/rest-client-cve/</link>
      <pubDate>Thu, 22 Aug 2019 10:00:00 -0400</pubDate>
      <guid>https://rietta.com/blog/rest-client-cve/</guid>
      <description>Most CVEs occur as a result of a oversight in the architecture or mishandling of how libraries may interact with your application. In some cases like what had occurred with the Rest-client gem version 1.6.13, a package maintainer account on https://rubygems.org was hijacked and used to push malicious code that would compromise sensitive credentials for payment manager accounts, database access, repository access, and others that can cause irreparable damages. The hijacker conducted a series of releases - 1.</description>
    </item>
    <item>
      <title>Are you accidentally storing private data in plain text?</title>
      <link>https://rietta.com/blog/plaintext-sensitive-data-in-unfiltered-logs/</link>
      <pubDate>Mon, 29 Apr 2019 16:15:00 -0400</pubDate>
      <guid>https://rietta.com/blog/plaintext-sensitive-data-in-unfiltered-logs/</guid>
      <description>&lt;p&gt;Debug logs that chronicle data about errors and other exceptions on a web application are a vital tool for any web company. It enables engineering teams to troubleshoot problems - sometimes even before a customer reports an issue to support - and thus provide excellent service to customers. But the danger of over-logging is real. When sensitive data is logged, it becomes vulnerable to misuse and abuse. In this article, I&amp;rsquo;ll show you how to prudently minimize the data collected in logs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New Interview on Drifting Ruby</title>
      <link>https://rietta.com/blog/new-interview-on-drifting-ruby/</link>
      <pubDate>Thu, 18 Apr 2019 03:15:00 -0400</pubDate>
      <guid>https://rietta.com/blog/new-interview-on-drifting-ruby/</guid>
      <description>&lt;p&gt;Recently, our very own Frank Rietta (yes that Rietta) had a chance to sit down (virtually of course) with Dave Kimura (&lt;a href=&#34;https://twitter.com/kobaltz/&#34;&gt;@kobaltz on Twitter&lt;/a&gt;) of the Drifting Ruby screencast. For those who don&amp;rsquo;t know, Drifting Ruby is an educational site, blog, and screencast with all things Ruby. Drifting Ruby offers premium training with example-based content to up your dev game to the next level.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prevent an Outdated and Broken bin/setup with This Simple Trick</title>
      <link>https://rietta.com/blog/prevent-an-outdated-and-broken-bin-setup-with-this-simple-trick/</link>
      <pubDate>Tue, 27 Nov 2018 18:00:00 -0500</pubDate>
      <guid>https://rietta.com/blog/prevent-an-outdated-and-broken-bin-setup-with-this-simple-trick/</guid>
      <description>&lt;p&gt;Having a good &lt;a href=&#34;https://rietta.com/blog/writing-a-good-bin-setup/&#34;&gt;bin/setup&lt;/a&gt; is very essential to having a quick onboarding time as well as getting your environment back up and going in case of emergency.&lt;/p&gt;&#xA;&lt;p&gt;But how often do you run this &lt;code&gt;bin/setup&lt;/code&gt; if it&amp;rsquo;s only ran when you setup your repo? Most developers setup their environment only every once in awhile. What happens when changes to the codebase happen and the bin/setup isn&amp;rsquo;t modified as well?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Writing a good bin/setup</title>
      <link>https://rietta.com/blog/writing-a-good-bin-setup/</link>
      <pubDate>Thu, 06 Sep 2018 13:00:00 -0400</pubDate>
      <guid>https://rietta.com/blog/writing-a-good-bin-setup/</guid>
      <description>&lt;p&gt;Nothing is better than cloning a code repository, running the &lt;code&gt;bin/setup&lt;/code&gt;, and everything about the project &lt;em&gt;just works&lt;/em&gt;. It’s the developer equivalent of waking up before your alarm goes off and realizing you can sleep for another two hours.&lt;/p&gt;&#xA;&lt;p&gt;A good &lt;code&gt;bin/setup&lt;/code&gt; can mean the difference between a frustrating on-boarding process and a fantastic one.&lt;/p&gt;&#xA;&lt;p&gt;When you have a completed &lt;code&gt;bin/setup&lt;/code&gt;, you have an easy way to get new and existing developers up and running quickly, stress-free. It can also streamline continuous integration setup and maintenance. A good &lt;code&gt;bin/setup&lt;/code&gt; gives you peace of mind when setting up a new machine and offloads the mental work of project setup to a verifiable tool.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automatically Migrate from Factory Girl to Factory Bot</title>
      <link>https://rietta.com/blog/automatically-migrate-from-factory-girl-to-factory-bot/</link>
      <pubDate>Tue, 21 Aug 2018 18:30:00 -0500</pubDate>
      <guid>https://rietta.com/blog/automatically-migrate-from-factory-girl-to-factory-bot/</guid>
      <description>&lt;p&gt;Gem updates are tedious. Gem name changes are even more tedious. This quick script converts Factory Girl references to Factory Bot references.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Southeast Ruby Conference Recap</title>
      <link>https://rietta.com/blog/southeast-ruby-conference-recap/</link>
      <pubDate>Sat, 07 Oct 2017 14:00:00 -0500</pubDate>
      <guid>https://rietta.com/blog/southeast-ruby-conference-recap/</guid>
      <description>&lt;p&gt;On the behalf of the entire Rietta team, I would like to give a huge shout out to &lt;a href=&#34;https://jasoncharnes.com/&#34;&gt;Jason Charnes&lt;/a&gt; (&lt;a href=&#34;https://twitter.com/jmcharnes&#34;&gt;@jmcharnes&lt;/a&gt;) for hosting the &lt;a href=&#34;https://twitter.com/southeastruby&#34;&gt;South East Ruby Conf&lt;/a&gt; in Nashville, TN this week. I was pleased to meet many members of the &lt;a href=&#34;http://www.rubyonrails.link/&#34;&gt;Ruby On Rails Link Slack Group&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Each and every talk was fantastic, I&amp;rsquo;d like to go into depth with a few highlights for anybody that was unable to participate in this conference.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Engine Yard&#39;s 17 Rails Security Tips</title>
      <link>https://rietta.com/blog/engine-yards-17-rails-security-tips/</link>
      <pubDate>Tue, 05 Sep 2017 00:01:03 -0400</pubDate>
      <guid>https://rietta.com/blog/engine-yards-17-rails-security-tips/</guid>
      <description>Christoper Rigor has posted a good set of Ruby on Rails Security 17-Item Checklist on Engine Yard&amp;rsquo;s blog. Check it out.&#xA;He did a good job hitting the important ones without being overly verbose.&#xA;If you&amp;rsquo;re looking for a standard to follow, check out the OWASP ASVS.</description>
    </item>
    <item>
      <title>Rails: Set Max Length on Fields</title>
      <link>https://rietta.com/blog/rails-set-max-length-on-fields/</link>
      <pubDate>Sat, 22 Oct 2016 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/rails-set-max-length-on-fields/</guid>
      <description>I originally started drafting this post on January 14, 2012, but it sat unpublished since then. Its fun to look back at ones journey, 1743 days ago. In 2012, I was relatively new to the Ruby on Rails platform after having worked in PHP and SQL for years, as well as a little .NET. The platform has been a good choice that I enjoy working with still to this day. I was working in Rails 3 at the time and had completed at least three client websites in Rails in 2011.</description>
    </item>
    <item>
      <title>Ruby Application Security Talk Featured in Ruby Weekly Issue # 268</title>
      <link>https://rietta.com/blog/appsec-talk-featured-in-ruby-weekly/</link>
      <pubDate>Thu, 15 Oct 2015 12:40:53 -0400</pubDate>
      <guid>https://rietta.com/blog/appsec-talk-featured-in-ruby-weekly/</guid>
      <description>A link to my talk on &amp;ldquo;Defending Against Data Breaches, as a Practicing Ruby Developer&amp;rdquo; at Rocky Mountain Ruby 2015 was featured in Issue # 268 of Ruby Weekly! Thanks Peter Cooper!&#xA;I&amp;rsquo;m super glad to see the word getting out that security has to be part of the development process. Oh by the way, I learned at the ISSA International conference this week that Microsoft has a version of their Secure Development Lifecycle tailored for Agile development.</description>
    </item>
    <item>
      <title>Uniqueness Validation Race Condition in Ruby on Rails applications</title>
      <link>https://rietta.com/blog/validates-uniqueness-race-condition-in-ruby-on-rails/</link>
      <pubDate>Mon, 04 May 2015 12:00:00 -0400</pubDate>
      <guid>https://rietta.com/blog/validates-uniqueness-race-condition-in-ruby-on-rails/</guid>
      <description>&lt;p&gt;Are you a practicing Ruby on Rails developer? It doesn&amp;rsquo;t matter if you are called a junior developer, senior developer, or the janitor. It is surprisingly easy for &lt;em&gt;race conditions&lt;/em&gt; to slip into your code and out into production. Some of these can lead to annoying duplicate e-mails in your database or they could lead to serious security issues that impact your company&amp;rsquo;s bottom line.&lt;/p&gt;&#xA;&lt;p&gt;As you read on, I&amp;rsquo;m going to teach you a bit about race conditions, also called hazards in some engineering circles, and give you a practical example of how one can slip into a Rails application if you were to choose to enforce validation constraints only within an application&amp;rsquo;s models with a &lt;code&gt;validates :field_name, uniqueness: true&lt;/code&gt; rather than through database constraints.&lt;/p&gt;&#xA;&lt;p&gt;Before we begin, I do want to remind you about one thing. Preventing race conditions is not just something that can be added to Ruby on Rails because the methods for automatically detecting race conditions is an &lt;acronym title=&#34;A problem is NP-hard if an algorithm for solving it can be translated into one for solving any nondeterministic polynomial time problem.&#34;&gt;NP-hard&lt;/acronym&gt; problem in computer science. That&amp;rsquo;s why it&amp;rsquo;s so important that you understand something about spotting situations where they may occur so that you stand a better chance at leaving them out of your next deploy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding a Rake Task for SQL Views to a Rails Project</title>
      <link>https://rietta.com/blog/adding-rake-db-views-for-sql-views-to-a-rails-project/</link>
      <pubDate>Mon, 30 Mar 2015 12:00:00 -0400</pubDate>
      <guid>https://rietta.com/blog/adding-rake-db-views-for-sql-views-to-a-rails-project/</guid>
      <description>&lt;p&gt;I have previously written about &lt;a href=&#34;https://rietta.com/blog/rails-and-sql-views-for-a-report/&#34;&gt;Using Rails and SQL Views for a Report&lt;/a&gt;. A practical consideration when employing SQL views, which create wonderfully fast read-only tables that can be used by ActiveRecord models seamlessly, in a Ruby on Rails project is where to maintain them in a project.&lt;/p&gt;&#xA;&lt;p&gt;One approach is to use migrations, since that&amp;rsquo;s where database stuff normally goes. But a big downside is that this approach is not &lt;acronym title=&#34;Do Not Repeat Yourself - a common Ruby community refrain&#34;&gt;DRY&lt;/acronym&gt; because changing the SQL view requires a new migration that drops the old view and replaces it with the updated version. &lt;em&gt;Simply changing a field in the SQL view requires copying and pasting the entire definition over again&lt;/em&gt;. That&amp;rsquo;s just annoying!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;The second, and in my opinion better approach, is to treat SQL views more like models.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get the Current Year in the Ruby programming language</title>
      <link>https://rietta.com/blog/ruby-current-year/</link>
      <pubDate>Fri, 13 Mar 2015 10:09:55 -0400</pubDate>
      <guid>https://rietta.com/blog/ruby-current-year/</guid>
      <description>&lt;p&gt;When learning Ruby on Rails, sometimes you just need to get the current year as a number. I posted one example on why this is a useful way on a real-life website in the 2011 post on how to &lt;a href=&#34;https://rietta.com/blog/how-to-automate-copyright-notice/&#34;&gt;automatically update copyright notices&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In this article, I will show you some methods for getting the current year, such as the number &lt;code&gt;2015&lt;/code&gt;. I will then show you how to benchmark the methods to determine which is the fastest method for you, given your machine and Ruby version.&lt;/p&gt;&#xA;&lt;h2 id=&#34;okay-just-how-do-i-get-the-current-year-in-ruby&#34;&gt;Okay, just how do I get the Current Year in Ruby?&lt;/h2&gt;&#xA;&lt;p&gt;It&amp;rsquo;s easy. Just use any of the Date/Time objects and call the &lt;code&gt;year&lt;/code&gt; method, like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;c1&#34;&gt;# Using the Time class&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;current_year&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;Time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;year&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# or Time.now.year&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;c1&#34;&gt;# Using the Date class&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;current_year&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;Date&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;today&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;year&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;c1&#34;&gt;# Using the DateTime class&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;current_year&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;DateTime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;now&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;year&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>New Video! Understanding &amp;amp; Defending Against Data Breaches</title>
      <link>https://rietta.com/blog/new-video-understanding-and-defending-against-data-breaches/</link>
      <pubDate>Thu, 19 Feb 2015 23:22:58 -0500</pubDate>
      <guid>https://rietta.com/blog/new-video-understanding-and-defending-against-data-breaches/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://rietta.com/images/posts/2015/02/nashrb_understanding_data_breaches.jpg&#34; alt=&#34;Nash.rb Understanding &amp;amp;amp; Defending Against Data Breaches starts with a proper understanding of Professional Ethics&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;A few weeks ago, I spoke with &lt;a href=&#34;http://www.meetup.com/nashrb/&#34;&gt;the Ruby users&amp;rsquo; group in Nashville, TN&lt;/a&gt;, about the importance of understanding the root cause of data breach security incidents and countermeasures that developers can put in place to help prevent them. It&amp;rsquo;s up on YouTube for your enjoyment at &lt;a href=&#34;https://www.youtube.com/watch?v=dj196NhPyWs&amp;amp;list=PLqZY2tk6rSRl8tS4zmgxijjw35lRe-Ptk&amp;amp;index=2&#34;&gt;Understanding &amp;amp; Defending Against Data Breaches, as a Practicing Software Developer - Nash.rb&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Two new videos! How a Ruby on Rails developer can help prevent a Data Breach</title>
      <link>https://rietta.com/blog/two-new-videos-how-a-ruby-on-rails-developer-can-help-prevent-a-data-breach/</link>
      <pubDate>Fri, 09 Jan 2015 11:12:44 -0500</pubDate>
      <guid>https://rietta.com/blog/two-new-videos-how-a-ruby-on-rails-developer-can-help-prevent-a-data-breach/</guid>
      <description>&lt;p&gt;Two new videos of the data breach talk and class that I lead in August and December are now up on YouTube! I hope that it helps you level up on your security knowledge because good software security needs to be a moral stance.&lt;/p&gt;&#xA;&lt;h2 id=&#34;next-public-talk&#34;&gt;Next public talk&lt;/h2&gt;&#xA;&lt;p&gt;I am scheduled to give a presentation to this topic for the &lt;a href=&#34;http://www.meetup.com/nashrb/events/217795882/&#34;&gt;Nash.rb Users&amp;rsquo; Group on Thursday, February 5, 2015&lt;/a&gt; at the &lt;a href=&#34;https://twitter.com/emmaemail&#34;&gt;Emma office&lt;/a&gt; in Nashville, TN. If you are in town and can make it out, I would love to meet you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learn how Upworthy scaled a Ruby on Rails application to serve massive traffic</title>
      <link>https://rietta.com/blog/learn-how-upworthy-scaled-a-ruby-on-rails-application-to-serve-massive-traffic/</link>
      <pubDate>Fri, 19 Sep 2014 12:23:12 -0400</pubDate>
      <guid>https://rietta.com/blog/learn-how-upworthy-scaled-a-ruby-on-rails-application-to-serve-massive-traffic/</guid>
      <description>&lt;p&gt;Luigi Montanez is the founding engineer of the viral content website &lt;a href=&#34;http://upworthy.com&#34;&gt;http://upworthy.com&lt;/a&gt; and in this ATLRUG talk from July 9, 2014, he gives a fascinating insight into one approach to managing the growth of a startup’s web app in the face of very high traffic. Their backend is built upon Ruby on Rails with an effective use of the Fastly &lt;acronym title=&#34;Content Delivery Network&#34;&gt;CDN&lt;/acronym&gt; to deliver very high performance at scale.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What a Ruby developer can do to help prevent a Data Breach - 2014</title>
      <link>https://rietta.com/blog/what-a-ruby-developer-can-do-to-help-prevent-a-data-breach-2014/</link>
      <pubDate>Thu, 05 Jun 2014 10:18:14 -0400</pubDate>
      <guid>https://rietta.com/blog/what-a-ruby-developer-can-do-to-help-prevent-a-data-breach-2014/</guid>
      <description>I was invited by Tech Talent South to give a guest lecture to their Spring 2014 class of students learning to become Ruby on Rails developers. These students are all adults looking to make a change in their career and are really bright and motivated individuals looking to better themselves with learning to code. In my view this is perfect because being a developer is the most trusted job position one can possibly hold in most organizations.</description>
    </item>
    <item>
      <title>Joe Moore has Pair Programmed for 27,000 Hours</title>
      <link>https://rietta.com/blog/joe-moore-has-pair-programmed-for-27000-hours/</link>
      <pubDate>Tue, 20 May 2014 19:57:11 -0400</pubDate>
      <guid>https://rietta.com/blog/joe-moore-has-pair-programmed-for-27000-hours/</guid>
      <description>In Outliers, Malcolm Gladwell posited that 10,000 hours of practice are what it takes to achieve mastery in a field.&#xA;Well, Joe Moore (@joem on Twitter), the owner of remotepairprogramming.com, has blown past that mark on the subject of pair programming practices and the impact those practices have on real software projects.&#xA;He has pair programmed for 27,000 hours and the audience at RailsConf 2014 asked him anything!&#xA;At Rietta, we do pair programming as a fundamental part of our development process.</description>
    </item>
    <item>
      <title>Issue #6: February, 2014, Web Application Topics Newsletter</title>
      <link>https://rietta.com/blog/newsletter-issue-6/</link>
      <pubDate>Tue, 18 Feb 2014 07:31:00 -0500</pubDate>
      <guid>https://rietta.com/blog/newsletter-issue-6/</guid>
      <description>&lt;h2 id=&#34;in-this-issue&#34;&gt;In this issue&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://rietta.com/blog/newsletter-issue-6/#gitbash&#34;&gt;Get and compare the current Git branch in BASH&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://rietta.com/blog/newsletter-issue-6/#book&#34;&gt;New book of the month&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;Don&amp;rsquo;t Make Me Think&lt;/em&gt;, 3rd Edition&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://rietta.com/blog/newsletter-issue-6/#news&#34;&gt;In the news&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;PaperClip (Ruby on Rails) Insecure Defaults&lt;/li&gt;&#xA;&lt;li&gt;Yahoo user accounts compromised through third party database breach&lt;/li&gt;&#xA;&lt;li&gt;Buffer database compromised through compromise of MongoHQ support credentials&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>How to use SQL views to Build Reports with Ruby on Rails</title>
      <link>https://rietta.com/blog/rails-and-sql-views-for-a-report/</link>
      <pubDate>Thu, 28 Nov 2013 10:54:00 +0000</pubDate>
      <guid>https://rietta.com/blog/rails-and-sql-views-for-a-report/</guid>
      <description>SQL views are a powerful capability of a relational database server. This functionality can be easily used to implement important reporting, data mining, and other functionality to a web application built with Ruby on Rails in a manner that may be faster and more concise than an implementation that uses only typical ActiveRecord patterns. The complexity of dealing with the relational data is abstracted away from the Rails application that is a consumer of the data, keeping the model, controllers, and Rails view concisely focused on their appropriate roles.</description>
    </item>
    <item>
      <title>We Won a Hackathon with Scriptive! The Programmers&#39; Perspective.</title>
      <link>https://rietta.com/blog/we-won-a-hackathon-with-scriptive-the-programmers-perspective/</link>
      <pubDate>Thu, 14 Nov 2013 19:38:00 -0400</pubDate>
      <guid>https://rietta.com/blog/we-won-a-hackathon-with-scriptive-the-programmers-perspective/</guid>
      <description>Brandon Dees and I travelled to Austin, Texas, to compete in the Code for the Kingdom Hackathon, a Christian-ministry related event that was held at the Acton School of Business. We joined the super talented Charles Roach, the founder of Scriptive, a non-profit organization, to compete in the 48 hour startup/programming competition. Our mission was to code something that will impact the Kingdom for Christ through new technology.&#xA;Brandon has agreed to help co-author this post so that you can read both his and my perspective on what it was like to be a developer at the hackathon.</description>
    </item>
    <item>
      <title>Want to Learn Ruby on Rails in Atlanta?</title>
      <link>https://rietta.com/blog/want-to-learn-ruby-on-rails-in-atlanta/</link>
      <pubDate>Sat, 28 Sep 2013 11:33:00 +0000</pubDate>
      <guid>https://rietta.com/blog/want-to-learn-ruby-on-rails-in-atlanta/</guid>
      <description>The Emerald City Programming Group has started back up for the fall, starting today, Saturday, September 28, 2013.&#xA;The first class had an excellent turnout with twenty two local budding Rubyists in attendance. The environment is extremely friendly. The volunteer instructors this year are Anjan Das and Carlos Gonzalez.&#xA;This free class is open to the public and will cover everything you need to go from zero to deploy, including:</description>
    </item>
    <item>
      <title>Enhance Early Adoption with Mobile Friendly Themes</title>
      <link>https://rietta.com/blog/enhance-early-adoption-with-mobile/</link>
      <pubDate>Thu, 06 Jun 2013 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/enhance-early-adoption-with-mobile/</guid>
      <description>At Rietta, we&amp;rsquo;ve worked on many web application projects. We&amp;rsquo;re backend programmers and work with different design teams chosen by our clients. These projects tend to be rolled out in phases. Often the first phase is the desktop website with the intention to do a mobile application of some sort later.&#xA;But, when the new business&amp;rsquo; website is announced on Facebook and via an e-mail to the pre-launch mailing list, the majority of the first clicks are from iPhone and Android device users!</description>
    </item>
    <item>
      <title>Default HTML Values with a Rails View Helper</title>
      <link>https://rietta.com/blog/default-html-values-with-rails-view/</link>
      <pubDate>Tue, 15 Jan 2013 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/default-html-values-with-rails-view/</guid>
      <description>Suppose you have the same image tag included frequently in a Rails application. One way to clean up the code a bit and to set defaults is to create a super simple view helper method that can receive a hash parameter and merge it with the defaults.&#xA;Code Example In app/helpers/pages_helper.rb:&#xA;def gui_tiny_icon(name, opts = {}) image_tag &amp;#34;gui/theme/icons/#{name}&amp;#34;, {:class =&amp;gt; &amp;#34;vm&amp;#34;, width: 15, height: 15}.merge(opts) endThen in the usual place of the HTML.</description>
    </item>
    <item>
      <title>Setting up Ubuntu for Rails Development - part 2</title>
      <link>https://rietta.com/blog/setting-up-ubuntu-for-rails-development_24/</link>
      <pubDate>Wed, 24 Oct 2012 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/setting-up-ubuntu-for-rails-development_24/</guid>
      <description> And here is the second video in the series on setting up Ubuntu Linux for Ruby on Rails development: http://www.youtube.com/watch?v=C_0dTp0Fzoo&amp;amp;feature=plcp </description>
    </item>
    <item>
      <title>Setting up Ubuntu for Rails Development</title>
      <link>https://rietta.com/blog/setting-up-ubuntu-for-rails-development/</link>
      <pubDate>Sun, 21 Oct 2012 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/setting-up-ubuntu-for-rails-development/</guid>
      <description>Ruby on Rails is a really great platform for developing and releasing web applications. &amp;nbsp;At my company, our developers are pretty evenly split between using Mac OS X and Ubuntu Linux desktops as their primary development systems.&#xA;Setting up Ubuntu to develop in Ruby on Rails is pretty simple, but there are a few gotchas.&#xA;To help you learn how to set this up, I have recorded a couple of real-time videos of me configuring from scratch Ubuntu Linux in a virtual machine.</description>
    </item>
    <item>
      <title>WGET to Keep New Rails Site in Memory</title>
      <link>https://rietta.com/blog/wget-to-keep-new-rails-site-in-memory/</link>
      <pubDate>Tue, 10 Jul 2012 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/wget-to-keep-new-rails-site-in-memory/</guid>
      <description>A Ruby on Rails web application can be really fast in production. However, for a site that receives less traffic the application can be very, very slow on the first request after it has gone dormant.&#xA;One way to make sure that your site is always fast and never goes dormant is to setup an automatic process to periodically fetches the home page.&#xA;On an Linux, FreeBSD, or Mac OS X system it is easy to setup an automatic fetch using cron and wget.</description>
    </item>
    <item>
      <title>New GIT Time Extractor Gem</title>
      <link>https://rietta.com/blog/new-git-time-extractor-gem/</link>
      <pubDate>Sun, 06 May 2012 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/new-git-time-extractor-gem/</guid>
      <description>I am happy to announce that the git_time_extractor project, released publicly on github.com in February, is now officially available as a RubyGem!&#xA;git_time_extractor is a small command-line tool that produces a CSV time log for each developer/contributor to a project tracked in GIT. It uses the commit timestamps and three basic reasonable assumptions, approved by the developer&amp;rsquo;s accountant.&#xA;It other words, computes the estimated time spent by developers working on code within a GIT repository.</description>
    </item>
    <item>
      <title>mod_deflate: Dramatic website speed increase with Apache compression on Ubuntu Linux</title>
      <link>https://rietta.com/blog/moddeflate-dramatic-website-speed/</link>
      <pubDate>Wed, 18 Apr 2012 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/moddeflate-dramatic-website-speed/</guid>
      <description>It&amp;rsquo;s easy to dramatically improve the loading speed of your website by enabling compression support in your Apache web server. This works without needing to make any changes to your backend or database code no matter what programming platform your development team uses.&#xA;I recently added this change to a Ruby on Rails-based web application running on a Ubuntu Linux dedicated virtual server. That particular page observed a 72% decrease in bandwidth required to deliver the homepage.</description>
    </item>
    <item>
      <title>[Rails] Good Random Positive Integer</title>
      <link>https://rietta.com/blog/rails-good-random-positive-integer/</link>
      <pubDate>Fri, 03 Feb 2012 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/rails-good-random-positive-integer/</guid>
      <description>Tonight I needed a quick way to generate a good pseudo random number. The following statement in Ruby will generate a positive integer between 0 and the maximum integer supported on the system.&#xA;SecureRandom.random_number((2**(0.size * 8-2)-1))Running that 10 times as a test on my system returned:&#xA;479960941838047707 4598189742420362323 4319555246297899788 79907720343840910 1019099276589074756 1753578159791031009 51485412595337811 3333462064391733874 2622897372121370782 4287564549349999056 That&amp;rsquo;s all for tonight.&#xA;Sources Secure random number generator interface Ruby max integer </description>
    </item>
    <item>
      <title>Rails: Point DNS to 127.0.0.1 to Test Wildcard Subdomains on WEBrick</title>
      <link>https://rietta.com/blog/rails-point-dns-to-127001-to-test/</link>
      <pubDate>Tue, 24 Jan 2012 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/rails-point-dns-to-127001-to-test/</guid>
      <description>Want quick method for testing domain/subdomain-based routing logic in your Rails applications? Point a subdomain and wildcard subdomain of your company&amp;rsquo;s DNS to 127.0.0.1, your localhost IP address.&#xA;Then you can use that domain to access your local test web server on your local machine.&#xA;For example, I added DNS &amp;ldquo;A&amp;rdquo; records for:&#xA;test.rietta.com → 127.0.0.1 *.test.rietta.com → 127.0.0.1 Now Rietta&amp;rsquo;s developers can each access his local WEBrick server with:</description>
    </item>
    <item>
      <title>Rails: Gmail Reply-To on Contact Form Email</title>
      <link>https://rietta.com/blog/rails-gmail-reply-to-on-contact-form/</link>
      <pubDate>Wed, 18 Jan 2012 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/rails-gmail-reply-to-on-contact-form/</guid>
      <description>Most websites have a contact form for visitors to fill out a message that is then e-mailed to the owner or support contact for the website.&#xA;When working with a Rails app that will be hosted in a cloud environment that does not supply outbound email delivery it can be convenient to use a Gmail (or Google Apps) account at first for outbound delivery.&#xA;The trouble is that Google&amp;rsquo;s SMTP server will rewrite the email address set in the email message to match the address of the account.</description>
    </item>
    <item>
      <title>Rails: TypeError: nil can&#39;t be coerced into Float</title>
      <link>https://rietta.com/blog/rails-typeerror-nil-cant-be-coerced/</link>
      <pubDate>Sat, 14 Jan 2012 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/rails-typeerror-nil-cant-be-coerced/</guid>
      <description>When working on Ruby on Rails website some of the common errors that you need to check for is nil objects when something else was expected. For instance, suppose one of your ActiveRecord models has a price field. Further suppose that the user left this field blank instead of entering 0.0 as the price.&#xA;This computation will fail: quantity = 3 # ... amount_to_charge = price_field * quantityIt fails with a &amp;ldquo;TypeError: nil can&amp;rsquo;t be coerced into Float&amp;rdquo; exception.</description>
    </item>
    <item>
      <title>Integrate Blog Content with your Rails 3 Website with Pure Ruby Code and RSS</title>
      <link>https://rietta.com/blog/integrate-blog-content-with-your-rails/</link>
      <pubDate>Mon, 02 Jan 2012 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/integrate-blog-content-with-your-rails/</guid>
      <description>The full sample code used for this post is available as a Ruby on Rails 3.1 project at https://github.com/rietta/SimpleBlogFeed.&#xA;Suppose you have built an amazing new website using Ruby on Rails 3. It has tons of features and some great content. However, one thing it is lacking is a solid blog section. You would like to avoid writing your own blog code in Rails since there are already tons of solid blog applications to choose from - Wordpress, Moveable Type, Typepad, Blogger.</description>
    </item>
    <item>
      <title>Conditionally Including Resources on SSL or non-SSL to Avoid Mixed Content Security Warnings in Ruby on Rails</title>
      <link>https://rietta.com/blog/conditionally-including-resources-on/</link>
      <pubDate>Wed, 21 Dec 2011 00:00:00 +0000</pubDate>
      <guid>https://rietta.com/blog/conditionally-including-resources-on/</guid>
      <description>&lt;p&gt;When building content that can be delivered on an encrypted HTTPS connection it is necessary to reference all of the embedded resources, 3rd party badge images, embedded YouTube videos, etc, from an HTTPS url.  Otherwise a mixed content error will imply to your users that the website is not safe, ouch!&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
