<!DOCTYPE html>
<html lang="en">
<head>

    <title>Zumi Studios</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
    <link rel="preload" as="style" href="/assets/built/screen.css?v=8a8997ca44">
    <link rel="preload" as="script" href="/assets/built/source.js?v=8a8997ca44">
    
    <link rel="preload" as="font" type="font/woff2" href="/assets/fonts/inter-roman.woff2?v=8a8997ca44" crossorigin="anonymous">
<style>
    @font-face {
        font-family: "Inter";
        font-style: normal;
        font-weight: 100 900;
        font-display: optional;
        src: url(/assets/fonts/inter-roman.woff2?v=8a8997ca44) format("woff2");
        unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
    }
</style>

    <link rel="stylesheet" type="text/css" href="/assets/built/screen.css?v=8a8997ca44">

    <style>
        :root {
            --background-color: #ffffff
        }
    </style>

    <script>
        /* The script for calculating the color contrast has been taken from
        https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
        var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
        accentColor = accentColor.trim().slice(1);

        if (accentColor.length === 3) {
            accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
        }

        var r = parseInt(accentColor.substr(0, 2), 16);
        var g = parseInt(accentColor.substr(2, 2), 16);
        var b = parseInt(accentColor.substr(4, 2), 16);
        var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
        var textColor = (yiq >= 128) ? 'dark' : 'light';

        document.documentElement.className = `has-${textColor}-text`;
    </script>

    <meta name="description" content="App development, thoughts, and ideas. Creator of Hazumi for Hacker News and Metafast API.">
    <link rel="icon" href="https://www.zumistudios.com/content/images/size/w256h256/2024/12/zumistudios-letter-jaunt-dark@3x.png" type="image/png">
    <link rel="canonical" href="https://www.zumistudios.com/">
    <meta name="referrer" content="no-referrer-when-downgrade">
    
    <meta property="og:site_name" content="Zumi Studios">
    <meta property="og:type" content="website">
    <meta property="og:title" content="Zumi Studios">
    <meta property="og:description" content="App development, thoughts, and ideas. Creator of Hazumi for Hacker News and Metafast API.">
    <meta property="og:url" content="https://www.zumistudios.com/">
    <meta property="article:publisher" content="https://www.facebook.com/ghost">
    <meta name="twitter:card" content="summary">
    <meta name="twitter:title" content="Zumi Studios">
    <meta name="twitter:description" content="App development, thoughts, and ideas. Creator of Hazumi for Hacker News and Metafast API.">
    <meta name="twitter:url" content="https://www.zumistudios.com/">
    <meta name="twitter:site" content="@ghost">
    
    <script type="application/ld+json">
{
    "@context": "https://schema.org",
    "@type": "WebSite",
    "publisher": {
        "@type": "Organization",
        "name": "Zumi Studios",
        "url": "https://www.zumistudios.com/",
        "logo": {
            "@type": "ImageObject",
            "url": "https://www.zumistudios.com/content/images/2024/12/zumi-studios-logo.svg"
        }
    },
    "url": "https://www.zumistudios.com/",
    "name": "Zumi Studios",
    "mainEntityOfPage": "https://www.zumistudios.com/",
    "description": "App development, thoughts, and ideas. Creator of Hazumi for Hacker News and Metafast API."
}
    </script>

    <meta name="generator" content="Ghost 5.105">
    <link rel="alternate" type="application/rss+xml" title="Zumi Studios" href="https://www.zumistudios.com/rss/">
    
    <script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/sodo-search.min.js" data-key="d87353ef3c34b96bebf5bc658c" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/main.css" data-sodo-search="https://www.zumistudios.com/" data-locale="en" crossorigin="anonymous"></script>
    
    <link href="https://www.zumistudios.com/webmentions/receive/" rel="webmention">
    <script defer src="/public/cards.min.js?v=8a8997ca44"></script><style>:root {--ghost-accent-color: #FF1A75;}</style>
    <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=8a8997ca44">
    <script defer data-domain="zumistudios.com" src="https://plausible.io/js/script.outbound-links.tagged-events.js"></script>
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
<style>
  .gh-footer-copyright {
    display: none;
  }
</style>

    <link rel="preconnect" href="https://fonts.bunny.net"><link rel="stylesheet" href="https://fonts.bunny.net/css?family=inter:400,500,600"><style>:root {--gh-font-heading: Inter;--gh-font-body: Inter;}</style>

</head>
<body class="home-template gh-font-heading-inter gh-font-body-inter has-sans-title has-sans-body">

<div class="gh-viewport">
    
    <header id="gh-navigation" class="gh-navigation is-stacked gh-outer">
    <div class="gh-navigation-inner gh-inner">

        <div class="gh-navigation-brand">
            <a class="gh-navigation-logo is-title" href="https://www.zumistudios.com">
                    <img src="https://www.zumistudios.com/content/images/2024/12/zumi-studios-logo.svg" alt="Zumi Studios">
            </a>
            <button class="gh-search gh-icon-button" aria-label="Search this site" data-ghost-search>
    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>            <button class="gh-burger gh-icon-button" aria-label="Menu">
                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 256 256"><path d="M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z"></path></svg>                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 256 256"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"></path></svg>            </button>
        </div>

        <nav class="gh-navigation-menu">
            <ul class="nav">
    <li class="nav-blog nav-current"><a href="https://www.zumistudios.com/">Blog</a></li>
    <li class="nav-bullet-memo"><a href="https://www.zumistudios.com/bullet-memo-fast-tasks-clear-focus/">Bullet Memo</a></li>
    <li class="nav-metafast-api"><a href="https://www.zumistudios.com/metafast/">Metafast API</a></li>
    <li class="nav-hazumi-for-hacker-news"><a href="https://www.zumistudios.com/hazumi-news/">Hazumi for Hacker News</a></li>
</ul>

                    <button class="gh-search gh-icon-button" aria-label="Search this site" data-ghost-search>
    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button>        </nav>

        <div class="gh-navigation-actions">
        </div>

    </div>
</header>

    

    

    


<section class="gh-container is-list has-sidebar gh-outer">
    <div class="gh-container-inner gh-inner">
        
            <h2 class="gh-container-title">
                Latest
            </h2>

        <main class="gh-main">
            <div class="gh-feed">

                                <article class="gh-card post">
    <a class="gh-card-link" href="/back-to-rails-from-golang/">
            <figure class="gh-card-image">
                <img
                    srcset="https://images.unsplash.com/photo-1574169208507-84376144848b?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxhYnN0cmFjdHxlbnwwfHx8fDE3MzU2MDMyMjF8MA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;160 160w,
                            https://images.unsplash.com/photo-1574169208507-84376144848b?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxhYnN0cmFjdHxlbnwwfHx8fDE3MzU2MDMyMjF8MA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;320 320w,
                            https://images.unsplash.com/photo-1574169208507-84376144848b?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxhYnN0cmFjdHxlbnwwfHx8fDE3MzU2MDMyMjF8MA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;600 600w,
                            https://images.unsplash.com/photo-1574169208507-84376144848b?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxhYnN0cmFjdHxlbnwwfHx8fDE3MzU2MDMyMjF8MA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;960 960w,
                            https://images.unsplash.com/photo-1574169208507-84376144848b?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxhYnN0cmFjdHxlbnwwfHx8fDE3MzU2MDMyMjF8MA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;1200 1200w,
                            https://images.unsplash.com/photo-1574169208507-84376144848b?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxhYnN0cmFjdHxlbnwwfHx8fDE3MzU2MDMyMjF8MA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000 2000w"
                    sizes="320px"
                    src="https://images.unsplash.com/photo-1574169208507-84376144848b?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxhYnN0cmFjdHxlbnwwfHx8fDE3MzU2MDMyMjF8MA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;600"
                    alt="Back to Rails from Golang"
                    loading="lazy"
                >
            </figure>
        <div class="gh-card-wrapper">
            <h3 class="gh-card-title is-title">Back to Rails from Golang</h3>
                <p class="gh-card-excerpt is-body">I’ve been a Ruby developer for over 10 years. The only other language I’ve properly adopted is Swift. The bulk of which I learned while developing my iOS app Hazumi News, with Ruby on Rails on the backend.</p>
            <footer class="gh-card-meta">
<!--
             -->
                    <span class="gh-card-author">By James O&#x27;Reilly</span>
                    <time class="gh-card-date" datetime="2024-12-31">31 Dec 2024</time>
                <!--
         --></footer>
        </div>
    </a>
</article>
                                <article class="gh-card post">
    <a class="gh-card-link" href="/slack-with-care/">
            <figure class="gh-card-image">
                <img
                    srcset="https://images.unsplash.com/photo-1533158326339-7f3cf2404354?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDN8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;160 160w,
                            https://images.unsplash.com/photo-1533158326339-7f3cf2404354?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDN8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;320 320w,
                            https://images.unsplash.com/photo-1533158326339-7f3cf2404354?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDN8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;600 600w,
                            https://images.unsplash.com/photo-1533158326339-7f3cf2404354?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDN8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;960 960w,
                            https://images.unsplash.com/photo-1533158326339-7f3cf2404354?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDN8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;1200 1200w,
                            https://images.unsplash.com/photo-1533158326339-7f3cf2404354?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDN8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000 2000w"
                    sizes="320px"
                    src="https://images.unsplash.com/photo-1533158326339-7f3cf2404354?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDN8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;600"
                    alt="Slack With Care"
                    loading="lazy"
                >
            </figure>
        <div class="gh-card-wrapper">
            <h3 class="gh-card-title is-title">Slack With Care</h3>
                <p class="gh-card-excerpt is-body">At work, when we can’t find an answer ourselves, we ask questions on Slack because it’s convenient. We believe the audience has the answer. The asker reaps the benefit while the person who answered gets distracted.</p>
            <footer class="gh-card-meta">
<!--
             -->
                    <span class="gh-card-author">By James O&#x27;Reilly</span>
                    <time class="gh-card-date" datetime="2024-12-31">31 Dec 2024</time>
                <!--
         --></footer>
        </div>
    </a>
</article>
                                <article class="gh-card post">
    <a class="gh-card-link" href="/programmers-cant-use-just-any-software/">
            <figure class="gh-card-image">
                <img
                    srcset="https://images.unsplash.com/photo-1528459801416-a9e53bbf4e17?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;160 160w,
                            https://images.unsplash.com/photo-1528459801416-a9e53bbf4e17?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;320 320w,
                            https://images.unsplash.com/photo-1528459801416-a9e53bbf4e17?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;600 600w,
                            https://images.unsplash.com/photo-1528459801416-a9e53bbf4e17?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;960 960w,
                            https://images.unsplash.com/photo-1528459801416-a9e53bbf4e17?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;1200 1200w,
                            https://images.unsplash.com/photo-1528459801416-a9e53bbf4e17?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;webp&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000 2000w"
                    sizes="320px"
                    src="https://images.unsplash.com/photo-1528459801416-a9e53bbf4e17?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGFic3RyYWN0fGVufDB8fHx8MTczNTYwMzIyMXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;600"
                    alt="Programmers Can’t Use Just Any Software"
                    loading="lazy"
                >
            </figure>
        <div class="gh-card-wrapper">
            <h3 class="gh-card-title is-title">Programmers Can’t Use Just Any Software</h3>
                <p class="gh-card-excerpt is-body">If you’re a software developer working on a product that handles sensitive data, it’s common you’ll be restricted in the apps and tools you’re allowed to use due to privacy or security concerns.</p>
            <footer class="gh-card-meta">
<!--
             -->
                    <span class="gh-card-author">By James O&#x27;Reilly</span>
                    <time class="gh-card-date" datetime="2024-12-31">31 Dec 2024</time>
                <!--
         --></footer>
        </div>
    </a>
</article>
                    


            </div>

        </main>

            <aside class="gh-sidebar">
                <div class="gh-sidebar-inner">
                    <section class="gh-about">
                            <img class="gh-about-icon" src="https://www.zumistudios.com/content/images/2024/12/zumistudios-letter-jaunt-dark@3x.png" alt="Zumi Studios" loading="lazy">
                        <h3 class="gh-about-title is-title">Zumi Studios</h3>
                            <p class="gh-about-description is-body">App development, thoughts, and ideas. Creator of Hazumi for Hacker News and Metafast API.</p>
                    </section>
                </div>
            </aside>

    </div>
</section>
    
    <footer class="gh-footer gh-outer">
    <div class="gh-footer-inner gh-inner">

        <div class="gh-footer-bar">
            <span class="gh-footer-logo is-title">
                    <img src="https://www.zumistudios.com/content/images/2024/12/zumi-studios-logo.svg" alt="Zumi Studios">
            </span>
            <nav class="gh-footer-menu">
                <ul class="nav">
    <li class="nav-all-apps"><a href="https://www.zumistudios.com/apps/">All Apps</a></li>
</ul>

            </nav>
            <div class="gh-footer-copyright">
                Powered by <a href="https://ghost.org/" target="_blank" rel="noopener">Ghost</a>
            </div>
        </div>


    </div>
</footer>    
</div>


<script src="/assets/built/source.js?v=8a8997ca44"></script>



</body>
</html>
