<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Spencer Marx</title>
    <description>The latest articles on Forem by Spencer Marx (@spencermarx).</description>
    <link>https://forem.com/spencermarx</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F162526%2F849df7f0-a8aa-4f40-a33c-473094234c8e.jpg</url>
      <title>Forem: Spencer Marx</title>
      <link>https://forem.com/spencermarx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/spencermarx"/>
    <language>en</language>
    <item>
      <title>RELEASE THE HORDE!! 🤖 Haha, but seriously, for fans (or anti-fans) of Gastown, this one is for you... a simple lightweight orchestration engine that drops in, can manage any number of your projects, and stays out of the way. 5 min to get up and running 💪</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Thu, 19 Mar 2026 16:15:27 +0000</pubDate>
      <link>https://forem.com/spencermarx/release-the-horde-haha-but-seriously-for-fans-or-anti-fans-of-gastown-this-one-is-for-57g5</link>
      <guid>https://forem.com/spencermarx/release-the-horde-haha-but-seriously-for-fans-or-anti-fans-of-gastown-this-one-is-for-57g5</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/spencermarx/release-the-horde-multi-agent-orchestration-in-pure-bash-3oaf" class="crayons-story__hidden-navigation-link"&gt;Release the Horde: Multi-Agent Orchestration in Pure Bash&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/spencermarx" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F162526%2F849df7f0-a8aa-4f40-a33c-473094234c8e.jpg" alt="spencermarx profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/spencermarx" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Spencer Marx
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Spencer Marx
                
              
              &lt;div id="story-author-preview-content-3372795" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/spencermarx" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F162526%2F849df7f0-a8aa-4f40-a33c-473094234c8e.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Spencer Marx&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/spencermarx/release-the-horde-multi-agent-orchestration-in-pure-bash-3oaf" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 19&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/spencermarx/release-the-horde-multi-agent-orchestration-in-pure-bash-3oaf" id="article-link-3372795"&gt;
          Release the Horde: Multi-Agent Orchestration in Pure Bash
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/bash"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;bash&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devtools"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devtools&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/spencermarx/release-the-horde-multi-agent-orchestration-in-pure-bash-3oaf" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;11&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/spencermarx/release-the-horde-multi-agent-orchestration-in-pure-bash-3oaf#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              3&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




</description>
      <category>ai</category>
      <category>opensource</category>
      <category>bash</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Release the Horde: Multi-Agent Orchestration in Pure Bash</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Thu, 19 Mar 2026 16:10:12 +0000</pubDate>
      <link>https://forem.com/spencermarx/release-the-horde-multi-agent-orchestration-in-pure-bash-3oaf</link>
      <guid>https://forem.com/spencermarx/release-the-horde-multi-agent-orchestration-in-pure-bash-3oaf</guid>
      <description>&lt;p&gt;Anyone running 3+ AI coding agents in parallel has hit the same wall: the agents are fine. The coordination is the problem.&lt;/p&gt;

&lt;p&gt;Merge conflicts. Duplicated work. No review gate. Token burn on orchestration overhead. You end up spending more time managing agents than the agents save you.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://github.com/spencermarx/orc" rel="noopener noreferrer"&gt;Orc&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6jsz5quhrnj0ro5amz5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6jsz5quhrnj0ro5amz5.png" alt="Orc in Action"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;You describe the work. Orc decomposes it into goals and beads (focused work items), spawns engineers in isolated git worktrees, reviews everything before merge, and delivers clean goal branches.&lt;/p&gt;

&lt;p&gt;Across multiple projects, from a single session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Fix auth, add rate limiting, update docs"
                  │
                  ▼
          ┌──── orc ────┐
          │      │      │
          ▼      ▼      ▼
    fix/auth  feat/rate  task/docs      ← goal branches
      │   │      │         │
     [E] [E]    [E]       [E]           ← engineers in isolated worktrees
      │   │      │         │
     ✓/✗ ✓/✗    ✓/✗       ✓/✗           ← built-in review loop
      │   │      │         │
    fix/auth  feat/rate  task/docs      ← approved beads merge back
          │      │         │
          You review &amp;amp; merge            ← you decide when to ship
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The whole stack
&lt;/h2&gt;

&lt;p&gt;Bash. Tmux. Git worktrees.&lt;/p&gt;

&lt;p&gt;No daemon. No server. No framework. No build step. State is three files. You're running in five minutes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Register a project&lt;/span&gt;
orc add myapp /path/to/myapp

&lt;span class="c"&gt;# Launch&lt;/span&gt;
orc myapp

&lt;span class="c"&gt;# Or go full send&lt;/span&gt;
orc myapp &lt;span class="nt"&gt;--yolo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Opinionated but stays out of your way
&lt;/h2&gt;

&lt;p&gt;This is where it gets interesting. Orc has strong opinions about structure (four-tier hierarchy, mandatory review before merge, hard role boundaries), but the things you actually care about customizing are wide open.&lt;/p&gt;

&lt;p&gt;The review loop is mandatory. How you review is yours. Swap in your own review command, point it at a multi-agent review tool, or just describe your review standards in plain English:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[review]&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"/ocr:review"&lt;/span&gt;  &lt;span class="c"&gt;# your tool, or leave blank for built-in&lt;/span&gt;

&lt;span class="py"&gt;instructions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"""
Focus on security: check for SQL injection, XSS, and auth bypass.
All new endpoints must have rate limiting.
Verify error responses follow our RFC 7807 format.
"""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Branch naming? Natural language:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[branching]&lt;/span&gt;
&lt;span class="py"&gt;strategy&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"use Jira ticket prefix like PROJ-123, then kebab-case summary"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Delivery strategy? Same pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[delivery]&lt;/span&gt;
&lt;span class="py"&gt;mode&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"pr"&lt;/span&gt;
&lt;span class="py"&gt;target_strategy&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"target develop for features, main for hotfixes"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most of the configuration is "tell it what you want in plain English." Orc interprets it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Token efficiency by design
&lt;/h2&gt;

&lt;p&gt;Coordination happens through the filesystem, not agent-to-agent conversation. An engineer writes &lt;code&gt;review&lt;/code&gt; to a &lt;code&gt;.worker-status&lt;/code&gt; file. The orchestrator reads the file. Zero tokens burned on supervisors polling workers or nudging stalled agents.&lt;/p&gt;

&lt;p&gt;The tools you already have (tmux for sessions, git worktrees for isolation, the filesystem for signals) solve most of the orchestration problem. The interesting part is the decomposition, dispatch, and review protocol on top.&lt;/p&gt;

&lt;h2&gt;
  
  
  YOLO mode
&lt;/h2&gt;

