<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Robert&#39;s Homepage</title>
    <link>https://blog.robertsimoes.org/</link>
    <description>Recent content on Robert&#39;s Homepage</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 09 Jan 2024 17:37:04 -0500</lastBuildDate>
    <atom:link href="https://blog.robertsimoes.org/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to Format A USB for Rekordbox &amp; CDJs on MacOS</title>
      <link>https://blog.robertsimoes.org/posts/how-to--format-usb-rekordbox/</link>
      <pubDate>Tue, 09 Jan 2024 17:37:04 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to--format-usb-rekordbox/</guid>
      <description>Guide Close Rekordbox Open &amp;ldquo;Disk Utility&amp;rdquo; Click on the TOP LEVEL USB storage device, i.e., not the container below Right Click, Erase &amp;gt; Format as FAT (MS-DOS) and MASTER BOOT RECORD (MBR) - VERY important! Wait for completion Open Rekordbox Select Export Mode at top left Sync </description>
    </item>
    <item>
      <title>Tool - Personal Goal Report Card</title>
      <link>https://blog.robertsimoes.org/posts/tool--personal-goal-report-card/</link>
      <pubDate>Tue, 26 Dec 2023 18:05:28 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/posts/tool--personal-goal-report-card/</guid>
      <description>Personal goal setting is a common habit for each new year. For the past several years, I&amp;rsquo;ve set goals for the coming new year while also reflecting and reviewing on how I did during the year. More often than not, I fall short of my ambition in so far as I had a cross-off-worthy outcome; how dreadful, to deny that sweet satisfaction. At the same time, however, I often have made some progress towards a goal but, for whatever reason: uncontrollable factors, escalating priorities, laziness, life events, et cetera, the progress stalled or stopped.</description>
    </item>
    <item>
      <title>Learnings in 2023</title>
      <link>https://blog.robertsimoes.org/learnings/2023/</link>
      <pubDate>Sat, 23 Dec 2023 09:56:24 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/learnings/2023/</guid>
      <description>What loves you never leaves you - love it back. You have to start the wrong way in order to find the right way. You will find more opportunities by supporting rather than selling Write down everything you are ashamed of, it&amp;rsquo;s the first step to liberating yourself from it. Envy runs the world not greed; envy and ignorance is a recipe for self inflicted wounds. The mind is a contradiction, it seeks security but is designed for insecurity Practice dying everyday - you will soon discover the only life you&amp;rsquo;ve ever had You can smile with your inner child whenever you want.</description>
    </item>
    <item>
      <title>How to Speed Up Rekordbox Exports</title>
      <link>https://blog.robertsimoes.org/posts/how-to-speed-up-rekordbox-exports/</link>
      <pubDate>Tue, 05 Dec 2023 17:56:42 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-speed-up-rekordbox-exports/</guid>
      <description>Let&amp;rsquo;s face it Rekordbox is slow. Here&amp;rsquo;s some of my checklists and gotcha&amp;rsquo;s to speed up my export workflow.&#xA;Disable track previews I noticed that performance takes a huge hit when track previews must render in the table during export. I imagine it might have something to do with having to analyze and then render track waveforms continuously causing chugging and slowness.&#xA;Figure 1: Disabling previews in rekordbox&#xA;Ensure your USB speed is high Double check what the write speed of your USB is.</description>
    </item>
    <item>
      <title>Tool - Too Many Ideas Framework</title>
      <link>https://blog.robertsimoes.org/posts/tool--idea-evaluation-framework/</link>
      <pubDate>Tue, 14 Nov 2023 14:34:00 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/posts/tool--idea-evaluation-framework/</guid>
      <description>Background if you have too many ideas and difficulty prioritizing which to work on, a good tool to determine what to work on is to the The $100 Startup decision making tool.&#xA;Ideas Impact Effort Profitability Vision Sum Idea 1 Idea 2 Idea 3 Idea 4 Impact: This is a measure of the impact your idea may have on people and their lives. Effort: This is a measure of the amount of effort it would take to launch and maintain this idea.</description>
    </item>
    <item>
      <title>Micro Ventures</title>
      <link>https://blog.robertsimoes.org/posts/micro-ventures/</link>
      <pubDate>Sun, 02 Jul 2023 18:28:04 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/micro-ventures/</guid>
      <description>A few years ago I discovered the website tinyprojects.dev. The website focuses on building project ideas into small businesses that generate a modest amount of revenue. For example, a one-item store or the silicon valley domains.&#xA;For the preceding several years contemporary business culture (1) has focused, in excess, on the concept of innovation driven ventures (IDVs) or &amp;ldquo;start-ups&amp;rdquo; (a la Bill Aulet&amp;rsquo;s definition in Disciplined Entrepreneurship). The idea of an IDV or &amp;ldquo;start-up&amp;rdquo; is juxtaposed with the &amp;ldquo;less interesting&amp;rdquo;, but more familiar, idea of a small to medium-sized business (SMB): art supplies stores, family restaurants, grammar schools, et cetera.</description>
    </item>
    <item>
      <title>Disentangle Schema Changes and Business Logic Changesets</title>
      <link>https://blog.robertsimoes.org/posts/disentangle-schema-changes-and-business-logic-changesets/</link>
      <pubDate>Wed, 26 Apr 2023 10:43:26 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/disentangle-schema-changes-and-business-logic-changesets/</guid>
      <description>Rails makes writing migrations and performing them on our database so easy!&#xA;bundle exec rails g migration CreateAllTheThings Why, with only less than 100 keystrokes your off to the races modifying your database. What isn’t to love?&#xA;Consider that as an application increases in complexity the on-going cost of maintenance increases as well. Such maintenance and servicing cost is also increased in the event that there are limited guard rails (e.</description>
    </item>
    <item>
      <title>Did You Forget to Review Your PR? And Other Habits Worth Unlearning.</title>
      <link>https://blog.robertsimoes.org/posts/did-you-forget-to-review-your-pr/</link>
      <pubDate>Thu, 16 Mar 2023 17:48:56 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/did-you-forget-to-review-your-pr/</guid>
      <description>In continuing to reflect on random lessons learned while in the field, a group of nasty habits I used to have popped into mind which I feel might be worth reflecting on. If you&amp;rsquo;re the type of developer who writes PRs and often wonders why no one reviews them, well here&amp;rsquo;s some of the reasons that might quell your resentment towards your team mates.&#xA;Did You Forget to Review Your PR?</description>
    </item>
    <item>
      <title>Dead Code Is a Liability</title>
      <link>https://blog.robertsimoes.org/posts/dead-code-is-a-liability/</link>
      <pubDate>Sun, 05 Mar 2023 17:39:18 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/posts/dead-code-is-a-liability/</guid>
      <description>I&amp;rsquo;m fond of recalling a comment made by a Senior Engineer I worked with as a junior staff member during a code review once. In my pull request, I had noted that a given test suite and the associated code weren&amp;rsquo;t actually used and working and so I was commenting them out. At the time, he told me to delete the lines instead of commenting them out; citing that &amp;ldquo;dead code&amp;rdquo; (e.</description>
    </item>
    <item>
      <title>Four Wings of a Software Engineer</title>
      <link>https://blog.robertsimoes.org/posts/four-wings-of-software-engineers/</link>
      <pubDate>Sun, 05 Feb 2023 14:30:06 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/posts/four-wings-of-software-engineers/</guid>
      <description>Amateur field notes in the psychology of software engineers&#xA;Having been asked a sufficient number of times, &amp;ldquo;what my ideal role is&amp;rdquo; or &amp;ldquo;what type of engineer I want to be&amp;rdquo; - it suddenly dawned on me, in boredom, that there are approximately four behavioural axis with which one view a given software engineer. I use the term &amp;ldquo;wings&amp;rdquo;, stolen from the personality typing methodology in the Enneagram, to imply that all four functions are possessed by a given engineer; but, in similar manner to the Enneagram, an individual tends to &amp;ldquo;lean&amp;rdquo; more heavily on a set of wings compared to others.</description>
    </item>
    <item>
      <title>Tool - Self Written Contract</title>
      <link>https://blog.robertsimoes.org/posts/tool-self-written-contract/</link>
      <pubDate>Thu, 05 Jan 2023 07:16:05 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/posts/tool-self-written-contract/</guid>
      <description>The self written contract is a tool taken from Julia Cameron&amp;rsquo;s The Artist Way. I do not know why it works but it seems to be able to solidify and ensure commitment to a given path or action.&#xA;The tool works as follows:&#xA;Suppose you have a decision, action or behaviour that you wish to change. For some reason or other, you have a change or action to take that you find it nearly impossible to commit to; you allow the idea to stir inside the skull until it drives you insane.</description>
    </item>
    <item>
      <title>Learnings in 2022</title>
      <link>https://blog.robertsimoes.org/learnings/2022/</link>
      <pubDate>Sat, 10 Dec 2022 16:49:46 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/learnings/2022/</guid>
      <description>The following is an excerpt from my 2022 letter 2.&#xA;The same skills that are desirable for entrepreneurship can also be directed toward other vessels. Notice to the subtle hints that life is helping you. Find the ground that supports you when you can no longer support yourself. This could be the last time you ever see this person, what would you say to them if so? Really talk to yourself more often.</description>
    </item>
    <item>
      <title>Tool - Indexed Book Note Taking</title>
      <link>https://blog.robertsimoes.org/posts/tool-indexed-book-note-taking/</link>
      <pubDate>Tue, 11 Oct 2022 18:21:13 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/tool-indexed-book-note-taking/</guid>
      <description>I found this technique for taking notes inside of books from @nntaleb on Twitter.&#xA;Create a content index at the start of the book with references to the page and point of interest. This makes retrieval of details trivial because the associated notes live in the same location as the information [1].&#xA;If you already take notes in the margins of books consider adding this technique too to further index your margin comments and make retrieval easier.</description>
    </item>
    <item>
      <title>Tool - The 5, 4, 3, 2, 1 Method</title>
      <link>https://blog.robertsimoes.org/posts/tool-5-4-3-2-1-method/</link>
      <pubDate>Sat, 08 Oct 2022 16:02:30 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/tool-5-4-3-2-1-method/</guid>
      <description>The 5, 4, 3, 2, 1 method is a goal prioritization method found in the book The Bullet Journal Method.&#xA;Steps Divide a page into 5 separate cells vertically Ideate tasks and goals that you would like to achieve in the next: 5 years 4 months 3 weeks 2 days 1 hour Write each of the tasks or goal into the corresponding cell associated with the time line Go through each of the cells and choose at most two goals or tasks per time period A good heuristic is choosing one personal and one professional Take four tasks (2 days and 1 hour) and add them to your immediate TODO list such as a Bullet Journal daily entry For the remaining six tasks (3 weeks, 4 months, 5 years) create a separate page for each goal and ideate through the sub-tasks for each that would be required to complete if the goal is to be achieved.</description>
    </item>
    <item>
      <title>Tool - New Idea Template</title>
      <link>https://blog.robertsimoes.org/posts/tool-new-idea-template/</link>
      <pubDate>Sat, 01 Oct 2022 11:51:59 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/tool-new-idea-template/</guid>
      <description>Attached below is an Obsidian template that can be used for describing and thinking through a new product idea.&#xA;[[@INFO]] Tags: #ideas, Links: Date: {{date}} --- # {{title}} ## Problem [[@TODO]] ## Solution [[@TODO]] ## Hypothesis *&amp;lt;community | people | group&amp;gt; will pay &amp;lt;fixed | recurring&amp;gt; fee to &amp;lt;receive | complete | perform task&amp;gt; with &amp;lt;quickly | efficiently | securely | other-benefit&amp;gt;* Example Idea - Dinner Tonight iOS Problem Busy households have to come up with new meal ideas every day in order to cook for the evening adding additional stress in deciding what to make</description>
    </item>
    <item>
      <title>Using Devlogs in Practice</title>
      <link>https://blog.robertsimoes.org/posts/using-devlogs-in-practice/</link>
      <pubDate>Wed, 28 Sep 2022 16:22:37 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/using-devlogs-in-practice/</guid>
      <description>In an earlier post Avoid Project Management Tools in Solo Development, I mentioned how using formal project management tools for solo development can be more busywork than is worth when compared to a simple logging framework or file. In order to formalize this working style, I built a Ruby gem to help myself called devlogs.&#xA;What is devlogs? The idea is straightforward: a project based logging CLI that uses files co-located in the source code repository.</description>
    </item>
    <item>
      <title>How to Autoreload File in Vim Without using :edit</title>
      <link>https://blog.robertsimoes.org/posts/how-to-autoreload-file-in-vim-without-edit/</link>
      <pubDate>Mon, 26 Sep 2022 18:59:51 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-autoreload-file-in-vim-without-edit/</guid>
      <description>Background Vim store files inside an in-memory &amp;ldquo;buffer&amp;rdquo; which is presented to the user If another program modifies the file that Vim is working with (e.g. another Vim session or IDE), Vim will not reload the contents of the file into the buffer by default Steps To enable the reloading behaviour you need to set the autoread option in your .vimrc to true Example Neovim configuration -- options.lua local options = { -- Snipped for brevity autoread = true } Or just plain Vimscript: set autoread </description>
    </item>
    <item>
      <title>How to Publish a Ruby Gem</title>
      <link>https://blog.robertsimoes.org/posts/how-to-release-a-ruby-gem/</link>
      <pubDate>Mon, 26 Sep 2022 12:24:55 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-release-a-ruby-gem/</guid>
      <description>This how to will provide the steps necessary for releasing a Ruby gem to rubygems.org. Before proceeding, ensure that you have configured your local setup to push to the rubygems.org registry programmatically via the gem cli. See this tutorial to setup an api key and configure your local machine&#xA;First build the gem to verify that it builds bundle exec rake build Tag the current branch and push changes up to the repository git tag .</description>
    </item>
    <item>
      <title>Troubleshoot - React App Connection Refused on Vpn</title>
      <link>https://blog.robertsimoes.org/posts/troubleshoot-react-app-connection-refused-on-vpn/</link>
      <pubDate>Sun, 18 Sep 2022 11:13:46 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/troubleshoot-react-app-connection-refused-on-vpn/</guid>
      <description>Background Using react version ^17.0.0 Using VPN Problem Statement When running the React development server for localhost development the development server starts but fails to render in the browser. i.e. &amp;ldquo;Connection Refused&amp;rdquo;&#xA;Solution Using a VPN can cause issues with the local development of a react app.&#xA;To solve this you can either:&#xA;Disable the VPN&#xA;Change the HOST environment variable that you initialize the React development server with.&#xA;React uses the HOST and PORT environment variables passed to the react-scripts to initialize the Webpack server to determine on which host and port it should run.</description>
    </item>
    <item>
      <title>How to Create and Render Custom Erb Templates</title>
      <link>https://blog.robertsimoes.org/posts/how-to-create-and-render-custom-erb-templates/</link>
      <pubDate>Fri, 16 Sep 2022 15:47:15 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-create-and-render-custom-erb-templates/</guid>
      <description>The Embedded Ruby library is very useful for creating reusable template file for rendering data on forms, web pages and more.&#xA;You can use ERB for your own custom templates as well.&#xA;Usage Create a template file for use, for example, __template.erb.txt. You will need to use the ERB syntax to enable the template to render data properly.&#xA;# __template.erb.txt First Name:&amp;lt;%= first_name %&amp;gt; Last Name:&amp;lt;%= last_name %&amp;gt; PhoneNumber:&amp;lt;%= phone %&amp;gt; Next you need to create the class containing the attributes (or methods) specified in the ERB file that will be used as the data source to render.</description>
    </item>
    <item>
      <title>How to Setup Hardhat Network Default Accounts</title>
      <link>https://blog.robertsimoes.org/posts/how-to-setup-hardhat-network-default-accounts/</link>
      <pubDate>Mon, 12 Sep 2022 15:05:26 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-setup-hardhat-network-default-accounts/</guid>
      <description>NOTE: This tutorial is for hardhat version ^2.4.1&#xA;By default, Hardhat has a local network called the hardhat network with chainId 31337 that runs on localhost:8545. This is network that developers create by executing:&#xA;npx hardhat node You can configure any JSON-RPC Network (i.e. Rinkeby, Kovan, Main Net, et cetera) via the hardhat.config.js , however, to keep things simple we will just look at the hardhat network in this tutorial.</description>
    </item>
    <item>
      <title>How to Create Python Virtual Environment</title>
      <link>https://blog.robertsimoes.org/posts/how-to-create-python-virtual-environment/</link>
      <pubDate>Sun, 11 Sep 2022 08:44:14 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-create-python-virtual-environment/</guid>
      <description>Background Python virtual environments (or &amp;ldquo;venv&amp;ldquo;s) are used to manage individual project installations of Python. Python virtual environments are created via the python binary. Steps Create the virtual environment folder via:&#xA;# The -m option runs the module as a script # The first `venv` indicates that we want to create a virtual environment # The second `venv` will be the name of the directory which contains the virtual environment. You can name this anything you&amp;#39;d like.</description>
    </item>
    <item>
      <title>Tool - New Project Vision Template</title>
      <link>https://blog.robertsimoes.org/posts/tool-new-project-vision/</link>
      <pubDate>Sun, 04 Sep 2022 13:10:18 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/tool-new-project-vision/</guid>
      <description>Attached below is an Obsidian template that can be used for describing the vision of a new project.&#xA;# {{title}} ## Vision [[@TODO]]: *Describe the vision for this* {{title}} is ... 1. 2. 3. ## Antivision {{title}} is ### Anchoring to Personal Purpose [[@TODO]]: *Describe how this anchors to your being and life* {{title}} is a vehicle that will help me to: 1. 2. 3. #### Why do I want these things?</description>
    </item>
    <item>
      <title>How to Use Filename for Heading in Obsidian Templates</title>
      <link>https://blog.robertsimoes.org/posts/how-to-use-filename-for-heading-in-obsidian-templates/</link>
      <pubDate>Thu, 01 Sep 2022 10:04:06 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-use-filename-for-heading-in-obsidian-templates/</guid>
      <description>A note in Obsidian is just a file system file. The file has a fileName such as: My File.md. Inside of Obsidian, the fileName is know as the title of a given note. When building your own templates you can use variables to insert content when the template is used.&#xA;For example, consider the following template.&#xA;// _date_time_template.md # {{title}} Links: [[Templates]] Date: {{date}} Time: {{time}} When you create a new file for Obsidian with a given fileName, the {{title}} variable in the template will be substituted with the value for fileName.</description>
    </item>
    <item>
      <title>How to Grep and Replace in Neovim/Vim</title>
      <link>https://blog.robertsimoes.org/posts/how-to-grep-replace-in-vim/</link>
      <pubDate>Sun, 17 Apr 2022 20:02:24 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-grep-replace-in-vim/</guid>
      <description>You can use the Quickfix list in order to search and replace in Vim. You can use a plugin like telescope.nvim livegrep or basic vimgrep.&#xA;Search via vimgrep. Use C-Q to open the Quickfix menu Use cdo s/&amp;lt;match&amp;gt;/&amp;lt;replacement&amp;gt;/g | update a. If you want you can add gc in order to to confirm each replacement </description>
    </item>
    <item>
      <title>How to Remove Dead Docker Containers</title>
      <link>https://blog.robertsimoes.org/posts/how-to-remove-dead-docker-containers/</link>
      <pubDate>Wed, 30 Mar 2022 20:06:48 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-remove-dead-docker-containers/</guid>
      <description>Docker has a -q option to only show the ID of a given image or container, example:&#xA;# List all Docker container ids docker container ls -q # 32fd0695805f # List all killed container ids docker ps -a -q You can use that in combination with docker rm to remove them.&#xA;docker container ls -a -q | xargs docker rm </description>
    </item>
    <item>
      <title>How to Use Neovim nvim-tree.vim plugin without web-dev-icons</title>
      <link>https://blog.robertsimoes.org/posts/how-to-use-nvim-tree-without-web-dev-icons/</link>
      <pubDate>Sat, 19 Mar 2022 11:11:23 -0700</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-use-nvim-tree-without-web-dev-icons/</guid>
      <description>Neovim&amp;rsquo;s plugin system has a popular kyazdani42/nvim-tree.vim plugin to render a rich file explorer in Neovim.&#xA;The kyazdani42/web-dev-icons package is an optional additional plugin that you can install to get coding style icons (e.g. folders, programming language icons, et cetera).&#xA;There is a small &amp;ldquo;gotcha&amp;rdquo; if you install the nvim-tree.vim plugin but do NOT want to use the web-dev-icons.&#xA;Specifically, you need to set ALL the named elements of the nvim_tree_icons table to be the empty string &amp;quot;&amp;quot;</description>
    </item>
    <item>
      <title>Caching Concepts In Rails</title>
      <link>https://blog.robertsimoes.org/posts/caching-concepts-rails/</link>
      <pubDate>Wed, 02 Mar 2022 07:44:22 -0800</pubDate>
      <guid>https://blog.robertsimoes.org/posts/caching-concepts-rails/</guid>
      <description>Basics Reference&#xA;Caching is only enabled in production environment (by default)&#xA;Page: Requests done through web sever vs Rails Stack&#xA;Action: Similar to Page, but hits Rails stack to execute before_filter and similar authentication means.&#xA;Fragment: Different parts of the page have different caching characteristics - view logic can be wrapped in cache blocks. Known as key-base-expiration.&#xA;&amp;lt;% cache product do %&amp;gt; &amp;lt;%…%&amp;gt; &amp;lt;% end %&amp;gt; # Rails writes cache entry to `views/products/product_id/updated_at` The string of characters at the end of the key is a template tree digest —it’s a hash digest of view fragment being cache:</description>
    </item>
    <item>
      <title>Learnings in 2021</title>
      <link>https://blog.robertsimoes.org/learnings/2021/</link>
      <pubDate>Tue, 28 Dec 2021 16:58:14 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/learnings/2021/</guid>
      <description>If you must track what you read, don&amp;rsquo;t be too serious about it. Nobody has the perfect system for you, you have to build what fits for you. Entering the crawlspace of your greatest fear will be your greatest liberation You can use art, poetry, and language as a medium to express your sadness, but you can also create beauty from a place of wholeness. Lots of software invents problems for you in order to sell you more software.</description>
    </item>
    <item>
      <title>False Alarm Tax</title>
      <link>https://blog.robertsimoes.org/posts/false-alarm-tax/</link>
      <pubDate>Wed, 03 Nov 2021 07:59:46 -0700</pubDate>
      <guid>https://blog.robertsimoes.org/posts/false-alarm-tax/</guid>
      <description>&amp;quot; False alarms - whether induced deliberately or not - are the bane of the industry. They are a denial-of-service attack on the alarm response force. Experience from electronic warefare is that a false alarm rate of greater than about 15% degrades the performance of radar operators; and more intruder alarm responders are operating well about that threshold&amp;quot;&#xA;Anderson, R. (2020). Security Engineering, Third Edition. Wiley, 486-487.&#xA;A software team&amp;rsquo;s on-call members are, for metaphorical and illustrative purposes, radar operators of an business&amp;rsquo; product and alarm responders to incidents, exceptions and errors.</description>
    </item>
    <item>
      <title>Code Proximity Conjecture</title>
      <link>https://blog.robertsimoes.org/posts/code-proximity-conjecture/</link>
      <pubDate>Thu, 21 Oct 2021 15:23:05 +0000</pubDate>
      <guid>https://blog.robertsimoes.org/posts/code-proximity-conjecture/</guid>
      <description>Let us call this heuristic the Code Proximity Conjecture&#xA;The probability of a documenting artifact (e.g. documentation, product roadmap, tickets, TODO task) being up to date is inversely proportional to the squared distance (in terms of hops by URL or files) of the artifact from the main code repository.&#xA;In other words:&#xA;Where p is the probability of the documenting artifact being up to date, and distance is the hop count by URL or file to the artifact relative to the main code repository.</description>
    </item>
    <item>
      <title>Avoid Project Management Solo Development</title>
      <link>https://blog.robertsimoes.org/posts/avoid-project-management-solo-dev/</link>
      <pubDate>Thu, 21 Oct 2021 08:08:47 -0700</pubDate>
      <guid>https://blog.robertsimoes.org/posts/avoid-project-management-solo-dev/</guid>
      <description>When working on a solo-project, avoid fancy tools for project management (e.g. GitHub Issues, Asana, Trello, etc). These tools, can waste your time on things that don&amp;rsquo;t matter - pulling the context further from the code (See Code Proximity Conjecture.&#xA;You don&amp;rsquo;t need to &amp;ldquo;show-that-your-doing-work&amp;rdquo;- that is vanity and unneeded time spent. The &amp;ldquo;show-your-work&amp;rdquo; component of your project is the end state artifact you produce (ie. product or software you are building).</description>
    </item>
    <item>
      <title>How to Enumerate Erc721 Tokens</title>
      <link>https://blog.robertsimoes.org/posts/how-to-enumerate-erc721-tokens/</link>
      <pubDate>Wed, 20 Oct 2021 19:58:04 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-enumerate-erc721-tokens/</guid>
      <description>For a given ERC721 contract, each NFT instance is just a mapping(address =&amp;gt; []uint256). The array of uint256 types represent the ID of the token which are index values. Therefore, to get the IDs for tokens owned by a particular address, you must first get the balanceOf for a given address:&#xA;const balance = await contract.balanceOf(address) The balance represent the sum of all tokens owned by this address, and the last index available for iteration.</description>
    </item>
    <item>
      <title>Troubleshoot - Neovim LSP Not Working for Language</title>
      <link>https://blog.robertsimoes.org/posts/troubleshoot-neovim-lsp-not-working-for-language/</link>
      <pubDate>Tue, 05 Oct 2021 09:03:03 -0700</pubDate>
      <guid>https://blog.robertsimoes.org/posts/troubleshoot-neovim-lsp-not-working-for-language/</guid>
      <description>Pre-requisites: Using neovim 0.5.0+ Using native LSP servers Have installed language LSP server (e.g. Ruby, solargraph | Go, gopls) Have added LSP to neovim init.vim to load Debug Check the LSP&amp;rsquo;s default_config , for the root_dir. This is how the LSP detects whether to launch or now. For example the gopls.lua configuration:&#xA;# gopls.lua # -- snipped -- default_config = { root_dir = [[root_pattern(&amp;#34;go.mod&amp;#34;, &amp;#34;.git&amp;#34;)]], }, The above configuration depends on the presence of a go.</description>
    </item>
    <item>
      <title>Troubleshoot - The Hardhat Deploy Blues</title>
      <link>https://blog.robertsimoes.org/posts/troubleshoot-the-hardhat-deploy-blues/</link>
      <pubDate>Fri, 01 Oct 2021 08:07:00 -0700</pubDate>
      <guid>https://blog.robertsimoes.org/posts/troubleshoot-the-hardhat-deploy-blues/</guid>
      <description>Error: Cannot find deployed hardhat-deploy contracts&#xA;Background Project uses hardhat-deploy to manage contract deployment Local development instance is running a standalone Hardhat Network via npx hardhat node Project has deployed contract (e.g. MyTokenContract) via npx hardhat deploy Problem Statement When attempting to write a Hardhat task in hardhat.config.js to interact with the deployed contract sing the getContract helper from hardhat-deploy plugin, ethers.getContract(&amp;quot;MyTokenContract&amp;quot;) throws an error saying &amp;ldquo;MyTokenContract does not exist&amp;rdquo;</description>
    </item>
    <item>
      <title>How to Setup Dokku and Custom DNS with DigitalOcean</title>
      <link>https://blog.robertsimoes.org/posts/how-to-setup-dokku-and-custom-dns-with-digitalocean/</link>
      <pubDate>Fri, 20 Aug 2021 17:11:27 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-setup-dokku-and-custom-dns-with-digitalocean/</guid>
      <description>In this tutorial, you will be creating a Dokku server using DigitalOcean&amp;rsquo;s 1-Click App Marketplace.&#xA;Creating A Dokku Droplet If you do not have a DigitalOcean account already you can sign up for one at digitalocean.com . Optionally, you can sign up using this referral URL to get $100 in credit over the next 60 days.&#xA;Figure 1: The referral e-mail you will get if you sign up using the affiliate link above</description>
    </item>
    <item>
      <title>How to Add Usernames to Clearance</title>
      <link>https://blog.robertsimoes.org/posts/how-to-add-usernames-to-clearance/</link>
      <pubDate>Sat, 24 Apr 2021 21:57:38 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-add-usernames-to-clearance/</guid>
      <description>In this tutorial we will cover adding a username to Clearance User models in Ruby on Rails. This post assumes you already completed Clearance setup instructions for your application and generated the appropriate models, views and controllers.&#xA;Generate Username Migration Generate a migration to add an additional column to the users table called username:&#xA;$ bundle exec rails generate migration AddUsernameToUsers username Open your newly generated migration file to ensure column addition is correct.</description>
    </item>
    <item>
      <title>How to Manage Multiple Go Versions</title>
      <link>https://blog.robertsimoes.org/posts/how-to-manage-multiple-go-versions/</link>
      <pubDate>Thu, 01 Apr 2021 18:01:39 -0700</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-manage-multiple-go-versions/</guid>
      <description>Too long did not read: go get golang/dl/go1.x.z; go1.x.z download&#xA;Installing Go via homebrew or golang.org will pull the latest version of Go (1.15 at the time of writing). However, in some cases (such as writing a blog post or book) you may need to pin or install a specific version. The Go community has created a few Go version management programs such as: gvm and . If you do not want to install these version managersyou can also optionally install various versions of Go via golang.</description>
    </item>
    <item>
      <title>How to Create Disabled Spinner Button in Rails</title>
      <link>https://blog.robertsimoes.org/posts/how-to-create-disabled-spinner-button-in-rails/</link>
      <pubDate>Fri, 26 Mar 2021 18:46:06 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-create-disabled-spinner-button-in-rails/</guid>
      <description>How to Create Disabled Button with Spinner in Rails To construct meaningful user experiences we want to ensure that views provide feedback related to state changes in system. This post assumes you have already added Bootstrap to your application.&#xA;Assume there is a model called Note with a state column of type integer backed by a Rails enum and a NotesController with an archive action called by the view.&#xA;class Note &amp;lt; Application Record enum state [:started, :pending, :archived] def archive!</description>
    </item>
    <item>
      <title>Using Ruby Mutations in Practice</title>
      <link>https://blog.robertsimoes.org/posts/using-ruby-mutations-in-practice/</link>
      <pubDate>Thu, 25 Mar 2021 11:29:49 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/posts/using-ruby-mutations-in-practice/</guid>
      <description>The following is an excerpt from my book Building and Deploying Crypto Trading Bots&#xA;Mutations is library and framework for building opinionated service objects in Ruby.&#xA;A Tour of Mutations Within the framework all service objects have the same format. Every class inherits from the Mutations::Command parent which provides a tiny API for children to declare required and optional inputs in the class definition.&#xA;class CreateInventoryOrder &amp;lt; Mutations::Command required do ❶ integer :routing_number ❷ model :product, class: Product ❸ end # Example of optional input: # optional do # integer :input_name # end end Within the required block ❶ the inputs that must be provided as arguments to the mutation are described along with their desired data types.</description>
    </item>
    <item>
      <title>Strategy Pattern and Service Objects in Ruby</title>
      <link>https://blog.robertsimoes.org/posts/strategies-and-service-objects-in-ruby/</link>
      <pubDate>Sat, 20 Mar 2021 11:24:58 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/posts/strategies-and-service-objects-in-ruby/</guid>
      <description>The following is an excerpt from my book Building and Deploying Crypto Trading Bots&#xA;A common design pattern in software development is known as the &amp;ldquo;Strategy&amp;rdquo; pattern. The pattern proposes that when you have a scenario with multiple execution paths, each path be considered as a &amp;ldquo;strategy&amp;rdquo; object (or function in functional languages) that contains the algorithm implementation to execute. The benefit of doing this two fold. First, it allows the algorithm to vary from the clients that uses it.</description>
    </item>
    <item>
      <title>Rails Is a Solo Developers Lever</title>
      <link>https://blog.robertsimoes.org/posts/rails-is-a-solo-developers-lever/</link>
      <pubDate>Tue, 16 Feb 2021 19:15:33 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/posts/rails-is-a-solo-developers-lever/</guid>
      <description>Over the years I have built a few Single Page Web applications (SPAs) using frontend frameworks such as React and Vue. But recently, I was building a web app with Rails I started thinking about the following: Rails is a great tool for solo and small team developers because it&amp;rsquo;s really just a lever. It gives you and the team the fulcrum and beam to deal with the same set of problems as a larger team by providing a simplistic mental model through which to reason about the software application.</description>
    </item>
    <item>
      <title>How to Add CORS to Django</title>
      <link>https://blog.robertsimoes.org/posts/how-to-add-cors-to-django/</link>
      <pubDate>Sat, 09 Jan 2021 21:53:29 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-add-cors-to-django/</guid>
      <description>First, use django-cors-headers, whose documentation says to install the library&#xA;python -m pip install django-cors-headers then add it to your installed apps:&#xA;INSTALLED_APPS = ( ... &amp;#39;corsheaders&amp;#39;, ... ) You will also need to add a middleware class to listen in on responses:&#xA;MIDDLEWARE = [ ..., &amp;#39;corsheaders.middleware.CorsMiddleware&amp;#39;, &amp;#39;django.middleware.common.CommonMiddleware&amp;#39;, ..., ] See the configuration section of its documentation, paying particular attention to the various CORS_ORIGIN_ settings. You&amp;rsquo;ll need to set some of those based on your needs.</description>
    </item>
    <item>
      <title>Learnings in 2020</title>
      <link>https://blog.robertsimoes.org/learnings/2020/</link>
      <pubDate>Sun, 20 Dec 2020 16:49:42 -0500</pubDate>
      <guid>https://blog.robertsimoes.org/learnings/2020/</guid>
      <description>The following is an excerpt from my 2020 letter 3.&#xA;Starting is easy finishing is hard. Vulnerability is the key to connecting with others. Let people help you. Sleep matters, you can only burn the candle so long until you get burnt. Much of adult life is spent unconsciously grappling with, but seldom understanding in full, the seeds of childhood experience in the fully grown desires we nurture today. If you allow it to, loneliness will poison your thoughts and drive you mad far sooner than you think.</description>
    </item>
    <item>
      <title>Tool - Create a Kindness.txt</title>
      <link>https://blog.robertsimoes.org/posts/tool-create-a-kindness-txt/</link>
      <pubDate>Mon, 02 Nov 2020 12:10:08 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/tool-create-a-kindness-txt/</guid>
      <description>Keep a small text file or note somewhere called something like kindness.txt. When someone gives you a meaningful compliment or recognition for an achievement or personality trait you have, add it to the list.&#xA;A helpful format can be:&#xA;# Kindness.txt ## Date * Comment * Person who said it As you add new items to your list you will begin generating a self concept from external data sources.&#xA;If you are very hard on yourself, keeping a kindness.</description>
    </item>
    <item>
      <title>What Is Alpine Build Base</title>
      <link>https://blog.robertsimoes.org/posts/what-is-alpine-build-base/</link>
      <pubDate>Sun, 01 Dec 2019 18:06:35 -0700</pubDate>
      <guid>https://blog.robertsimoes.org/posts/what-is-alpine-build-base/</guid>
      <description>Alpine Linux is a popular Linux distribution in the Docker community. Alpine&amp;rsquo;s primary marketing is a distribution that is a security-oriented, lightweight, simple and based on musc libc and busybox. musc libc is&amp;gt; &amp;hellip; an implementation of the C standard library built on top of the Linux system call API, including interfaces defined in the base language standard, POSIX, and widely agreed-upon extensions– musl libc website&#xA;and busybox is an embedded centric combination of:</description>
    </item>
    <item>
      <title>How to Add CORS to Rails</title>
      <link>https://blog.robertsimoes.org/posts/how-to-add-cors-to-rails/</link>
      <pubDate>Sat, 02 Nov 2019 18:06:35 -0700</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-add-cors-to-rails/</guid>
      <description>By default Rails blocks cross origin resource sharing requests (CORs) to protect applications from malicious requests.&#xA;However, when developing a SPA frontend using a framework like React or Vue.JS and a headless Rails API backend we will need to make requests from a different port serving our app on our local host. To allow these requests to reach our server, we will add a piece of middleware as a gem called rack-cors.</description>
    </item>
    <item>
      <title>How to Build Your First Product</title>
      <link>https://blog.robertsimoes.org/posts/how-to-build-your-first-product/</link>
      <pubDate>Tue, 08 Aug 2017 14:15:43 -0400</pubDate>
      <guid>https://blog.robertsimoes.org/posts/how-to-build-your-first-product/</guid>
      <description>1. The Idea Think of a market of one and ask yourself:&#xA;What’s a tool or idea that I’ve always wanted for myself?&#xA;The reason you think of yourself is that you’re accessible. You know your own likes, dislikes and pain points on the daily. Secondly, the chances that there are people in the world similar to you is fairly high. Therefore, whatever you build is likely to find at a home or interest with least one other person.</description>
    </item>
    <item>
      <title>About</title>
      <link>https://blog.robertsimoes.org/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.robertsimoes.org/about/</guid>
      <description>About Robert Simoes is software developer, writer and DJ. He graduated from University of Western Ontario in 2018 with a BMSc in Biochemistry and BSc in Computer Science. Previously, he has worked as a Software Engineer at Coinbase and a founder at Pressure Labs. In his personal time he enjoys writing, philosophy, literature, business and DJing/music prodution.&#xA;Around The Web:&#xA;GitHub learningtodj.com Projects Random Ideas Substack Twitter hello@robertsimoes.org </description>
    </item>
    <item>
      <title>Projects</title>
      <link>https://blog.robertsimoes.org/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://blog.robertsimoes.org/projects/</guid>
      <description>Learning To DJ (2023 - Present) Online course teaching beginner to intermediate DJ skills&#xA;Accelerate your DJ journey and go from beginner to intermediate DJ with my course&#xA;Crates (2022) Intelligent music library&#xA;Rekordbox replacement with integrations into Soundcloud and other discovery engines including a &amp;ldquo;music graph&amp;rdquo; to discover taste-profile.&#xA;Catapult (2022) Blockchain Faucet as a Service (FaaS)&#xA;SaaS product to serve developers in getting access to testnet Ethereum Goerli ETH.</description>
    </item>
  </channel>
</rss>
