<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://www.kcoleman.me/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.kcoleman.me/" rel="alternate" type="text/html" /><updated>2026-08-18T07:37:24+00:00</updated><id>https://www.kcoleman.me/feed.xml</id><title type="html">Kevin Coleman</title><subtitle>solves problems for businesses with Software.
</subtitle><entry><title type="html">Saigon Safe: Personalizing open-source for fun and profit</title><link href="https://www.kcoleman.me/2026/06/14/saigon-safe.html" rel="alternate" type="text/html" title="Saigon Safe: Personalizing open-source for fun and profit" /><published>2026-06-14T05:49:55+00:00</published><updated>2026-06-14T05:49:55+00:00</updated><id>https://www.kcoleman.me/2026/06/14/saigon-safe</id><content type="html" xml:base="https://www.kcoleman.me/2026/06/14/saigon-safe.html"><![CDATA[<p>I’ve used Bitwarden for ~6 years, and there were a handful of UX issues that annoyed me enough that I finally did something about them.</p>

<hr />
<p>quick links</p>

<ul>
  <li><a href="https://chromewebstore.google.com/detail/saigon-safe/iplggehdmbbndlednajekcfmcokbnnlj">Google Chrome</a></li>
  <li><a href="https://addons.mozilla.org/en-US/firefox/addon/saigon-safe/">Firefox</a></li>
  <li><a href="http://github.com/kevincolemaninc/saigon-safe">Source Code</a></li>
  <li><a href="https://www.kcoleman.me/2026/06/14/saigon-safe.html">Blog</a></li>
</ul>

<hr />

<p>The result is <strong>Saigon Safe</strong> <a href="https://addons.mozilla.org/en-GB/firefox/addon/saigon-safe/">Firefox</a>: a fork of the Bitwarden browser extension, built mostly with AI-assisted coding.</p>

<p align="center">
  <img src="/images/saigon-safe.png" title="Screenshot of Saigon Safe login" width="50%" />
</p>

<p>A few features added:</p>

<h2 id="one-click-account-creation"><strong>One-click account creation</strong></h2>

<p><img src="/images/saigon-safe-default-email.png" title="Autofill registration forms and auto-save" /></p>

<ul>
  <li>Set a default email address</li>
  <li>Generate a strong password</li>
  <li>Auto-fill the registration form</li>
  <li>Automatically save the credential</li>
</ul>

<p>No more:</p>

<ul>
  <li>Copy password</li>
  <li>Paste password</li>
  <li>Re-enter email</li>
  <li>Hope Bitwarden notices the new account</li>
</ul>

<h2 id="touch-id-unlock"><strong>Touch ID unlock</strong></h2>

<p>Unlock your vault using your laptop’s biometric authentication instead of typing a long master password every time.</p>

<h2 id="ux-improvements"><strong>UX improvements</strong></h2>

<ul>
  <li>Bottom menu bar moved to top, for faster mouse access</li>
  <li>If you try to auto-fill and Saigon Safe is logged out, prompt for password (instead of silently failing like today…)</li>
  <li>Auto-fill cycles through current login items.</li>
</ul>

<h2 id="hidden-accounts"><strong>Hidden accounts</strong></h2>

<p><img src="/images/saigon-safe-pin.png" title="Search pin screenshot for Saigon Safe" /></p>

<ul>
  <li>Inspired by <a href="https://www.vietnam.vn/en/cach-an-cuoc-tro-chuyen-zalo-trong-mot-not-nhac">Zalo’s hidden conversations</a>.</li>
  <li>Mark sensitive accounts (banks, investments, email providers, etc.) as hidden.</li>
  <li>They won’t appear in search results unless you enter a separate secret PIN.</li>
</ul>

<p>This adds a layer of privacy if someone gains access to an unlocked device or vault. This feature is only enforced on the client level. The export feature will still reveal the hidden accounts.</p>

<h2 id="less-marketing-clutter"><strong>Less marketing clutter</strong></h2>

<p>Removed upsell and promotional UI from the extension.</p>

<p>The extension still uses Bitwarden’s backend and infrastructure. Your vault, sync, and encryption work exactly as before—this is purely a client-side experience improvement.</p>

<p><a href="https://addons.mozilla.org/en-GB/firefox/addon/saigon-safe/">Firefox</a> is available now. Chrome is in testing and should be released in the next few weeks.</p>

<p>If there’s enough interest, I’ll look at bringing these improvements to the iOS and Android apps as well.</p>

<p>The source code is open source <a href="https://github.com/KevinColemanInc/saigon-safe">github.com/KevinColemanInc/saigon-safe</a>. If you’d like to review the changes, check out the GitHub repo below.</p>

<p>Amazing what becomes possible when AI reduces the cost of understanding and modifying large codebases.</p>

<p>Commercial modules were removed to avoid violations of Bitwarden’s copyright file. Feel free to contact me at kevin@sparkstart.io if you have any questions.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I’ve used Bitwarden for ~6 years, and there were a handful of UX issues that annoyed me enough that I finally did something about them.]]></summary></entry><entry><title type="html">Designing With AI on a budget as an engineer: Google+ChatGPT</title><link href="https://www.kcoleman.me/2026/06/11/designing-with-ai-indie.html" rel="alternate" type="text/html" title="Designing With AI on a budget as an engineer: Google+ChatGPT" /><published>2026-06-11T05:49:55+00:00</published><updated>2026-06-11T05:49:55+00:00</updated><id>https://www.kcoleman.me/2026/06/11/designing-with-ai-indie</id><content type="html" xml:base="https://www.kcoleman.me/2026/06/11/designing-with-ai-indie.html"><![CDATA[<p>Tokens are for code, not for design. I will teach you how to create beautiful marketing materials for Apple, Google, and social media accounts in the correct dimensions and quality at the cost of zero billable tokens.</p>

<p>I fully acknowledge that this is not as good as a professional designer, but it is infinitely better quality and lower time than I, a software engineer, could do on my own without AI. If you don’t believe look at what I did pre-AI, GPT4, and today in the bonuse case study below.</p>

<h2 id="saigon-watermarks">Saigon Watermarks</h2>

<div class="image-row">
  <img src="/images/saigon-watermarks/screen-1.png" alt="Saigon Watermarks MacOS marketing screenshot primary" />
  <img src="/images/saigon-watermarks/screen-2.png" alt="Saigon Watermarks MacOS marketing screenshot secondary" />
  <img src="/images/saigon-watermarks/screen-3.png" alt="Saigon Watermarks MacOS marketing screenshot" />
</div>

<h2 id="step-one-ask-chatgpt-web-to-describe-list-of-screenshots">Step one: ask ChatGPT Web to describe list of screenshots.</h2>

<p>The example app was going to be a desktop iOS app. I first asked AI to give me six or ten screenshot ideas for how to display the app and the page.</p>

<p>While I already have an idea of which screenshots of the app that I would want to use, I let the AI think a little more freely just in case something’s missing without giving hints to indentify blind spots in my mental model.</p>

<p>It is important to note to use ChatGPT Web, and not any local agent harness (Codex, Claude, etc) that has access to the code base. The marketing materials should be communicate the problem this solves, not explicitly and exclusively your solution. AI has a tendency to include technical terms from the codebase that do not belong in marketing materials.</p>

<p>So, brand new ChatGPT web prompt:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>I am building {product name}. The key features are {...}.

Give me 10 ideas for screenshots to include in the MacOS App Store. that will help me sell to my customers.
</code></pre></div></div>

<p>From those 10 ideas, ask AI to generate a longer prompt describing the content of that page.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>write an AI prompt for generating an screenshot image of {...}
</code></pre></div></div>

<h2 id="generate-the-png">Generate the PNG</h2>

<p><img src="/images/saigon-watermarks/orig.png" alt="bridge" title="ChatGPT image generation proposal" class="banner-img" /></p>