&lt;p&gt;Sometimes you don't want to babysit.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;orc myapp &lt;span class="nt"&gt;--yolo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All approval gates are skipped. Planning flows straight into dispatch. Agents launch with auto-accept flags.&lt;/p&gt;

&lt;p&gt;But it still escalates on merge conflicts, blocked engineers, and out-of-scope discoveries. We're not animals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Works with your agent
&lt;/h2&gt;

&lt;p&gt;Claude Code, OpenCode, Codex, or bring your own. Personas are markdown files you can override per-project. Adding a new agent is a single adapter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credit where it's due
&lt;/h2&gt;

&lt;p&gt;Huge respect to &lt;a href="https://github.com/steveyegge/gastown" rel="noopener noreferrer"&gt;Gas Town&lt;/a&gt; for proving this category matters and pushing everyone's thinking forward. Orc asked "what's the minimum viable version of this?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/spencermarx/orc.git
&lt;span class="nb"&gt;cd &lt;/span&gt;orc &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pnpm &lt;span class="nb"&gt;install
&lt;/span&gt;pnpm orc:install
orc add myapp /path/to/your/project
orc myapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now go. Release the horde.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/spencermarx/orc" rel="noopener noreferrer"&gt;GitHub: spencermarx/orc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Star it if it's useful. PRs are welcome. Issues too.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>bash</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Open Code Review changed AI-Assisted Dev for our team</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Wed, 11 Mar 2026 14:55:40 +0000</pubDate>
      <link>https://forem.com/spencermarx/-11l5</link>
      <guid>https://forem.com/spencermarx/-11l5</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/spencermarx/your-ai-code-reviewer-has-no-one-to-disagree-with-f1j" class="crayons-story__hidden-navigation-link"&gt;Your AI code reviewer has no one to disagree with&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/spencermarx" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F162526%2F849df7f0-a8aa-4f40-a33c-473094234c8e.jpg" alt="spencermarx profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/spencermarx" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Spencer Marx
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Spencer Marx
                
              
              &lt;div id="story-author-preview-content-3339971" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/spencermarx" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F162526%2F849df7f0-a8aa-4f40-a33c-473094234c8e.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Spencer Marx&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/spencermarx/your-ai-code-reviewer-has-no-one-to-disagree-with-f1j" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 11&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/spencermarx/your-ai-code-reviewer-has-no-one-to-disagree-with-f1j" id="article-link-3339971"&gt;
          Your AI code reviewer has no one to disagree with
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/codereview"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;codereview&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/claudecode"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;claudecode&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/spencermarx/your-ai-code-reviewer-has-no-one-to-disagree-with-f1j" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;37&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/spencermarx/your-ai-code-reviewer-has-no-one-to-disagree-with-f1j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              4&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




</description>
      <category>opensource</category>
      <category>ai</category>
      <category>codereview</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>Your AI code reviewer has no one to disagree with</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Wed, 11 Mar 2026 14:48:03 +0000</pubDate>
      <link>https://forem.com/spencermarx/your-ai-code-reviewer-has-no-one-to-disagree-with-f1j</link>
      <guid>https://forem.com/spencermarx/your-ai-code-reviewer-has-no-one-to-disagree-with-f1j</guid>
      <description>&lt;p&gt;Ask an AI to review your code and you get one model's opinion. One pass through the diff. Whatever it happens to focus on first.&lt;/p&gt;

&lt;p&gt;Sometimes that's fine. Sometimes it catches real stuff.&lt;/p&gt;

&lt;p&gt;But if you've ever been on a team with strong review culture you know that's not how the best reviews work. The best reviews happen when people with different concerns look at the same code and then &lt;em&gt;argue about what they found&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The security person flags something. The architect says "actually that's fine because of how we structured X." The quality engineer notices they're both missing an error handling gap that connects the two findings. The conversation surfaces things no individual reviewer would have caught alone.&lt;/p&gt;

&lt;p&gt;That back-and-forth is where the real signal lives. And every AI code review tool I've tried just... skips it entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  One pass is a coin flip with better marketing
&lt;/h2&gt;

&lt;p&gt;Here's what bugs me about the current crop of AI review tools.&lt;/p&gt;

&lt;p&gt;They're all doing fundamentally the same thing: take a diff, throw it at a model, format the output nicely. Some add project context. Some run multiple checks in parallel. But at the end of the day you're getting a single perspective, uncontested, with nobody pushing back on whether the findings are actually real.&lt;/p&gt;

&lt;p&gt;You know what you get from an uncontested review? False positives. Hallucinated findings. Surface-level nitpicks dressed up as critical issues. And occasionally, actually useful feedback buried somewhere in the noise.&lt;/p&gt;

&lt;p&gt;Sound familiar? It should. It's the same reason a single human reviewer isn't sufficient for important code either. We solved this decades ago with the concept of multiple reviewers. It just took us a while to apply the same logic to the AI versions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What if the reviewers actually talked to each other?
&lt;/h2&gt;

&lt;p&gt;This is the question that led to &lt;a href="https://github.com/spencermarx/open-code-review" rel="noopener noreferrer"&gt;Open Code Review&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I started building it as an internal tool for our team because we were frustrated with exactly the problem above. The idea was stupid simple: what if we structured AI code review the same way high performing engineering teams actually do it?&lt;/p&gt;

&lt;p&gt;So here's how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You configure a &lt;strong&gt;team of reviewers&lt;/strong&gt; with specific roles. Architecture, security, code quality, testing, whatever custom roles make sense for your codebase.&lt;/li&gt;
&lt;li&gt;Each reviewer &lt;strong&gt;does their pass independently&lt;/strong&gt;. Different concerns, different focus areas, different findings.&lt;/li&gt;
&lt;li&gt;Then comes the part that actually matters: a &lt;strong&gt;structured discourse step&lt;/strong&gt; where they debate each other's findings. Agree, challenge, connect related issues, surface new concerns.&lt;/li&gt;
&lt;li&gt;Only &lt;em&gt;then&lt;/em&gt; does a &lt;strong&gt;final synthesis&lt;/strong&gt; produce the review you actually see.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    ┌─────────────┐
                    │  Tech Lead  │  ← Orchestrates
                    └──────┬──────┘
                           │
         ┌─────────────────┼─────────────────┐
         ▼                 ▼                 ▼
   ┌───────────┐    ┌───────────┐    ┌───────────┐
   │Principal×2│    │ Quality×2 │    │ Security  │
   └───────────┘    └───────────┘    └───────────┘
         │                 │                 │
         └─────────────────┼─────────────────┘
                           ▼
                    ┌─────────────┐
                    │  Discourse  │  ← They argue
                    └──────┬──────┘
                           ▼
                    ┌─────────────┐
                    │  Synthesis  │  ← You get this
                    └─────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That discourse step is the entire point. Every finding gets pressure tested by reviewers with different perspectives before it reaches you. Hallucinated issues get challenged. Connected problems get linked. Blind spots get exposed.&lt;/p&gt;

