<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Sandro on Code</title>
    <link>https://crowfly.net/sandro/</link>
    <description>Programming Craftmanship</description>
    <language>en-us</language>
    <lastBuildDate>Fri, 11 Aug 2023 15:56:15 +0000</lastBuildDate>
    <item>
      <title>Unix is the most powerful development tool</title>
      <link>https://crowfly.net/sandro/unix-is-the-most-powerful-development-tool/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/unix-is-the-most-powerful-development-tool/</guid>
      <pubDate>Fri, 11 Aug 2023 15:56:15 +0000</pubDate>
      <description>The Unix operating system is the most powerful development tool. It doesn't matter if you're working with a LAMP/LEMP stack, Java, NodeJS, or SQL or any other coding language, Unix allows you to develop code and computer systems more efficiently. Developed in…</description>
    </item>
    <item>
      <title>OOP Behavior</title>
      <link>https://crowfly.net/sandro/oop-behavior/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/oop-behavior/</guid>
      <pubDate>Mon, 15 Jan 2018 15:59:34 +0000</pubDate>
      <description>When designing in Object Oriented Programming (OOP) the question I always ask myself when trying to figure out where some piece of code should go is, "Who does this behavior belong to?". If our class names are nouns, such as Orders, Books, ProductColors…</description>
    </item>
    <item>
      <title>Saleor Products Data Model</title>
      <link>https://crowfly.net/sandro/saleor-products-data-model/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/saleor-products-data-model/</guid>
      <pubDate>Tue, 24 Jan 2017 22:28:02 +0000</pubDate>
      <description>I'm looking to replace our Magento Ecommerce Server with something "Nice" - Something that is not complicated, not over abstracted, something that is well ... fun to work with. Saleor is an elegant solution. It is an Ecommerce app written in Python and Django…</description>
    </item>
    <item>
      <title>Data is King, is KING!</title>
      <link>https://crowfly.net/sandro/data-is-king-is-king/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/data-is-king-is-king/</guid>
      <pubDate>Mon, 18 Jul 2016 16:49:30 +0000</pubDate>
      <description>Good Data makes life easy; If we model all our the business logic in the database then the application layer is trivial. Case in point: I'm implementing a User Access Module. First I define a list of Access terms: Things like dashboard (allow view dashboard)…</description>
    </item>
    <item>
      <title>Make is Simple</title>
      <link>https://crowfly.net/sandro/make-is-simple/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/make-is-simple/</guid>
      <pubDate>Sat, 05 Sep 2015 17:56:39 +0000</pubDate>
      <description>Complexity is only Simplicity x 1000 -- A mathematician friend once told me that. The idea struck a chord with me and has stuck with me ever since. Everything in this world is complex. When we design computer systems our goals should be to encapsulate that…</description>
    </item>
    <item>
      <title>Successful Computer Programmer</title>
      <link>https://crowfly.net/sandro/successful-computer-programmer/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/successful-computer-programmer/</guid>
      <pubDate>Thu, 30 Jul 2015 19:50:21 +0000</pubDate>
      <description>So we're all computer programmers, but what makes you successful? What makes you an excellent contributor to your team or company? I discovered the importance of these traits little by little over the years. They are progressively more important as you move…</description>
    </item>
    <item>
      <title>Safety Belts Off</title>
      <link>https://crowfly.net/sandro/safety-belts-off/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/safety-belts-off/</guid>
      <pubDate>Sat, 20 Jun 2015 16:57:14 +0000</pubDate>
      <description>When should we use secure practices and when not to? Like all good advice secure practices need to be weighed against practicality. In a perfect world your system will have full test coverage, automated testing, database migration scripts, automated…</description>
    </item>
    <item>
      <title>DB, Config and Logging</title>
      <link>https://crowfly.net/sandro/db-config-and-logging/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/db-config-and-logging/</guid>
      <pubDate>Sat, 02 May 2015 18:58:05 +0000</pubDate>
      <description>The Database, Config and Logging are at the core of all application development. Everything starts there. A Database System stores all of the applications data. The storage itself can be anything from a loose collection of files like jpegs, a nosql db like…</description>
    </item>
    <item>
      <title>Always diff before you commit</title>
      <link>https://crowfly.net/sandro/always-diff-before-you-commit/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/always-diff-before-you-commit/</guid>
      <pubDate>Sat, 25 Apr 2015 18:17:24 +0000</pubDate>
      <description>If you don't diff before you commit you don't know what you're committing. When programming anything even remotely interesting, we're making changes all the time. Change, change, change. Phase 1, phase 2, experiment 1, experiment 2, etc. And we're using…</description>
    </item>
    <item>
      <title>Less Is More</title>
      <link>https://crowfly.net/sandro/less-is-more/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/less-is-more/</guid>
      <pubDate>Wed, 08 Apr 2015 20:26:18 +0000</pubDate>
      <description>You know you're doing a great job when, adding new functionality to a code base, and you wind up removing more code then you've added. Less is More. I once heard boast a programmer that he'd written million lines of C code. That seemed undesirable to me…</description>
    </item>
    <item>
      <title>SQL Formatting</title>
      <link>https://crowfly.net/sandro/sql-formatting/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/sql-formatting/</guid>
      <pubDate>Wed, 11 Mar 2015 22:01:49 +0000</pubDate>
      <description>Let's standardize how we write SQL. What joy. Rarely, have I seen consistency in how SQL is formatted, and often it is not even considered. Here is the standard I use which makes it easy to read both simple and complex queries. Here is an example: select b.id…</description>
    </item>
    <item>
      <title>Unix House Keeping</title>
      <link>https://crowfly.net/sandro/unix-house-keeping/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/unix-house-keeping/</guid>
      <pubDate>Fri, 20 Feb 2015 23:21:07 +0000</pubDate>
      <description>Where is everything? Where do files go in Unix? There are no bonafide rules. But we're free to invent some. So here are mine. The Heap /data - Everything starts off in this subdirectory. Consider it the Heap from which all other areas are carved out of. We're…</description>
    </item>
    <item>
      <title>Programs should be like Gardens</title>
      <link>https://crowfly.net/sandro/programs-should-be-like-gardens/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/programs-should-be-like-gardens/</guid>
      <pubDate>Sun, 25 Jan 2015 21:45:02 +0000</pubDate>
      <description>I believe programs should be like gardens. They should be lovely to see. Gardens are things we walk around in and return to often. Gardens are things we wish to spend time in with others - to relax in and enjoy its beauty. If we strive to make your programming…</description>
    </item>
    <item>
      <title>Variable Naming Conventions</title>
      <link>https://crowfly.net/sandro/variable-naming-conventions/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/variable-naming-conventions/</guid>
      <pubDate>Sun, 28 Dec 2014 15:18:48 +0000</pubDate>
      <description>A simple rule to help improve convention and maintainability: Camelcasing should be used when dealing with Objects, Everything else should use underscores. Objects Class definitions should be CapCase Objects should be mixedCase Class Methods should be…</description>
    </item>
    <item>
      <title>Defensive Programming is the way to go.</title>
      <link>https://crowfly.net/sandro/defensive-programming-is-the-way-to-go/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/defensive-programming-is-the-way-to-go/</guid>
      <pubDate>Thu, 18 Dec 2014 02:31:05 +0000</pubDate>
      <description>Defensive programming is like defensive driving: Anticipate everything that might go wrong. If a function is passed an Id to a database table, do not assume that it is a valid Id, or an integer, or even that it has a value. What is most important in defensive…</description>
    </item>
    <item>
      <title>Working Towards the Ideal</title>
      <link>https://crowfly.net/sandro/working-towards-the-ideal/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/working-towards-the-ideal/</guid>
      <pubDate>Fri, 05 Dec 2014 04:28:42 +0000</pubDate>
      <description>Whether building a new system, or trying to untangle some untenable rats nest of code -- One should have an image of the ideal state in their mind. If we draw up the best plan we can, thinking in terms of the perfect - regardless of its immediate feasibility -…</description>
    </item>
    <item>
      <title>Libraries over Frameworks</title>
      <link>https://crowfly.net/sandro/libraries-over-frameworks/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/libraries-over-frameworks/</guid>
      <pubDate>Wed, 26 Nov 2014 19:42:05 +0000</pubDate>
      <description>What is the benefit of using a framework like Ruby-on-Rails, Pylons or Drupal? Simply put, it helps us start and develop code from nothing quickly. But it does not have long lasting staying power. If you plan to be using the system for years to come - the…</description>
    </item>
    <item>
      <title>Data Layer is King</title>
      <link>https://crowfly.net/sandro/data-layer-is-king/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/data-layer-is-king/</guid>
      <pubDate>Sat, 22 Nov 2014 19:33:13 +0000</pubDate>
      <description>It is far better to have an excellent Database Design and a crappy Application Layer, than an excellent Application Layer with a crappy Database design. Why is that? Simply put, you can always skim your Application code off the top and write a new one. But you…</description>
    </item>
    <item>
      <title>Why SHOUT in your SQL?</title>
      <link>https://crowfly.net/sandro/why-shout-in-your-sql/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/why-shout-in-your-sql/</guid>
      <pubDate>Tue, 18 Nov 2014 14:32:19 +0000</pubDate>
      <description>Somewhere someone started the tradition of capitalizing keywords in SQL. Its like shouting all the unimportant parts of the code and making what's important harder to read. SELECT b.id as book_id, a.name as author, b.pub_date as publication_date FORM books b…</description>
    </item>
    <item>
      <title>Pull Requests improve Quality</title>
      <link>https://crowfly.net/sandro/pull-requests-improve-quality/</link>
      <guid isPermaLink="true">https://crowfly.net/sandro/pull-requests-improve-quality/</guid>
      <pubDate>Thu, 13 Nov 2014 04:53:50 +0000</pubDate>
      <description>A Pull Request, which might more sensibly be called a Merge Request, is the act of a someone asking another to merge his or her code into theirs. It is all so civil. It solves an age old problem of how to do code review, in a more effective less disruptive…</description>
    </item>
  </channel>
</rss>