<ul>
  <li>Paste in the prompt</li>
  <li>Ask ChatGPT Images 2.0 to generate a new picture with the prompt above</li>
  <li>Include the screenshot of the app that this screenshot needs to be talking about</li>
</ul>

<p>For example, I want to have a screenshot showing of the images for the profile dashboard. AI will incorporate the real screenshot with the marketing text described in the prompt to generate something beautiful. Sometimes I’ll make some corrections with the image generation tool, either asking it to modify the existing image or even better, just regenerating the original image, clean slate, no edits, tends to be more effective.</p>

<p>Once I have these base PNGs for each of the screenshots I want, the problem of these PNGs is that they are the wrong dimensions and are low quailty. We need this to be super crisp and polished and it can’t just be some blurry, shitty AI generated photo.</p>

<h2 id="converting-chatgpt-images-to-high-quality-marketing-materials">Converting chatGPT images to high quality marketing materials</h2>

<p><img src="/images/saigon-watermarks/google-stich.png" alt="bridge" title="Screenshot of Google Stich for creating Saigon Watermarks" class="banner-img" /></p>

<p>So, the next stage we’re going to do is once we have those three images, we’re going to:</p>
<ul>
  <li>Go to <a href="https://stitch.withgoogle.com/">Google Stich</a> (Google’s Figma competitor) and upload these images into the tool.</li>
</ul>

<div class="language-md highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="ge">_attached screenshot.png_</span>

copy the image as closely as possible exactly this screen.
</code></pre></div></div>

<p>Generate an HTML page from that image.</p>

<p><img src="/images/saigon-watermarks/google-stich-export.png" alt="bridge" title="Screenshot of Google Stich for exporting a view as html/css" class="banner-img" height="300px" /></p>

<p>The Google Stich has limited tokens available, so use Google Stich to generate the html and we can tune the html later (either by hand or with Claude, ChatGPT web, etc).</p>

<p><img src="/images/saigon-watermarks/google-stich-version.png" alt="bridge" title="Google Stich's first pass at generating the html" class="banner-img" /></p>

<p>Most of the structure is there, but there are issues with font colors and the wreath just looks terrible.</p>

<h2 id="next-step-is-manual-and-ai-assisted-editing-of-the-html">Next step is manual and AI-assisted editing of the html</h2>

<p>Open the .zip file in your favorite text editor. Since this is a simple single file, you can use ChatGPT web (which has unlimited token usage for paid accounts) to make minor adjustments to the html to update copy, styles, etc.</p>

<p>Once you’re super happy with the design. Use Firefox or Chrome to take the screenshot, be sure to either adjust the view window to match the required deminsions or be prepared to crop and resize the final image to match the target.</p>

<h3 id="final-step-screenshot-resize-crop-and-upload">Final step: screenshot, resize, crop and upload</h3>

<p>looks great in HTML in your favorite web browser, take a screenshot of the entire page and use your favorite image editing tool to crop and resize it so it fits the dimensions for each of the images.</p>

<p><img src="/images/saigon-watermarks/screen-3.png" alt="bridge" title="ChatGPT image generation proposal" class="banner-img" /></p>

<h3 id="sidequest-recreating-icons">Sidequest: Recreating icons</h3>

<p>There was an icon that I really liked in the original image that neither Google nor ChatGPT could properly replicate in HTML/SVG. So, what I did was:</p>

<ul>
  <li>Opened up the original ChatGPT image in an SVG editing tool</li>
  <li>Manually traced over the icon with these vector points</li>
  <li>Exported the SVG and replaced the generated svg with my manually created one.</li>
</ul>

<p>Now I was able to replicate that icon generated by ChatBT, but in a very precise and colorful and beautiful way. Once you have your page opened up,</p>

<h2 id="bonus-case-study-avovietnam">Bonus Case study: AvoVietnam</h2>

<p>Below you can see the marketing images for the dating app <a href="https://apps.apple.com/us/app/avovietnam/id1433912612">AvoVietnam</a></p>

<h3 id="pre-ai">Pre-AI</h3>

<p>These just look lazy to me. Simple screenshot, Gradient background.</p>

<div class="image-row">
  <img src="/images/saigon-watermarks/avo-v1-screen-1.png" alt="AvoVietnam original marketing photo pre-ai screenshot primary" />
  <img src="/images/saigon-watermarks/avo-v1-screen-2.png" alt="AvoVietnam original marketing photo pre-ai screenshot secondary" />
  <img src="/images/saigon-watermarks/avo-v1-screen-3.png" alt="AvoVietnam original marketing photo pre-ai screenshot" />
</div>

<h3 id="chatgpt---html">ChatGPT -&gt; HTML</h3>

<p>Before ChatGPT had their image generation, I asked chatgpt to make an html template based on an png mockup. Unfortunately, I lost the original images, but this is the output.</p>

<div class="image-row">
  <img src="/images/saigon-watermarks/avo-final-screen-1.png" alt="AvoVietnam ios final marketing screenshot primary" />
  <img src="/images/saigon-watermarks/avo-final-screen-2.png" alt="AvoVietnam ios final marketing screenshot secondary" />
  <img src="/images/saigon-watermarks/avo-final-screen-3.png" alt="AvoVietnam ios final marketing screenshot" />
</div>

<p>This was created before Google Stich was released. Converting the images to html with Codex (5.3?) resulted in weird font sizes and locations of blobs. I still have this issue with Codex 5.5.</p>

<p>Compared to the Google Stich workflow above, this looks like a high school design student (or a software engineer with no design skills) made it haha.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Tokens are for code, not for design. I will teach you how to create beautiful marketing materials for Apple, Google, and social media accounts in the correct dimensions and quality at the cost of zero billable tokens.]]></summary></entry><entry><title type="html">Tokenmining: low token plans maximize your output</title><link href="https://www.kcoleman.me/2026/06/10/low-vibe-coding.html" rel="alternate" type="text/html" title="Tokenmining: low token plans maximize your output" /><published>2026-06-10T05:49:55+00:00</published><updated>2026-06-10T05:49:55+00:00</updated><id>https://www.kcoleman.me/2026/06/10/low-vibe-coding</id><content type="html" xml:base="https://www.kcoleman.me/2026/06/10/low-vibe-coding.html"><![CDATA[<p>I realized recently that limiting my token use (opting for a low token plan), saves me money and encourages me to stay focused on delivering software, not just writing it.</p>

<p>At the start of a product development, I brain dump all the things I need to do before I can officially launch this feature. It ranges from product features, to marketing tasks, to legal tasks, etc.</p>

<p>I noticed that when I paid for the higher token plans, I spent wayyy more time adding features (and fixing bugs with those features) than I did on everything around a product launch.</p>

<p>I wanted to ensure my $200/mo is well spent, as well as vibe coding is wayyy more fun to me than designing marketing materials or writing blog posts.</p>

<p>When I lowered my plan to $20/mo, the “You’re out of Codex messages” forced me to be more thoughtful of how to use the limited tokens and made me allocate more time to everything around coding (marketing).</p>

<p>Instead of baby sitting 3-4 agents adding features (and bugs), once my usage limits hit, I switched to developing marketing materials, writing blog posts, and preparing for a launch. During this time, I did a more thorough QA to queue up the bugs for the next token session.</p>

<p>If you’re an indie hacker who hasn’t launched yet, try lowering your AI coding plan for a month and see what changes.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I realized recently that limiting my token use (opting for a low token plan), saves me money and encourages me to stay focused on delivering software, not just writing it.]]></summary></entry><entry><title type="html">When Everything Becomes Normal, Nothing Feels Special</title><link href="https://www.kcoleman.me/2026/01/28/when-everything-becomes-normal.html" rel="alternate" type="text/html" title="When Everything Becomes Normal, Nothing Feels Special" /><published>2026-01-28T05:49:55+00:00</published><updated>2026-01-28T05:49:55+00:00</updated><id>https://www.kcoleman.me/2026/01/28/when-everything-becomes-normal</id><content type="html" xml:base="https://www.kcoleman.me/2026/01/28/when-everything-becomes-normal.html"><![CDATA[<p>When I was in middle school and high school, my parents didn’t allow me to drink soda.</p>