&lt;p&gt;The result is way fewer false positives and way more signal. Not because any individual reviewer is smarter, but because contested findings are just higher quality than uncontested ones. Same reason peer review works for humans.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5snhs8jg1reklzbezt9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5snhs8jg1reklzbezt9.png" alt="Open Code Review Dashboard - Review Discourse" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Customizable to the moon (or just use the defaults)
&lt;/h2&gt;

&lt;p&gt;Your codebase isn't generic and your review team shouldn't be either.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .ocr/config.yaml&lt;/span&gt;
&lt;span class="na"&gt;default_team&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;principal&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;    &lt;span class="c1"&gt;# Architecture, design&lt;/span&gt;
  &lt;span class="na"&gt;quality&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;      &lt;span class="c1"&gt;# Code style, best practices&lt;/span&gt;
  &lt;span class="na"&gt;security&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;     &lt;span class="c1"&gt;# Auth, data handling&lt;/span&gt;
  &lt;span class="na"&gt;testing&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;      &lt;span class="c1"&gt;# Coverage, edge cases&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Need heavier security scrutiny for a payments service? Bump it to 3. Building something performance-sensitive? Create a custom reviewer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# .ocr/skills/references/reviewers/performance.md&lt;/span&gt;

&lt;span class="gh"&gt;# Performance Engineer&lt;/span&gt;

You are a performance-focused code reviewer. {ADD MORE HERE}

&lt;span class="gu"&gt;## Focus Areas&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Response times and latency
&lt;span class="p"&gt;-&lt;/span&gt; Memory usage and leaks
&lt;span class="p"&gt;-&lt;/span&gt; Database query efficiency
&lt;span class="p"&gt;-&lt;/span&gt; N+1 queries, unbounded loops, missing indexes
&lt;span class="p"&gt;-&lt;/span&gt; {ADD MORE HERE}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Build these from the dashboard, or drop that file in and tell OCR to use it, and now it participates in discourse alongside everyone else. It challenges the other reviewers and gets challenged right back.&lt;/p&gt;

&lt;p&gt;Or don't think about any of this and just run it with the built-in templates. It works out of the box.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3p8rscmdf9js9dd88qmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3p8rscmdf9js9dd88qmm.png" alt="Open Code Review Dashboard - Reviewers Team" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It knows about your requirements, not just "best practices"
&lt;/h2&gt;

&lt;p&gt;This is the other thing that drives me nuts about most review tools. They evaluate your code against generic best practices and have no concept of what you were actually &lt;em&gt;trying to build&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;OCR lets you pass in a spec, a proposal, acceptance criteria from a ticket, whatever:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/ocr-review Review my staged changes against openspec/specs/cli/spec.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every reviewer evaluates the code against both their expertise &lt;em&gt;and&lt;/em&gt; your stated requirements. The final synthesis includes a requirements verification showing what's met, what's got gaps, and what's ambiguous.&lt;/p&gt;

&lt;p&gt;If you're doing any kind of spec-driven development this is where it really clicks. We were partly inspired by &lt;a href="https://github.com/Fission-AI/OpenSpec" rel="noopener noreferrer"&gt;OpenSpec&lt;/a&gt; on this front.&lt;/p&gt;

&lt;h2&gt;
  
  
  Drops in, stays out of the way
&lt;/h2&gt;

&lt;p&gt;I cannot stress enough how little this should disrupt your existing workflow. It was a core design goal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @open-code-review/cli
&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
ocr init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It auto-detects whatever agentic environment you're using. Claude Code, Opencode, Cursor, Windsurf, GitHub Copilot, doesn't matter. Stage your changes, run &lt;code&gt;/ocr-review&lt;/code&gt;, done. There's a local-first dashboard if you want to watch progress in real-time. You can post reviews directly to your PR with &lt;code&gt;/ocr-post&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Two minutes to try. No SaaS. No per-seat pricing. Free and open source.&lt;/p&gt;

&lt;h2&gt;
  
  
  So is it actually better?
&lt;/h2&gt;

&lt;p&gt;Our team hasn't gone back to anything else. The review quality just isn't close.&lt;/p&gt;

&lt;p&gt;And I think that comes down to something really simple: an uncontested opinion is worth less than a contested one. It doesn't matter how smart the model is. If nothing pushes back on its findings before they reach you, you're going to spend your time filtering noise instead of acting on real issues.&lt;/p&gt;

&lt;p&gt;Make the reviewers argue first. Get the noise out before it's your problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/spencermarx/open-code-review" rel="noopener noreferrer"&gt;github.com/spencermarx/open-code-review&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you try it out I'd love to hear how it goes. Still early days and the feedback has been shaping this thing significantly.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>codereview</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>CRM Development: Unlocking Growth with Custom Solutions</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Tue, 14 Jan 2025 15:05:02 +0000</pubDate>
      <link>https://forem.com/spencermarx/crm-development-unlocking-growth-with-custom-solutions-fle</link>
      <guid>https://forem.com/spencermarx/crm-development-unlocking-growth-with-custom-solutions-fle</guid>
      <description>&lt;h2&gt;
  
  
  Transform Your Business with Custom CRM Development 🚀
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.aclarify.com/blog/crm-development-the-ultimate-growth-guide" rel="noopener noreferrer"&gt;Read the full blog post for detailed insights here&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Customer Relationship Management (CRM) systems are no longer just "nice-to-have" tools—they’re essential for businesses that want to grow, streamline operations, and keep customers coming back. But here’s the catch: &lt;strong&gt;generic CRMs can’t always meet your unique needs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;custom CRM development&lt;/strong&gt; comes in. Imagine a system built specifically for your workflows, seamlessly integrating with your existing tools, and adapting to your business as it scales. Sound good? Let’s break it down.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why Custom CRM Development? 🤔
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tailored to Your Needs&lt;/strong&gt;: From industry-specific workflows to advanced compliance (think HIPAA or GDPR), a custom CRM aligns perfectly with your business.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlined Integrations&lt;/strong&gt;: Whether it’s ERP, marketing tools, or accounting software, custom solutions connect your systems for seamless data sharing.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalable and Future-Ready&lt;/strong&gt;: Grow your CRM alongside your business without the limitations of off-the-shelf tools.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  What’s Inside a Great CRM? 🌟
&lt;/h3&gt;

