<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2026-04-03T20:06:15+00:00</updated><id>/feed.xml</id><title type="html">Patrick’s Perusals</title><subtitle>My personal blog about technology, hobbies, faith, and anything else the world might like to know.</subtitle><author><name>Patrick Boatner</name></author><entry><title type="html">Using LLMs for dev work successfully</title><link href="/2026/01/11/using-llms-for-dev-work-successfully.html" rel="alternate" type="text/html" title="Using LLMs for dev work successfully" /><published>2026-01-11T00:00:00+00:00</published><updated>2026-01-11T00:00:00+00:00</updated><id>/2026/01/11/using-llms-for-dev-work-successfully</id><content type="html" xml:base="/2026/01/11/using-llms-for-dev-work-successfully.html"><![CDATA[<p>I’ve been using an LLM for some of my dev / architecture work. Here is my advice on how to use them successfully on real production systems.</p>

<h1 id="ownership">Ownership</h1>

<p>The most important guideline is to take ownership over the output. Just like when developing code by hand, you’re still responsible for building high quality software. It should go without saying, but read the output! Ask yourself whether the code changes are taking the right approach, and whether they will have the correct impact on the larger system.</p>

<p>Cursor’s “review” feature helps you stay accountable for the output. After the LLM makes code changes, it allows you to tab through and accept/reject each change. The diffs appear in regular editor tabs, so you can see the surrounding code and easily type small adjustments yourself. I think it’s a great way to “keep your hands on the steering wheel”.</p>

<p>Ownership is important during PR reviewing, because code reviews are an important step in maintaining a high bar for quality. Sometimes I use Cursor to review my teammate’s code with a specific topic in mind, especially on more complicated PRs. After I’ve drawn up a relevant question and kicked off a Cursor chat, I’ll flip over to my main IDE (or Github) and study the problem myself. This means I can still take ownership of giving my teammates a high-quality review. The LLM serves as a second set of eyes. Its reasoning isn’t always correct, but it can consider angles and catch issues I might have missed. This can be really valuable for cases where the team needs a comprehensive review.</p>

<p>On the other hand, there are situations where it makes sense to vibe code (i.e. asking the LLM for a feature, paying minimal attention to the resulting code, and just testing the functionality by hand.) It can be useful for rapid prototyping. I vibe-coded an Android app that offers an SMS web interface for dumbphones (basically Google Messages), and the results impressed me.</p>

<p>But for mature production systems that are serving real users, I don’t think vibe coding makes sense. The stakes are too high to ignore the implementation details. Maintaining production software involves more nuanced constraints than building prototypes. LLMs have inherent limitations; they lack the awareness of an experienced dev working on a familiar system.</p>

<h1 id="limitations">Limitations</h1>

<p>LLMs shouldn’t replace your own learning. Stay curious about the system. This means spending some of your time learning how pieces work, and why it behaves in a certain way. LLMs can make some headway in understanding the system, but senior devs need to understand the architecture themselves to be effective in steering it.</p>

<p>LLMs shouldn’t replace your understanding of the current problem, nor your ability to recap it. I think it’s really valuable for devs to write a concise recap of the problem they solved in a PR, possibly with constraints, alternatives, etc. LLMs can only generate a piece of that. They don’t have the full context of how your solution fits into the bigger picture, downstream implications, etc. This kind of information is super helpful when trying to understand code months and years later.</p>

<h1 id="context">Context</h1>

<p>To get passable results from an LLM, it needs to have sufficient context. Coding agents can gather limited info from your codebase, but they perform much better if you help them.</p>

<p>LLMs need general context about your system. This is a plaintext overview of the project. An LLM can generate this (for new territory), but experienced devs can write a much more meaningful general overview. I find 2 perspectives are helpful:</p>

<ul>
  <li>One section explaining tech stack, architectural patterns, and key files</li>
  <li>One section explaining business terminology and concepts.</li>
</ul>

<p>The general overview should be lightweight and always in your context (like an “always active” cursor rule, or a “claude.md” file). You can reference a more specific doc per topic as needed. I don’t use claude, but the guidance in this blog post is solid: <a href="https://www.humanlayer.dev/blog/writing-a-good-claude-md">https://www.humanlayer.dev/blog/writing-a-good-claude-md</a></p>

<p>LLMs need specific context about your current task. Generally, I think it’s tremendously valuable explaining “why”:</p>

<ul>
  <li>why the code was written that way (constraints)</li>
  <li>why the feature behaves that way</li>
</ul>

<p>“The why” is an important part of communicating with your team. It’s helpful for teammates reviewing your code today, and for devs doing future maintenance work. But it’s also good fodder for LLMs involved in writing/reviewing the code. It’s nice when “the why” is immediately available in your code. But if it’s not, giving the LLM key info will make it produce drastically more relevant output. I’ve enjoyed plaintext brainstorming for years, so I’ll admit I’m biased here, ha.</p>

<p>When collaborating with my remote team, I’ve found that different communication formats work better depending on the scenario. A short screen recording, where I click and explain things, is great for introducing a problem. Video calls are great for hashing out a solution if it’s complex. But written text (with annotated images) is very accessible to remote teams (and future reference). For example:</p>

<ul>
  <li>I will draw up a design document to guide devs in larger technical projects.</li>
  <li>My team might brainstorm a specific problem in a Slack thread.</li>
  <li>After we have a video call, it’s worth typing a recap of the key points/decisions.</li>
</ul>

<p>This written text is important context for devs as we build/review features.</p>

<p>But it’s also great context to feed into LLMs. Here are some specific techniques I’ve been using:</p>

<ul>
  <li>Notion can export to markdown.
    <ul>
      <li>For technical design docs, exporting them into markdown in the git repo makes it easier for teammates to have relevant guidance if they’re using LLMs.</li>
      <li>I should probably do this directly with MCP <a href="https://developers.notion.com/docs/mcp">https://developers.notion.com/docs/mcp</a></li>
    </ul>
  </li>
  <li>Copy a slack thread, then paste it into Notion. Then export to markdown.
    <ul>
      <li>You literally highlight the thread (images and everything) with your mouse, then ctrl-C.</li>
      <li>You can clean up the formatting junk (profile images, slack URLs, etc) with a prompt: <a href="https://gist.github.com/locofocos/57eaed703e8d2f38f16c53a92d76e569">https://gist.github.com/locofocos/57eaed703e8d2f38f16c53a92d76e569</a></li>
      <li>I am eagerly awaiting Slack’s MCP feature <a href="https://docs.slack.dev/ai/mcp-server/">https://docs.slack.dev/ai/mcp-server/</a> so I can just paste a thread link into Cursor</li>
    </ul>
  </li>
  <li>Teach Cursor to read a pull request thread with the Github CLI.
    <ul>
      <li><a href="https://gist.github.com/locofocos/90ebbce36c6e4bd03b3e6710acc5766e">https://gist.github.com/locofocos/90ebbce36c6e4bd03b3e6710acc5766e</a></li>
      <li>Then you can paste a thread link, then ask “Look at recent commits. How did the author resolve this thread? Does that solution look correct? Will it solve XYZ?”</li>
      <li>Yet again, I should try Github’s MCP server <a href="https://github.com/github/github-mcp-server">https://github.com/github/github-mcp-server</a>.</li>
    </ul>
  </li>
  <li>You can use plain english to reference certain parts of your code (like filenames), but Cursor makes it easy to highlight specific lines of code, then press Command-L, and it will insert a reference to those lines into your current chat message. Giving the LLM key pieces of code gives it a head start understanding the current problem/feature.</li>
</ul>

<h1 id="unit-tests">Unit tests</h1>

<p>Unit tests are helpful in general. I might find a very specific scenario that triggers a bug, like an API call with certain parameters and certain database records. Writing a unit test for a case like that is a good general practice.</p>

<p>For LLMs, unit tests are an added bonus; they can run relevant test files as a great feedback loop before declaring the problem solved. If nobody else has, I am coining the term “test-driven vibe coding”, ha. For example, I fixed two bugs I was facing in a book binding app (<a href="https://github.com/momijizukamori/bookbinder-js/pull/143">one</a>, <a href="https://github.com/momijizukamori/bookbinder-js/pull/145">two</a>). I had the solution (i.e. the layout of certain page numbers for printing), but not the algorithm to get there. I built out a unit test to assert the existing behavior, to make sure I wasn’t causing a regression. Then I built a test for the new scenario, and said “fix it” to the LLM. It took several rounds, but gpt-5.1 solved it, building a pretty complicated paper folding algorithm.</p>

<p>Sometimes I’ll do manual mutation testing. Like if we fixed an impactful bug, I want to know - does our unit test catch the bug we just fixed? It’s a great measure of test quality IMO. LLMs can do this busy work for me:</p>
<blockquote>
  <p>Please do some manual mutation testing of the changes in this branch. If you roll back the production code changes, do the new/updated unit tests reveal the original bug?</p>
</blockquote>

<h1 id="misc-tips">Misc tips</h1>

<p>To wrap up, here are some misc tips for development:</p>

<ul>
  <li>Beginner tip: Use a fresh chat for each problem. Smaller focused context = a much smarter LLM.</li>
  <li>Cursor and Claude both have “plan mode”. It steers the LLM down the correct path by getting your input up front. It’s helpful to uncover unknowns you didn’t consider, like edge cases, other approaches to architecture, etc. You can guide it initially with whatever details you know already.</li>
  <li>Experiment with different models.
    <ul>
      <li>Some (like gpt-5 and gemini-3) seem better at solving complicated problems.</li>
      <li>Some are better at following instructions (gpt is better than gemini).</li>
      <li>Some (like claude sonnet and gpt codex) are better at just hammering out code.</li>
    </ul>
  </li>
  <li>You can ask the model to be more concise, or use less bullet points.</li>
  <li>LLMs might avoid criticizing your ideas. But if you share “something the intern wrote”, you may get more honest feedback.</li>
  <li>You still need to break tasks into smaller pieces.
    <ul>
      <li>For new projects, brainstorm what the architecture should look like with the LLM, and what libraries to use, given the constraints and features you have in mind.</li>
    </ul>
  </li>
</ul>

<p>If this resonates with you, feel free to shoot me an email (see the page footer). LLMs are great tools, when they’re in the hands of a dev who takes ownership, stays curious, and maintains a good engineering culture.</p>]]></content><author><name>Patrick Boatner</name></author><category term="work" /><category term="dev" /><summary type="html"><![CDATA[I’ve been using an LLM for some of my dev / architecture work. Here is my advice on how to use them successfully on real production systems.]]></summary></entry><entry><title type="html">I fixed my hybrid water heater</title><link href="/2023/09/11/i-fixed-my-hybrid-water-heater.html" rel="alternate" type="text/html" title="I fixed my hybrid water heater" /><published>2023-09-11T00:00:00+00:00</published><updated>2023-09-11T00:00:00+00:00</updated><id>/2023/09/11/i-fixed-my-hybrid-water-heater</id><content type="html" xml:base="/2023/09/11/i-fixed-my-hybrid-water-heater.html"><![CDATA[<p>I own a hybrid heat pump hot water heater, an AO Smith HP10-50H45DV. It’s like a normal 50 gallon electric water heater, with a tiny air conditioner on the top. When it’s running in “efficiency mode”, the little HVAC system pumps heat from your house into the hot water, which is great during the summer. It uses about 33% as much electricity as a regular water heater. Remember the arrows in your science textbook showing heat flow in and out from air conditioners? When you’re interested in the hot side of the heat pump equation, you get to keep the energy you put into the heat pump too, so it’s a lot more efficient than cooling your house. So it pays for itself in about 3 years. If you don’t want the cold air, the noise, or you need lots of hot water, it can optionally fall back to a regular 4500 watt heating element.</p>

<p>And it turns out, if the HVAC system fails, it also falls back to the heating element. I discovered my water heater doing this, after noticing that it was running with just the heating element for a few days. You can tell based on the sounds it makes. It also had an error code on the little screen that reads “HPO”. The owner’s manual has a note:</p>

<blockquote>
  <p>The heat pump’s fan will not turn on if the incoming water temperature is less than 55°F/13°C and/or the ambient air temperature is above 120°F/49°C, or below 37°F/7°C. Should the internal diagnostics detect the heat pump is out of operational range, the Control Assembly will display the code HPO.</p>
</blockquote>

<p>This didn’t make any sense. It’s late summer, so the incoming water isn’t less than 55 F. And the ambient air is in the upper 70s. I poked around the internet to see what I could learn about it. I found one youtube video of somebody fixing a competitor’s hybrid water heater (Rheem) by replacing the thermistors. This topic of thermistors was relevant to automotive A/C repair videos too. But there was nothing specific to this brand or error code.</p>

<p>I called the manufacturer, and a friendly technician chatted with me. He happily explained that they would help me troubleshoot and fix it, even if it meant replacing the whole water heater. After going through an extended “turn it off and on again”, he explained that they could only provide the parts, not the diagnostic labor. I asked if there was some kind of “advanced layman’s guide” to working on these water heaters, which made him chuckle. This prompted him to explain how HVAC technicians have very expensive tools, and have passed very rigorous training and certification courses.</p>

<p>Little did he know, I had an old Radioshack multimeter, and I’ve poked around inside applicances before. The service manual for some related AO Smith model explained how to access the diagnostic menu, which gave readings for a few temperature sensors. My “coil temp at hairpin of evaporator” was reading 123 F, which was preposterously high. After lots of googling to understand words like “suction”, “discharge”, and “hairpin of evaporator”, I located the sensors inside it. Along with some confirmation from a wiring diagram in the service manual, it was clear which sensor was which. These were the thermistors I saw in the first youtube video.</p>

<p><img src="/assets/water%20heater%20wiring%20diagram.jpg" alt="water heater wiring diagram" /></p>

<p>The 3 sensors plugged into the mainboard with a plastic white connector. Removing it, I could check the resistance of each sensor at the plug. The internet tells me that typical thermistor values are 10,000 ohms and up. My suction and discharge temp sensors read 10,000 and 45,000 ohms. But the coil temp sensor read 660 ohms, which was suspiciously low. That was the sensor that was reporting 123 F. So it seemed like the HVAC system was reading the evaporator coil temperature at startup to determine the ambient air temperature. Lower resistance means a higher temperature reading - bingo!</p>

<p>I called AO Smith back with a vague but truthful answer: Your tech said I needed to get an HVAC guy to diagnose it, and figure out what part we need. It turns out it was one of the temperature sensors. The diagnostic menu was showing…. and after checking the resistance, the coil temp sensor was only 660 ohms. Can we get part number X?</p>

<p>And they obliged! The new part has 3 thermisters for temperature sensors. 2 of them had roughly the same reading the old sensors, but the new coil temp sensor was much higher at 9,990 ohms.</p>

<p><img src="/assets/water%20heater%20temp%20sensor.jpg" alt="water heater temp sensor" /></p>

<p>The process of replacing them wasn’t tricky. The sensors are surrounded with foam insulation, held tightly in place with zip ties. The foam insulation helps them get a better reading from their copper refrigerant line. A little metal spring helps hold each one in place. It’s annoying standing on a ladder and reading down into the water heater from the top, but it’s very doable for an eager layman. It’s also a great chance to clean out the evaporator coil. There are about a dozen metal screws around the top edge, holding the lid in place. Removing and replacing these accounts for probably half of the work! A few holes almost wouldn’t line up, but I was determined not to have any extra parts afterwards.</p>

<p>I tightened the screws, flipped the breaker on, and… nothing. Nothing happened because the water in the tank was still hot. After running my spigot for a bit, the water heater came to life. The familiar buzzing fan sound of the HVAC portion greeted me, woohoo! It’s a very satisfying part of life.</p>

<p>It’s unfortunate AO Smith doesn’t publish these service manuals clearly on their website. I only happened to find the service manual for a similar model on some small website. It’s also unfortunate the support technician didn’t guide me through using the diagnostic menu. It would have clearly shown the temperature sensor had an unrealistic reading, so we could have completely diagnosed this over the phone. But, it’s fixed now, and there’s something satisfying about tinkering with machines and reasoning about how they work.</p>]]></content><author><name>Patrick Boatner</name></author><category term="diy" /><summary type="html"><![CDATA[I own a hybrid heat pump hot water heater, an AO Smith HP10-50H45DV. It’s like a normal 50 gallon electric water heater, with a tiny air conditioner on the top. When it’s running in “efficiency mode”, the little HVAC system pumps heat from your house into the hot water, which is great during the summer. It uses about 33% as much electricity as a regular water heater. Remember the arrows in your science textbook showing heat flow in and out from air conditioners? When you’re interested in the hot side of the heat pump equation, you get to keep the energy you put into the heat pump too, so it’s a lot more efficient than cooling your house. So it pays for itself in about 3 years. If you don’t want the cold air, the noise, or you need lots of hot water, it can optionally fall back to a regular 4500 watt heating element.]]></summary></entry><entry><title type="html">CSS cat simulator</title><link href="/2022/11/08/css-cat-simulator.html" rel="alternate" type="text/html" title="CSS cat simulator" /><published>2022-11-08T00:00:00+00:00</published><updated>2022-11-08T00:00:00+00:00</updated><id>/2022/11/08/css-cat-simulator</id><content type="html" xml:base="/2022/11/08/css-cat-simulator.html"><![CDATA[<p>Go on, try to pet him.</p>

<html>
  <head>
    <link rel="stylesheet" href="../../../../../../assets/cat.css" />
  </head>
    
  <body>
    <div class="cat-container">
      <div class="square head"><img src="../../../../../../../assets/head.png" /></div>
      <div class="body-and-butt">
        <div class="square body"><img src="../../../../../../../assets/body.png" /></div>
        <div class="square butt"><img src="../../../../../../../assets/butt.png" /></div>
      </div>
    </div>
  </body>
</html>]]></content><author><name>Patrick Boatner</name></author><category term="dev" /><summary type="html"><![CDATA[Go on, try to pet him.]]></summary></entry><entry><title type="html">Should we cancel student loans?</title><link href="/2022/08/27/should-we-cancel-student-loans.html" rel="alternate" type="text/html" title="Should we cancel student loans?" /><published>2022-08-27T00:00:00+00:00</published><updated>2022-08-27T00:00:00+00:00</updated><id>/2022/08/27/should-we-cancel-student-loans</id><content type="html" xml:base="/2022/08/27/should-we-cancel-student-loans.html"><![CDATA[<p>I believe we should try to keep all of God’s commandments, so I thought I could provide some interesting commentary on this tweet:</p>

<blockquote>
  <p>MAGA: Canceling student loans is immoral. This is why we need a Govt based on the Bible.</p>

  <p>Deuteronomy 15: “At the end of every seven years you must cancel debts. This is how: Every creditor shall cancel any loan they have made.”</p>

  <p>MAGA: Not that part of the Bible.<br />
https://twitter.com/qasimrashid/status/1562968128359137280</p>
</blockquote>

<p>I agree that we should cancel loans every 7 years.</p>

<p>The scenario is more favorable than just that. The Bible doesn’t set a maximum of 7 years for all loans; it’s a continuous 7 year cycle. Sometimes you would be approached for a loan right before they have to be cancelled! See:</p>

<blockquote>
  <p>Take care lest there be an unworthy thought in your heart and you say, ‘The <strong>seventh year, the year of release is near</strong>,’ and your eye look grudgingly on your poor brother, and you <strong>give him nothing</strong>, and he cry to the Lord against you, and you be <strong>guilty of sin</strong>. (Deu 15:9, WEB translation)</p>
</blockquote>

<p>It gets even better. These loans that would last from 1 to 7 years, they were also interest-free:</p>

<blockquote>
  <p>You may charge a foreigner interest, but you may not charge your brother interest, that the Lord your God may bless you… (Deu 23:20, WEB)</p>
</blockquote>

<p>Anyone was free to become a brother, part of the nation of Israel, the people who collectively agreed to love the Lord and keep <em>all of his commandments</em>.</p>

<p>But that also means that God’s system (which includes cancelling debts every 7 years) working well depends keeping other commandments in <em>addition</em> to cancelling debts.</p>

<p>The “year of jubilee” is a big part that would minimize the burden of canceling debts. Basically you can never sell your family’s land permanently. Every 50 years, land goes back to the original owner. If you needed cash, you would “sell” your land, but you’re basically renting it out at a price that depends on how many years are left until the jubilee year. See Leviticus 25:8-22.</p>

<p>Since your family is guaranteed to have <em>generationally</em> owned land, you and your ancestors have had the means of agricultural production.</p>

<p>On top of that, God promises blessings that would make a society in general (even with some poor people) very prosperous, not having to live in debt:</p>

<blockquote>
  <p>And if you faithfully obey the voice of the Lord your God, being careful to <strong>do all his commandments</strong> that I command you today…
The Lord will open to you his good treasury, the heavens, to give the rain to your land in its season and to <strong>bless all the work</strong> of your hands. 
And you shall lend to many nations, but you <strong>shall not borrow</strong>.  (Deu 28:1 and 28:12)</p>
</blockquote>

<p>Later on, the text mentions that being in debt can be one of many curses for disobedience, not unlike hemorrhoids (depending on how you translate Deu 28:27).</p>

<p>Now, my detractors would be correct in saying that we can’t reasonably do only part of these as a society. And God gave these commandments to be followed in the land of Israel. However, keeping these commandments today out of love and faith, even though that means a greater burden, I believe it will give us an even greater blessing individually, but that’s just my 2 cents.</p>

<p>Even though we don’t live in a fully Biblical society, that doesn’t change this:</p>

<p>God calls us to have an <strong>absolutely radical heart posture</strong> and <strong>willingness to help the poor</strong> in very clear terms.</p>

<blockquote>
  <p>You shall not harden your heart or shut your hand against your poor brother, but you shall open your hand to him and lend him sufficient for his need (Deu 15:7-8 WEB)</p>
</blockquote>

<p>Even for the majority of Christians who teach that we don’t have to keep God’s commandments from the Old Testament, this is one that Jesus reiterates:</p>

<blockquote>
  <p>Give to the one who begs from you, and do not refuse the one who would borrow from you. (Matthew 5:42 WEB)</p>
</blockquote>

<p>I think the political left has a very valid criticism of the political right- the sour heart posture we often demonstrate when talking about helping the poor and foreigners.</p>

<h2 id="so-what-are-you-saying-what-about-the-student-loans">So what are you saying? What about the student loans?</h2>

<p>God cares about you (I’d love to tell you more!), and he wants people to live prosperously and freely. We need to adopt the right heart posture, put our money where our mouth is, and give generously to help those in need.</p>

<p>The modern American system of going into debt with interest for a long time (for things like houses, student loans, and cars) is totally opposed to the society God lays out for his people. The student loan burden today is a side effect of not living in that. Politicians have already decided what to do with student loans today, so let’s talk about the future.</p>

<p>As a country, we need to move away from systems that require large amounts of debt. Businesses should show support for more cost-effective vocational training by hiring people from these programs, or establishing them when programs don’t exist. We should draft legislation that stops huge institutional/foreign investors from buying up houses - just let houses be for ordinary people to live in.</p>

<p>As individuals, we should make life choices in a way that avoids debt as much as possible. Seek out vocational training programs if you’re unable to go through college without debt. If you must have a mortage to avoid decades of rent payments, pick the most modest house you can stand and pay it off as soon as possible to avoid the burden of interest. Live within your means, and try to secure the means of production when you can.</p>

<h2 id="comments-section">Comments section</h2>

<p>I’d be happy to hear your comments. You probably have some way to message me if you’re reading this. Or find my email at the bottom of this site. Or if you want to comment and discuss with other people, consider inviting some friends over or chatting with your neighbors.</p>]]></content><author><name>Patrick Boatner</name></author><category term="bible" /><category term="politics" /><summary type="html"><![CDATA[I believe we should try to keep all of God’s commandments, so I thought I could provide some interesting commentary on this tweet:]]></summary></entry><entry><title type="html">Holiness and current events</title><link href="/2022/06/24/holiness-and-current-events.html" rel="alternate" type="text/html" title="Holiness and current events" /><published>2022-06-24T00:00:00+00:00</published><updated>2022-06-24T00:00:00+00:00</updated><id>/2022/06/24/holiness-and-current-events</id><content type="html" xml:base="/2022/06/24/holiness-and-current-events.html"><![CDATA[<p>I want to propose how believers in Christ should approach discussions about current events in a holy way. I’m not referring to any event in particular, just generally the kind of events that draw a lot of attention across the news and social media. But first, I should give context by explaining my political background.</p>

<h2 id="some-context">Some context</h2>

<p>I’m a conservative, but in a more high-level sense of that word. You might <em>conserve</em> water- meaning that you use less of it. Similarly, I approve of fewer parts of our culture- namely the parts that go against Biblical values. I recently learned that my assumed definition of “conservative” is wrong. The canonical meaning is closer to “conserving how things are”. Regardless, both definitions resonate with me.</p>

<p>There are lots of noisy popular people that have tried to drag other viewpoints into the “conservative” label. Many of these ideas don’t naturally stem out of Biblical values (or even from a secular definition of “conservative” from decades ago). Some examples:</p>
<ul>
  <li>Foreigners will bring crime into our country</li>
  <li>Being careful to take care of God’s creation (the environment) will hurt our businesses</li>
  <li><em>Something something</em> George Soros <em>something something</em></li>
  <li>We absolutely need to keep free access to guns</li>
</ul>

<p>I don’t agree with the noisy conservatives on many of these “modern conservative addons” (as I’m labeling them). Or for some points, I just don’t think it’s an important discussion, and as such I don’t think it should be considered part of conservative beliefs.</p>

<p>You won’t hear a lot of people sharing this viewpoint, because it’s fundamentally based on… not talking about it that much. But I think there’s a large portion of conservatives who feel similarly. In short, a lot of us would be happy to stop hearing about Hillary’s emails and just live in the America portrayed in the Andy Griffith show.</p>

<h2 id="but-back-to-the-main-point">But, back to the main point</h2>

<p>With access to the internet, you can find a sensational current event happening <em>somewhere</em> across the country. If not with a current event, we can fill our conservative discussions with shocking progressive cultural milestones we see unfolding in our culture. There’s always something to make you say to your friends, “Can you believe THIS is happening? Look at this wickedness!”.</p>

<p>And the overall point they’re making is totally valid. It’s wicked, it’s a shame our country has moved so far from the Lord, we should pray about it, and we should try to change it. But…</p>

<p>We don’t have to keep talking about it.</p>

<p>Consider Abraham and his family, living in the plains away from Sodom and Gomorrah. Certainly there was a multitude of wicked things happening in those cities they could talk about.</p>

<blockquote>
  <p>“‘“Behold, this was the iniquity of your sister Sodom: pride, fullness of bread, and prosperous ease was in her and in her daughters. She also didn’t strengthen the hand of the poor and needy. They were arrogant, and committed abomination before me.
Ezekiel 16:49-50 (WEB)</p>
</blockquote>

<p>Can you imagine his family, sitting out there tending to the sheep, saying</p>

<blockquote>
  <p>Abraham! Can you BELIEVE what I just heard is happening in Sodom today?? They’re not strengthening the hand of the poor and needy! (or some other wicked deed)</p>
</blockquote>

<p>Of course not. They lived a righteous life, set apart (holy) from the wickedness of those cities. In fact, look at what scripture says about Lot:</p>

<blockquote>
  <p>and turning the cities of Sodom and Gomorrah into ashes … and delivered righteous Lot, who was very distressed by the lustful life of the wicked (for that righteous man dwelling among them was tormented in his righteous soul from day to day with seeing and hearing lawless deeds
2 Peter 2:6-8 (WEB)</p>
</blockquote>

<p>Lot tormented his soul by seeing and hearing about their lawless deeds. Yet this is <strong>exactly</strong> what a lot of conservatives do, discussing the sensational current events around us.</p>

<p>I’ve felt this torment in my personal life; it’s very real. After I’ve discussed some wickedness, or just read about it (even something written by other believers!), I’ve had that lead to a dream the next night about that wickedness, and I don’t like that.</p>

<h2 id="so-what-do-we-do">So what do we do</h2>

<p>As a guiding principle, we should follow Philippians 4:8 -</p>

<blockquote>
  <p>Finally, brothers, whatever things are true, whatever things are honorable, whatever things are just, whatever things are pure, whatever things are lovely, whatever things are of good report: if there is any virtue and if there is any praise, think about these things
Philippians 4:8 (WEB)</p>
</blockquote>

<p>We should scrutinize all of our conversations and entertainment in light of this scripture, and other similar passages that describe the Kingdom of Heaven.</p>

<p>With politics and news specifically, let’s disengage from the sensational discussions. Let’s stop absorbing and entertaining ourselves with interesting current events.</p>

<p>Detach the “modern conservative addons” from our conservative beliefs, or at least make it clear that it’s your personal beliefs, not something we inherently share as believers in Christ.</p>

<p>Believe me, you’ll know when the entire country has turned to the Lord. Believe me, 90% of conservatives won’t heed this, so they’ll go on discussing sensational events. The investigational journalism will keep getting pushed. Sure, we should vote and leave voicemails for our senator’s interns (it makes a difference!). But your personal involvement won’t make a lick of difference in whether we pass a law banning George Soroses, or if we find Obama’s birth certificate.</p>

<p>But taking the time to be actively involved in your community <em>will</em> make a difference. Go talk to people. Invite your neighbors to get together to read the Bible and spend time with the Lord. Find people going through tough situations, and offer to talk with them and try to disciple them.</p>

<p>Turn off your phone’s notifications. Make your screen black-and-white. When you think about scrolling through some infininite list of <em>things</em> to get your routine dopamine hit, <a href="https://www.raptitude.com/2022/03/you-dont-need-a-promise-you-need-a-plan/">intentionally reach for another healthy other habit</a>. Read through a random Psalm. Build or create something.</p>

<h2 id="comments-section">Comments section</h2>

<p>I’d be happy to hear your comments. You probably have some way to message me if you’re reading this. Or find my email at the bottom of this site. Or if you want to comment and discuss with other people, consider inviting some friends over or chatting with your neighbors.</p>]]></content><author><name>Patrick Boatner</name></author><category term="bible" /><category term="holy" /><category term="politics" /><summary type="html"><![CDATA[I want to propose how believers in Christ should approach discussions about current events in a holy way. I’m not referring to any event in particular, just generally the kind of events that draw a lot of attention across the news and social media. But first, I should give context by explaining my political background.]]></summary></entry><entry><title type="html">Anything Ratio Calculator</title><link href="/2022/05/08/anything-ratio-calculator.html" rel="alternate" type="text/html" title="Anything Ratio Calculator" /><published>2022-05-08T00:00:00+00:00</published><updated>2022-05-08T00:00:00+00:00</updated><id>/2022/05/08/anything-ratio-calculator</id><content type="html" xml:base="/2022/05/08/anything-ratio-calculator.html"><![CDATA[<p>View the calculator at <a href="https://locofocos.com/anything-ratio-calc/">https://locofocos.com/anything-ratio-calc/</a></p>

<p>This calculator allows you to input arbitrary ratios (like for a cooking recipe, a home improvement project, whatever) and then scale the recipe up and down.</p>

<p>It’s helpful because you can change any resulting value. For example, suppose you have a cake recipe that needs 4 cups of flour, but you only have 3.5 cups of flour. This will scale all the other ingredients accordingly.</p>

<p>It’s a single-page application built with React and basic HTML elements. The deployment is literally just serving up a static HTML and JS file with modern-ish JS syntax (may the odds be ever in your favor, IE 10 users). It uses React hooks because that’s how I like expressing the logic. If this paradigm interests you, you may be interested in commit <a href="https://github.com/locofocos/anything-ratio-calc/commit/3e3fe1858caae8a57af40c73dad49875de07d97e">3e3fe18</a> as a barebones template.</p>]]></content><author><name>Patrick Boatner</name></author><category term="tool" /><category term="dev" /><summary type="html"><![CDATA[View the calculator at https://locofocos.com/anything-ratio-calc/]]></summary></entry><entry><title type="html">Come work with me at Upright Labs</title><link href="/2022/03/04/working-at-upright.html" rel="alternate" type="text/html" title="Come work with me at Upright Labs" /><published>2022-03-04T00:00:00+00:00</published><updated>2022-03-04T00:00:00+00:00</updated><id>/2022/03/04/working-at-upright</id><content type="html" xml:base="/2022/03/04/working-at-upright.html"><![CDATA[<p>My team at Upright is hiring for a software engineering position. I’m writing this to give a more personal impression of what the job and team looks like. Thanks for reading, and I hope you’ll consider applying!</p>

<h2 id="logistical-details">Logistical details</h2>

<p>The exact title isn’t set in stone, but we’re looking for someone with a few years of experience. Here’s the job listing: https://weworkremotely.com/remote-jobs/upright-labs-fullstack-engineer. We have a mix of Software Engineers and Senior Software Engineers, so expect a title like that.</p>

<p>We’re looking for either a fullstack engineer or fullstack with a frontend focus. See the job listing for the tech stack (basically Rails backend + React frontend).</p>

<p>Salaries aren’t adjusted to where you live, which is great if you’re anywhere outside of Silicon Valley or New York IMO, plus we have the flexibility to move anywhere in North American timezones. My salary is very similar to the other software engineers I’ve kept in close touch with over the years. Glad to share more info about compensation over private chat.</p>

<p>It’s <strong>fully remote</strong> long-term, not just due to COVID.</p>

<p>The interview process is 1 phone screening + 3 technical interviews (an hour each) over Zoom. We do include some live-coding problems. We try to stay away from leetcode problems, in favor of real-world coding and design problems. We’re not trying to drill you on the specific nuances of some framework, but you should be proficient in Ruby and/or Javascript.</p>

<p>We’re not able to sponsor H-1B work visas, unfortunately.</p>

<h2 id="culture">Culture</h2>

<p>I think everyone really enjoys themselves here, and we have good relationships. I smile a lot throughout the day. We have a great set of custom emojis in slack, and we use them liberally <code class="language-plaintext highlighter-rouge">:happy-gandalf-nodding:</code>.</p>

<p>Management cares about employees and their work life balance. I took 2 months off when my son was recently born, and never once had to hop on for work. We do have an unlimited PTO policy, which some people are cautious about, but our management actually makes sure that we take a good chunk of time off every year.</p>

<p>I don’t have to pretend to care about the mission; it’s really a good mission. We build software that helps a lot of Goodwills across the country sell their secondhand goods online. Goodwill has a good mission, and I like having that behind our work! But even if you took that away, I find it personally satisfying and fulfilling building workflows to helping their warehouses run smoothly.</p>

<h2 id="engineering-work">Engineering work</h2>

<p>From a software engineering perspective, we have a great tech stack and a pragmatic approach to our decision making. We care about quality and the customer impact especially, but we’re careful to keep a minimal / low-friction process. We have a good CI pipeline and test suite (although it’s backend-heavy), with 1-click deploys to prod. Our architecture isn’t overly complex (Rails backend + React front-end with sidekiq background jobs), but still has enough facets to keep a variety of interesting problems coming my way. I really enjoy developing software with my teammates. They know a lot in different areas, and they give great feedback during code/design discussions, but nobody comes to the table with boxing gloves. People are enthusiastic about solving problems, but nobody is overly passionate/stubborn (a great balance).</p>

<p>We try to stay productive as a team, but there’s not a huge pressure to get <em>everything</em> done we put in the sprint. We’re not grinding to meet quarterly commits to appease the stockmarket- we’re focusing on building what our customers need and keeping them happy. And our customers are really pleasant to work with as well! (Although the dev team doesn’t work closely with customers any more.)</p>

<p>We spend most of our time doing feature development and bugfixes, but there’s support work that comes up. The support work involves the same product we work on day-to-day (there’s no legacy solution to support).</p>

<p>I have 1 on 1s with my manager (the CTO) and they’re good. He still spends a decent chunk of time doing development work too, so he’s involved and close with us to give great feedback.</p>

<h2 id="growth-opportunities">Growth opportunities</h2>

<p>On a down-to-earth perspective, I work with some very smart engineers, and I continue to learn and grow from them.</p>

<p>For those who want a tall career ladder to climb, with prestigious corporate titles, Upright isn’t big enough for those (we have about 20 employees and 5 devs including the CTO). We don’t have any Associate Principal Staff (whatever) Software Engineers.</p>

<p>But, we do have a distinction between Software Engineers and Senior Software Engineers, and there have been engineers promoted while working here. I can say that they’ve earned it too, by doing great work and being a solid engineer. So I think there’s reasonable opportunity for engineers to grow even with our current team structure.</p>

<p>Over the next few years, there would likely be room for people to move into a team lead / engineering manager position if they wanted to go down a management track and become less of an individual contributor.</p>]]></content><author><name>Patrick Boatner</name></author><category term="work" /><summary type="html"><![CDATA[My team at Upright is hiring for a software engineering position. I’m writing this to give a more personal impression of what the job and team looks like. Thanks for reading, and I hope you’ll consider applying!]]></summary></entry><entry><title type="html">Overcoming the Flesh</title><link href="/2019/10/12/overcoming-the-flesh.html" rel="alternate" type="text/html" title="Overcoming the Flesh" /><published>2019-10-12T00:00:00+00:00</published><updated>2019-10-12T00:00:00+00:00</updated><id>/2019/10/12/overcoming-the-flesh</id><content type="html" xml:base="/2019/10/12/overcoming-the-flesh.html"><![CDATA[<p>This post is still in a mostly-draft state, but I wanted to publish it anyways for sharing.</p>

<p>Pre-requisites:</p>
<ul>
  <li>Understand the Bible’s message of salvation - <a href="https://peacewithgod.net/">https://peacewithgod.net/</a></li>
  <li>Read <a href="https://www.biblegateway.com/passage/?search=Romans+6-8&amp;version=WEB">Romans 6:1-8:17</a></li>
</ul>

<p>What does it look like to be a slave to sin, or a slave to the flesh?</p>
<ul>
  <li><em>I just can’t stop drinking/smoking/taking this substance</em></li>
  <li><em>I just can’t stop my anger</em></li>
  <li><em>I just can’t stop getting into arguments and strife on Facebook</em></li>
  <li><em>I just can’t stop looking at pornography</em></li>
</ul>

<p>Or replace “I just can’t stop …” with “I could stop … any time”. The Bible defines the deeds of the flesh in <a href="https://www.biblegateway.com/passage/?search=Galatians+5%3A16-25&amp;version=WEB">Galatians 5:16-25</a></p>
<blockquote>
  <p>adultery, sexual immorality, uncleanness, lustfulness, idolatry, sorcery, hatred, strife, jealousies, outbursts of anger, rivalries, divisions, heresies, envy, murders, drunkenness, orgies, and things like these</p>
</blockquote>

<p>Romans 6:2 - live any longer in sin? (no)<br />
Romans 6:3 - baptized into Christ’s death<br />
Romans 6:3-6 - baptize -&gt; death -&gt; old man crucified -&gt; no longer slaves to sin (<strong>truth</strong>)<br />
Romans 6:7 - died -&gt; freed from sin<br />
Romans 6:10 - Christ died once for all. Must He die again for your sin? No, you’ve already got it.</p>

<p>Romans 6:12 - <strong>Therefore</strong>, don’t <strong>let</strong> sin reign. You’re not a victim. You’re not powerless. You have the <em>choice</em> to let it reign (<strong>truth</strong>). Why? because of previous section</p>

<p>Romans 6:13 - “present your members”. This is <strong>actionable</strong>. What does it look like to “present your members to sin as instruments of unrighteousness”? Consider any work of the flesh. What are you doing with the members of your physical body right before you do that sin? Some examples:</p>
<ul>
  <li>Sitting down in front of a computer alone (if the sin is pornography)</li>
  <li>Driving to a certain place or calling a certain person (if the sin is adultery)</li>
  <li>Extending your hand out (if the sin is being violent)</li>
  <li>Tapping the “expand” button to see more comments on a controversial Facebook post (if the sin is strife)</li>
  <li>Opening up the cabinet where you keep alcohol (if the sin is drunkenness)</li>
</ul>

<p>What could it look like to “present your members as instruments of righteousness to God”? When you wake up, whatever member of your body you have previously used for unrighteousness, pray and decide that you’ll use that part for good. For example: “Lord, I present my hands as instruments of righteousness. You gave me these for taking care of my family, not hurting them”</p>

<p>Romans 6:16 - present yourself slaves to obey</p>

<p>Romans 7:7-12 - commandment -&gt; death. This is one piece of dying w/ Christ. Let the commandment bring grief and sorrow over your sin. To bring death.<br />
Romans 7:13 - commandment makes sin exceedingly sinful.<br />
verses 7-13 are <strong>actionable</strong>. Whatever sin you’re a slave to, keep the commandment close by. For example, write it out, put it on your bathroom mirror. Recite it when you’re feeling temptation. Read it after you sin and let it bring grief to you.</p>

<p>Romans 7:23 - defines “law of sin”. What we call “struggling” w/ some sin.<br />
Romans 8:1-3 - walk according to the Spirit. Spirit of Life in Christ. -&gt; free from “law of sin”. <strong>truth</strong>. Free from whatever you’re “struggling” with.</p>

<p>Romans 8:5 - Set your mind on flesh/Spirit -&gt; live according to flesh/Spirit. <strong>actionable</strong>: set your mind.</p>

<p>Romans 8:9 - Scripture basically states</p>
<blockquote>
  <p>Have Spirit -&gt; not in flesh. Don’t have Spirit -&gt; you are not His.</p>
</blockquote>

<p>If you take the “contrapositive” of that first bit, this becomes:</p>
<blockquote>
  <p>In the flesh -&gt; don’t have Spirit. Don’t have Spirit -&gt; you are not His.</p>
</blockquote>

<p>Simplify that, it becomes:</p>
<blockquote>
  <p>In the flesh -&gt; you are not His.</p>
</blockquote>

<p>That’s terrifying, and it should be! Let that be what motivates you to overcome the flesh, if nothing else has yet.</p>

<p>Romans 8:12-17 - Read this and be encouraged. If you crucify your flesh, being led by the Spirit, you’re a child of God. So we’re also heirs of God and joint heirs with Christ, that we may also be glorified with him!</p>]]></content><author><name>Patrick Boatner</name></author><category term="bible" /><category term="sin" /><category term="flesh" /><summary type="html"><![CDATA[This post is still in a mostly-draft state, but I wanted to publish it anyways for sharing.]]></summary></entry><entry><title type="html">Timezones are hard</title><link href="/2019/10/03/timezones.html" rel="alternate" type="text/html" title="Timezones are hard" /><published>2019-10-03T00:00:00+00:00</published><updated>2019-10-03T00:00:00+00:00</updated><id>/2019/10/03/timezones</id><content type="html" xml:base="/2019/10/03/timezones.html"><![CDATA[<p>Timezones are hard. I learned a lot about handling them in a recent project at work. I was given the task of designing and implementing a React frontend application to show a list of events. As the project unfolded, I learned that timezones, in the right context, can present more edge cases than anyone would think during early design phases. Thankfully, there are ways to manage the complexity and weird cases that pop up, and I hope this blog will be a useful primer for anyone else going through a similar undertaking.</p>

<h1 id="just-use-that-iso-format">Just use that ISO format</h1>

<p>There’s this great thing people will tell you to use at first, called ISO-8601. It’s a universal, standardized way of presenting a specific date and time, in a specific timezone. <em>Side note, I’ve already said something incorrect- did you catch it?</em> The current time as I’m writing this is <code class="language-plaintext highlighter-rouge">2019-10-03T21:48:00-05:00</code>. Or maybe it’s minus 6 at the end; I always have to check the correct value (depending on daylight savings time) whenever I’m writing a unit test case, and that feels like a chore here.</p>

<p>Using ISO-8601 for all your datetimes might solve your issue. There are libraries for displaying it in a friendly format, according to the rules that your user’s browser/device would dictate for their locale. A person on the US east coast would see it as “March 10th, 7 pm”, and a person on the US west coast would see it as “March 10th, 4 pm”. If you can get away with that, your job might be easy.</p>

<p>But what if the datetime isn’t some free-floating measurement, and it’s actually tied to some event? Then, you’re likely going to want to show the time “on the ground”- the time someone would see on a clock if they were on the ground at the place where the event is happening. This isn’t too bad- just store the correct UTC offset (the <code class="language-plaintext highlighter-rouge">-05:00</code> at the end of the string) that the location will be using when the event occurs.</p>

<p>But what if your application <em>really</em> needs to display the timezone abbreviation, like “5 pm CST” or “7 pm PDT”? You have the time in ISO-8601, what more could you possibly need?</p>

<h1 id="what-more-could-you-possibly-need">What more could you possibly need?</h1>

<p>A lot more. You also need the “timezone”, and a fancy library someone else wrote for handling it. The incorrect thing I wrote above was that ISO-8601 presents a timezone. ISO-8601 doesn’t contain timezone, but merely a UTC offset. If every place within a given UTC offset followed the same rules around daylight savings time and timezone abbreviations, we could probably convert from <code class="language-plaintext highlighter-rouge">-05:00</code> to “central daylight time”.</p>

<p>But they don’t. Places like Arizona don’t even use daylight savings time. If I gave you a UTC offset of <code class="language-plaintext highlighter-rouge">-07:00</code>, you couldn’t tell me if it belongs to Arizona in the summer (MST) or California in the winter (PDT). This means that if you only have an ISO-8601 datetime, which is the default for what most common datetime columns in databases store (and what you get from Ruby on Rails timestamps), then you <em>cannot</em> provide timezone abbreviations (like <code class="language-plaintext highlighter-rouge">CST</code>) reliably. You could probably hack together 10-20 lines of code that fudges it correctly for 90% of users in the USA, but that’s no way to build production-grade software.</p>

<p>You need the timezone.</p>

<h1 id="timezone-format">Timezone format</h1>

<p>But in what format? You need the timezone formatted in… the name of the nearest big city whose timezone rules you want to follow. What?! Surely, something like “US/Central” would be more appropriate, right? Wrong; those are deprecated, though you can probably get by with them for now.</p>

<p>The most popular (in my barely-qualified opinion) means of defining timezones comes from the “tz” database. This Wikipedia article has a great list to reference: <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">https://en.wikipedia.org/wiki/List_of_tz_database_time_zones</a>. My timezone is listed as “America/Chicago”. You might have seen these listed on a map when you installed a new operating system. It turns out picking from a small handful of cities isn’t sloppiness, but actually a very precise approach!</p>

<p>Each of those timezones defines all sorts of nuances around UTC offsets, when/if the UTC offset shifts for daylight savings time, and even such niceties as which years that city chose <em>not</em> to observe daylight savings time. Having a timezone, as specified by the tz database, plus an ISO-8601 timestamp, really seems to be the holy grail for datetimes. Just add another string field to your data model with the timestamp field.</p>

<h1 id="do-i-really-need-iso-8601-and-timezone">Do I really need ISO-8601 and timezone?</h1>

<p>For most cases, probably not. Just build backend services to send an ISO-8601 string with whatever UTC offset it happens to spit out, and let some client-side library display it as appropriate. Or let the user specify their timezone and do it server-side, whatever. What I’ve described is the approach that’s needed if you <em>must</em> display timezones or time abbreviations, like CST or “Pacific Daylight Time”. If you can get by with “5 pm UTC-5”, then you don’t need the timezone. Or even “5 pm local time”, likewise the ISO timestamp is enough.</p>

<h1 id="how-to">How to</h1>

<p>If, by the time you read this blog post, the tech community hasn’t built a better universal platform than a web browser + Javascript, you’re probably building an application with Javascript. So just handle things with a library called Moment JS, possibly with the Moment Timezone addition. If you can get by doing things server side, then use whatever library is convenient, like the ActiveSupport::TimeZone class in Rails. Just know that you don’t have the luxury of poking at the user’s browser to guess their timezone, like Moment JS does, unless you make the browser pass it to the server.</p>

<h1 id="the-idea-of-today">The idea of “today”</h1>

<p>You might also face this challenging question: what does “today” even mean? “Today” is tough to define when the browser and events are in different time zones. We often think of today with reference to our current location. If we use that mentality to answer “is this today” with an event from another timezone, we start to run into issues. We could have an event displaying “Nov 4” and and event displaying “Nov 5” that both fall under “Today”, if you consider the ISO timestamp with reference to our current location.</p>

<p>If you’re really think about edge cases, there are events happening “yesterday” but still in the future. Suppose the browser’s date is May 4th. There can be events still in the future which happen on May 3rd (ground time), in a different timezone. Presumably you still need to display them, since they happen in the future. But do you present those in a group labeled “Yesterday”?  You can even run into issues where an event belongs under both “Tomorrow” and “Nov 7”, and nobody wants to deal with seemingly indeterminate functionality or requirements.</p>

<p>Suppose a user in the US sees an event happening in India, and begins to think</p>
<blockquote>
  <p>for me, Today means XYZ, but for a user in India, Today means….</p>
</blockquote>

<p>This attempt at interpreting “today” in another timezone may lead them to wrong assumptions. There’s no way we can make “Today” make sense for every situation people describe.</p>

<h2 id="a-solution-to-the-insanity">A solution to the insanity</h2>

<p>The easy approach here is simply avoid the concept of “today” and “tomorrow”, if your events can (and often do) span vastly different timezones. If your events will usually be in the user’s timezone, the sensible approach I have identified is this: The browser’s current date is considered “Today”. For me as I write this, that means any event falling under “October 3”, as interpreted “on the ground”, falls under a “Today” group. For most cases, nothing weird is going on. 100% of the time, the dates (Nov 4th, Oct 10th, etc) will fall under the same group. The compromise here is that if users think <em>really</em> hard about “what does today actually mean” and try to unroll/convert timezones in their head, they might come to some weird conclusion. This means you should always display the date (“on the ground”, as always) on the visual for each event. You can’t just label each group of events with the date, if you’re using the concept of “Today”.</p>

<h1 id="conclusion">Conclusion</h1>

<p>Learn to love ISO-8601. Convince your non-technical folks not to display timezone abbreviations. If they still want to display “CST” or similar, just send them this blog post along with a bigger work estimate :grin:.</p>]]></content><author><name>Patrick Boatner</name></author><category term="dev" /><summary type="html"><![CDATA[Timezones are hard. I learned a lot about handling them in a recent project at work. I was given the task of designing and implementing a React frontend application to show a list of events. As the project unfolded, I learned that timezones, in the right context, can present more edge cases than anyone would think during early design phases. Thankfully, there are ways to manage the complexity and weird cases that pop up, and I hope this blog will be a useful primer for anyone else going through a similar undertaking.]]></summary></entry><entry><title type="html">Holy Unto the Lord</title><link href="/2018/11/24/holy-unto-the-lord.html" rel="alternate" type="text/html" title="Holy Unto the Lord" /><published>2018-11-24T00:00:00+00:00</published><updated>2018-11-24T00:00:00+00:00</updated><id>/2018/11/24/holy-unto-the-lord</id><content type="html" xml:base="/2018/11/24/holy-unto-the-lord.html"><![CDATA[<p>These are my notes from a teaching/sermon I presented at our home church, Freedom Hill KC. Feel free to contact me if you’d like more information about our church.</p>

<p>Holy unto the Lord. Or “unto” something else.
Not covering plain old “be holy”. I want to look at the “unto”.</p>

<h1 id="things-that-are-holy-unto-the-lord">Things that are holy unto the Lord</h1>

<p>Exodus 28:36 High priest head band.<br />
Exodus 30:10 High priest sacrifice on Yom Kippur. “kodesh kodashim” (noun)<br />
Leviticus 21:6-8 Priests (kadosh)<br />
Leviticus 27. Every devoted thing (verse 28), most holy (“kodesh kodashim”) to Lord. House. Field. Tithe of the land, trees, and animals.<br />
Numbers 6:8 Nazirite (kadosh)<br />
Leviticus 20:26 We are to be (kadosh, adj). More on what we should do to be holy later (chapter is full of it).<br />
Deuteronomy 7. We as a people are to be (come back to this later).<br />
2 Chronicles 35:3 Levites. Why did I have to go this far to find the Levites? Hmm…<br />
Ezra 8:28 Chief priests. Maybe the vessels too?<br />
Nehemiah 8:9. Ezra brought out the book of the Torah to read to everyone from wood pulpit. That day is holy unto the Lord.</p>
<ul>
  <li>This wasn’t the time that they just found it somewhere in the temple and realized how broken they were, right? Looks like they’ve just finished re-building the wall of Jerusalem. Like a dedication of the walls of Jerusalem. They found out about Sukkot, so they did it. Did this mark a day of turning back to obedience, so that’s why it was holy?</li>
</ul>

<p>Jeremiah 31:40 Valley of dead bodies. Looks to be after tribulation. Wait, this is unclean! How can this be?? Think about the deeper meaning of holiness here. Compare to “holy” like the temple.</p>

<p>“Plucked up”. Verse 27, 28. Picture of Lord’s building up and tearing down, following our obedience and disobedience (see, most of the OT). The valley of dead bodies, the byproduct of the final destruction. Now all the disobedience and sin is done away with. I, the Lord, am keeping this in the state I want it to be (without disobedience). I’m taking it back, it’s mine. It’s set apart to me.</p>

<p>Ezekiel 48:14 Levites’ / Priests’ firstfruits of land.
Zechariah 14:20 Inscribed on bells of horses after tribulation. Maybe the pots too.
Zechariah 14:21 Every cooking pot in Jersulem and Judah after tribulation. Will be used to cook sacrifices.</p>

<p>Luke 2:23 Every male the opens the womb.</p>

<p>The picture? Holy unto the Lord = This is something special to me (the Lord).</p>

<h1 id="things-that-are-holy-unto-somethingsomeone-else">Things that are holy unto something/someone else</h1>

<p>Exodus 30:32 Holy anointing oil. Holy to you. (kodesh, noun)<br />
Exodus 30:36 Incense. “kodesh kodashim” to you.<br />
Exodus 30:37 Incense “holy to you for the Lord”. To you?<br />
Exodus 31:14 Sabbath. Holy to you. (kodesh, noun)<br />
Leviticus 24:9. Weekly bread memorial offering. Most holy (“kodesh kodashim”) unto the priest, not holy unto God.<br />
Leviticus 25:12. Jubilee year. Holy to you. (kodesh, noun)</p>

<p>The picture? Holy unto you = Yall better be careful with these and do it right?</p>

<h1 id="what-can-we-do-to-be-holy-unto-the-lord">What can we do to be holy unto the Lord?</h1>

<p>Deuteronomy 7:1-6 As a nation: Don’t make covenants with nations being cast out. Don’t intermarry with the pagans.<br />
Deuteronomy 14. Eat clean animals</p>

<p>Deuteronomy 26:19. To be a holy people unto Lord, keep his commandments. Remind God you’ve kept them.</p>

<p>Numbers 15:37-40 Tzitzit helps us be. Perhaps tzitzit -&gt; keep commandments -&gt; holy unto Lord.<br />
First time studying I actually found “kadosh” (adjective). Many others up till now = noun form.</p>

<p>Leviticus 19 - 20. Group them together, because it starts and ends with “be holy”. Chapter 21 goes on to talk about priests. Chapter 18 enumerates sexual sins.</p>

<ul>
  <li>
    <p>Chapter 19: Honor parents. Sabbath. Sacrifices correctly. Don’t glean your field. Stealing. Lying. Stumbling block. Blind justice. Don’t hate brother, DO rebuke him. Don’t mix animals, seed, garments. Wait to eat fruit. Eating blood. Marring corners of beard. Tattoos, possibly for dead, possibly any tattoos. Stand before elderly. Oppressing foreigners. Just weights.</p>
  </li>
  <li>
    <p>Chapter 20: No Molech. No cursing mom/dad. Sexual sins. The way the nations walked before. Clean/unclean animals.</p>
  </li>
</ul>

<h2 id="divorce-priests-and-us">Divorce, priests, and us</h2>
<p>Leviticus 21:6-8 If you’re a priest, don’t marry a divorced woman.<br />
Food for thought: we should be a kingdom of priests. Should we strive to uphold ourselves to standards of priests? I know a guy who does this.<br />
Matthew 19:9. Divorce then remarry = committing adultery (unless there was already adultery).</p>
<ul>
  <li>Marrying someone who did this = you’re committing adultery.</li>
</ul>

<p>So:</p>
<ul>
  <li>Priests can’t marry a divorced woman, regardless of the reason for divorce.</li>
  <li>We men can only marry a divorced woman if her ex-husband committed adultery.</li>
</ul>

<p>I think it’s fair to reverse husband/wife in today’s society (meaning: a woman can only marry a divorced man if that man’s ex-wife committed adultery).</p>]]></content><author><name>Patrick Boatner</name></author><category term="bible" /><category term="holy" /><category term="divorce" /><summary type="html"><![CDATA[These are my notes from a teaching/sermon I presented at our home church, Freedom Hill KC. Feel free to contact me if you’d like more information about our church.]]></summary></entry></feed>