<p>But they had a secret stash of Coca-Cola in the garage fridge.</p>

<p>I still don’t know why it was there. My parents didn’t drink soda. Maybe it was for guests. Maybe it was just inertia. But I knew it existed and that was enough.</p>

<p>Whenever I was stressed about school or upset at them, I’d sneak into the garage and take a sip out of one of the 20oz bottles.</p>

<p>That sip wasn’t about the soda. It was about rebellion. Self-soothing. Control. It was a quiet “f you” to rules I didn’t agree with, and a small moment of calm in the garage when I needed it.</p>

<p>Today, I’m an adult. I have adult money. I can buy soda whenever I want.</p>

<p>And because of that, soda means nothing to me now.</p>

<hr />

<center>

<p>Scarcity creates anticipation</p>

<p>Anticipation amplifies experience</p>

<p>Unlimited access removes anticipation</p>

<p>Without anticipation, pleasure decays into habit</p>

</center>

<hr />

<p>Standing in an immigration line in Vietnam last week, I realized something uncomfortable:
this was a Tuesday for me.</p>

<p>For the people around me, this was a once-in-a-lifetime moment. First time in Asia. First time in Vietnam. Something they’d talk about for years.</p>

<p>I missed that uncertainty, that joy, the nervousness traveling to a new country. At this point, I’ve visited 60 countries in the world. I’ve had that ‘new country experience’ 59 times in my life and that novelty is waning.</p>

<hr />

<p>I don’t think happiness comes from adding more things.</p>

<p>I think it comes from protecting the things that still feel special.</p>

<p>So this year, I’m not trying to upgrade my life, introducing new luxuries to post about on IG of Threads.</p>

<p>Instead, in 2026 I want to restore contrast.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[When I was in middle school and high school, my parents didn’t allow me to drink soda.]]></summary></entry><entry><title type="html">How I Secure My Most Important Accounts</title><link href="https://www.kcoleman.me/2026/01/04/password-management.html" rel="alternate" type="text/html" title="How I Secure My Most Important Accounts" /><published>2026-01-04T05:49:55+00:00</published><updated>2026-01-04T05:49:55+00:00</updated><id>https://www.kcoleman.me/2026/01/04/password-management</id><content type="html" xml:base="https://www.kcoleman.me/2026/01/04/password-management.html"><![CDATA[<p>Below is a clean, structured rewrite suitable for a blog post. I’ve preserved your intent, simplified the narrative, and tightened the logic so it reads as practical guidance rather than a personal rant, while still grounding it in real experience.</p>

<hr />

<p>When people talk about “account security,” they often jump straight to advanced tools, expensive subscriptions, or overly complex setups. In reality, the biggest risks to your personal accounts-especially financial ones, come from a few very predictable failure modes.</p>

<p>My goal is not perfect security. My goal is cheap, boring, resilient security that works even when things go wrong: providers make mistakes, phones get lost, or I cross borders and change SIM cards.</p>

<p>Here’s the simple system I use to protect my most sensitive accounts.</p>

<h2 id="1-a-private-email-address-i-fully-control">1. A Private Email Address I Fully Control</h2>

<p>My most important accounts, banks, brokerages, crypto exchanges, tax portals, are all tied to a single, private email address that I never use anywhere else.</p>

<h3 id="why-this-matters">Why this matters</h3>

<p>There are two major risks with “normal” email usage:</p>

<ol>
  <li>
    <p>Provider lockout
If Google, Yahoo, or Microsoft decides (correctly or incorrectly) that your account violated a policy or triggered fraud detection, you can be locked out.
Losing access to your email is annoying. Losing access to your financial accounts because your email is locked is catastrophic.</p>
  </li>
  <li>
    <p>Targeted attacks after data leaks
Data breaches are inevitable. When an email address appears in enough leaks, attackers can infer:</p>

    <blockquote>
      <p>“This is probably the email used for important accounts.”</p>
    </blockquote>

    <p>I want attackers to not even <em>know</em> which email I use to authenticate money-related services, because they could leverage this in phishing emails.</p>
  </li>
</ol>

<h3 id="my-solution">My solution</h3>

<ul>
  <li>I own a custom domain</li>
  <li>I use a single, plain email address on that domain (no dots, or +wildcards)</li>
  <li>That address is only used for financial and identity-critical services</li>
</ul>

<p>Even though the email is currently hosted on Google, I can move it to another provider at any time without changing the email address itself. That means:</p>

<ul>
  <li>I keep control</li>
  <li>I avoid provider lock-in</li>
  <li>I can recover quickly if something goes wrong</li>
</ul>

<p>As a bonus, because this email is used so sparingly, if it ever shows up in a breach or spam list, I know exactly which service leaked it.</p>

<h2 id="2-a-cross-platform-password-manager-not-platform-lock-in">2. A Cross-Platform Password Manager (Not Platform Lock-In)</h2>

<p>The second pillar is a proper password manager. I personally use <a href="https://bitwarden.com/">Bitwarden</a>.</p>

<h3 id="why-a-password-manager-is-non-negotiable">Why a password manager is non-negotiable</h3>

<ul>
  <li>Every account gets a unique, long password</li>
  <li>
    <p>Passwords sync across:</p>

    <ul>
      <li>Firefox and Chrome</li>
      <li>macOS, Windows, iOS, Android</li>
    </ul>
  </li>
  <li>I am not tied to a single ecosystem</li>
</ul>

<p>I’ve watched friends switch phones or platforms and suddenly lose years of saved passwords because everything lived inside Apple Keychain or a browser profile. Recovering from that is painful and risky.</p>

<p>With a dedicated password manager:</p>

<ul>
  <li>Switching devices is trivial</li>
  <li>Losing a device is annoying, but not life-ending</li>
  <li>Compromised passwords can be rotated quickly</li>
</ul>

<p>Bitwarden also integrates breach monitoring, so I can see if any credentials associated with me appear in known leaks.</p>

<p>There are excellent paid options (like 1Password), but I deliberately keep my monthly subscriptions low. Bitwarden gives me what I need at zero cost.</p>

<h2 id="3-avoid-sms-otp-whenever-possible">3. Avoid SMS OTP Whenever Possible</h2>

<p>Passwords alone are not enough. Two-factor authentication (2FA) is critical, but how you do it matters.</p>

<h3 id="why-i-avoid-sms-based-otp">Why I avoid SMS-based OTP</h3>

<p>SMS authentication fails in the real world:</p>

<ul>
  <li>Phone numbers change</li>
  <li>SIM cards get lost</li>
  <li>Messages don’t arrive while traveling</li>
  <li>Accounts often outlive phone numbers</li>
</ul>

<p>Your bank account should not depend on whether you currently have reception in a foreign country.</p>

<h3 id="what-i-use-instead">What I use instead</h3>

<ol>
  <li>
    <p>App-based authenticators whenever possible</p>

    <ul>
      <li>Google Authenticator (or equivalent)</li>
      <li>Works offline</li>
      <li>Not tied to a phone number</li>
    </ul>
  </li>
  <li>
    <p>Google Voice as a fallback</p>

    <ul>
      <li>Used only when SMS OTP is unavoidable</li>
      <li>Works internationally</li>
      <li>Reliable ~95–99% of the time</li>
    </ul>
  </li>
</ol>

<p>In rare cases where neither option works, I fall back to my long-term U.S. phone number, but I treat that as a last resort because it’s expensive and fragile while traveling.</p>

<h2 id="4-designing-for-loss-and-failure-because-it-will-happen">4. Designing for Loss and Failure (Because It Will Happen)</h2>

<p>A core principle of my setup is assuming that bad things will eventually happen:</p>