&lt;p&gt;Custom CRMs are built with the essentials and then some:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Workflow Automation&lt;/strong&gt;: Say goodbye to manual tasks with automated reminders, lead scoring, and pipeline updates.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Reporting&lt;/strong&gt;: Get real-time insights into customer behavior, sales performance, and marketing ROI.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User-Friendly Design&lt;/strong&gt;: Intuitive dashboards and responsive layouts make adoption easy for your team.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Overcome CRM Challenges with Ease 💡
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unified Data&lt;/strong&gt;: Stop juggling multiple tools. A custom CRM gives you a 360° view of each customer.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Security&lt;/strong&gt;: Meet industry compliance standards with role-based access and robust encryption.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High Adoption Rates&lt;/strong&gt;: Custom CRMs are designed for your team’s exact needs, making them easier to use and love.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Ready to Take the Next Step? 👨‍💻👩‍💻
&lt;/h3&gt;

&lt;p&gt;Whether you’re building a CRM from scratch or upgrading a legacy system, Aclarify’s &lt;strong&gt;custom CRM development services&lt;/strong&gt; can guide you every step of the way.  &lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Explore the full blog post&lt;/strong&gt; for an in-depth guide: &lt;a href="https://www.aclarify.com/blog/crm-development-the-ultimate-growth-guide" rel="noopener noreferrer"&gt;Read it here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
📩 &lt;strong&gt;Want a custom CRM built for your business? &lt;a href="https://www.aclarify.com/contact" rel="noopener noreferrer"&gt;Contact us today!&lt;/a&gt;&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;Let’s build something extraordinary together.&lt;/p&gt;

</description>
      <category>crm</category>
      <category>crmdevelopment</category>
      <category>customcrm</category>
      <category>customermanagement</category>
    </item>
    <item>
      <title>Unlocking the Power of the ServiceTitan API for Custom Integrations</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Thu, 09 Jan 2025 09:44:25 +0000</pubDate>
      <link>https://forem.com/spencermarx/unlocking-the-power-of-the-servicetitan-api-for-custom-integrations-1cji</link>
      <guid>https://forem.com/spencermarx/unlocking-the-power-of-the-servicetitan-api-for-custom-integrations-1cji</guid>
      <description>&lt;h2&gt;
  
  
  Supercharge Your Operations with the ServiceTitan API 🚀
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.aclarify.com/blog/using-the-servicetitan-api-for-powerful-custom-integrations" rel="noopener noreferrer"&gt;Read the full blog post for in-depth guidance here&lt;/a&gt;&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Ever felt limited by your out-of-the-box software? With the &lt;strong&gt;ServiceTitan API&lt;/strong&gt;, service-based businesses like HVAC, plumbing, and electrical companies can go beyond standard workflows. Imagine automating tasks, syncing data across platforms, and crafting custom tools that directly fit your needs. Intrigued? Let’s dive in.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why Use the ServiceTitan API? 🤔
&lt;/h3&gt;

&lt;p&gt;Here’s how this API can transform your operations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Seamless Integrations&lt;/strong&gt;: Connect ServiceTitan with CRMs, ERPs, or reporting tools like Salesforce and Power BI.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Task Automation&lt;/strong&gt;: Eliminate manual data entry by triggering emails, Slack alerts, or CRM updates.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Solutions&lt;/strong&gt;: Build dashboards, tools, or client-facing apps tailored to your business.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Break Down Silos&lt;/strong&gt;: Enable real-time data exchange, reducing errors and streamlining workflows.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: Expand your integrations as your business grows.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  A Built-In Shortcut: Postman Starter Collection 💡
&lt;/h3&gt;

&lt;p&gt;Getting started with the &lt;strong&gt;ServiceTitan API&lt;/strong&gt; is easier than ever, thanks to our pre-configured &lt;strong&gt;Postman starter collection&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Here’s what’s included:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Environment Variables&lt;/strong&gt;: Pre-set fields for tenant IDs, client secrets, and base URLs to simplify setup.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-Request Script for Authentication&lt;/strong&gt;: Automatically fetches OAuth tokens using your credentials. No manual copy-pasting required!
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sample Endpoints&lt;/strong&gt;: Prebuilt requests for essential operations like fetching technicians, invoices, and customer details.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;a href="https://drive.google.com/file/d/1TCfnOBxYQDBEcs50F-Mpkj60bK8weGAx/view?usp=sharing" rel="noopener noreferrer"&gt;Download the Postman Starter Collection here&lt;/a&gt; and jumpstart your integration testing today.&lt;/p&gt;




&lt;h3&gt;
  
  
  Get Started with the ServiceTitan API in 5 Steps
&lt;/h3&gt;

&lt;p&gt;To begin your API journey, follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Request API Access&lt;/strong&gt;: Sign up via the &lt;a href="https://developer.servicetitan.io/" rel="noopener noreferrer"&gt;ServiceTitan Developer Portal&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set Up Your App&lt;/strong&gt;: Define your app’s name, scope, and permissions in the portal.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authorize in ServiceTitan&lt;/strong&gt;: Connect your app in the ServiceTitan UI and generate credentials like &lt;code&gt;Client ID&lt;/code&gt; and &lt;code&gt;Client Secret&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test with Postman&lt;/strong&gt;: Import our starter collection and make your first authenticated request in minutes.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build Your Integration&lt;/strong&gt;: Start small—sync invoices or automate customer updates—then scale.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Real-World Use Cases 🌟
&lt;/h3&gt;

&lt;p&gt;Here are just a few examples of what’s possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Two-Way Accounting Sync&lt;/strong&gt;: Connect ServiceTitan with QuickBooks or Xero to automate invoices and payments.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Reporting&lt;/strong&gt;: Export job data to Power BI or Tableau for deeper insights.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inventory Management&lt;/strong&gt;: Track stock levels and equipment life cycles across systems.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Marketing&lt;/strong&gt;: Trigger campaigns based on job completions or renewals.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IoT Integration&lt;/strong&gt;: Sync real-time device data to your workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The possibilities are endless with the &lt;strong&gt;ServiceTitan API&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Developers, Ready to Dive In? 👨‍💻👩‍💻
&lt;/h3&gt;

&lt;p&gt;If you’re a developer eager to create meaningful integrations or a service business looking for custom solutions, &lt;strong&gt;Aclarify&lt;/strong&gt; can help.  &lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Explore the full blog post&lt;/strong&gt; for step-by-step guidance: &lt;a href="https://www.aclarify.com/blog/using-the-servicetitan-api-for-powerful-custom-integrations" rel="noopener noreferrer"&gt;Read it here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
📩 &lt;strong&gt;Curious about how we can help? &lt;a href="https://www.aclarify.com/contact" rel="noopener noreferrer"&gt;Contact us today!&lt;/a&gt;&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;Let’s build something extraordinary together.&lt;/p&gt;

