<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[RSS Feed]]></title><description><![CDATA[RSS Feed]]></description><link>http://direct.ecency.com</link><image><url>http://direct.ecency.com/logo512.png</url><title>RSS Feed</title><link>http://direct.ecency.com</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 13:47:34 GMT</lastBuildDate><atom:link href="http://direct.ecency.com/@davidpm/rss" rel="self" type="application/rss+xml"/><item><title><![CDATA[Disabling dangerous redis commands in Production redux]]></title><description><![CDATA[I recently read a great article from Honeybadger that muses on what could happen to a production environment if a fat fingered developer did something like: Redis.current.flushdb. This scared me enough]]></description><link>http://direct.ecency.com/programming/@davidpm/disabling-dangerous-redis-commands-in-production-redux</link><guid isPermaLink="true">http://direct.ecency.com/programming/@davidpm/disabling-dangerous-redis-commands-in-production-redux</guid><category><![CDATA[programming]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Fri, 09 Aug 2019 03:01:57 GMT</pubDate><enclosure url="https://images.ecency.com/p/MG5aEqKFcQi6FEaWwRBu1CCcAhQQk1KYyyXqJfJg1MpnVmocakcV3PbVZ64K8Dgdzkjh2F3eKoFqfaFHw1pFz2THxaGbCfUsg?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[Heuristics on the Practice of Programming]]></title><description><![CDATA[A Living List What follows is a living list of heuristics I've come to internalize over the years as a developer. My goal is to periodically add to this list. Consider it a repository of programming wisdom.]]></description><link>http://direct.ecency.com/technology/@davidpm/heuristics-on-the-practice-of-programming</link><guid isPermaLink="true">http://direct.ecency.com/technology/@davidpm/heuristics-on-the-practice-of-programming</guid><category><![CDATA[technology]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Tue, 04 Sep 2018 21:30:27 GMT</pubDate><enclosure url="https://images.ecency.com/p/k75bsZMwYNtze9xHvT6xWCdz7q3QGD35ZKdaPpVrFksWkH5GWKHS9T7fQwiLuP8ZcLKN6PxECgaXAhH9Yj6VZkgZFoS5GoVHxXhrMvDhfZQ4FHxkAPTYUXR5p2HhKSTxLuMD3h5opR21Gjpuh6DTyy5yCr8mP7tEz?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[Git Interactive Rebase to Alter Commits]]></title><description><![CDATA[Do you have skeletons in your git history? Maybe you want to re-write that history? I know I've been down that road, and since I've had to look up how to do this several times I thought it was high time]]></description><link>http://direct.ecency.com/programming/@davidpm/git-interactive-rebase-to-alter-commits</link><guid isPermaLink="true">http://direct.ecency.com/programming/@davidpm/git-interactive-rebase-to-alter-commits</guid><category><![CDATA[programming]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Sat, 07 Jul 2018 07:02:33 GMT</pubDate><enclosure url="https://images.ecency.com/p/cyxkEVqiiLy2ofdgrJNxeZC3WCHPBwR7MjUDzY4kBNr81MySWtTrzHnHBYXQBbBmUq1ST4jeHooCb6KBGGFJ1ddMd1FVwSckgGn4PSpWAwfiGXQGdTwP2Jc9oRc8R7WVarz?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[Dropping Into B-trees]]></title><description><![CDATA[My recent (and only) RailsConf talk:]]></description><link>http://direct.ecency.com/technology/@davidpm/dropping-into-b-trees</link><guid isPermaLink="true">http://direct.ecency.com/technology/@davidpm/dropping-into-b-trees</guid><category><![CDATA[technology]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Sun, 03 Jun 2018 21:06:12 GMT</pubDate><enclosure url="https://images.ecency.com/p/S5Eokt4BcQdk7EHeT1aYjzebg2hC7hkthT45dumyuLr1BfLrcKjVkX8axHVGJjDr3CtcadL?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[Create a command-line gem from scratch with Thor (part two)]]></title><description><![CDATA[This is the last in a two-part post on creating a Ruby cli gem from scratch. Part one found here. Picking up from our last post, we want to start working on our user interface. In this case we want a cli]]></description><link>http://direct.ecency.com/ruby/@davidpm/create-a-command-line-gem-from-scratch-with-thor-part-two</link><guid isPermaLink="true">http://direct.ecency.com/ruby/@davidpm/create-a-command-line-gem-from-scratch-with-thor-part-two</guid><category><![CDATA[ruby]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Sun, 03 Jun 2018 06:55:54 GMT</pubDate><enclosure url="https://images.ecency.com/p/5i2yA5ubhzU7jJvo6RA5dhFa9bDN3iRHFVSGdrMofhDRT7vnTnnwxtbfUSyQxx3EuvVTqiUHvFCceVDPNvVgHjLQv8Uwj1VsSEN9gLm1MA3m5n6YmoAXJLQ3zocDtGrEDYfoZSSpAB3BWp9RBof6ffwZtHyazfMup6zVBx7edzACLLfMSxvtVgn39ha5CGsW9awR5TQKxqHfd8NA3BoCPc3BxdvbNGn?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[Create a command-line gem from scratch with Thor]]></title><description><![CDATA[This is the first in a two-part post on creating a Ruby command-line gem from scratch. Part two found here. Let's write a command-line interface (cli) as a Ruby gem. We need the gem to do something slightly]]></description><link>http://direct.ecency.com/ruby/@davidpm/create-a-command-line-gem-from-scratch-with-thor</link><guid isPermaLink="true">http://direct.ecency.com/ruby/@davidpm/create-a-command-line-gem-from-scratch-with-thor</guid><category><![CDATA[ruby]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Sun, 03 Jun 2018 06:17:51 GMT</pubDate><enclosure url="https://images.ecency.com/p/2ufhwNgM3qHKGxq8wdcWAiFpcm29FF1vQ7VZHkTuxCmXmtwBwhSiTX1weh6zG5HoeHPvHhCNy?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[Blockchain Proof of Concept]]></title><description><![CDATA[If you are a programmer and have been hearing all of the fuss about THE BLOCKCHAIN but haven't yet looked into it, and were looking for a starting point, this is the post for you! Feel free to skip the]]></description><link>http://direct.ecency.com/blockchain/@davidpm/blockchain-proof-of-concept</link><guid isPermaLink="true">http://direct.ecency.com/blockchain/@davidpm/blockchain-proof-of-concept</guid><category><![CDATA[blockchain]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Tue, 29 May 2018 01:28:03 GMT</pubDate><enclosure url="https://images.ecency.com/p/3HaJVw3AYyXBbUK66DHMSFHcjEaNstCYA4UGRerpBU6sjvGBLMwRz8iZ2vTQuu2PBVQt6hekV2AJmZnN78jZRqnp8a6w5xGTBA4GkMk?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[SQL Cheat Sheet]]></title><description><![CDATA[SQL can do a lot: data insertion, querying, updating and deleting, schema creation and modification, and data access control. I have to look up this stuff more often than I'd like to admit. How do I alter]]></description><link>http://direct.ecency.com/sql/@davidpm/sql-cheat-sheet</link><guid isPermaLink="true">http://direct.ecency.com/sql/@davidpm/sql-cheat-sheet</guid><category><![CDATA[sql]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Tue, 06 Mar 2018 19:25:24 GMT</pubDate><enclosure url="https://images.ecency.com/p/7ohP4GDMGPrTf4vXfmQ5EBsWnqPqTCHfND8S5vjfcYoDuW1QRrF2T98AWX62Jd6fwnr7pxbJedPZ3ParBKmGk2NFwUDw8bdHJn8c?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[Bootstrap with Rails and Postgres]]></title><description><![CDATA[> rails new app_name ...gives you all you need to get started developing an application, notably using SQLite as the default datastore. I've always worked with Postgresql (postgres) since I started]]></description><link>http://direct.ecency.com/rails/@davidpm/bootstrap-with-rails-and-postgres</link><guid isPermaLink="true">http://direct.ecency.com/rails/@davidpm/bootstrap-with-rails-and-postgres</guid><category><![CDATA[rails]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Tue, 06 Mar 2018 05:09:12 GMT</pubDate><enclosure url="https://images.ecency.com/p/3DLAmCsuTe3c12vkrbmaajsfuqU9f5jmgYehE5NMsDddV6R84VHc5JrqrLprLC1A2h7cH9M2juD732eEksorSF3QYWcTvNMC4utqhDiPorkFhWaYC3m77qDxSBWoRBT8yHQG6LPrE9d2p5GgKz5tXv3ttyVd9MY?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[REGEX Multiline Anchors]]></title><description><![CDATA[Ever try out a regular expression on rubular, stick it in your model: MEH_REGEX = /^(?=.*[a-zA-Z])(?=.*[0-9]).{8,}$/ ...start up your test suite and see this error? The provided regular expression is using]]></description><link>http://direct.ecency.com/ruby/@davidpm/regex-multiline-anchors</link><guid isPermaLink="true">http://direct.ecency.com/ruby/@davidpm/regex-multiline-anchors</guid><category><![CDATA[ruby]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Mon, 05 Mar 2018 02:08:42 GMT</pubDate><enclosure url="https://images.ecency.com/p/4bEjbgCbFMvB1oqqLn4r4Zn15XFUZRvt8hUMQsMrjerntjHbBcVErjee4KHbUWDkEYCyQ9DdoxSUbPCyoXZzguoiH4TDiaUg1HH6hm1QJBE13KSmUV6ogKczydUsyDUhnJUZE3QT7butx8LfHRCSU2EFPSBebL4KRTrHhDkLEZc6LYS79Q?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[Rspec Config]]></title><description><![CDATA[You've included rspec in your Gemfile, run bundle install and you want to initialize some examples to start testing. > rails g rspec:install The thing is you are sick of all the extras that come along]]></description><link>http://direct.ecency.com/ruby/@davidpm/rspec-config</link><guid isPermaLink="true">http://direct.ecency.com/ruby/@davidpm/rspec-config</guid><category><![CDATA[ruby]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Mon, 05 Mar 2018 01:30:03 GMT</pubDate><enclosure url="https://images.ecency.com/p/4W3i2hguUU7hMAtneLmeaoJWdw8Sc4Vp6mEbit5SePWWsqdjArz?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[Rails MIME Types]]></title><description><![CDATA[When using Rails to build an API you'll most likely be working with JSON or XML to pass around data. That is because most APIs today work exclusively with these MIME(Multi-purpose Internet Mail Extension)]]></description><link>http://direct.ecency.com/rails/@davidpm/rails-mime-types</link><guid isPermaLink="true">http://direct.ecency.com/rails/@davidpm/rails-mime-types</guid><category><![CDATA[rails]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Sun, 04 Mar 2018 22:21:42 GMT</pubDate><enclosure url="https://images.ecency.com/p/99pyU5Ga1kwqEd86ir7oyFehzfHL1UEdtSNDbgX6P52aGmARKA4yNfuvRFzgVHHtsCWYroMd8WJk2X6boZNhtZ9kiPapnEr5iv56VznwMZVmTqEX8i8JMQJfzUA7dSVtxd?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[Messages with Methods in Ruby]]></title><description><![CDATA[You hear it all the time when reading about Ruby: everything is an object. Objects in Ruby communicate with other objects by passing "messages" back and forth to one another. Well, those messages]]></description><link>http://direct.ecency.com/ruby/@davidpm/messages-with-methods-in-ruby</link><guid isPermaLink="true">http://direct.ecency.com/ruby/@davidpm/messages-with-methods-in-ruby</guid><category><![CDATA[ruby]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Sun, 04 Mar 2018 12:35:21 GMT</pubDate><enclosure url="https://images.ecency.com/p/9vWp6aU4y8kwgEkSfNreCjnEvfpYR3pMab3JctuB275Z8QUPhfVxDAxEic6XchYZfnpvsRrm3H55Gm1FAAwPsbgTMfqLr2UMPMed7kg4mtr7YSP3aCourqkETSPg5GAf3mLF8pSpengyd3ZEv?format=match&amp;mode=fit" length="0" type="false"/></item><item><title><![CDATA[CPUs]]></title><description><![CDATA[Ever needed to check really quick how many CPUs your *nix machine is running? Maybe you're logged into a remote server, or maybe you just forgot. In any case, I keep finding myself in a such situations]]></description><link>http://direct.ecency.com/linux/@davidpm/cpus</link><guid isPermaLink="true">http://direct.ecency.com/linux/@davidpm/cpus</guid><category><![CDATA[linux]]></category><dc:creator><![CDATA[davidpm]]></dc:creator><pubDate>Sun, 04 Mar 2018 08:40:57 GMT</pubDate><enclosure url="https://images.ecency.com/p/3ejZQFLqXedKdRo1PPUmmRfoC6zaLh6vX6JRYUuDZN4wHzrd2LgPwXint8vDZ6tuEWhFjgaEYDWqbBQ5W2kaXiyArs51sSCzudqVSMG4wYRLeUpVcDo25mokvjepoyWy4C7iXqXt2zaTeAVwGumNePgAStPyrtxeeps5kraH5CCKfUBy9ZwdG4VApoKot?format=match&amp;mode=fit" length="0" type="false"/></item></channel></rss>