<ul>
  <li>A phone gets stolen</li>
  <li>A laptop disappears</li>
  <li>An email provider locks an account</li>
  <li>A service gets breached</li>
</ul>

<p>The question is not <em>if</em>, but <em>how disruptive it is when it happens</em>.</p>

<p>This system minimizes blast radius:</p>

<ul>
  <li>Losing a device does not expose passwords</li>
  <li>Losing a phone number does not lock me out</li>
  <li>Losing an email provider does not strand my accounts</li>
  <li>A single breach does not compromise everything</li>
</ul>

<p>Security should reduce stress, not add to it.</p>

<h2 id="final-thoughts">Final Thoughts</h2>

<p>I didn’t arrive at this setup by reading blogs. I arrived at it through experience.</p>

<p>I’ve traveled to over 60 countries. In that time, I’ve seen a lot and I’ve had my share of things go wrong. I’ve been mugged twice. My phone has been stolen three times. Sometimes it was taken straight out of my pocket. Other times it was snatched directly from my hand.</p>

<p>What surprised me most wasn’t how fast it happened, I always knew within a few seconds that my phone was gone, but how inevitable it felt once it did. The people who do this are very good at it. Once the phone is in their hands, it’s gone. There’s no chasing it down, no heroic recovery story.</p>

<p>That reality fundamentally shapes how I think about security.</p>

<p>Losing a phone already sucks. Losing access to your money, your identity, or your accounts on top of that is far worse. I don’t want my financial life to be fragile—dependent on a single device, a single phone number, or a single company’s fraud system making the right decision at the right time.</p>

<p>Fortunately, despite all of that travel and all of those incidents, I’ve never had a serious account security issue. I’ve never had my finances compromised. I’ve never been locked out of critical accounts at the worst possible moment. And I’d like to keep it that way.</p>

<p>Good personal security isn’t about paranoia. It’s about designing your digital life so that when something goes wrong—and eventually, something will—it’s an inconvenience, not a disaster.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Below is a clean, structured rewrite suitable for a blog post. I’ve preserved your intent, simplified the narrative, and tightened the logic so it reads as practical guidance rather than a personal rant, while still grounding it in real experience.]]></summary></entry><entry><title type="html">The Tech Industry After the Gold Rush</title><link href="https://www.kcoleman.me/2025/12/27/software-jobs.html" rel="alternate" type="text/html" title="The Tech Industry After the Gold Rush" /><published>2025-12-27T05:49:55+00:00</published><updated>2025-12-27T05:49:55+00:00</updated><id>https://www.kcoleman.me/2025/12/27/software-jobs</id><content type="html" xml:base="https://www.kcoleman.me/2025/12/27/software-jobs.html"><![CDATA[<p>Over the last year, I’ve found myself increasingly jaded about the tech industry.</p>

<p>Back when I was in high school (2004-2007) and college (2007-2011), the “uncool” kids hung out in the computer lab, experimenting with computers while the cool kids focused on developing skills in sports, music, debate, or just hanging out.</p>

<p>In my 2007 class of about 140 students, I didn’t really have a clique to hang out with, so I spent most of my breaks and lunches in the computer lab, learning how to write programs, break the school’s firewall, and even remotely shut down my bully’s computers before auto-save became a thing… [0]</p>

<p>In engineering college, the CS students were kind of the weird kids, even among the engineers.</p>

<hr />

<p>This low supply of talent, constrained by how uncool computers were, resulted in decades of cushy, high-paying, low-stress, high job security [0], with double-digit annual salary increases and the confidence that even if my current job didn’t work out, I could respond to the five recruiters who cold-emailed me this week asking for an interview.</p>

<p>I remember looking around the room in college (and in my 20s), confused about why more women weren’t interested in tech. The jobs pay very well and offer a lot of flexibility in all the ways you’d want it (easy to find a new job if you’re not happy at your current one, unlimited PTO, flexible schedules, etc.).</p>

<p>It’s always been my dream to start my own startup. I’ve made a few attempts during that time, but nothing was ever as successful as my career working for others.</p>

<p>But in 2022, the world has changed.</p>

<p>Not because technology is unimportant or humans are replaced with AI. Software, data, and infrastructure will continue to shape the global economy. But the career dynamics that made tech uniquely attractive between roughly 2010 and 2021 have changed in fundamental ways.</p>

<p>There is a popular narrative that AI will “replace tech workers.” I don’t agree with that framing.</p>

<p>AI is a productivity multiplier. It changes how work is done, not whether the work exists at all. Skilled engineers who understand systems, trade-offs, and real-world constraints are still necessary—and will be for the foreseeable future.</p>

<p>The larger issue I see in my own career is simpler and more uncomfortable:</p>

<p>Too many people have become software engineers, and job growth has slowed.</p>

<p>The world is flatter: in 2010, for an Indian, Vietnamese, or Chinese person to learn programming, they first needed to learn English before they could write their first line of code. Now, coding education exists in so many languages that there are tons of highly talented engineers who don’t know English.</p>

<h2 id="when-supply-outruns-demand">When Supply Outruns Demand</h2>

<p>For a long time, software engineering was not considered a “cool” career. Before 2015, it attracted a relatively small group of people. As a result, demand vastly exceeded supply, and salaries rose rapidly.</p>

<p>After 2015, that changed.</p>

<p>Coding became aspirational. Universities expanded computer science programs. Bootcamps exploded. Online influencers promised six-figure salaries in months. In the COVID years (2020-2022), online influencers bragged about their WFH six-figure jobs (where the H in WFH meant “home”), and the number of graduates more than doubled in a decade.</p>

<p>At the same time, the tech industry’s growth rate slowed.</p>

<p>The result is a collapse in the entry-level job market and a painful experience for more senior talent and H-1B visa holders.</p>

<h2 id="a-useful-comparison-english-teaching-in-vietnam">A Useful Comparison: English Teaching in Vietnam</h2>

<p>A relatable example is the English-teaching market in Vietnam.</p>

<p>From around 2010 to 2019, English teaching was extraordinarily lucrative for Westerners. Demand was high, supply was limited, and so quality standards dropped to meet the low supply. Many schools hired teachers with no degrees, no experience, and sometimes not even native-level English—so long as they “looked Western.”</p>

<p>That era ended in 2019.</p>

<p>Demand for English education is still strong, but supply has exploded:</p>

<ul>
  <li>Vietnamese teachers can now teach English effectively.</li>
  <li>Filipino teachers have excellent English at much lower wages.</li>
  <li>Many foreigners accept lower pay because the salary and Vietnamese lifestyle still exceed what they have back home.</li>
</ul>

<p>The job still exists, but the power dynamics have changed.</p>

<p>Tech is experiencing the same shift.</p>

<h2 id="globalization-changes-the-equation">Globalization Changes the Equation</h2>

<p>Most of my observations apply to the U.S. job market, where competition has intensified significantly.</p>

<p>However, this is not universally bad news.</p>

<p>Western companies will continue to move work to lower-cost regions. In Southeast Asia, Eastern Europe, and parts of Latin America, tech job markets are still growing.</p>

<p>This creates an important nuance:</p>

<ul>
  <li>The market is harder for average engineers.</li>
  <li>Strong engineers still do well.</li>
  <li>Geographic flexibility matters more than ever.</li>
</ul>

<h2 id="why-tech-still-has-value">Why Tech Still Has Value</h2>

<p>Despite everything above, I still believe tech is a useful skill set, especially outside the U.S.</p>

<p>Two reasons stand out:</p>

<ul>
  <li>Transferability. Unlike professions such as law, pharmacy, or marketing (which are often tied to local regulation and language), engineering skills travel well across borders.</li>
  <li>Stacking advantages. Being great at English and good at coding is still a powerful combination in Vietnam and Southeast Asia.</li>
</ul>

<p>Tech may no longer be a guaranteed fast path to wealth—but it remains one of the most portable, flexible careers available.</p>