</description>
      <category>servicetitan</category>
      <category>api</category>
      <category>integrations</category>
      <category>automation</category>
    </item>
    <item>
      <title>What is Nearshore Software Development and Why Does It Matter?</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Thu, 09 Jan 2025 09:17:05 +0000</pubDate>
      <link>https://forem.com/spencermarx/what-is-nearshore-software-development-and-why-does-it-matter-39mo</link>
      <guid>https://forem.com/spencermarx/what-is-nearshore-software-development-and-why-does-it-matter-39mo</guid>
      <description>&lt;h2&gt;
  
  
  Nearshore Software Development: Where Talent Meets Collaboration 🚀
&lt;/h2&gt;

&lt;p&gt;Imagine collaborating with skilled developers who work in nearly the same time zone, share your work culture, and deliver exceptional results—all without skyrocketing costs. Welcome to &lt;strong&gt;nearshore software development&lt;/strong&gt;, a model that’s transforming how modern businesses scale their tech teams.&lt;/p&gt;

&lt;p&gt;At &lt;strong&gt;Aclarify&lt;/strong&gt;, we’ve perfected this approach. With offices in &lt;strong&gt;the US and Spain&lt;/strong&gt; and teams across &lt;strong&gt;Italy, Argentina, Ukraine, West Africa&lt;/strong&gt;, we bridge global talent with seamless workflows to help companies thrive. Curious about how we make it work? Keep reading—or dive deeper in our &lt;a href="https://www.aclarify.com/blog/nearshore-software-development" rel="noopener noreferrer"&gt;blog post&lt;/a&gt; for a complete guide. 🌍&lt;/p&gt;




&lt;h3&gt;
  
  
  Why Nearshore Development? 🌟
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Time Zone Alignment&lt;/strong&gt;: Forget the long delays of offshore teams. Nearshore developers work just hours apart, making real-time collaboration a breeze.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cultural Fit&lt;/strong&gt;: Similar work ethics and shared values ensure smooth communication and strong team dynamics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Savings&lt;/strong&gt;: Nearshore rates strike a perfect balance—more affordable than onshore and without the challenges of offshore.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalable Talent&lt;/strong&gt;: Expand your team quickly with vetted engineers who integrate seamlessly into your workflows.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  What Sets Nearshore Apart? 🤔
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Factor&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Onshore&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Nearshore&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Offshore&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Same country&lt;/td&gt;
&lt;td&gt;Nearby country&lt;/td&gt;
&lt;td&gt;Different continent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$$$$&lt;/td&gt;
&lt;td&gt;$$-$$$&lt;/td&gt;
&lt;td&gt;$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Time Zone Overlap&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Full&lt;/td&gt;
&lt;td&gt;High/Partial&lt;/td&gt;
&lt;td&gt;Minimal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cultural Alignment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;Moderate to High&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Nearshoring&lt;/strong&gt; combines the best of both worlds—agility and cultural alignment without the high costs of onshore or the barriers of offshore.&lt;/p&gt;




&lt;h3&gt;
  
  
  Developers, This One's For You 👩‍💻👨‍💻
&lt;/h3&gt;

&lt;p&gt;Looking to join a dynamic, distributed team that collaborates across continents? At &lt;strong&gt;Aclarify&lt;/strong&gt;, we’re always on the lookout for talented developers passionate about solving complex challenges and creating cutting-edge solutions. Our global presence means you’ll work with diverse teams, gain unique perspectives, and have the chance to make a real impact.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Discover what it’s like to work at Aclarify and meet our team&lt;/strong&gt;: &lt;a href="https://www.aclarify.com/about" rel="noopener noreferrer"&gt;Learn more here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
📩 &lt;strong&gt;Interested in joining us?&lt;/strong&gt; Contact us directly to explore &lt;a href="https://www.aclarify.com/contact" rel="noopener noreferrer"&gt;career opportunities&lt;/a&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Ready to Dive Deeper? 🔗
&lt;/h3&gt;

&lt;p&gt;For an in-depth exploration of nearshore software development, its benefits, and how to choose the right partner, check out our &lt;strong&gt;full blog post&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;➡️ &lt;strong&gt;&lt;a href="https://www.aclarify.com/blog/nearshore-software-development" rel="noopener noreferrer"&gt;Read the Full Blog Here&lt;/a&gt;&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;🌟 &lt;strong&gt;Curious about career opportunities? &lt;a href="https://www.aclarify.com/contact" rel="noopener noreferrer"&gt;Get in touch today!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We’d love to connect and create something extraordinary together.&lt;/p&gt;

</description>
      <category>nearshore</category>
      <category>softwaredevelopment</category>
      <category>career</category>
      <category>techcareers</category>
    </item>
    <item>
      <title>Wrestling with Google Tag Manager (GTM) and Consent Mode in a Next.js project? We've got you covered 💪</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Thu, 05 Dec 2024 15:33:50 +0000</pubDate>
      <link>https://forem.com/spencermarx/-1ofn</link>
      <guid>https://forem.com/spencermarx/-1ofn</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/spencermarx" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F162526%2F849df7f0-a8aa-4f40-a33c-473094234c8e.jpg" alt="spencermarx"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/spencermarx/integrating-google-tag-manager-with-consent-mode-in-nextjs-15-4581" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Integrating Google Tag Manager with Consent Mode in NextJS 15&lt;/h2&gt;
      &lt;h3&gt;Spencer Marx ・ Dec 5 '24&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#nextjs&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#googletagmanager&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#consentmode&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>react</category>
      <category>typescript</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Integrating Google Tag Manager with Consent Mode in NextJS 15</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Thu, 05 Dec 2024 13:53:01 +0000</pubDate>
      <link>https://forem.com/spencermarx/integrating-google-tag-manager-with-consent-mode-in-nextjs-15-4581</link>
      <guid>https://forem.com/spencermarx/integrating-google-tag-manager-with-consent-mode-in-nextjs-15-4581</guid>
      <description>&lt;h2&gt;
  
  
  Simplifying Analytics and Privacy Compliance in NextJS 15
&lt;/h2&gt;

