<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>crossPost &amp;mdash; Solved by Code</title>
    <link>https://kono.sh/tag:crossPost</link>
    <description>Musings of a software engineer, dad, and geek at heart.</description>
    <pubDate>Fri, 24 Apr 2026 15:40:12 +0000</pubDate>
    <image>
      <url>https://i.snap.as/9W6K3NhL.png</url>
      <title>crossPost &amp;mdash; Solved by Code</title>
      <link>https://kono.sh/tag:crossPost</link>
    </image>
    <item>
      <title>Uncommon remote working tip: Don&#39;t be so efficient during meetings</title>
      <link>https://kono.sh/uncommon-remote-working-tip-dont-be-so-efficient-during-meetings?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[If you&#39;re a stickler about meeting topics, you&#39;re hurting the remote workers on your team. &#xA;&#xA;Blasphemy? Maybe.&#xA;&#xA;Read on for 2 changes in your meetings to engage and include your remote workers.👇 &#xA;&#xA;!--more--&#xA;&#xA;Meetings are already a waste of time, why wouldn&#39;t you want to minimize the time we are all stuck on one?&#xA;&#xA;I&#39;ve been doing the remote work thing for over a decade. Bear with me on this one.&#xA;&#xA;1. Expect and accept small talk&#xA;&#xA;It&#39;s important to remember that remote workers don&#39;t have the luxury of water-cooler talk. There&#39;s no direct equivalent to chatting with someone in the hall.&#xA;&#xA;Zoom meetings are one of their few human-focused, face-to-face interactions.&#xA;&#xA;Even remote workers need an opportunity for small talk. &#xA;&#xA;To build camaraderie, you need unstructured conversation. By allowing, and expecting, this to occur in your meetings you empower team bonding.&#xA;&#xA;2. When the conversation diverges, give it a chance&#xA;&#xA;And let&#39;s not forget the benefits of serendipity.&#xA;&#xA;Sometimes an unexpected topic comes up. With devs, it&#39;s usually a bug, feature, or design decision. The original conversation prompted someone to pivot.&#xA;&#xA;Allow that pivot. Let the conversation flow.&#xA;&#xA;This isn&#39;t an endorsement for derailing every meeting, dodging the original topics, or dragging things out to the detriment of everyone on the call.&#xA;&#xA;It is a call for intentionality in allowing the team to interact, in a human-centric way.&#xA;&#xA;With their voices, expressions, and emotion. All those things missing from Slack (regardless of how many emojis you use).&#xA;&#xA;TLDR;&#xA;&#xA;Expect and accept small talk&#xA;When the conversation diverges, give it a chance&#xA;&#xA;Making these two changes to your meeting will give your remote workers a chance to bond with the rest of the team. &#xA;&#xA;Don&#39;t deny them that.&#xA;&#xA;#devp #remotework #crosspost #ship30for30&#xA;&#xA;---&#xD;&#xA;&#xD;&#xA;Thanks for reading. If you enjoyed the article subscribe via RSS feed or enter your email in the box below 👇&#xD;&#xA;&#xD;&#xA;!--emailsub--]]&gt;</description>
      <content:encoded><![CDATA[<p>If you&#39;re a stickler about meeting topics, you&#39;re hurting the remote workers on your team.</p>

<p>Blasphemy? Maybe.</p>

<p>Read on for 2 changes in your meetings to engage and include your remote workers.👇</p>



<p>Meetings are already a waste of time, why wouldn&#39;t you want to minimize the time we are all stuck on one?</p>

<p>I&#39;ve been doing the remote work thing for over a decade. Bear with me on this one.</p>

<h2 id="1-expect-and-accept-small-talk" id="1-expect-and-accept-small-talk">1. Expect and accept small talk</h2>

<p>It&#39;s important to remember that <strong>remote workers don&#39;t have the luxury of water-cooler talk</strong>. There&#39;s no direct equivalent to chatting with someone in the hall.</p>

<p>Zoom meetings are one of their few human-focused, face-to-face interactions.</p>

<p>Even remote workers need an opportunity for small talk.</p>

<p>To build camaraderie, you need unstructured conversation. By allowing, and expecting, this to occur in your meetings you empower team bonding.</p>

<h2 id="2-when-the-conversation-diverges-give-it-a-chance" id="2-when-the-conversation-diverges-give-it-a-chance">2. When the conversation diverges, give it a chance</h2>

<p>And let&#39;s not forget the benefits of serendipity.</p>

<p>Sometimes an unexpected topic comes up. With devs, it&#39;s usually a bug, feature, or design decision. The original conversation prompted someone to pivot.</p>

<p>Allow that pivot. Let the conversation flow.</p>

<p>This isn&#39;t an endorsement for derailing every meeting, dodging the original topics, or dragging things out to the detriment of everyone on the call.</p>

<p>It is a call for intentionality in allowing the team to interact, in a human-centric way.</p>

<p>With their voices, expressions, and emotion. All those things missing from Slack (regardless of how many emojis you use).</p>

<p>TLDR;</p>
<ol><li>Expect and accept small talk</li>
<li>When the conversation diverges, give it a chance</li></ol>

<p>Making these two changes to your meeting will give your remote workers a chance to bond with the rest of the team.</p>

<p>Don&#39;t deny them that.</p>

<p><a href="https://kono.sh/tag:devp" class="hashtag"><span>#</span><span class="p-category">devp</span></a> <a href="https://kono.sh/tag:remotework" class="hashtag"><span>#</span><span class="p-category">remotework</span></a> <a href="https://kono.sh/tag:crosspost" class="hashtag"><span>#</span><span class="p-category">crosspost</span></a> <a href="https://kono.sh/tag:ship30for30" class="hashtag"><span>#</span><span class="p-category">ship30for30</span></a></p>

<hr/>

<p>Thanks for reading. If you enjoyed the article subscribe via <a href="https://kono.sh/feed/">RSS feed</a> or enter your email in the box below 👇</p>


]]></content:encoded>
      <guid>https://kono.sh/uncommon-remote-working-tip-dont-be-so-efficient-during-meetings</guid>
      <pubDate>Sun, 20 Nov 2022 05:11:49 +0000</pubDate>
    </item>
    <item>
      <title>Modeling relational data in a DynamoDB Single Table Design is hard to wrap your head around. Start your learning with these 3 resources</title>
      <link>https://kono.sh/modeling-relational-data-in-a-dynamodb-single-table-design-is-hard-to-wrap-your?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[If you want predictable, consistent performance (with single-digit ms response times) for your relational data model, you need to think differently. Start learning with these 3 resources.&#xA;&#xA;!--more--&#xA;&#xA;Even the title of this essay is hard to wrap your head around.&#xA;&#xA;But as someone who has built systems on DynamoDB where sub 8ms response times were maintained well past 5T (yes, trillion) records, I can tell you both the title and the concept are worth learning. To do it, you&#39;ll need to approach modeling from a different point of view.&#xA;&#xA;Thankfully, there&#39;s some excellent resources available. Start with these three.&#xA;&#xA;1. Official DynamoDB Docs&#xA;&#xA;The name is &#34;Best practices for modeling relational data in DynamoDB&#34;, from the AWS docs themselves. Covers a common, recognizable order entry and HR schema, showing the traditional relational model, and then an example of how to reapproach it with an access patterns mindset.&#xA;&#xA;2. Alex Debrie&#39;s one-to-many&#xA;&#xA;Through showing strategies for modeling and querying the most common relationship in a relational data model, Alex hits multiple bite-sized samples. Most devs who have used SQL will have the wheels start turning on how to connect this to more complex schemas they&#39;ve worked with in the past.&#xA;&#xA;3. trek10 Blog Post&#xA;&#xA;Much respect for tackling the Northwind DB as their example. If you&#39;ve been through a few SQL tutorials, you&#39;ll recognize that name. And if you&#39;ve been reading my earlier DDB posts, the video at the start of the post should look familiar.&#xA;&#xA;These three resources will show you the possibilities of thinking about your relational data models differently.&#xA;&#xA;Still stuck wrapping your head around a concept? Let me know in the comments.&#xA;&#xA;This was the Day 23 #ship30for30 #atomicEssay.&#xA;&#xA;#dynamodb #aws #crosspost&#xA;&#xA;---&#xD;&#xA;&#xD;&#xA;Thanks for reading. If you enjoyed the article subscribe via RSS feed or enter your email in the box below 👇&#xD;&#xA;&#xD;&#xA;!--emailsub--]]&gt;</description>
      <content:encoded><![CDATA[<p>If you want predictable, consistent performance (with single-digit ms response times) for your relational data model, you need to think differently. Start learning with these 3 resources.</p>



<p>Even the title of this essay is hard to wrap your head around.</p>

<p>But as someone who has built systems on DynamoDB where sub 8ms response times were maintained well past 5T (yes, trillion) records, I can tell you both the title and the concept are worth learning. To do it, you&#39;ll need to approach modeling from a different point of view.</p>

<p>Thankfully, there&#39;s some excellent resources available. Start with these three.</p>

<h3 id="1-official-dynamodb-docs-https-docs-aws-amazon-com-amazondynamodb-latest-developerguide-bp-relational-modeling-html" id="1-official-dynamodb-docs-https-docs-aws-amazon-com-amazondynamodb-latest-developerguide-bp-relational-modeling-html">1. <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-relational-modeling.html">Official DynamoDB Docs</a></h3>

<p>The name is “Best practices for modeling relational data in DynamoDB”, from the AWS docs themselves. Covers a common, recognizable order entry and HR schema, showing the traditional relational model, and then an example of how to reapproach it with an access patterns mindset.</p>

<h3 id="2-alex-debrie-s-one-to-many-https-www-alexdebrie-com-posts-dynamodb-one-to-many" id="2-alex-debrie-s-one-to-many-https-www-alexdebrie-com-posts-dynamodb-one-to-many">2. <a href="https://www.alexdebrie.com/posts/dynamodb-one-to-many/">Alex Debrie&#39;s one-to-many</a></h3>

<p>Through showing strategies for modeling and querying the most common relationship in a relational data model, Alex hits multiple bite-sized samples. Most devs who have used SQL will have the wheels start turning on how to connect this to more complex schemas they&#39;ve worked with in the past.</p>

<h3 id="3-trek10-blog-post-https-www-trek10-com-blog-dynamodb-single-table-relational-modeling" id="3-trek10-blog-post-https-www-trek10-com-blog-dynamodb-single-table-relational-modeling">3. <a href="https://www.trek10.com/blog/dynamodb-single-table-relational-modeling/">trek10 Blog Post</a></h3>

<p>Much respect for tackling the Northwind DB as their example. If you&#39;ve been through a few SQL tutorials, you&#39;ll recognize that name. And if you&#39;ve been reading my earlier DDB posts, the video at the start of the post should look familiar.</p>

<p>These three resources will show you the possibilities of thinking about your relational data models differently.</p>

<p>Still stuck wrapping your head around a concept? Let me know in the comments.</p>

<p>This was the Day 23 <a href="https://kono.sh/tag:ship30for30" class="hashtag"><span>#</span><span class="p-category">ship30for30</span></a> <a href="https://kono.sh/tag:atomicEssay" class="hashtag"><span>#</span><span class="p-category">atomicEssay</span></a>.</p>

<p><a href="https://kono.sh/tag:dynamodb" class="hashtag"><span>#</span><span class="p-category">dynamodb</span></a> <a href="https://kono.sh/tag:aws" class="hashtag"><span>#</span><span class="p-category">aws</span></a> <a href="https://kono.sh/tag:crosspost" class="hashtag"><span>#</span><span class="p-category">crosspost</span></a></p>

<hr/>

<p>Thanks for reading. If you enjoyed the article subscribe via <a href="https://kono.sh/feed/">RSS feed</a> or enter your email in the box below 👇</p>


]]></content:encoded>
      <guid>https://kono.sh/modeling-relational-data-in-a-dynamodb-single-table-design-is-hard-to-wrap-your</guid>
      <pubDate>Thu, 10 Nov 2022 20:02:23 +0000</pubDate>
    </item>
    <item>
      <title>How 15 minutes a week and a simple list keeps my developer workflow humming</title>
      <link>https://kono.sh/how-15-minutes-a-week-and-a-simple-list-keeps-my-developer-workflow-humming?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[You can&#39;t improve what you don&#39;t track.&#xA;&#xA;When I&#39;m giving demos to or pairing with other devs, they inevitably ask how I put together my workflows and tooling. It, usually, appears smooth and effective. Everything from mnemonic shortcuts in my terminal to instantly opening the AWS console to the right account.&#xA;!--more--&#xA;I can thank two habits for building and keeping my workflows going.&#xA;&#xA;1. Keep a Friction List&#xA;&#xA;As I&#39;m working throughout the day, whenever there&#39;s a little hiccup or annoyance in my workflow, it goes on the Friction List. My natural inclination (and desire for procrastination) says to stop and fix it immediately. But in the spirit of GTD I send it off to a trusted system, knowing I&#39;ll circle back to it eventually.&#xA;&#xA;Here&#39;s a small snippet of things currently on it:&#xA;&#xA;no auto format on save for lua&#xA;ave should default to target1 acct&#xA;fuzzy directory jump history doesn&#39;t sync between laptops&#xA;nested cdk dir changes nvim file listing context&#xA;vaulted doesn&#39;t support image sharing&#xA;&#xA;Each of these has at one point or another annoyed or impeded my flow. Tiny to significant bits of friction that once removed, give back precious seconds to minutes of my day. Capturing them as they occur is a start, but it isn&#39;t enough to stave off the desire to fix them all. For that, I need to...&#xA;&#xA;2. Review and improve for 15 minutes each week&#xA;&#xA;Doing is critical to actually improving. &#xA;&#xA;Each week, 15 minutes of dedicated AM time is spent reviewing the list and making progress on something. It could be a quick new shortcut, or planning out the next feature on a side project.&#xA;&#xA;Any action is fair game, so long as it makes progress on the list.&#xA;&#xA;Now it&#39;s your turn. Do you track the friction in your workflow? If not, how do you know what to improve?&#xA;&#xA;This was the Day 24 #ship30for30 #atomicEssay.&#xA;&#xA;#devp #crosspost&#xA;&#xA;---&#xD;&#xA;&#xD;&#xA;Thanks for reading. If you enjoyed the article subscribe via RSS feed or enter your email in the box below 👇&#xD;&#xA;&#xD;&#xA;!--emailsub--]]&gt;</description>
      <content:encoded><![CDATA[<p>You can&#39;t improve what you don&#39;t track.</p>

<p>When I&#39;m giving demos to or pairing with other devs, they inevitably ask how I put together my workflows and tooling. It, usually, appears smooth and effective. Everything from mnemonic shortcuts in my terminal to instantly opening the AWS console to the right account.

I can thank two habits for building and keeping my workflows going.</p>

<h3 id="1-keep-a-friction-list" id="1-keep-a-friction-list">1. Keep a Friction List</h3>

<p>As I&#39;m working throughout the day, whenever there&#39;s a little hiccup or annoyance in my workflow, it goes on the Friction List. My natural inclination (and desire for procrastination) says to stop and fix it immediately. But in the spirit of GTD I send it off to a trusted system, knowing I&#39;ll circle back to it eventually.</p>

<p>Here&#39;s a small snippet of things currently on it:</p>
<ul><li>no auto format on save for lua</li>
<li>ave should default to target1 acct</li>
<li>fuzzy directory jump history doesn&#39;t sync between laptops</li>
<li>nested cdk dir changes nvim file listing context</li>
<li>vaulted doesn&#39;t support image sharing</li></ul>

<p>Each of these has at one point or another annoyed or impeded my flow. Tiny to significant bits of friction that once removed, give back precious seconds to minutes of my day. Capturing them as they occur is a start, but it isn&#39;t enough to stave off the desire to fix them all. For that, I need to...</p>

<h3 id="2-review-and-improve-for-15-minutes-each-week" id="2-review-and-improve-for-15-minutes-each-week">2. Review and improve for 15 minutes each week</h3>

<p>Doing is critical to actually improving.</p>

<p>Each week, 15 minutes of dedicated AM time is spent reviewing the list and making progress on <strong>something</strong>. It could be a quick new shortcut, or planning out the next feature on a side project.</p>

<p>Any action is fair game, so long as it makes progress on the list.</p>

<p>Now it&#39;s your turn. Do you track the friction in your workflow? If not, how do you know what to improve?</p>

<p>This was the Day 24 <a href="https://kono.sh/tag:ship30for30" class="hashtag"><span>#</span><span class="p-category">ship30for30</span></a> <a href="https://kono.sh/tag:atomicEssay" class="hashtag"><span>#</span><span class="p-category">atomicEssay</span></a>.</p>

<p><a href="https://kono.sh/tag:devp" class="hashtag"><span>#</span><span class="p-category">devp</span></a> <a href="https://kono.sh/tag:crosspost" class="hashtag"><span>#</span><span class="p-category">crosspost</span></a></p>

<hr/>

<p>Thanks for reading. If you enjoyed the article subscribe via <a href="https://kono.sh/feed/">RSS feed</a> or enter your email in the box below 👇</p>


]]></content:encoded>
      <guid>https://kono.sh/how-15-minutes-a-week-and-a-simple-list-keeps-my-developer-workflow-humming</guid>
      <pubDate>Thu, 10 Nov 2022 07:07:59 +0000</pubDate>
    </item>
    <item>
      <title>So you want to learn DynamoDB... skip the fluff &amp; go right to the 400 level course with this video</title>
      <link>https://kono.sh/so-you-want-to-learn-dynamodb?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[If you want to learn DynamoDB, you need a video that makes you 🤯. Here&#39;s my reco for the best one on the topic.&#xA;&#xA;!--more--&#xA;&#xA;There are a lot of videos and blogs about DynamoDB.&#xA;&#xA;And I&#39;ve watched/read more than I care to admit. While most hit the basics, they tend to miss out on the advanced, real-world application. And very few give that [Keanu voice] &#34;Woah&#34; moment.&#xA;&#xA;But the #1 must watch video on DynamoDB I&#39;ve found is Advanced Design Patterns for DynamoDB by Rick Houlihan. (Plenty of Woahs waiting in this one)&#xA;&#xA;Here&#39;s a teaser of what it covers:&#xA;&#xA;Real, concrete examples of relational data modeled in DDB.&#xA;Partition Key and Secondary Key deep dives &amp; best practices&#xA;Examples of mixing different data types in a GSI (Index Overloading design pattern)&#xA;Access pattern analysis from one of the best in the biz.&#xA;An example with a dozen access patterns supported by two GSIs on a single table. 🤯 One of the single best aha moments of any DDB resource around.&#xA;&#xA;And so much more ...&#xA;&#xA;Honestly, this video changed my perspective and continues to influence each of my DDB designs. Sometimes you just have to see the examples put to practice to really understand the power. Why not learn it from a master of his craft?&#xA;&#xA;If you are at all interested in DynamoDB, do yourself a favor and clear your calendar to give this a watch.&#xA;&#xA;This was the Day 22 #ship30for30 #atomicEssay.&#xA;&#xA;#crossPost #dynamodb #aws&#xA;&#xA;---&#xD;&#xA;&#xD;&#xA;Thanks for reading. If you enjoyed the article subscribe via RSS feed or enter your email in the box below 👇&#xD;&#xA;&#xD;&#xA;!--emailsub--]]&gt;</description>
      <content:encoded><![CDATA[<p>If you want to learn DynamoDB, you need a video that makes you 🤯. Here&#39;s my reco for the best one on the topic.</p>



<p>There are a lot of videos and blogs about DynamoDB.</p>

<p>And I&#39;ve watched/read more than I care to admit. While most hit the basics, they tend to miss out on the advanced, real-world application. And very few give that [Keanu voice] “Woah” moment.</p>

<p>But the #1 must watch video on DynamoDB I&#39;ve found is <a href="https://youtu.be/HaEPXoXVf2k">Advanced Design Patterns for DynamoDB</a> by Rick Houlihan. <em>(Plenty of Woahs waiting in this one)</em></p>

<p>Here&#39;s a teaser of what it covers:</p>
<ol><li>Real, concrete examples of relational data modeled in DDB.</li>
<li>Partition Key and Secondary Key deep dives &amp; best practices</li>
<li>Examples of mixing different data types in a GSI (Index Overloading design pattern)</li>
<li>Access pattern analysis from one of the best in the biz.</li>
<li>An example with a dozen access patterns supported by two GSIs on a single table. 🤯 <em>One of the single best aha moments of any DDB resource around.</em></li></ol>

<p>And <strong>so</strong> much more ...</p>

<p>Honestly, this video changed my perspective and continues to influence each of my DDB designs. Sometimes you just have to see the examples put to practice to really understand the power. Why not learn it from a master of his craft?</p>

<p>If you are at all interested in DynamoDB, do yourself a favor and clear your calendar to give this a watch.</p>

<p>This was the Day 22 <a href="https://kono.sh/tag:ship30for30" class="hashtag"><span>#</span><span class="p-category">ship30for30</span></a> <a href="https://kono.sh/tag:atomicEssay" class="hashtag"><span>#</span><span class="p-category">atomicEssay</span></a>.</p>

<p><a href="https://kono.sh/tag:crossPost" class="hashtag"><span>#</span><span class="p-category">crossPost</span></a> <a href="https://kono.sh/tag:dynamodb" class="hashtag"><span>#</span><span class="p-category">dynamodb</span></a> <a href="https://kono.sh/tag:aws" class="hashtag"><span>#</span><span class="p-category">aws</span></a></p>

<hr/>

<p>Thanks for reading. If you enjoyed the article subscribe via <a href="https://kono.sh/feed/">RSS feed</a> or enter your email in the box below 👇</p>


]]></content:encoded>
      <guid>https://kono.sh/so-you-want-to-learn-dynamodb</guid>
      <pubDate>Wed, 09 Nov 2022 07:31:18 +0000</pubDate>
    </item>
    <item>
      <title>3 questions to ask when deciding between a relational DB and DynamoDB for your project</title>
      <link>https://kono.sh/3-questions-to-ask-when-deciding-between-a-relational-db-and-dynamodb-for-your?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[To DynamoDB or not to DynamoDB. That is the question. Here&#39;s 3 more questions to ask (and make a decision).&#xA;&#xA;!--more--&#xA;&#xA;Choice of persistence stores has an outsized impact on project design.&#xA;&#xA;Having architected many projects for the cloud, I&#39;ve wrestled with &#34;which persistence&#34; too many times to count. But it is a decision that needs to be made early and thoughtfully.&#xA;&#xA;Applying these 3 questions quickly narrows down the choices.&#xA;&#xA;1. Is the domain model highly normalized and relational?&#xA;&#xA;While most developers will automatically say yes, they&#39;re wrong.&#xA;&#xA;In my experience, this is very rare. These designs are usually because of a team&#39;s existing relational experience and mental models. Not actually because the domain needs it.&#xA;&#xA;But, if your domain really is highly normalized data, don&#39;t think twice. Go relational.&#xA;&#xA;2. Is it cloud native?&#xA;&#xA;If your project isn&#39;t already taking advantage of cloud native features, forcing in Dynamo might bring more pain than value. Think traditional web frameworks with built-in ORMs, apps on steady EC2 servers, and similar designs.&#xA;&#xA;On the flip side, if you&#39;re already living with fine-grained IAM permissions, async processors off SQS, or highly variable connections (like Lambdas spinning up and down), Dynamo will fit right in.&#xA;&#xA;3. How well do you know the access patterns?&#xA;&#xA;DynamoDB shines when you use access-patterns-first design.&#xA;&#xA;Always start with access patterns. If you don&#39;t know them, figure them out. If you can&#39;t, because they are truly unknowns, choose a relational DB.&#xA;&#xA;Starting with access patterns will lead to a very different design than data model first.&#xA;&#xA;And often times forcing a decision about the access patterns leads to changes in the application design. That&#39;s a good thing.&#xA;&#xA;Notice, I didn&#39;t talk about cost, scaling, or high-availability requirements. More often than not, the prior three questions bring an answer before bridging these topics. But if you&#39;re still on the fence, those are the next design decisions to make.&#xA;&#xA;Drop a comment if you&#39;ve struggled with the decision or have different criteria for picking persistence.&#xA;&#xA;This was the Day 21 #ship30for30 #atomicEssay.&#xA;&#xA;#crossPost #dynamodb #aws #serverless&#xA;&#xA;---&#xD;&#xA;&#xD;&#xA;Thanks for reading. If you enjoyed the article subscribe via RSS feed or enter your email in the box below 👇&#xD;&#xA;&#xD;&#xA;!--emailsub--]]&gt;</description>
      <content:encoded><![CDATA[<p>To DynamoDB or not to DynamoDB. That is the question. Here&#39;s 3 more questions to ask (and make a decision).</p>



<p>Choice of persistence stores has an outsized impact on project design.</p>

<p>Having architected <strong>many</strong> projects for the cloud, I&#39;ve wrestled with “which persistence” too many times to count. But it is a decision that needs to be made early and thoughtfully.</p>

<p>Applying these 3 questions quickly narrows down the choices.</p>

<h3 id="1-is-the-domain-model-highly-normalized-and-relational" id="1-is-the-domain-model-highly-normalized-and-relational">1. Is the domain model highly normalized and relational?</h3>

<p>While most developers will automatically say yes, they&#39;re wrong.</p>

<p>In my experience, this is <strong>very</strong> rare. These designs are usually because of a team&#39;s existing relational experience and mental models. Not actually because the domain needs it.</p>

<p>But, if your domain really is highly normalized data, don&#39;t think twice. Go relational.</p>

<h3 id="2-is-it-cloud-native" id="2-is-it-cloud-native">2. Is it cloud native?</h3>

<p>If your project isn&#39;t already taking advantage of cloud native features, forcing in Dynamo might bring more pain than value. Think traditional web frameworks with built-in ORMs, apps on steady EC2 servers, and similar designs.</p>

<p>On the flip side, if you&#39;re already living with fine-grained IAM permissions, async processors off SQS, or highly variable connections (like Lambdas spinning up and down), Dynamo will fit right in.</p>

<h3 id="3-how-well-do-you-know-the-access-patterns" id="3-how-well-do-you-know-the-access-patterns">3. How well do you know the access patterns?</h3>

<p>DynamoDB shines when you use access-patterns-first design.</p>

<p>Always start with access patterns. If you don&#39;t know them, figure them out. If you can&#39;t, because they are truly unknowns, choose a relational DB.</p>

<p>Starting with access patterns will lead to a very different design than data model first.</p>

<p>And often times forcing a decision about the access patterns leads to changes in the application design. That&#39;s a good thing.</p>

<p>Notice, I didn&#39;t talk about <strong>cost</strong>, <strong>scaling</strong>, or <strong>high-availability</strong> requirements. More often than not, the prior three questions bring an answer before bridging these topics. But if you&#39;re still on the fence, those are the next design decisions to make.</p>

<p>Drop a comment if you&#39;ve struggled with the decision or have different criteria for picking persistence.</p>

<p>This was the Day 21 <a href="https://kono.sh/tag:ship30for30" class="hashtag"><span>#</span><span class="p-category">ship30for30</span></a> <a href="https://kono.sh/tag:atomicEssay" class="hashtag"><span>#</span><span class="p-category">atomicEssay</span></a>.</p>

<p><a href="https://kono.sh/tag:crossPost" class="hashtag"><span>#</span><span class="p-category">crossPost</span></a> <a href="https://kono.sh/tag:dynamodb" class="hashtag"><span>#</span><span class="p-category">dynamodb</span></a> <a href="https://kono.sh/tag:aws" class="hashtag"><span>#</span><span class="p-category">aws</span></a> <a href="https://kono.sh/tag:serverless" class="hashtag"><span>#</span><span class="p-category">serverless</span></a></p>

<hr/>

<p>Thanks for reading. If you enjoyed the article subscribe via <a href="https://kono.sh/feed/">RSS feed</a> or enter your email in the box below 👇</p>


]]></content:encoded>
      <guid>https://kono.sh/3-questions-to-ask-when-deciding-between-a-relational-db-and-dynamodb-for-your</guid>
      <pubDate>Sun, 06 Nov 2022 23:04:14 +0000</pubDate>
    </item>
    <item>
      <title>2 reasons why side projects make you a better software developer</title>
      <link>https://kono.sh/2-reasons-why-side-projects-make-you-a-better-software-developer?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[If you want to grow as a developer, remember the abc&#39;s: Always Be Coding&#xA;!--more--&#xA;&#xA;I&#39;m an avid believer in developers always having a side project.&#xA;&#xA;As a dev with ~200 repos on GitHub, many of them private, you could say I&#39;ve worked on a few. Some big, some small, some were a few days effort and others have been going for years. I keep going for two reasons.&#xA;&#xA;1. You need a safe space to experiment&#xA;&#xA;Under heavy pressure to finish before a deadline is not the time to try out a new framework. Or deploy to a new platform. Or bring in a language you&#39;ve never used.&#xA;&#xA;But as a dev, you need to explore to improve.&#xA;&#xA;Years ago I used to say the blog is my lightsaber. Something I&#39;d craft myself, test out crazy ideas, and generally a thing for focused play. As the blog has become a commodity, side projects became the perfect opportunity to dabble.&#xA;&#xA;2. There&#39;s more opportunities to up-level your skills&#xA;&#xA;Often times as engineers we become known for specific domains or skills. A Golang, Java, Backend, React, Functional, or [fill in the blank] developer. While that&#39;s not always a bad thing, we&#39;re best served by branching out.&#xA;&#xA;Gaining broader, full-stack experience makes us better at our day to day.&#xA;&#xA;Maybe your place of business is an AWS shop, but you never touch anything cloud related. Why not try deploying your side project to Lambda? Or use a non-relational store like DynamoDB, when your work projects only ever use Postgres.&#xA;&#xA;Each tech stack and new mental model learned in our side projects expands our ability to understand complex systems.&#xA;&#xA;Take advantage of that! Be intentional with your growth. Find something that meets your Rule of 3, and give it a run while scratching your own itch.&#xA;&#xA;Remember, Always Be Coding, even if it is just a toy project.&#xA;&#xA;This was the Day 20 #ship30for30 #atomicEssay.&#xA;&#xA;#crossPost #devp&#xA;&#xA;---&#xD;&#xA;&#xD;&#xA;Thanks for reading. If you enjoyed the article subscribe via RSS feed or enter your email in the box below 👇&#xD;&#xA;&#xD;&#xA;!--emailsub--]]&gt;</description>
      <content:encoded><![CDATA[<p>If you want to grow as a developer, remember the abc&#39;s: Always Be Coding
</p>

<p>I&#39;m an avid believer in developers always having a side project.</p>

<p>As a dev with ~200 repos on GitHub, many of them private, you could say I&#39;ve worked on a few. Some big, some small, some were a few days effort and others have been going for years. I keep going for two reasons.</p>

<h2 id="1-you-need-a-safe-space-to-experiment" id="1-you-need-a-safe-space-to-experiment"><strong>1. You need a safe space to experiment</strong></h2>

<p>Under heavy pressure to finish before a deadline is not the time to try out a new framework. Or deploy to a new platform. Or bring in a language you&#39;ve never used.</p>

<p>But as a dev, you <em>need</em> to explore to improve.</p>

<p>Years ago I used to say <strong>the blog is my lightsaber</strong>. Something I&#39;d craft myself, test out crazy ideas, and generally a thing for focused play. As the blog has become a commodity, side projects became the perfect opportunity to dabble.</p>

<h2 id="2-there-s-more-opportunities-to-up-level-your-skills" id="2-there-s-more-opportunities-to-up-level-your-skills"><strong>2. There&#39;s more opportunities to up-level your skills</strong></h2>

<p>Often times as engineers we become known for specific domains or skills. A Golang, Java, Backend, React, Functional, or <em>[fill in the blank]</em> developer. While that&#39;s not always a bad thing, we&#39;re best served by branching out.</p>

<p>Gaining broader, full-stack experience makes us better at our day to day.</p>

<p>Maybe your place of business is an AWS shop, but you never touch anything cloud related. Why not try deploying your side project to Lambda? Or use a non-relational store like DynamoDB, when your work projects only ever use Postgres.</p>

<p><strong>Each tech stack and new mental model learned in our side projects expands our ability to understand complex systems.</strong></p>

<p>Take advantage of that! Be intentional with your growth. Find something that meets your Rule of 3, and give it a run while scratching your own itch.</p>

<p>Remember, <strong>A</strong>lways <strong>B</strong>e <strong>C</strong>oding, even if it is just a toy project.</p>

<p>This was the Day 20 <a href="https://kono.sh/tag:ship30for30" class="hashtag"><span>#</span><span class="p-category">ship30for30</span></a> <a href="https://kono.sh/tag:atomicEssay" class="hashtag"><span>#</span><span class="p-category">atomicEssay</span></a>.</p>

<p><a href="https://kono.sh/tag:crossPost" class="hashtag"><span>#</span><span class="p-category">crossPost</span></a> <a href="https://kono.sh/tag:devp" class="hashtag"><span>#</span><span class="p-category">devp</span></a></p>

<hr/>

<p>Thanks for reading. If you enjoyed the article subscribe via <a href="https://kono.sh/feed/">RSS feed</a> or enter your email in the box below 👇</p>


]]></content:encoded>
      <guid>https://kono.sh/2-reasons-why-side-projects-make-you-a-better-software-developer</guid>
      <pubDate>Sat, 05 Nov 2022 21:34:14 +0000</pubDate>
    </item>
  </channel>
</rss>