<h2 id="so-where-does-that-leave-us">So Where Does That Leave Us?</h2>

<p>The uncomfortable truth is that the tech industry is no longer in a gold-rush phase. It has matured.</p>

<p>That doesn’t mean people should avoid it. It means they should enter it with clear eyes:</p>

<ul>
  <li>Expect competition.</li>
  <li>Credentials and real skill are better than pure credentials or skill alone.</li>
  <li>Understand that stability and outsized pay are no longer automatic.</li>
</ul>

<p>And for those willing to adapt, there is still plenty of opportunity.</p>

<p>[0] - In college, I read news articles about teens being arrested for even more innocuous things than I did… So glad I didn’t get caught…</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Over the last year, I’ve found myself increasingly jaded about the tech industry.]]></summary></entry><entry><title type="html">2025’s Career and Hiring Trends</title><link href="https://www.kcoleman.me/2025/02/17/trends-2025.html" rel="alternate" type="text/html" title="2025’s Career and Hiring Trends" /><published>2025-02-17T05:49:55+00:00</published><updated>2025-02-17T05:49:55+00:00</updated><id>https://www.kcoleman.me/2025/02/17/trends-2025</id><content type="html" xml:base="https://www.kcoleman.me/2025/02/17/trends-2025.html"><![CDATA[<p>part 1.</p>

<p>As engineers enter 2025, I am noticing a few trends in the tech world career space as Engineering Manager at a regional tech giant and unfortunately, the future looks bleak for p50 engineers.</p>

<h1 id="lower-demand">Lower Demand</h1>

<h2 id="managers-are-incentivized-to-hire-in-low-cost-regions">Managers Are Incentivized to Hire in Low-Cost Regions</h2>

<p>Managers are measured by headcount. The number of people they oversee reflects the trust the organization places in them and the value it expects them to generate. Growing that number often translates directly to career advancement. It’s why a common interview question for management roles is: “How many people do you manage?”—followed closely by, “Do you manage other managers?”</p>

<p>When it comes to layoffs, managers and directors don’t want to cut staff. Their incentive is to maintain control over their organization and its influence within the company. But when finance orders a 5% reduction in headcount costs, directors have limited choices:</p>

<ul>
  <li>Lay off employees and rehire in lower-cost markets [0]</li>
  <li>Implement return-to-office (RTO) policies to drive attrition (canceling backfills)</li>
</ul>

<p>In 2023, Big Tech companies opted for layoffs with generous severance packages.</p>

<p>In 2024, they pushed RTO mandates and canceled remote positions.</p>

<p>In 2025, they cut deeply into “low performers” to avoid severance payouts.</p>

<p>As American workers are laid off, headcount shifts to abroad—evident in the continued surge of hiring in Bengaluru (<a href="https://timesofindia.indiatimes.com/city/bengaluru/bengalurus-remarkable-rise-in-10-charts/articleshow/115472957.cms">timesofindia.indiatimes.com</a>).</p>

<blockquote>
  <p>Bangalore remains at the forefront of India’s job market, boasting a 9.3% increase in job opportunities and salary growth compared to last year, as reported by TeamLease Services in its Jobs and Salaries Primer Report for FY 23-24.</p>
</blockquote>

<p><a href="https://www.peoplematters.in/article/talent-acquisition/bangalore-tops-indias-job-market-with-93-salary-growth-43171">Oct 2024, peoplematters.in</a></p>

<h2 id="cost-shift">Cost shift</h2>

<p>Startups and dev shops were once the launchpads for CS grads from non-traditional backgrounds. Experienced engineers flocked to big tech for higher pay, better work-life balance, and lower career risk.</p>

<p>With limited budgets, startups would hire fresh grads—university or coding bootcamp graduates—as low-cost, diamond-in-the-rough talent. After 2-4 years of experience, these engineers would often move to senior roles at big tech companies, doubling their pay and scope.</p>

<p>But today, fewer startups are getting funding, and many are more open to hiring internationally to stretch their budgets. This shift leads to…</p>

<h1 id="more-supply">More Supply</h1>

<p>The number of people who can code is growing at an unprecedented rate—fueled by formal education, bootcamps, and self-taught developers. This isn’t just a trend; it’s an economic shift.</p>

<h2 id="locally">Locally</h2>

<p>Coding bootcamps now graduate hundreds of thousands of students each year. Even if only 10% land jobs, that still adds tens of thousands of new developers competing in the market.</p>

<blockquote>
  <p>In 2015, fewer than 20,000 professionals attended coding bootcamps to improve or reskill. By 2021, that number had grown fivefold to 100,000. By 2025, it’s projected to reach 380,000. — HolonIQ</p>
</blockquote>

<p>Pop culture has also played a role. The Social Network appeared on over 70 critics’ top 10 lists (Wikipedia). The rise of YouTube coding influencers, Twitch live-coding streams, and viral TikToks about tech salaries has made programming more aspirational than ever.. Even viral trends like “How old are you, and how much do you make?” fuel interest in tech careers.</p>

<p>Meanwhile, the number of computer science graduates continues to rise. In 2021, U.S. universities produced over 100,000 CS graduates (NCES).</p>

<p>This shift doesn’t just affect those laid off—it also increases competition for those still in the job market.</p>

<blockquote>
  <p>The top 30 H-1B employers hired 34,000 new H-1B workers in 2022 while laying off at least 85,000 workers in 2022 and early 2023.
— EPI</p>
</blockquote>

<h2 id="internationally">Internationally</h2>

<p>Thomas Friedman once said, “The world is flat.” That remains true today. As access to technology and education spreads, the dominance of any one country in coding skills is rapidly eroding.</p>

<p>Fifteen years ago, if you lived in South America or Asia, learning to code meant first learning English and getting reliable access to a computer—barriers that put American kids five years ahead of the rest of the world. But in the last five years, that gap has shrunk dramatically.</p>

<ul>
  <li>Low-cost laptops are now widely available in developing countries.</li>
  <li>Online and in-person English classes make documentation more accessible.</li>
  <li>Free and paid coursework is available to anyone with an internet connection.</li>
</ul>

<p>Big Tech has also played a role. Companies hiring internationally don’t just fill positions—they train engineers who previously had little access to formal CS education.</p>

<p>When I traveled to Vietnam in 2016, I remember thinking how difficult it was to succeed as a coder there. Before even starting web development, you needed to learn English just to read the documentation for Twitter Bootstrap or Ruby on Rails.</p>

<p>Fast forward to 2025, and things look different. React documentation is now fully available in six languages, with partial translations in 32 more. With tools like ChatGPT, Google Translate, and YouTube, English proficiency is no longer a prerequisite for learning to code. At Grab, we’ve hired many talented engineers with limited English skills.</p>

<p>The global talent pool isn’t just growing—it’s leveling the playing field. A coder in São Paulo or Bangalore now has access to the same knowledge and opportunities as one in Silicon Valley. The future of tech isn’t just in the U.S.—it’s everywhere.</p>