&lt;p&gt;For modern developers, integrating &lt;strong&gt;Google Tag Manager (GTM)&lt;/strong&gt; and &lt;strong&gt;Consent Mode&lt;/strong&gt; into &lt;strong&gt;NextJS 15&lt;/strong&gt; apps isn’t just a best practice—it’s a necessity. But the reality? It’s far from straightforward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy regulations&lt;/strong&gt; like &lt;strong&gt;GDPR&lt;/strong&gt; and &lt;strong&gt;CCPA&lt;/strong&gt; require careful handling of consent states, while &lt;strong&gt;NextJS 15’s limitations&lt;/strong&gt; add layers of complexity to embedding GTM scripts dynamically. The result? Many developers struggle to implement compliant analytics systems without compromising user experience or functionality.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why This Guide?
&lt;/h3&gt;

&lt;p&gt;This tutorial was built with one goal: to address the most common and frustrating challenges developers face when integrating &lt;strong&gt;GTM and Consent Mode&lt;/strong&gt; into &lt;strong&gt;NextJS 15&lt;/strong&gt; projects.&lt;/p&gt;

&lt;h4&gt;
  
  
  Here’s what makes this guide different:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;NextJS’s Limitations&lt;/strong&gt;: Tools like &lt;a href="https://nextjs.org/docs/app/building-your-application/optimizing/third-party-libraries#getting-started" rel="noopener noreferrer"&gt;&lt;code&gt;@next/third-parties&lt;/code&gt;&lt;/a&gt; don’t offer robust support for Consent Mode. Specifically, they lack solutions for managing default consent states before loading cached consent values—a critical gap we solve in this guide.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Documentation Gaps&lt;/strong&gt;: The official guides and third-party libraries provide fragmented examples, often failing to address how to fully integrate &lt;strong&gt;GTM&lt;/strong&gt;, &lt;strong&gt;Consent Mode&lt;/strong&gt;, and &lt;strong&gt;cookie banners&lt;/strong&gt; into a seamless, scalable NextJS app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A Proven, Hands-On Approach&lt;/strong&gt;: This isn’t theoretical. The solutions we present are &lt;strong&gt;battle-tested&lt;/strong&gt;, combining best practices with extended functionality to ensure both analytics precision and privacy compliance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  What You’ll Gain
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Step-by-Step Implementation&lt;/strong&gt;: Learn how to integrate GTM scripts, manage dynamic consent states, and set up analytics in a privacy-first web environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript-First Utilities&lt;/strong&gt;: Build reusable, strongly-typed functions to track user events and manage cookie preferences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working Example Repository&lt;/strong&gt;: Clone our project to see the complete implementation in action. Compare your work at each step, ensuring your setup aligns with best practices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86t3m8375j7lmqkh48a8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86t3m8375j7lmqkh48a8.png" alt="Image description" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Access the Codebase
&lt;/h3&gt;

&lt;p&gt;Start with the initial boilerplate and follow the phased approach detailed in the guide. Each branch demonstrates a critical step in the integration process.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone the Repository&lt;/span&gt;
git clone https://github.com/spencermarx/aclarify-blog-example--gtm-with-consent-in-nextjs.git

&lt;span class="c"&gt;# Navigate to the Project Directory&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;aclarify-blog-example--gtm-with-consent-in-nextjs

&lt;span class="c"&gt;# Checkout the First Phase&lt;/span&gt;
git checkout phase/0-initial-boilerplate

&lt;span class="c"&gt;# Install Dependencies and Run&lt;/span&gt;
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this repo, you’ll have a reliable reference point for every phase of the implementation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Read This Guide?
&lt;/h3&gt;

&lt;p&gt;By the end of this tutorial, you’ll:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Master the complexities of embedding GTM scripts dynamically in NextJS 15 without performance trade-offs.&lt;/li&gt;
&lt;li&gt;Implement a cookie consent banner to handle privacy-first tracking and comply with regulations like GDPR and CCPA.&lt;/li&gt;
&lt;li&gt;Gain confidence in testing and debugging with tools like Google Tag Assistant.&lt;/li&gt;
&lt;li&gt;Build a robust, scalable solution for managing analytics in modern NextJS projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ready to tackle analytics integration while keeping privacy compliance in check?&lt;/p&gt;

&lt;p&gt;➡️ &lt;strong&gt;&lt;a href="https://www.aclarify.com/blog/how-to-set-up-google-tag-manager-with-consent-mode-in-nextjs" rel="noopener noreferrer"&gt;Read the Full Guide and Explore the Repository on Aclarify’s Blog here&lt;/a&gt;&lt;/strong&gt; ⬅️&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About &lt;a href="https://www.aclarify.com/" rel="noopener noreferrer"&gt;Aclarify&lt;/a&gt;&lt;/strong&gt;: We empower developers to build modern, privacy-compliant solutions with cutting-edge tools like NextJS, Google Tag Manager, and Consent Mode. Join us to streamline your development process and achieve your goals.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>googletagmanager</category>
      <category>consentmode</category>
    </item>
    <item>
      <title>Build a Seamless ServiceTitan Integration with Next.js: A Modern, Full-Stack Guide</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Mon, 28 Oct 2024 20:40:00 +0000</pubDate>
      <link>https://forem.com/spencermarx/build-a-seamless-servicetitan-integration-with-nextjs-a-modern-full-stack-guide-1dbc</link>
      <guid>https://forem.com/spencermarx/build-a-seamless-servicetitan-integration-with-nextjs-a-modern-full-stack-guide-1dbc</guid>
      <description>&lt;h2&gt;
  
  
  Supercharge Your Service Business with a Custom ServiceTitan Integration
&lt;/h2&gt;

&lt;p&gt;In the service industry—covering essential businesses like HVAC, plumbing, electrical services, and beyond—streamlined operations are key to profitability. But for companies using &lt;strong&gt;ServiceTitan&lt;/strong&gt;, one of the most popular platforms for managing scheduling, dispatch, and customer communication, there's a common roadblock: the API documentation and examples are, well, &lt;em&gt;limited&lt;/em&gt;. (Queue sad face 😢)&lt;/p&gt;

&lt;p&gt;If you're trying to build custom solutions, you may find yourself hunting for real-world examples or best practices to get started.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That’s where Aclarify comes in.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Our latest blog post dives into a &lt;strong&gt;comprehensive, step-by-step guide&lt;/strong&gt; to building a custom integration between &lt;strong&gt;ServiceTitan and a modern Next.js application&lt;/strong&gt;. And this isn’t just another tutorial—it’s packed with practical insights, code examples, and solutions to common challenges that aren’t covered anywhere else.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s Inside?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Demo Repository&lt;/strong&gt;: Access a fully built-out repository with a modern Next.js setup and pre-built ServiceTitan integration components. Perfect for exploring, modifying, and understanding best practices in a hands-on way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Full-Stack Type Safety&lt;/strong&gt;: Learn how to manage full-stack typing with TypeScript for a ServiceTitan API endpoint, ensuring your data flow is both &lt;strong&gt;reliable&lt;/strong&gt; and &lt;strong&gt;maintainable&lt;/strong&gt; across the backend and frontend.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Real-World Examples&lt;/strong&gt;: From handling ServiceTitan API authentication to implementing booking forms with custom workflows, this guide is packed with code snippets and solutions you can actually use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enterprise-Grade Practices&lt;/strong&gt;: The architecture and stack choices in this guide reflect standards seen at enterprise companies—TypeScript, Tailwind CSS, React hooks, server actions in Next.js, and secure API handling.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why This Guide is a Must-Read
&lt;/h3&gt;