<p>Part 2 will discuss the Data Science field.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[part 1. As engineers enter 2025, I am noticing a few trends in the tech world career space as Engineering Manager at a regional tech giant and unfortunately, the future looks bleak for p50 engineers. Lower Demand Managers Are Incentivized to Hire in Low-Cost Regions Managers are measured by headcount. The number of people they oversee reflects the trust the organization places in them and the value it expects them to generate. Growing that number often translates directly to career advancement. It’s why a common interview question for management roles is: “How many people do you manage?”—followed closely by, “Do you manage other managers?” When it comes to layoffs, managers and directors don’t want to cut staff. Their incentive is to maintain control over their organization and its influence within the company. But when finance orders a 5% reduction in headcount costs, directors have limited choices: Lay off employees and rehire in lower-cost markets [0] Implement return-to-office (RTO) policies to drive attrition (canceling backfills) In 2023, Big Tech companies opted for layoffs with generous severance packages. In 2024, they pushed RTO mandates and canceled remote positions. In 2025, they cut deeply into “low performers” to avoid severance payouts. As American workers are laid off, headcount shifts to abroad—evident in the continued surge of hiring in Bengaluru (timesofindia.indiatimes.com). Bangalore remains at the forefront of India’s job market, boasting a 9.3% increase in job opportunities and salary growth compared to last year, as reported by TeamLease Services in its Jobs and Salaries Primer Report for FY 23-24. Oct 2024, peoplematters.in Cost shift Startups and dev shops were once the launchpads for CS grads from non-traditional backgrounds. Experienced engineers flocked to big tech for higher pay, better work-life balance, and lower career risk. With limited budgets, startups would hire fresh grads—university or coding bootcamp graduates—as low-cost, diamond-in-the-rough talent. After 2-4 years of experience, these engineers would often move to senior roles at big tech companies, doubling their pay and scope. But today, fewer startups are getting funding, and many are more open to hiring internationally to stretch their budgets. This shift leads to… More Supply The number of people who can code is growing at an unprecedented rate—fueled by formal education, bootcamps, and self-taught developers. This isn’t just a trend; it’s an economic shift. Locally Coding bootcamps now graduate hundreds of thousands of students each year. Even if only 10% land jobs, that still adds tens of thousands of new developers competing in the market. In 2015, fewer than 20,000 professionals attended coding bootcamps to improve or reskill. By 2021, that number had grown fivefold to 100,000. By 2025, it’s projected to reach 380,000. — HolonIQ Pop culture has also played a role. The Social Network appeared on over 70 critics’ top 10 lists (Wikipedia). The rise of YouTube coding influencers, Twitch live-coding streams, and viral TikToks about tech salaries has made programming more aspirational than ever.. Even viral trends like “How old are you, and how much do you make?” fuel interest in tech careers. Meanwhile, the number of computer science graduates continues to rise. In 2021, U.S. universities produced over 100,000 CS graduates (NCES). This shift doesn’t just affect those laid off—it also increases competition for those still in the job market. The top 30 H-1B employers hired 34,000 new H-1B workers in 2022 while laying off at least 85,000 workers in 2022 and early 2023. — EPI Internationally Thomas Friedman once said, “The world is flat.” That remains true today. As access to technology and education spreads, the dominance of any one country in coding skills is rapidly eroding. Fifteen years ago, if you lived in South America or Asia, learning to code meant first learning English and getting reliable access to a computer—barriers that put American kids five years ahead of the rest of the world. But in the last five years, that gap has shrunk dramatically. Low-cost laptops are now widely available in developing countries. Online and in-person English classes make documentation more accessible. Free and paid coursework is available to anyone with an internet connection. Big Tech has also played a role. Companies hiring internationally don’t just fill positions—they train engineers who previously had little access to formal CS education. When I traveled to Vietnam in 2016, I remember thinking how difficult it was to succeed as a coder there. Before even starting web development, you needed to learn English just to read the documentation for Twitter Bootstrap or Ruby on Rails. Fast forward to 2025, and things look different. React documentation is now fully available in six languages, with partial translations in 32 more. With tools like ChatGPT, Google Translate, and YouTube, English proficiency is no longer a prerequisite for learning to code. At Grab, we’ve hired many talented engineers with limited English skills. The global talent pool isn’t just growing—it’s leveling the playing field. A coder in São Paulo or Bangalore now has access to the same knowledge and opportunities as one in Silicon Valley. The future of tech isn’t just in the U.S.—it’s everywhere. Part 2 will discuss the Data Science field.]]></summary></entry><entry><title type="html">2025’s Career and Hiring Trends - part 2</title><link href="https://www.kcoleman.me/2025/02/17/DS-trends.html" rel="alternate" type="text/html" title="2025’s Career and Hiring Trends - part 2" /><published>2025-02-17T05:49:55+00:00</published><updated>2025-02-17T05:49:55+00:00</updated><id>https://www.kcoleman.me/2025/02/17/DS-trends</id><content type="html" xml:base="https://www.kcoleman.me/2025/02/17/DS-trends.html"><![CDATA[<p>part 2 (last).</p>

<h1 id="upwinds-for-ds-jobs">Upwinds for DS Jobs</h1>

<h2 id="engineers-can-use-automl-to-create-models">Engineers can use AutoML to create models</h2>

<p>I was chatting with my friend Gregory Azuolas about what it really takes to train an ML model at Google. The company has gone all-in on automating ML training—not just by streamlining data pipelines and automating code deployments, but by eliminating much of the manual effort traditionally required to build models.</p>

<p>Google’s AutoML infrastructure allows engineers with no background in machine learning or data science to train classifiers across a wide range of data types and scales. This shift reduces the need for specialized ML engineers to fine-tune models manually.</p>

<p>Gregory acknowledged that AutoML models might not be the most efficient in terms of power consumption or latency. But in his view, the real cost in ML isn’t inference—it’s model creation. While companies will continue optimizing inference efficiency (see DeepSeek-R1), the number of jobs dedicated to this task is relatively small. The bigger trend is clear: the barrier to training ML models is getting lower, and the role of traditional ML engineers is evolving fast.</p>

<h2 id="engineers-can-user-llms-to-replace-models">Engineers can user LLMs to replace models</h2>

<p>If performance and cost isn’t super critical, engineers can just use an GPT-based model to perform their classification. Before ChatGPT, custom classifiers must be trained and retrained as the business / regulations change. But since ChatGPT can do everything and is ready to do everything, there is no need to spend weeks or months trying to design and train a custom model for each business cases.</p>

<p>Instead of a team of DS people outputting 1-2 models per month, 1 engineer can modify a prompt to chatgpt in days and now there is a now classification ready for production.</p>

<p>Once the AI has classified enough production data and inference costs (either dollar or latency) exceed budget, a custom model can easily be trained using automl by an engineer.</p>

<h2 id="data-cleaning-and-generation">Data cleaning and generation</h2>

<p>Historically, data scientists spent a significant portion of their time collecting, labeling, and cleaning data—often writing complex scripts to sanitize and validate datasets before they were ready for model training. But today, the bottleneck isn’t human effort; it’s inference time. Advances like DeepSeek and <a href="https://crfm.stanford.edu/2023/03/13/alpaca.html">Stanford’s Alpaca</a> have made major strides in leveraging inference for data generation and refinement.</p>

<p>As a result, each data scientist can accomplish more with fewer resources, reducing the overall demand for headcount.</p>

<p>[0] - Some people use the term “cheaper”, but I don’t think the talent should be considered cheap, b/c that has negative connotations of lower quality.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[part 2 (last). Upwinds for DS Jobs Engineers can use AutoML to create models I was chatting with my friend Gregory Azuolas about what it really takes to train an ML model at Google. The company has gone all-in on automating ML training—not just by streamlining data pipelines and automating code deployments, but by eliminating much of the manual effort traditionally required to build models. Google’s AutoML infrastructure allows engineers with no background in machine learning or data science to train classifiers across a wide range of data types and scales. This shift reduces the need for specialized ML engineers to fine-tune models manually. Gregory acknowledged that AutoML models might not be the most efficient in terms of power consumption or latency. But in his view, the real cost in ML isn’t inference—it’s model creation. While companies will continue optimizing inference efficiency (see DeepSeek-R1), the number of jobs dedicated to this task is relatively small. The bigger trend is clear: the barrier to training ML models is getting lower, and the role of traditional ML engineers is evolving fast. Engineers can user LLMs to replace models If performance and cost isn’t super critical, engineers can just use an GPT-based model to perform their classification. Before ChatGPT, custom classifiers must be trained and retrained as the business / regulations change. But since ChatGPT can do everything and is ready to do everything, there is no need to spend weeks or months trying to design and train a custom model for each business cases. Instead of a team of DS people outputting 1-2 models per month, 1 engineer can modify a prompt to chatgpt in days and now there is a now classification ready for production. Once the AI has classified enough production data and inference costs (either dollar or latency) exceed budget, a custom model can easily be trained using automl by an engineer. Data cleaning and generation Historically, data scientists spent a significant portion of their time collecting, labeling, and cleaning data—often writing complex scripts to sanitize and validate datasets before they were ready for model training. But today, the bottleneck isn’t human effort; it’s inference time. Advances like DeepSeek and Stanford’s Alpaca have made major strides in leveraging inference for data generation and refinement. As a result, each data scientist can accomplish more with fewer resources, reducing the overall demand for headcount. [0] - Some people use the term “cheaper”, but I don’t think the talent should be considered cheap, b/c that has negative connotations of lower quality.]]></summary></entry><entry><title type="html">Quick guide on advertising mobile app from an ex-Yelp ads engineer</title><link href="https://www.kcoleman.me/2025/01/25/apple-ads.html" rel="alternate" type="text/html" title="Quick guide on advertising mobile app from an ex-Yelp ads engineer" /><published>2025-01-25T05:49:55+00:00</published><updated>2025-01-25T05:49:55+00:00</updated><id>https://www.kcoleman.me/2025/01/25/apple-ads</id><content type="html" xml:base="https://www.kcoleman.me/2025/01/25/apple-ads.html"><![CDATA[<blockquote>
  <p>TL;DR: Stick to Apple’s “Basic” ads version for most scenarios.</p>
</blockquote>

<p>Advertising a mobile app can feel overwhelming, especially for indie developers with limited budgets. With Apple offering two ad account types—Basic and Advanced—it’s tempting to believe that more control means better results. After all, who knows your app’s audience better than you? However, as someone who’s worked on ad optimization at Yelp, I’ve seen firsthand how trying to micromanage ad campaigns can lead to wasted money and frustration. The truth is, Apple’s Basic Ads are designed to do the heavy lifting for you, delivering cost-effective results with minimal effort. This guide explains why starting with Basic Ads is often the smartest choice and when (if ever) you should consider upgrading to Advanced.</p>

<blockquote>
  <p>Basic: Apple handles everything for you, optimizing for the lowest cost-per-install.
Advanced: You gain control over keyword targeting but risk inefficiency.</p>
</blockquote>

<p>Apple offers two advertising account types for app developers: Basic and Advanced, each tailored to different needs. The Basic account is built for simplicity and efficiency, with Apple managing everything from ad placement to targeting. Their advanced algorithms deliver ads to users most likely to install your app, maximizing your budget with minimal effort. This hands-off approach is ideal for indie developers or newcomers to app advertising, as it focuses entirely on cost-per-install efficiency. Simply set your budget, and Apple handles the rest.</p>

<p>In contrast, the Advanced account provides more control but introduces complexity and risk. It lets you target specific keywords, define audience demographics, and set manual bids for placements. This customization is valuable for niche apps or products with unique targeting needs. However, it demands expertise and constant monitoring to avoid costly inefficiencies. Poorly optimized campaigns can quickly burn through your budget, making Advanced accounts risky for those without a clear strategy.</p>

<p>Apple’s Basic Ads outperform Advanced Ads for most indie developers by leveraging Apple’s unmatched optimization capabilities. Instead of micromanaging keywords or bids, Basic Ads automate the process to find users most likely to install your app at the lowest cost. Apple’s vested interest in your success ensures their ads prioritize cost-effective results. By minimizing your workload and costs, Basic Ads offer a reliable way to grow your app without requiring deep marketing expertise.</p>

<p>Advanced Ads may be worth considering in specific cases where Basic Ads fail to reach key audiences. If your app serves a niche market or requires a particular demographic for success, Advanced Ads allow you to fine-tune targeting and allocate budgets toward high-value users. However, transitioning to Advanced Ads requires data from Basic Ads to understand user behavior and cost-per-install trends. Without this foundation, you risk inefficiency and wasted resources. If you choose Advanced Ads, start with a small test budget and refine your strategy gradually.</p>

<p>For indie developers, Apple’s Basic Ads offer a perfect balance of simplicity, efficiency, and effectiveness. They free you from the complexities of manual targeting and ensure optimal ad spend. While Advanced Ads provide more control, their risks and required expertise often outweigh their benefits. By starting with Basic Ads, you can collect valuable insights, optimize your campaigns, and scale your user base without unnecessary stress or expense. Keep it simple, trust Apple’s optimization, and focus on growing your app efficiently.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[TL;DR: Stick to Apple’s “Basic” ads version for most scenarios. Advertising a mobile app can feel overwhelming, especially for indie developers with limited budgets. With Apple offering two ad account types—Basic and Advanced—it’s tempting to believe that more control means better results. After all, who knows your app’s audience better than you? However, as someone who’s worked on ad optimization at Yelp, I’ve seen firsthand how trying to micromanage ad campaigns can lead to wasted money and frustration. The truth is, Apple’s Basic Ads are designed to do the heavy lifting for you, delivering cost-effective results with minimal effort. This guide explains why starting with Basic Ads is often the smartest choice and when (if ever) you should consider upgrading to Advanced. Basic: Apple handles everything for you, optimizing for the lowest cost-per-install. Advanced: You gain control over keyword targeting but risk inefficiency. Apple offers two advertising account types for app developers: Basic and Advanced, each tailored to different needs. The Basic account is built for simplicity and efficiency, with Apple managing everything from ad placement to targeting. Their advanced algorithms deliver ads to users most likely to install your app, maximizing your budget with minimal effort. This hands-off approach is ideal for indie developers or newcomers to app advertising, as it focuses entirely on cost-per-install efficiency. Simply set your budget, and Apple handles the rest. In contrast, the Advanced account provides more control but introduces complexity and risk. It lets you target specific keywords, define audience demographics, and set manual bids for placements. This customization is valuable for niche apps or products with unique targeting needs. However, it demands expertise and constant monitoring to avoid costly inefficiencies. Poorly optimized campaigns can quickly burn through your budget, making Advanced accounts risky for those without a clear strategy. Apple’s Basic Ads outperform Advanced Ads for most indie developers by leveraging Apple’s unmatched optimization capabilities. Instead of micromanaging keywords or bids, Basic Ads automate the process to find users most likely to install your app at the lowest cost. Apple’s vested interest in your success ensures their ads prioritize cost-effective results. By minimizing your workload and costs, Basic Ads offer a reliable way to grow your app without requiring deep marketing expertise. Advanced Ads may be worth considering in specific cases where Basic Ads fail to reach key audiences. If your app serves a niche market or requires a particular demographic for success, Advanced Ads allow you to fine-tune targeting and allocate budgets toward high-value users. However, transitioning to Advanced Ads requires data from Basic Ads to understand user behavior and cost-per-install trends. Without this foundation, you risk inefficiency and wasted resources. If you choose Advanced Ads, start with a small test budget and refine your strategy gradually. For indie developers, Apple’s Basic Ads offer a perfect balance of simplicity, efficiency, and effectiveness. They free you from the complexities of manual targeting and ensure optimal ad spend. While Advanced Ads provide more control, their risks and required expertise often outweigh their benefits. By starting with Basic Ads, you can collect valuable insights, optimize your campaigns, and scale your user base without unnecessary stress or expense. Keep it simple, trust Apple’s optimization, and focus on growing your app efficiently.]]></summary></entry><entry><title type="html">At-will employment</title><link href="https://www.kcoleman.me/2024/10/31/at-will.html" rel="alternate" type="text/html" title="At-will employment" /><published>2024-10-31T05:49:55+00:00</published><updated>2024-10-31T05:49:55+00:00</updated><id>https://www.kcoleman.me/2024/10/31/at-will</id><content type="html" xml:base="https://www.kcoleman.me/2024/10/31/at-will.html"><![CDATA[<p>Before I joined Grab, USA’s <a href="https://legal.thomsonreuters.com/en/insights/articles/what-is-at-will-employment">At-will employment system</a> left me uncomfortable. When I was impacted by layoffs, I simultaneously balanced the emotional disruption of establishing a new identity (“I was no longer Kevin that works at ___”, but “fUnemployed Kevin”) and the need to re-evaluate my finances and healthcare. A 30-day or 60-day notice would have given me a softer landing while I rebuild myself. But my experiences as a hiring manager at an international company shift my perspective on what is actually best for the employee (and the employer).</p>