&lt;p&gt;This is one of the &lt;strong&gt;only comprehensive resources&lt;/strong&gt; out there for developers and technical teams who need to work with ServiceTitan. Unlike typical guides, it’s designed to help you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save time by avoiding common pitfalls in ServiceTitan’s API.&lt;/li&gt;
&lt;li&gt;Go beyond the basics, with a highly modular and scalable architecture.&lt;/li&gt;
&lt;li&gt;Gain insights on integrating with &lt;strong&gt;ServiceTitan’s complex API&lt;/strong&gt;, which doesn’t have extensive documentation for developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of the tutorial, you’ll not only have a working integration—you’ll have a blueprint for building future-proof, customized solutions that streamline operations and delight your customers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aclarify.com/blog/integrating-service-titan-with-nextjs-a-step-by-step-guide-to-building-custom-integrations?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=servicetitan-nextjs" rel="noopener noreferrer"&gt;&lt;strong&gt;Read the full guide on Aclarify's website&lt;/strong&gt;&lt;/a&gt; and access the demo repo, code samples, and more.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About Aclarify:&lt;/strong&gt; We specialize in developing custom software solutions that transform service-based businesses. From field service operations to customer engagement, our technology-driven approach helps companies achieve seamless, modern workflows.&lt;/p&gt;

</description>
      <category>servicetitan</category>
      <category>nextjs</category>
      <category>integration</category>
      <category>aclarify</category>
    </item>
    <item>
      <title>7 Tips for Getting Your First Developer Job</title>
      <dc:creator>Spencer Marx</dc:creator>
      <pubDate>Thu, 01 Jul 2021 17:39:18 +0000</pubDate>
      <link>https://forem.com/spencermarx/7-tips-for-getting-your-first-developer-job-5aol</link>
      <guid>https://forem.com/spencermarx/7-tips-for-getting-your-first-developer-job-5aol</guid>
      <description>&lt;p&gt;⭐️ &lt;strong&gt;Note&lt;/strong&gt;: The original edition of this tutorial can be found on my site &lt;a href="https://www.spencermarx.com/posts/7-tips-for-getting-your-first-developer-job" rel="noopener noreferrer"&gt;here&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;The software engineering space is booming right now🚀 With the pandemic increasing demand for digital services across a spectrum of industries, the appeal of becoming a developer has increased profoundly. And market analyses only further optimism — for example, the U.S. Bureau of Labor Statistics projects software engineering job growth to reach 22% over the next decade. That's massive! In summary, this is a &lt;strong&gt;great time to break into the software development space&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As someone looking to get a job in this space, it’s more important now than ever that you present yourself as not only competent, but uniquely suited for roles to which you apply. But hunting for your first developer job is no easy feat, and it can be especially overwhelming when it comes down to figuring out where to start. 🤷‍♀️🤷‍♂️&lt;/p&gt;

&lt;p&gt;As a Director and Senior Software Engineer who has sat on both sides of the interview table, here are the 7 tips I wish someone had given me when I was embarking on the hunt for my first job as a developer...&lt;/p&gt;

&lt;h2&gt;
  
  
  1 | Make sure you are comfortable across a single tech stack
&lt;/h2&gt;

&lt;p&gt;This is probably pretty obvious to most, but if you are going to apply to a position that works within, say, the MERN stack (Mongo, Express, React, Node), you should be familiar with each element in that stack. There may be few exceptions where a company is looking to switch to some novel technology or framework and thus is flexible on the incoming engineers' stacks, but more often than not, you should already be able to navigate and effectively use whatever tech the job is set to use on a day-to-day basis.&lt;/p&gt;

&lt;p&gt;One important note here is that "comfortable" can mean different things to different people. In this context, "comfortable" means being able to do the basic things across the various elements of the stack. Think...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing out routes on an Express + Node server&lt;/li&gt;
&lt;li&gt;Building out functional and class components in React&lt;/li&gt;
&lt;li&gt;Implementing CRUD operations with Node + Mongo&lt;/li&gt;
&lt;li&gt;Creating authentication middleware within Express&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea is: &lt;strong&gt;you want to be prepared to jump into whatever job you land and contribute quickly&lt;/strong&gt;. Therefore, you should know your way around your tech stack as it'll likely be the stack you're hired to work within.&lt;/p&gt;

&lt;p&gt;⭐️ &lt;em&gt;Note: &lt;strong&gt;Try to include a standard unit testing framework in your stack (like Jest or Mocha)&lt;/strong&gt;. This is often overlooked when evaluating devs at small to midsize software companies. The frameworks are easy and very important when working in a large and quickly changing code base.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2 | Have one project that shows EVERYTHING off
&lt;/h2&gt;

&lt;p&gt;This is also a pretty intuitive point. Most technical interviewers are going to ask you to dive into a project, be it personal or professional. When you do this, your goal should be to demonstrate to them that you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are familiar with all (or at least most) of the elements in the interviewer's company stack&lt;/li&gt;
&lt;li&gt;Are thoughtful and meticulous when it comes to planning&lt;/li&gt;
&lt;li&gt;Are competent at implementation&lt;/li&gt;
&lt;li&gt;Can solve problems effectively as they appear&lt;/li&gt;
&lt;li&gt;Are passionate about software development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;It's especially important that, with whatever project you pick, you are able to discuss at least one significant challenge that came up which you were able to overcome&lt;/strong&gt;. This problem should be a topic you can talk about in depth. It may be helpful to frame this in the following context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What was the problem?&lt;/li&gt;
&lt;li&gt;How did you approach solving it?&lt;/li&gt;
&lt;li&gt;What tradeoffs existed with your solution, if any?&lt;/li&gt;
&lt;li&gt;Was your solution successful?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When determining which project you plan to show off, definitely lean toward projects you genuinely enjoyed — your interest and passion for the work will likely come across in the interview (that's a good thing).&lt;/p&gt;

&lt;h2&gt;
  
  
  3 | Study up on common technical interview questions
&lt;/h2&gt;

&lt;p&gt;You will likely receive at least one stage of technical evaluation, so be prepared! Here are some great resources for practicing some of the common technical interview questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.springboard.com/blog/software-engineering/21-software-engineering-interview-questions/" rel="noopener noreferrer"&gt;31 Software Engineering Interview Questions With Answers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.indeed.com/career-advice/interviewing/software-engineer-interview-questions" rel="noopener noreferrer"&gt;29 Software Engineer Interview Questions (With Example Answers)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yangshun/tech-interview-handbook" rel="noopener noreferrer"&gt;Tech Interview Handbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/trekhleb/javascript-algorithms" rel="noopener noreferrer"&gt;JavaScript Algorithms and Data Structures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/donnemartin/system-design-primer" rel="noopener noreferrer"&gt;System Design Primer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Practice with friends and family until you have these answers down. There are plenty more resources out there, so lean on Google to find more!&lt;/p&gt;

&lt;p&gt;I'd also recommend you not only drill common questions, but practice code challenges on a website like &lt;a href="[https://leetcode.com/](https://leetcode.com/)"&gt;LeetCode&lt;/a&gt; or &lt;a href="[https://www.codewars.com/](https://www.codewars.com/)"&gt;CodeWars&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The big takeaway here is: &lt;strong&gt;come prepared to talk technical theory&lt;/strong&gt;. &lt;strong&gt;Know those "must-know" interview questions&lt;/strong&gt; (eg. "What is an array?")&lt;strong&gt;, but also be ready to answer questions you've never seen before&lt;/strong&gt;. Software engineering is problem solving at its core, so make sure you're ready to flex your problem solving muscles 💪&lt;/p&gt;

&lt;h2&gt;
  
  
  4 | Assemble a neat resume, a portfolio on your own hosted website, and polish your resume, as well as your GitHub
&lt;/h2&gt;

&lt;p&gt;For many interviewers, one’s resume, portfolio, LinkedIn, and GitHub go a long way in forming the initial impression of a candidate. Make sure each of these mediums are polished and squeaky clean. Don’t give reviewers a reason to cross you off the list of candidates before you get the chance to chat in-person. The following resources can help you ensure you leave a good impression on paper:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/writing-a-killer-software-engineering-resume-b11c91ef699d/" rel="noopener noreferrer"&gt;Build Your Resume&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=oEjqdodOWOk" rel="noopener noreferrer"&gt;Assemble Your Portfolio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.myhatchpad.com/insight/how-to-make-your-linkedin-profile-stand-out-as-a-software-engineer" rel="noopener noreferrer"&gt;Prepare Your LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://techbeacon.com/app-dev-testing/what-do-job-seeking-developers-need-their-github" rel="noopener noreferrer"&gt;Polish Your Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5 | Find a mentor with whom you can simulate a practice interview
&lt;/h2&gt;

&lt;p&gt;If you haven’t already, try to find a mentor software engineer who would be willing to give you a couple hours of their time to sit down with you on a video call and simulate a technical interview.&lt;/p&gt;

&lt;p&gt;I was fortunate enough to know several developers when I got started in the software space. One of them, a  good friend of mine, spent a couple hours one day just drilling me on technical questions using screen-share on a Google Hangout. This can be really useful, especially when it comes to getting the pre-interview jitters out of the way!&lt;/p&gt;

&lt;p&gt;A mentor is also a great resource for feedback. Try asking them for input on your resume, portfolio, LinkedIn, and GitHub account — they might just spot an issue that can be a red flag for an interviewer 👀&lt;/p&gt;

&lt;h2&gt;
  
  
  6 | Connect with a reputable recruiting firm
&lt;/h2&gt;

&lt;p&gt;Recruiting firms are a fantastic way to connect with businesses offering positions that are well aligned with your skill set and stack. There are many of them out there and each has a unique process for how they vet candidates and onboard them into their various candidate pools (typically organized by tech stack). You can connect with these firms in a few different ways.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;LinkedIn can be a quick and easy tool to get a dialogue started with recruiters. Just open up your &lt;code&gt;Profile&lt;/code&gt; on your LinkedIn and click the &lt;code&gt;Open to&lt;/code&gt; button and then select the &lt;code&gt;Finding a new job&lt;/code&gt; option. This should let recruiters in your area know you are happy to chat. Then just stay on top of your LinkedIn messenger and wait for recruiter outreach to begin.&lt;/li&gt;
&lt;li&gt;Reach out directly. There are plenty of recruiting firms out there, many of whom are becoming more flexible geographically with remote work options increasing. Most of these have some kind of resume submission portal through which you can send a CV. I've worked with &lt;a href="https://motionrecruitment.com/" rel="noopener noreferrer"&gt;Motion Recruitment&lt;/a&gt; before, formerly "Workbridge Associates," in the greater Boston area and they were great 👍&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When you begin chatting with recruiters, ensure you research their firm's reputation on their website and GlassDoor. &lt;strong&gt;Also, be sure to only consider firms that do not take a cut from your salary as a fee&lt;/strong&gt; — there are plenty of them that earn a head hunter fee from the businesses posting the open positions, those are the ones you should try to work with.&lt;/p&gt;

&lt;p&gt;Also, I'd recommend being open to allowing their firm rep that you work with negotiate on your behalf once you have possible job offerings in the pipeline. More often than not, these reps can increase your job offer as they are typically  the liaisons between you and the client company. What's great is their interests are aligned with yours, so the more money you make, the more money they’ll make as well - everybody wins! 💰&lt;/p&gt;

&lt;h2&gt;
  
  
  7 | Be ready to fail, but remain persistent and passionate
&lt;/h2&gt;

&lt;p&gt;Like anything worth doing, failure is a probability, especially across the first few interviews. &lt;strong&gt;Be ready to fail, and be ready to learn from your failures.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Interviewing is a skill like anything else, so long as you are genuinely prepared and are applying yourself, the more reps you get, the higher your chance of a successful outcome&lt;/p&gt;

&lt;p&gt;Software Engineering is a fantastic field with tons of exciting opportunities, however, it’s not for everyone. It can be cognitively intensive and very fast moving, forcing you to learn always. If you’re not passionate about or compelled to build software, it’s probably not worth investing your time and effort searching for a job in the space. Only do it if you love it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thanks for Reading
&lt;/h2&gt;

&lt;p&gt;That's it! I hope these tips are helpful in your pursuit to lock down your first developer job. With dedication and persistence, any knowledgeable engineer should be able to find a position at a company to which they can effectively contribute.  You can do it! 💪&lt;/p&gt;

</description>
      <category>career</category>
      <category>beginners</category>
      <category>advice</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