<p>As a hiring manager, I’ve hired and said good-bye to co-workers and directs from India, Malaysia, and the USA countries in contract employment and at-will roles.</p>

<h1 id="at-will-in-the-usa">At-will in the USA</h1>

<p><img src="/images/at-will.png" title="My productivity as I changed jobs in the USA" alt="graph" class="banner-img" /></p>

<p>In late 2020, I wanted to leave Yelp as soon as possible. When I got a job offer from Grab, I provided Yelp the standard 2 weeks notice, last day being Friday and then Grab started me the following Monday. This rapid change had perfect timing, because my new-hire grant was priced about 40% below our IPO price a year later. Coworkers that joined during the pre-ipo period (7 months after I did) had their shares valued at ~$10 IPO price (currently trading at $4.10/ea). Most of the time, Start your vesting as soon as possible is the best strategy.</p>

<h1 id="contracted-termination-in-singapore">Contracted termination in Singapore</h1>

<p><img src="/images/contract.png" title="Contract employment productivity" alt="graph" class="banner-img" /></p>

<p>When I got my first big project at Grab, I was assigned a product manager that halfway through the project put in her 60 day notice to leave Grab. During those 60 days, you’re expected to perform your full job duties until the day you leave. Because the project was scheduled to end 2 weeks before her last day, her manager didn’t bother transitioning her responsibilities to another person. Unfortunately for me, she was visibly disengaged with her work. I wasn’t able to get the answers I needed at the rate I needed them, and thus couldn’t deliver the project on time. She effectively had 2 months of part-time labor for full time pay with her coworkers paying the price with their own careers.</p>

<h1 id="hiring-in-india">Hiring in India</h1>

<p>A coworker give a 60 day notice to leave the company. He stayed engaged until his last week, which everyone appreciated, but hiring a backfill was a hot mess. I don’t know if internal bookkeeping delayed searching for a backfill, but it wasn’t 2 months after he left did we find a replacement. Unfortunately, this replacement also had a 60 day notice they needed to give their current employer. Our group made due with a hole in our group for 4 months (2 months hiring + 2 months waiting for them to join + 1.5 months of training). 10 days before their start date, the new hire messaged the company saying their current employer gave them a raise once they saw Grab’s offer and would not be joining. With the role being potentially vacant for an additional 4 months, the manager ended up just losing the headcount.</p>

<h1 id="hiring-in-malaysia">Hiring in Malaysia</h1>

<p>A team member in India informed me they wanted to leave the company and put in their 60 day notice. I negotiated with People Operations and my manager to terminate him immediately (but keep him on payroll for 60 days to meet the contract obligations). After my experience with the lady in Singapore, I thought a visible hole on my team would be less painful than trying to get someone that doesn’t want to be here to complete their work. I communicated to other teams that we didn’t have the bandwidth to deliver on our project commitments because he was gone.</p>

<p>I opted to backfill the role in Malaysia, for various reasons. After 2 months of interviewing, we found a great candidate. Unfortunately, this person also had a 2 month contract that they needed to complete, resulting in a 5 month hole on my team between one person leaving and another person coming in.</p>

<h1 id="hire-and-fire">Hire and Fire</h1>

<p>With contract employment, there is a probation period ranging from 3-6 months. During this time, the employment is practically “at-will” where the employer can terminate an employee instantly without the 60 day notice period. This system incentives companies with teams of many redundant employees (for example call centers) to “hire and fire” during that period if anything smells wrong, because if they just wait 1 day, they could be stuck with an underperformer for months.</p>

<p>As difficult as at-will employment might feel sometimes, it is much more efficient for the employee and the employer if they are able to leave the job when they want to leave the job. Employees maximize their engagement (and career growth) if they are able to shift onto their next chapter faster and employers can better manage</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Before I joined Grab, USA’s At-will employment system left me uncomfortable. When I was impacted by layoffs, I simultaneously balanced the emotional disruption of establishing a new identity (“I was no longer Kevin that works at ___”, but “fUnemployed Kevin”) and the need to re-evaluate my finances and healthcare. A 30-day or 60-day notice would have given me a softer landing while I rebuild myself. But my experiences as a hiring manager at an international company shift my perspective on what is actually best for the employee (and the employer). As a hiring manager, I’ve hired and said good-bye to co-workers and directs from India, Malaysia, and the USA countries in contract employment and at-will roles. At-will in the USA In late 2020, I wanted to leave Yelp as soon as possible. When I got a job offer from Grab, I provided Yelp the standard 2 weeks notice, last day being Friday and then Grab started me the following Monday. This rapid change had perfect timing, because my new-hire grant was priced about 40% below our IPO price a year later. Coworkers that joined during the pre-ipo period (7 months after I did) had their shares valued at ~$10 IPO price (currently trading at $4.10/ea). Most of the time, Start your vesting as soon as possible is the best strategy. Contracted termination in Singapore When I got my first big project at Grab, I was assigned a product manager that halfway through the project put in her 60 day notice to leave Grab. During those 60 days, you’re expected to perform your full job duties until the day you leave. Because the project was scheduled to end 2 weeks before her last day, her manager didn’t bother transitioning her responsibilities to another person. Unfortunately for me, she was visibly disengaged with her work. I wasn’t able to get the answers I needed at the rate I needed them, and thus couldn’t deliver the project on time. She effectively had 2 months of part-time labor for full time pay with her coworkers paying the price with their own careers. Hiring in India A coworker give a 60 day notice to leave the company. He stayed engaged until his last week, which everyone appreciated, but hiring a backfill was a hot mess. I don’t know if internal bookkeeping delayed searching for a backfill, but it wasn’t 2 months after he left did we find a replacement. Unfortunately, this replacement also had a 60 day notice they needed to give their current employer. Our group made due with a hole in our group for 4 months (2 months hiring + 2 months waiting for them to join + 1.5 months of training). 10 days before their start date, the new hire messaged the company saying their current employer gave them a raise once they saw Grab’s offer and would not be joining. With the role being potentially vacant for an additional 4 months, the manager ended up just losing the headcount. Hiring in Malaysia A team member in India informed me they wanted to leave the company and put in their 60 day notice. I negotiated with People Operations and my manager to terminate him immediately (but keep him on payroll for 60 days to meet the contract obligations). After my experience with the lady in Singapore, I thought a visible hole on my team would be less painful than trying to get someone that doesn’t want to be here to complete their work. I communicated to other teams that we didn’t have the bandwidth to deliver on our project commitments because he was gone. I opted to backfill the role in Malaysia, for various reasons. After 2 months of interviewing, we found a great candidate. Unfortunately, this person also had a 2 month contract that they needed to complete, resulting in a 5 month hole on my team between one person leaving and another person coming in. Hire and Fire With contract employment, there is a probation period ranging from 3-6 months. During this time, the employment is practically “at-will” where the employer can terminate an employee instantly without the 60 day notice period. This system incentives companies with teams of many redundant employees (for example call centers) to “hire and fire” during that period if anything smells wrong, because if they just wait 1 day, they could be stuck with an underperformer for months. As difficult as at-will employment might feel sometimes, it is much more efficient for the employee and the employer if they are able to leave the job when they want to leave the job. Employees maximize their engagement (and career growth) if they are able to shift onto their next chapter faster and employers can better manage]]></summary></entry></feed>