<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <link href="https://tatey.com/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="https://tatey.com/" rel="alternate" type="text/html"/>
  <updated>2026-03-15T19:28:20+10:00</updated>
  <id>https://tatey.com/feed.xml</id>
  <title type="html">Tate Johnson</title>
  
    <entry xml:lang="en">
      <title type="html">JekyllStudio is a local-only macOS editor designed for writing and editing Jekyll blog posts</title>
      <link href="https://tatey.com/2026/03/14/jekyllstudio-is-a-local-only-macos-editor-designed-for-writing-and-editing-jekyll-blog-posts/" rel="alternate" type="text/html" title="JekyllStudio is a local-only macOS editor designed for writing and editing Jekyll blog posts" />
      <published>2026-03-14T00:00:00+10:00</published>
      <updated>2026-03-14T00:00:00+10:00</updated>
      <id>https://tatey.com/2026/03/14/jekyllstudio-is-a-local-only-macos-editor-designed-for-writing-and-editing-jekyll-blog-posts</id>
      <content type="html" xml:base="https://tatey.com/2026/03/14/jekyllstudio-is-a-local-only-macos-editor-designed-for-writing-and-editing-jekyll-blog-posts/">&lt;p&gt;I’ve been using &lt;a href=&quot;https://jekyllrb.com&quot;&gt;Jekyll&lt;/a&gt; since 2009 (17 years at time of writing!) and it remains my favourite way to publish on the web.&lt;/p&gt;

&lt;p&gt;Jekyll’s appeal lies in its &lt;a href=&quot;https://jekyllrb.com/philosophy/&quot;&gt;philosophy&lt;/a&gt;. Your content lives on disk as plain files, they get generated into a static site, and that generated site can be pushed to any web server. No databases, no admin panels, and your blog posts still get pretty permalinks. The elegance of Jekyll’s build system proves you don’t have to give up polished detail to have a static site.&lt;/p&gt;

&lt;p&gt;However, the same can’t be said for Jekyll’s blogging experience. Writing with Jekyll means opening a text editor, manually handling files, manually placing images, and running the preview server from the terminal. None of these steps are difficult, but they interrupt the flow of writing. This makes Jekyll’s blogging experience feel less refined than platforms like Substack of WordPress.&lt;/p&gt;

&lt;p&gt;Using &lt;a href=&quot;https://opencode.ai&quot;&gt;OpenCode&lt;/a&gt; and GPT 5.3 I wanted to see if Jekyll’s build system could be paired with macOS’s user interface to create a polished writing experience. The result is a new, local-only, &lt;a href=&quot;https://daringfireball.net/linked/2020/03/20/mac-assed-mac-apps&quot;&gt;Mac-arsed&lt;/a&gt; editor designed for Jekyll called &lt;a href=&quot;https://github.com/tatey/JekyllStudio&quot;&gt;JekyllStudio&lt;/a&gt;. Simply open it and start writing.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;143&quot; src=&quot;/images/posts/2026-03-13-jekyllstudio-is-a-local-only-macos-editor-designed-for-writing-and-editing-jekyll-blog-posts-559659914-4ccd6c6d-31b8-4f97-9388-4e2a664ad557-1.png&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;create-and-edit-posts-without-thinking&quot;&gt;Create and edit posts without thinking&lt;/h1&gt;

&lt;p&gt;Jekyll uses a filename convention where the date and slug are part of the filename. This filename becomes the post’s permalink so if you change your post’s title or date you’ll need to edit the filename to match.&lt;/p&gt;

&lt;p&gt;In JekyllStudio, press the “New Post” button and start writing. A correctly formatted filename is automatically created with “Untitled” as the title. The app will then rename the file on disk if you change the title or date.&lt;/p&gt;

&lt;h1 id=&quot;drag-and-drop-images-from-anywhere&quot;&gt;Drag and drop images from anywhere&lt;/h1&gt;

&lt;p&gt;Jekyll has no conventions for handling images in posts. You need to decide where to place them, whether to optimise them, and how to reference them in Markdown.&lt;/p&gt;

&lt;p&gt;In JekyllStudio you simply drag an image into the post. The image is automatically optimised for web and the Markdown reference is inserted at your cursor.&lt;/p&gt;

&lt;h1 id=&quot;integrated-live-preview&quot;&gt;Integrated live preview&lt;/h1&gt;

&lt;p&gt;Jekyll already offers a preview server that rebuilds the site as you write. This usually involves starting the preview server from the terminal and switching between your text editor and browser.&lt;/p&gt;

&lt;p&gt;JekyllStudio simplifies this process by integrating it directly. On launch it automatically spawns the preview server and renders the current post. This allows you to preview content in your site’s styling without leaving the app.&lt;/p&gt;

&lt;h1 id=&quot;other-features&quot;&gt;Other features&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;Automatic saving ensures your writing is never lost&lt;/li&gt;
  &lt;li&gt;Hide the sidebar to maximise focus on your writing&lt;/li&gt;
  &lt;li&gt;Edit front matter directly from your post, changing properties like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;layout&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;published&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;A green status icon indicates your preview server is running normally&lt;/li&gt;
  &lt;li&gt;Access preview server logs for troubleshooting or debugging&lt;/li&gt;
  &lt;li&gt;Keyboard shortcuts, light and dark mode, and a beautiful icon to sit in your dock&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/2026-03-13-jekyllstudio-is-a-local-only-macos-editor-designed-for-writing-and-editing-jekyll-blog-posts-559657810-9aa063d1-7d1d-43ab-be92-8435026ee3c9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/2026-03-13-jekyllstudio-is-a-local-only-macos-editor-designed-for-writing-and-editing-jekyll-blog-posts-559657812-eac17e33-e1ec-465d-902a-7f03181be0c1.png&quot; alt=&quot;559657812-eac17e33-e1ec-465d-902a-7f03181be0c1&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/2026-03-13-jekyllstudio-is-a-local-only-macos-editor-designed-for-writing-and-editing-jekyll-blog-posts-559657809-fb046393-37c4-4e1c-9578-d46a8012850f.png&quot; alt=&quot;559657809-fb046393-37c4-4e1c-9578-d46a8012850f&quot; /&gt;&lt;/p&gt;

&lt;p&gt;JekyllStudio is for people who love the Jekyll philosophy, but yearn for the polished writing experience of platforms such as Substack or Wordpress. It is open source and &lt;a href=&quot;https://github.com/tatey/JekyllStudio&quot;&gt;available for download on GitHub&lt;/a&gt;. If you like it, I’d love to hear from you.&lt;/p&gt;</content>
      <author>
        <name>Tate Johnson</name>
        <uri>https://tatey.com</uri>
      </author>
    </entry>
  
    <entry xml:lang="en">
      <title type="html">Tailscale sidecar pattern for Synology NAS with DSM 7 and Container Manager</title>
      <link href="https://tatey.com/2026/03/08/tailscale-sidecar-pattern-for-synology-nas-with-dsm-7-and-container-manager/" rel="alternate" type="text/html" title="Tailscale sidecar pattern for Synology NAS with DSM 7 and Container Manager" />
      <published>2026-03-08T00:00:00+10:00</published>
      <updated>2026-03-08T00:00:00+10:00</updated>
      <id>https://tatey.com/2026/03/08/tailscale-sidecar-pattern-for-synology-nas-with-dsm-7-and-container-manager</id>
      <content type="html" xml:base="https://tatey.com/2026/03/08/tailscale-sidecar-pattern-for-synology-nas-with-dsm-7-and-container-manager/">&lt;p&gt;&lt;a href=&quot;https://tailscale.com&quot;&gt;Tailscale&lt;/a&gt; lets you connect your devices over the internet as if they were on the same local network. Its MagicDNS feature gives each device a stable hostname so you can reach them with something like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;foo.yourtailnet.ts.net&lt;/code&gt; instead of an IP address. It’s convenient and private.&lt;/p&gt;

&lt;p&gt;I use &lt;a href=&quot;https://www.synology.com/en-br/dsm/feature/docker&quot;&gt;Container Manager&lt;/a&gt; on my Synology NAS to self-host services. Tailscale can be installed as a client directly into &lt;a href=&quot;https://www.synology.com/en-us/dsm&quot;&gt;DSM&lt;/a&gt;, but any self-hosted service needs to be exposed on distinct ports since they share the same Tailscale interface. While there is nothing technically wrong with this, remembering &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;foo.yourtailnet.ts.net:61209 &lt;/code&gt; is not particularly elegant.&lt;/p&gt;

&lt;p&gt;You can use the Docker sidecar pattern to run a Tailscale interface alongside your primary service. Here is a YAML configuration I figured out for self-hosting &lt;a href=&quot;https://github.com/nicolargo/glances&quot;&gt;Glances&lt;/a&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;version: &quot;3.9&quot;

services:
  glances-tailscaled:
    image: tailscale/tailscale:latest
    restart: unless-stopped
    environment:
      - TS_AUTHKEY=tskey-auth-REDACTED
      - TS_HOSTNAME=glances                            # Hostname will be something like glances.yourtailnet.ts.net
      - TS_EXTRA_ARGS=--advertise-tags=tag:app         # Recommended so you can write rules in your Tailscale ACL for this target
      - TS_SIMPLE_SERVE_CONFIG=http://127.0.0.1:61208  # Traffic is routed to this address
      - TS_ACCEPT_DNS=false
      - TS_USERSPACE=true                              # Must run in userspace on DSM, otherwise the tunnel will never be created
      - TS_STATE_DIR=/var/lib/tailscale
    volumes:
      - glances_tailscale_state:/var/lib/tailscale

  glances:
    image: nicolargo/glances:latest
    restart: unless-stopped
    network_mode: &quot;service:glances-tailscaled&quot;         # Bind to the Tailscale interface
    depends_on:
      - glances-tailscaled
    environment:
      - GLANCES_OPT=-w
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro

volumes:
  glances_tailscale_state:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/2026-03-08-tailscale-sidecar-pattern-for-synology-nas-with-dsm-7-and-container-manager-screenshot-2026-03-08-at-9-07-01-pm.png&quot; alt=&quot;Screenshot of Safari displaying Synology DSM with Container Manager opened. Inside Container Manager there is a project with a YAML configuration&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This approach uses configuration to avoid custom scripting and maximises compatibility with any docker image. Minimal maintenance.&lt;/p&gt;</content>
      <author>
        <name>Tate Johnson</name>
        <uri>https://tatey.com</uri>
      </author>
    </entry>
  
    <entry xml:lang="en">
      <title type="html">I built a native macOS app to do my quarterly BAS with OpenCode</title>
      <link href="https://tatey.com/2026/03/01/i-built-a-native-macos-app-to-do-my-quarterly-bas-with-opencode/" rel="alternate" type="text/html" title="I built a native macOS app to do my quarterly BAS with OpenCode" />
      <published>2026-03-01T00:00:00+10:00</published>
      <updated>2026-03-01T00:00:00+10:00</updated>
      <id>https://tatey.com/2026/03/01/i-built-a-native-macos-app-to-do-my-quarterly-bas-with-opencode</id>
      <content type="html" xml:base="https://tatey.com/2026/03/01/i-built-a-native-macos-app-to-do-my-quarterly-bas-with-opencode/">&lt;p&gt;For the last 15 years I have been selling &lt;a href=&quot;https://antennamate.com&quot;&gt;Antenna Mate&lt;/a&gt; on the App Store, and every quarter that means submitting a Business Activity Statement (BAS) to report on my Goods and Services Tax (GST) obligations &lt;em&gt;(Paying our tax is important!)&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;My workflow has largely been the same. Download invoices from App Store Connect, gather business purchases, paste everything into a spreadsheet, calculate GST, then copy the numbers into the Australian Tax Office (ATO) portal. It’s not glamorous, but it’s routine and portable.&lt;/p&gt;

&lt;p&gt;For years I have wished for a little macOS app where I could drag in PDFs and it would figure everything out for me. No spreadsheet. No accountant. No scripting. Just a focused tool for my workflow. Every time I was tempted, the complexity relative to what Antenna Mate earns would put me off.&lt;/p&gt;

&lt;p&gt;Two weekends ago the equation flipped. I used &lt;a href=&quot;https://opencode.ai&quot;&gt;OpenCode&lt;/a&gt; and GPT 5.3 to prompt an entire app into existence with no manual editing. The result is a fully native, SwiftUI backed macOS app called &lt;em&gt;Ugh BAS&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/2026-03-01-i-built-a-native-macos-app-to-do-my-quarterly-bas-with-opencode-screenshot-2026-03-01-at-10-41-53-am.png&quot; alt=&quot;Screenshot of BAS pane showing GST totals&quot; /&gt;
&lt;img src=&quot;/images/posts/2026-03-01-i-built-a-native-macos-app-to-do-my-quarterly-bas-with-opencode-screenshot-2026-03-01-at-10-42-14-am.png&quot; alt=&quot;Screenshot of purchases pane showing list of invoices/receipts&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It has a sidebar with quarters, and within each quarter there are screens for sales, purchases, and a GST summary. When I drag in screenshots of App Store Connect reports and PDF invoices the app queues up jobs for processing. Each job extracts text using Vision.framework, sends the text to an LLM (OpenAI in this case, but could be any provider), gets back structured JSON, renders the result in a table, and calculates the GST totals automatically (and instantly!). I still log into the ATO portal and paste the numbers myself, but the parts of my workflow that make me go “Ughhhhh” are gone.&lt;/p&gt;

&lt;p&gt;What impressed me most is I haven’t compiled a macOS app in over a decade, nor have I developed with SwiftUI (you can guess the last time I developed with Cocoa in earnest), and yet I was able to make a polished app in one focused weekend. It has all the little affordances of a &lt;a href=&quot;https://daringfireball.net/linked/2020/03/20/mac-assed-mac-apps&quot;&gt;Mac-arsed app&lt;/a&gt; such as native controls, keyboard shortcuts, and comfortable conventions (even if it is Tahoe 😅).&lt;/p&gt;

&lt;p&gt;The work was not writing code, or figuring out individual APIs. It was designing the user experience, modelling the data flows, and proving my idea one iteration at a time. The toggling between plan and build mode in OpenCode felt like a quality pairing session that made the architecture better.&lt;/p&gt;

&lt;p&gt;First, I started small and prompted a Ruby CLI that took PDFs, extracted the text with tesseract, and generated a spreadsheet. The fidelity of text it extracted wasn’t good enough, so I sent the text to an LLM and it got all the details perfectly.&lt;/p&gt;

&lt;p&gt;Then, I prompted a macOS app that called out to the Ruby CLI and rendered the results in a table. Once I proved that worked, I iterated on the UI until I got something semi-polished. I also didn’t use Xcode. I prompted a make-esque script that did everything from the CLI, including killing the running app and launching it again to keep the feedback loop tight.&lt;/p&gt;

&lt;p&gt;Finally, I prompted an entire rewrite of the Ruby CLI into a “Swift engine” and continued to polish the UI until it felt like a truly Mac-arsed app. If I didn’t tell anyone I had done it with OpenCode, they’d be none the wiser.&lt;/p&gt;

&lt;p&gt;The cost of proving out ideas has collapsed. Granted, this is low stakes and not depended on by 1000s of people, but ideas which previously seemed out of reach can be potentially proved out in a focused weekend. “Ugh BAS” will never be published. It is a local, opinionated, beautiful macOS app built exactly for my workflow.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/posts/2026-03-01-i-built-a-native-macos-app-to-do-my-quarterly-bas-with-opencode-screenshot-2026-03-01-at-10-52-23-am.png&quot; alt=&quot;Screenshot of creating a new quarter&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now every financial quarter I will fire it up, drag in my documents, copy the totals, and lodge my BAS in the ATO portal in under 5 minutes. No spreadsheet, just my wish come true.&lt;/p&gt;</content>
      <author>
        <name>Tate Johnson</name>
        <uri>https://tatey.com</uri>
      </author>
    </entry>
  
    <entry xml:lang="en">
      <title type="html">What makes a good company policy</title>
      <link href="https://tatey.com/2025/05/31/what-makes-a-company-good-policy/" rel="alternate" type="text/html" title="What makes a good company policy" />
      <published>2025-05-31T00:00:00+10:00</published>
      <updated>2025-05-31T00:00:00+10:00</updated>
      <id>https://tatey.com/2025/05/31/what-makes-a-company-good-policy</id>
      <content type="html" xml:base="https://tatey.com/2025/05/31/what-makes-a-company-good-policy/">&lt;p&gt;I believe the best policies, whether information security or flexible work arrangements:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Are a genuinely useful reference&lt;/li&gt;
  &lt;li&gt;Are written in plain language (e.g. speak truth without jargon, clichés, or obscurity)&lt;/li&gt;
  &lt;li&gt;Reflect actual practice and give clarifying advice&lt;/li&gt;
  &lt;li&gt;Have just enough bones&lt;/li&gt;
  &lt;li&gt;Can be used to support having conversations with customers and colleagues&lt;/li&gt;
  &lt;li&gt;Are updated when leanings are made, or circumstances change&lt;/li&gt;
  &lt;li&gt;Have a change log&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over time the best policies become the “thing” that everyone “knows”.&lt;/p&gt;</content>
      <author>
        <name>Tate Johnson</name>
        <uri>https://tatey.com</uri>
      </author>
    </entry>
  
    <entry xml:lang="en">
      <title type="html">Coniguring DNS-over-HTTPS with UniFi OS and AdGuard</title>
      <link href="https://tatey.com/2025/01/06/configuring-dns-over-https-unifi-adguard/" rel="alternate" type="text/html" title="Coniguring DNS-over-HTTPS with UniFi OS and AdGuard" />
      <published>2025-01-06T00:00:00+10:00</published>
      <updated>2025-01-06T00:00:00+10:00</updated>
      <id>https://tatey.com/2025/01/06/configuring-dns-over-https-unifi-adguard</id>
      <content type="html" xml:base="https://tatey.com/2025/01/06/configuring-dns-over-https-unifi-adguard/">&lt;p&gt;UniFi OS introduced the ability to encrypt DNS traffic using &lt;a href=&quot;https://en.wikipedia.org/wiki/DNS_over_HTTPS&quot;&gt;DNS-over-HTTPS&lt;/a&gt; with custom servers some time in 2024. &lt;a href=&quot;https://www.ui.com/&quot;&gt;Ubiquiti&lt;/a&gt; call this feature DNS Shield.&lt;/p&gt;

&lt;p&gt;I use &lt;a href=&quot;https://adguard-dns.io&quot;&gt;AdGuard DNS&lt;/a&gt; as a hosted alternative to &lt;a href=&quot;https://pi-hole.net&quot;&gt;Pi-hole&lt;/a&gt; for blocking trackers and ads in my home network. AdGuard DNS has long supported DNS-over-HTTPS, but UniFi OS only got first party support recently. Configuration should be easy, but neither Ubiquiti or AdGuard have up-to-date documentation.&lt;/p&gt;

&lt;p&gt;Here’s how to configure DNS-over-HTTPS with UniFi OS and AdGuard DNS:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Go to the &lt;a href=&quot;https://adguard-dns.io/en/dashboard/&quot;&gt;AdGuard Dashboard&lt;/a&gt; and find the settings for your UniFi OS router&lt;/li&gt;
  &lt;li&gt;Scroll to &lt;em&gt;Encrytped DNS server addresses&lt;/em&gt; and take note of DNS-over-HTTPS URL (e.g. https://d.adguard-dns.com/dns-query/123456abc)&lt;/li&gt;
  &lt;li&gt;Go to &lt;a href=&quot;https://dnscrypt.info/stamps/&quot;&gt;DNSCrypt DNS Stamp Calculator&lt;/a&gt; and set:
    &lt;ul&gt;
      &lt;li&gt;&lt;em&gt;Protocol&lt;/em&gt; to DNS-over-HTTPS&lt;/li&gt;
      &lt;li&gt;&lt;em&gt;Host name&lt;/em&gt; to d.adguard-dns.com&lt;/li&gt;
      &lt;li&gt;&lt;em&gt;Path&lt;/em&gt; to /dns-query/123456abc&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Copy the Stamp URL (e.g. sdns://AgcAAAAAA…)&lt;/li&gt;
  &lt;li&gt;Go to the Security settings in UniFi OS (e.g. https://router.local/network/default/settings/security) and set:
    &lt;ul&gt;
      &lt;li&gt;&lt;em&gt;DNS Shield&lt;/em&gt; to Custom&lt;/li&gt;
      &lt;li&gt;&lt;em&gt;Server Name&lt;/em&gt; to “AdGuard DNS”&lt;/li&gt;
      &lt;li&gt;&lt;em&gt;DNS Stamp&lt;/em&gt; to value in your pasteboard&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Press &lt;em&gt;Apply Changes&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;Go to the &lt;a href=&quot;https://adguard.com/en/test.html&quot;&gt;Adguard Diagnostics page&lt;/a&gt;, scroll to &lt;em&gt;AdGuard DNS&lt;/em&gt;. If you see “Protocol: DNS-over-HTTPS” you’re good to go ✅&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;See also:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://adguard-dns.io/kb/miscellaneous/create-dns-stamp/&quot;&gt;How to create your own DNS stamp for Secure DNS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/Ubiquiti/comments/1f2yv6s/has_anyone_figured_out_this_custom_dns_added_in_i/&quot;&gt;Has anyone figured out this custom DNS added in? I add my DNS stamp using a DNS stamp calculator and nothing happens. It defaults to Google. Using ControlD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
      <author>
        <name>Tate Johnson</name>
        <uri>https://tatey.com</uri>
      </author>
    </entry>
  
    <entry xml:lang="en">
      <title type="html">A minimal shell.nix example for managing system dependencies in Ruby on Rails projects</title>
      <link href="https://tatey.com/2023/04/24/a-minimal-shell-nix-example-for-managing-system-dependencies-in-ruby-on-rails-projects/" rel="alternate" type="text/html" title="A minimal shell.nix example for managing system dependencies in Ruby on Rails projects" />
      <published>2023-04-24T00:00:00+10:00</published>
      <updated>2023-04-24T00:00:00+10:00</updated>
      <id>https://tatey.com/2023/04/24/a-minimal-shell-nix-example-for-managing-system-dependencies-in-ruby-on-rails-projects</id>
      <content type="html" xml:base="https://tatey.com/2023/04/24/a-minimal-shell-nix-example-for-managing-system-dependencies-in-ruby-on-rails-projects/">&lt;p&gt;The other day I was helping someone get started with &lt;a href=&quot;https://nixos.org&quot;&gt;Nix&lt;/a&gt;. I wanted to give them the most minimal example of getting up and running with Nix and Ruby on Rails. No &lt;a href=&quot;https://github.com/nmattia/niv&quot;&gt;niv&lt;/a&gt;. No &lt;a href=&quot;https://nixos.wiki/wiki/Flakes&quot;&gt;flakes&lt;/a&gt;. Just a 14 line &lt;a href=&quot;https://github.com/tatey/nix_rails_example/blob/b83b5eafd2d5942fcbca5c81aec85727f9e9c05b/shell.nix&quot;&gt;shell.nix&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can think of using Nix to manage system dependencies like we use &lt;a href=&quot;https://bundler.io&quot;&gt;Bundler&lt;/a&gt; to manage application dependencies. Everything can be self contained to the working directory and your future self won’t have to wrangle with different versions of Ruby, Node, or C libraries between projects.&lt;/p&gt;

&lt;h1 id=&quot;step-1-install-nix&quot;&gt;Step 1: Install nix&lt;/h1&gt;

&lt;p&gt;Follow the &lt;a href=&quot;https://nixos.org/download.html#nix-install-macos&quot;&gt;official installation instructions&lt;/a&gt; on NixOS. It is recommended to use the multi-user installation if you’re on macOS or Linux. It should only take a few minutes.&lt;/p&gt;

&lt;h1 id=&quot;step-2-clone-the-example-app-and-enter-the-nix-shell&quot;&gt;Step 2: Clone the example app and enter the Nix shell&lt;/h1&gt;

&lt;ol&gt;
  &lt;li&gt;Clone the example &lt;a href=&quot;https://github.com/tatey/nix_rails_example&quot;&gt;Git repository&lt;/a&gt; and change into the directory&lt;/li&gt;
  &lt;li&gt;Enter the Nix shell by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ nix-shell&lt;/code&gt;. Verify you’re in the Nix shell by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ which ruby&lt;/code&gt; to see if Nix is in the path (E.g. /nix/store/vwa1c708p5447vjkk06f8xfvl66yy1wx-ruby-3.1.4/bin/ruby)&lt;/li&gt;
  &lt;li&gt;Try running the console &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ ./bin/rails console&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;food-for-thought&quot;&gt;Food for thought&lt;/h1&gt;

&lt;p&gt;We’ve only scratched the surface. To make your day-to-day usage more ergonomic consider the following:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://nix.dev/tutorials/towards-reproducibility-pinning-nixpkgs#pinning-packages-with-urls-inside-a-nix-expression&quot;&gt;Pin&lt;/a&gt; nixpkgs to a specific Git reference to guarantee reproducibility. See an &lt;a href=&quot;https://github.com/tatey/nix_rails_example/blob/b83b5eafd2d5942fcbca5c81aec85727f9e9c05b/shell.nix#L4&quot;&gt;example&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Use &lt;a href=&quot;https://direnv.net&quot;&gt;direnv&lt;/a&gt; to automatically enter the Nix shell when you change directory. You’ll want to hook direnv into your shell. See an &lt;a href=&quot;https://github.com/tatey/tatey.com/blob/57294f6d6f57bb017215bd9dc3d1cfcd00cd3603/shell.nix#L14&quot;&gt;example&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Use &lt;a href=&quot;https://github.com/thelookoutway/bundler-app-dev-shell&quot;&gt;bundler-app-dev-shell&lt;/a&gt; to isolate gems between directories&lt;/li&gt;
  &lt;li&gt;Learn more about Nix on &lt;a href=&quot;https://zero-to-nix.com&quot;&gt;Zero to Nix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to &lt;a href=&quot;https://bradparker.com&quot;&gt;Brad Parker&lt;/a&gt; for introducing our team to Nix in 2020.&lt;/p&gt;</content>
      <author>
        <name>Tate Johnson</name>
        <uri>https://tatey.com</uri>
      </author>
    </entry>
  
    <entry xml:lang="en">
      <title type="html">We’re hiring a Product Success Specialist (Product Marketer, Technical Writer) at The Lookout Way</title>
      <link href="https://tatey.com/2022/02/28/we-are-hiring-a-product-support-specialist-product-marketer-technical-writer-at-the-lookout-way/" rel="alternate" type="text/html" title="We&apos;re hiring a Product Success Specialist (Product Marketer, Technical Writer) at The Lookout Way" />
      <published>2022-02-28T00:00:00+10:00</published>
      <updated>2022-02-28T00:00:00+10:00</updated>
      <id>https://tatey.com/2022/02/28/we-are-hiring-a-product-support-specialist-product-marketer-technical-writer-at-the-lookout-way</id>
      <content type="html" xml:base="https://tatey.com/2022/02/28/we-are-hiring-a-product-support-specialist-product-marketer-technical-writer-at-the-lookout-way/">&lt;p&gt;Hi there, we’re &lt;a href=&quot;https://thelookoutway.com&quot;&gt;The Lookout Way&lt;/a&gt;, and we make Lookout — a SaaS-based care management platform that powers aged care and NDIS service providers to get exceptional outcomes for their clients, families, and support workers.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.thelookoutway.com/meet-the-team&quot;&gt;Our team&lt;/a&gt; extracted Lookout from the digital infrastructure we made by running a real, world-class service provider, &lt;a href=&quot;https://www.fivegoodfriends.com.au&quot;&gt;Five Good Friends&lt;/a&gt;. Lookout has already powered over 1,000,000 hours of support in the home.&lt;/p&gt;

&lt;p&gt;We’re aiming for a flexible start in April. We’re accepting applications until Monday 7th March  11:59 pm UTC+10.&lt;/p&gt;

&lt;h1 id=&quot;about-the-job&quot;&gt;About the job&lt;/h1&gt;

&lt;p&gt;We’re carving out a brand new space inside our Product Team to welcome a Product Success Specialist (Like a technically focused Product Marketer, or a product focused Technical Writer). In this newly created role, you’ll help our customers run on Lookout by educating them about both the ‘how’ and ‘why’ of upcoming releases. To date, this has been a side project for our Product Managers, but you will be taking over the reins of Lookout’s canonical reference material and release management. The work is a blend of storytelling, technical writing, and the coordination of making new features generally available to all of our customers.&lt;/p&gt;

&lt;p&gt;We maximise our impact by pacing releases into long, eight-week cycles. Product Managers, Engineers, and Designers collaborate to solve problems this cycle while you write about what they solved and beta tested the last cycle. We have a strong writing culture, so you’ll get regular updates from Project Teams as they develop new features, but you’ll also draw insights by interviewing people and trying out beta features for yourself.&lt;/p&gt;

&lt;p&gt;Thousands of people will read the reference materials you create. You’ll write one-page announcements, publish guiding support articles, record quick screencasts, wire up timely in-app prompts, and &lt;a href=&quot;https://www.flippercloud.io&quot;&gt;flip the switch to turn features on&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our customers will use your reference materials to learn about what’s new or get help with a specific topic. Our Success Team will use your reference material to support customers with adopting features or troubleshooting problems. Our Marketing Team will use your reference materials to proudly tell the world about what we’ve made and how it can help them make progress. Your writing will become representative of our product’s voice.&lt;/p&gt;

&lt;p&gt;To give you a better idea of the day-to-day, here are some recent examples from our Product Managers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Wrote a support article to guide a Care Manager on &lt;a href=&quot;https://support.thelookoutway.com/en/articles/5428601-referrals&quot;&gt;how to make a clinical referral to an Allied Health professional&lt;/a&gt;. We weaved through the underlying philosophy along with instructions and GIFs to make it easy to follow.&lt;/li&gt;
  &lt;li&gt;Coordinated turning on our new Auto Contacts feature to be generally available, working alongside the Project Team and one of our Customer Success Specialists. Wrote the &lt;a href=&quot;https://support.thelookoutway.com/en/articles/5666820-21-10-01-updates-to-rostering-in-lookout&quot;&gt;release notes&lt;/a&gt;, wired up an in-app prompt, and put out an internal notice to our teams. Kept this feature turned off for a handful of current customers (to allow them time to migrate) but turned it on for everyone else. Coordinated timing to turn it on for the final group of customers.&lt;/li&gt;
  &lt;li&gt;Recorded a video of a Finance Manager making a claim using our new Home Care Package accounting feature. Our Marketing Team used the video in our &lt;a href=&quot;https://vimeo.com/668512298/095f693e3f&quot;&gt;webinar on the new Improved Payment Arrangements&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Reorganised our &lt;a href=&quot;https://support.thelookoutway.com&quot;&gt;support articles&lt;/a&gt; to make it easier to browse by topic after consulting with the Success and Sales teams.&lt;/li&gt;
  &lt;li&gt;Wrote a blog post to advocate for our new matching feature titled: &lt;a href=&quot;https://thelookoutway.com/blog/bringing-matching-directly-to-customers&quot;&gt;Bringing matching directly to clients. Why we built it and how it works&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We use &lt;a href=&quot;https://basecamp.com&quot;&gt;Basecamp&lt;/a&gt; to collaborate internally and coordinate releases, &lt;a href=&quot;https://www.notion.so&quot;&gt;Notion&lt;/a&gt; for our internal reference documentation, and &lt;a href=&quot;https://www.intercom.com&quot;&gt;Intercom&lt;/a&gt; to email customers, wire up-in app prompts, and manage support articles.&lt;/p&gt;

&lt;h1 id=&quot;about-you&quot;&gt;About you&lt;/h1&gt;

&lt;p&gt;Your favourite part of working on new products is delivering real value to customers. You enjoy interacting with your team and customers in a consultative way. Showcasing technology cross-departmentally and to customers energises you. Applying deep curiosity to new challenges comes naturally, and you persist until you can see the most efficient path to full resolution. You are happiest when you are continually learning. You write exceptionally well.&lt;/p&gt;

&lt;p&gt;You believe in the collective ownership of the product. We celebrate the highs, and we learn from the lows. We’re kind, honest, and authentic with each other. We invite debate and encourage alternative perspectives, but when we commit, we put our differences aside and see it through.&lt;/p&gt;

&lt;p&gt;You’ll work remotely from anywhere in Australia as long as you have a solid internet connection and a comfortable setup. We’re already in Perth, Adelaide, Melbourne, Sydney, and Brisbane. We have a COVID-safe office in the &lt;a href=&quot;https://www.google.com/maps/place/179+N+Quay,+Brisbane+City+QLD+4000/@-27.4684525,153.0170302,17z/data=!3m1!4b1!4m5!3m4!1s0x6b915a06b7c2c29d:0xc2eedf160f982ed9!8m2!3d-27.4684525!4d153.0192189&quot;&gt;Brisbane CBD&lt;/a&gt;, but you won’t be required to work from there, even after the pandemic.&lt;/p&gt;

&lt;p&gt;You might have a background in communications, marketing, product, technical writing, or something else entirely. If this opportunity excites you and you think you can do it, please don’t rule yourself out even if you don’t feel you tick every box. We know that women and other people in underrepresented minority groups tend to only apply if they feel they are a perfect match. Don’t self reject! We review all applications blindly.&lt;/p&gt;

&lt;p&gt;You’ll be working with vulnerable people so we require you to complete a National Police Check and the &lt;a href=&quot;https://www.ndiscommission.gov.au/node/1236&quot;&gt;NDIS Worker Orientation Module&lt;/a&gt;. You must have the right to work in Australia.&lt;/p&gt;

&lt;h1 id=&quot;about-our-pay-and-perks&quot;&gt;About our pay and perks&lt;/h1&gt;

&lt;p&gt;This is a permanent, full-time position and depending on your skills and experience, we’re prepared to offer you a salary between $100,000 and $130,000 + 10% super, no matter where you live in Australia. You’ll also get a $4,500 budget to pick your laptop, accessories, and display.&lt;/p&gt;

&lt;p&gt;The way we work and the perks we offer are designed to help you live a fulfilling life. Some of us start late, and some of us finish early. Some of us work in big blocks, and some break it up. We overlap for most of the day, and we work a regular week where overtime is a rarity. The work we do is meaningful, and the problems we solve are interesting. We like coming to work and working together, but &lt;a href=&quot;https://thelookoutway.com/meet-the-team&quot;&gt;we’re a group of 40+ people&lt;/a&gt; who are also parents, carers, siblings, friends, students, athletes, and hobbyists with a life away from work too.&lt;/p&gt;

&lt;p&gt;You’ll get the standard four weeks of paid annual leave and the customary ten days of paid carer’s/sick leave. You’ll also get:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Wellbeing allowance: An annual $500 wellbeing allowance to spend on anything that betters your life away from work.&lt;/li&gt;
  &lt;li&gt;Extra annual leave: +1 day of paid annual leave every year you are with us after your second year so you can take longer holidays.&lt;/li&gt;
  &lt;li&gt;Paid superannuation on parental leave: We will continue to pay your super when you take unpaid parental leave as the primary caregiver, so your super doesn’t miss out.&lt;/li&gt;
  &lt;li&gt;Top-up parental leave: We will pay the difference to your regular salary and parental leave from the Commonwealth Government for four weeks (+2 weeks every year you’re with us) if you’re the primary caregiver, or two weeks if you’re the non-primary caregiver.&lt;/li&gt;
  &lt;li&gt;Employee assistance programme: You can get private and professional counselling at any time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;how-to-apply&quot;&gt;How to apply&lt;/h1&gt;

&lt;p&gt;Please introduce yourself to our team by sending an email to &lt;a href=&quot;mailto:thelookoutway+k9upgr@emails.readblindly.com&quot;&gt;thelookoutway+k9upgr@emails.readblindly.com&lt;/a&gt;. Tell us a bit about yourself and include your CV. Instead of a cover letter, we would love to hear your answers to these questions in the body of your email:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Why are you considering working here and why now?&lt;/li&gt;
  &lt;li&gt;Would you consider yourself a marketer, a technical writer, a product manager, a communications director, a mix, or something else entirely? Where are you comfortable today and where would you like to learn and grow in the future?&lt;/li&gt;
  &lt;li&gt;Tell us about an experience where you rolled out a new ‘thing’ (It doesn’t have to be from a product role, it doesn’t even have to be a ‘feature’). What did you do to gain knowledge? How did you bring people onboard? What did you do to make it successful?&lt;/li&gt;
  &lt;li&gt;You’re trying a new feature for yourself so you can finish writing the new support article. You click a button, but the screen it loads next surprises you. You feel strongly it should load a different screen you know already exists, but your co-worker who is a Product Designer disagrees. What do you next?&lt;/li&gt;
  &lt;li&gt;A guide to making your favourite meal (Or maybe the only meal you can make?)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We put a premium on writing, and we promise to give you our undivided attention. Your email will be anonymised, and mentions of gender, nationality, languages, and places will be redacted so it can be read blindly.&lt;/p&gt;

&lt;p&gt;We’re accepting applications until Monday 7th March 11:59 pm UTC+10. You’ll first hear back from us within 10 days of applications closing. We’re actual people reviewing applications so this sustainable timeframe gives everyone a fair chance to be considered. Our hiring process is:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Send email to &lt;a href=&quot;mailto:thelookoutway+k9upgr@emails.readblindly.com&quot;&gt;thelookoutway+k9upgr@emails.readblindly.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;The first interview is to get acquainted and find alignment with your growth and our company. You’ll have a video call with the Head of Product and one other team member.&lt;/li&gt;
  &lt;li&gt;The second interview to assess how well we collaborate.&lt;/li&gt;
  &lt;li&gt;Offer, referee checks, and background checks.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://tatey.com/2020/01/19/starting-a-new-job-on-a-thursday/&quot;&gt;Start on a Thursday&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We’re grateful for your time and looking forward to hearing from you.&lt;/p&gt;

&lt;p&gt;Please, no recruiters.&lt;/p&gt;</content>
      <author>
        <name>Tate Johnson</name>
        <uri>https://tatey.com</uri>
      </author>
    </entry>
  
    <entry xml:lang="en">
      <title type="html">We’re hiring Product Engineers (Ruby on Rails) at The Lookout Way</title>
      <link href="https://tatey.com/2022/01/27/we-are-hiring-product-engineers-ruby-on-rails-at-the-lookout-way/" rel="alternate" type="text/html" title="We&apos;re hiring Product Engineers (Ruby on Rails) at The Lookout Way" />
      <published>2022-01-27T00:00:00+10:00</published>
      <updated>2022-01-27T00:00:00+10:00</updated>
      <id>https://tatey.com/2022/01/27/we-are-hiring-product-engineers-ruby-on-rails-at-the-lookout-way</id>
      <content type="html" xml:base="https://tatey.com/2022/01/27/we-are-hiring-product-engineers-ruby-on-rails-at-the-lookout-way/">&lt;p&gt;Hi there, we’re &lt;a href=&quot;https://thelookoutway.com/&quot;&gt;The Lookout Way&lt;/a&gt; and we make Lookout — a care management platform that powers aged care and NDIS service providers to get exceptional outcomes for their clients, families, and support workers.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.thelookoutway.com/meet-the-team&quot;&gt;Our team&lt;/a&gt; extracted Lookout from the digital infrastructure we made by running a real, world-class service provider, &lt;a href=&quot;https://www.fivegoodfriends.com.au/&quot;&gt;Five Good Friends&lt;/a&gt;. Lookout has already powered over 1,000,000 hours of support in the home.&lt;/p&gt;

&lt;p&gt;We’re aiming for a start date in the next 4 months.&lt;/p&gt;

&lt;h1 id=&quot;about-the-job&quot;&gt;About the job&lt;/h1&gt;

&lt;p&gt;You’ll be working as a full-stack Ruby on Rails engineer on our platform known as Lookout. We structure our work around projects and you’ll focus on one project at a time. You’ll partner with another engineer and a designer to take a project from pitch through to production. The work is a blend of programming and collaboration on business problems giving you the control to balance delivery and trade-offs.&lt;/p&gt;

&lt;p&gt;We roughly follow &lt;a href=&quot;https://basecamp.com/shapeup/webbook&quot;&gt;ShapeUp&lt;/a&gt; so our projects and our projects are paced into &lt;a href=&quot;https://cycles.thelookoutway.net/&quot;&gt;eight-week cycles&lt;/a&gt;. We spend the first six weeks designing and building. We spend the last two weeks tidying up and doing maintenance. Our pitches describe the outcome, not the how, so we lean on your empathy, prowess, and collaboration with the project team to get us there.&lt;/p&gt;

&lt;p&gt;Supporting people to live well at home is broad so Lookout can be thought of as an integrated suite of tools to enable collaboration and remote monitoring in a client’s home for themselves, their families, workers, and health professionals. To try and give you a better idea of Lookout and the work we do here are some recent examples:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We built a feedback and broadcasting mechanism we call Must Dos and Should Knows. This mechanism keeps care teams looped in with each other through the CRM and the native apps. We’ve used this a lot during the pandemic.&lt;/li&gt;
  &lt;li&gt;Transitioned our frontend from plain HTML/CSS over to ViewComponent and Tailwind CSS by replacing chunks at a time. We made heavy use of feature flagging to minimise changes to users.&lt;/li&gt;
  &lt;li&gt;Made performance and bug fixes to open source projects we depend on.&lt;/li&gt;
  &lt;li&gt;Used Datadog to narrow in on two of our slowest pages and refactored them to be speedy again.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll shape pieces of architecture on the backend with Ruby and you’ll craft delightful interactions on the frontend with HTML, CSS, and JavaScript. It’s a broad spectrum so we don’t expect you to be deep at both ends. Instead, you’ll be complemented by a team that’s inclusive, kind, and flexible to help you learn and grow.&lt;/p&gt;

&lt;p&gt;The web is at the heart of what we do. We take this philosophy through to our &lt;a href=&quot;https://apps.apple.com/au/app/lookout/id1576631449&quot;&gt;native iOS&lt;/a&gt; and &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.thelookoutapp.android&amp;amp;hl=en_AU&amp;amp;gl=US&quot;&gt;Android apps&lt;/a&gt; too. They feel native, but they’re a hybrid app built on top of the Turbolinks (Upgrading to &lt;a href=&quot;https://turbo.hotwired.dev/&quot;&gt;Turbo&lt;/a&gt; is on the cards!) native adapters.&lt;/p&gt;

&lt;p&gt;Our tech stack and processes are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We have comprehensive tests and this allows us to do 30+ deploys a week through Buildkite&lt;/li&gt;
  &lt;li&gt;We aim to ship software calmly and use processes that allow us to operationalise calm eg. we use zero down time migrations, static analysis to prevent security threats&lt;/li&gt;
  &lt;li&gt;Heroku, Redis, Postgres, Datadog, Rails, TailwindCSS, StimulusJS, Turbo(links)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;about-you&quot;&gt;About you&lt;/h1&gt;

&lt;p&gt;Shipping high-quality software lights your fire. You’re a generalist at heart and you take pragmatic steps to move a project forward. You keep sight of the bigger picture, always working toward it and helping others see it too. You’re a great writer and you like writing. Writing is the main way you think and share.&lt;/p&gt;

&lt;p&gt;You believe in the collective ownership of the product. We celebrate the highs and we learn from the lows. We’re kind, honest, and authentic with each other. We invite debate and we encourage alternative perspectives, but when we commit, we put our differences aside and we see it through. You are autonomous but love deeply collaborating such as pairing with other engineers, prototyping with designers, and exploring the business case with product managers.&lt;/p&gt;

&lt;p&gt;You’ll work remotely from anywhere in Australia as long as you have a solid internet connection and a comfortable setup. We’re already in Perth, Adelaide, Melbourne, Sydney and Brisbane. We do have a COVID-safe office in the &lt;a href=&quot;https://www.google.com/maps/place/179+N+Quay,+Brisbane+City+QLD+4000/@-27.4684525,153.0170302,17z/data=!3m1!4b1!4m5!3m4!1s0x6b915a06b7c2c29d:0xc2eedf160f982ed9!8m2!3d-27.4684525!4d153.0192189&quot;&gt;Brisbane CBD&lt;/a&gt;, but you won’t be required to work from there, even after the pandemic.&lt;/p&gt;

&lt;p&gt;We strongly encourage candidates of all different backgrounds and identities to apply. Each new person is an opportunity for us to bring a different perspective to the team. We are committed to building an inclusive workplace where you can do your best and most rewarding work. We anonymise and redact applications so they can be reviewed fairly.&lt;/p&gt;

&lt;p&gt;You’ll be working with vulnerable people so we require you to complete a National Police Check and the &lt;a href=&quot;https://www.ndiscommission.gov.au/node/1236&quot;&gt;NDIS Worker Orientation Module&lt;/a&gt;. You must have the right to work in Australia.&lt;/p&gt;

&lt;h1 id=&quot;about-our-pay-and-perks&quot;&gt;About our pay and perks&lt;/h1&gt;

&lt;p&gt;This is a permanent, full-time position and depending on your skills and experience we’re prepared to offer you a salary up to $140,000 + 10% super, no matter where you live in Australia. You’ll also get a $4,500 budget to pick your laptop, accessories, and display.&lt;/p&gt;

&lt;p&gt;The way we work and the perks we offer are designed to help you live a fulfilling life. Some of us start late and some of us finish early. Some of us work in big blocks and some of us break it up. We overlap for most of the day and we work a regular week where overtime is a rarity. The work we do is meaningful and the problems we solve are interesting. We like coming to work and working together, but we’re 20 people who are also parents, carers, siblings, friends, students, athletes, and hobbyists with a life away from work too.&lt;/p&gt;

&lt;p&gt;You’ll get the standard four weeks of paid annual leave and the customary ten days of paid carer’s/sick leave. You’ll also get:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Wellbeing allowance: An annual $500 wellbeing allowance to spend on anything that betters your life away from work&lt;/li&gt;
  &lt;li&gt;Extra annual leave: +1 day of paid annual leave every year you are with us after your second year so you can take longer holidays.&lt;/li&gt;
  &lt;li&gt;Paid superannuation on parental leave: We will continue to pay your super when you take unpaid parental leave as the primary caregiver so your super doesn’t miss out.&lt;/li&gt;
  &lt;li&gt;Top up parental leave: We will pay the difference to your regular salary and parental leave from the Commonwealth Government for 4 weeks (+2 weeks every year you’re with us) if you’re the primary caregiver, or 2 weeks if you’re the non-primary caregiver.&lt;/li&gt;
  &lt;li&gt;Employee assistance programme: You can get private and professional counselling at anytime.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;how-to-apply&quot;&gt;How to apply&lt;/h1&gt;

&lt;p&gt;Introduce yourself to our team by sending an email to &lt;a href=&quot;mailto:thelookoutway+ibnkfi@emails.readblindly.com&quot;&gt;thelookoutway+ibnkfi@emails.readblindly.com&lt;/a&gt;. Tell us a bit about yourself and include your CV. Instead of a cover letter, we would love to hear your answers to these questions in the body of your email:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Why are you considering working at a product company and why now?&lt;/li&gt;
  &lt;li&gt;Would you consider yourself more of a backend person, more of a frontend person, or a mix of both? Where are you comfortable today and where would you like to learn and grow in the future?&lt;/li&gt;
  &lt;li&gt;You are working on a feature. You feel strongly developing it this way will get a better outcome, but your co-worker who is a Product Manager disagrees. What do you do next?&lt;/li&gt;
  &lt;li&gt;What do you think are the ingredients for building a high-quality web app? What does quality mean to you and how do you help maintain it over time? Can you share a proud or insightful moment with us as an example?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We put a premium on writing and we promise to give you our undivided attention. Your email will be anonymised and mentions of gender, nationality, languages, and places will be redacted so it can be read blindly and reviewed fairly.&lt;/p&gt;

&lt;p&gt;We are hiring on a rolling basis which means we read applications as they come in. You’ll first hear back from us within one week of applying and the successful candidates can expect to have an offer within three weeks of their application. Our hiring process is:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Send email to &lt;a href=&quot;mailto:thelookoutway+ibnkfi@emails.readblindly.com&quot;&gt;thelookoutway+ibnkfi@emails.readblindly.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;First interview to get acquainted and find alignment with your growth and our company. A video call with the CTO or Head of Engineering and one other member of the team.&lt;/li&gt;
  &lt;li&gt;Second interview to assess how well we collaborate. We will pair to understand business intentions and sketch a data model over a video call with an Engineering Manager&lt;/li&gt;
  &lt;li&gt;Offer, referee checks, and background checks.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://tatey.com/2020/01/19/starting-a-new-job-on-a-thursday/&quot;&gt;Start on a Thursday&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We’re grateful for your time and looking forward to hearing from you.&lt;/p&gt;

&lt;p&gt;Please, no recruiters.&lt;/p&gt;</content>
      <author>
        <name>Tate Johnson</name>
        <uri>https://tatey.com</uri>
      </author>
    </entry>
  
    <entry xml:lang="en">
      <title type="html">Get an inbox full of good cover letters</title>
      <link href="https://tatey.com/2022/01/07/get-an-inbox-full-of-good-cover-letters/" rel="alternate" type="text/html" title="Get an inbox full of good cover letters" />
      <published>2022-01-07T00:00:00+10:00</published>
      <updated>2022-01-07T00:00:00+10:00</updated>
      <id>https://tatey.com/2022/01/07/get-an-inbox-full-of-good-cover-letters</id>
      <content type="html" xml:base="https://tatey.com/2022/01/07/get-an-inbox-full-of-good-cover-letters/">&lt;p&gt;Imagine a job ad you posted has closed. You begin making the shortlist by skimming through submissions. You notice some applicants have written good cover letters, but most just summarised their CVs. You find an interesting applicant so you pause to re-read their submission. You learn about the companies they’ve worked for, but you wonder if their values will add to yours? You learn about the projects they’ve worked on, but you wonder how they make progress happen? You’ve gained perspective on their experience, but you don’t have any perspective on what they’re like to work with.&lt;/p&gt;

&lt;p&gt;Normally you’d seek to understand these characteristics through interviewing, and you should, but leaning entirely on interviewing is exhausting. Shouldn’t the effort of writing and reading cover letters be a way to gain an insightful perspective before interviewing? Why do some people seem good at writing cover letters while others seem to miss? A few years ago I started asking myself these questions. I began to experiment with helping our applicants write good cover letters after seeing this &lt;a href=&quot;https://m.signalvnoise.com/basecamp-is-hiring-customer-support-representatives/&quot;&gt;job ad&lt;/a&gt;. Cover letters which were relevant, insightful and surprising. Cover letters which showed applicants at their best, even if they didn’t have &lt;em&gt;all&lt;/em&gt; the experience.&lt;/p&gt;

&lt;p&gt;I learnt you can get an inbox full of good cover letters by letting applicants know what you’d like to see in their cover letters from your job ad. Instead of signing off with “Please introduce yourself by sending your cover letter and CV to…” I tried signing off with “Instead of a cover letter, we’d love to hear your answers to these questions…”. I supplied six, short answer questions which explored motivation, growth, collaboration, and values. These were the characteristics I longed to understand when making the shortlist.&lt;/p&gt;

&lt;p&gt;To give you a clearer idea of what I mean here’s an excerpt from a job ad I posted in late 2021 for a Frontend Designer:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Introduce yourself to our team by sending an email to &lt;a href=&quot;mailto:readblindly+f5jni3@emails.readblindly.com&quot;&gt;readblindly+f5jni3@emails.readblindly.com&lt;/a&gt;. Tell us a bit about yourself and include your CV. Instead of a cover letter, we would love to hear your answers to these questions in the body of your email:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;Why are you considering working here and why now?&lt;/li&gt;
    &lt;li&gt;Would you consider yourself more of a frontend developer, more of a UI designer, or a mix of both? Where are you comfortable today and where would you like to learn and grow in the future?&lt;/li&gt;
    &lt;li&gt;Have you worked with Ruby on Rails before (If not, that’s OK!)? What templating/technologies have you worked with? Which one was your favourite and why?&lt;/li&gt;
    &lt;li&gt;You are working on a feature. You feel strongly developing it this way will get a better outcome, but your co-worker who is a full-stack Product Engineer disagrees. What do you do next?&lt;/li&gt;
    &lt;li&gt;What do you think are the ingredients for building a high-quality app? What does quality mean to you and how do you help maintain it over time? Can you share a proud or insightful moment with us as an example?&lt;/li&gt;
    &lt;li&gt;Do you have a portfolio or screenshots of previous work you can share with us (If not, that’s OK!)? Link? Attachment?&lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;…and here’s an excerpt from a job ad I posted in late 2020 for a Product Manager:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Please introduce yourself to our team by sending an email to &lt;a href=&quot;mailto:readblindly+f5jni3@emails.readblindly.com&quot;&gt;readblindly+f5jni3@emails.readblindly.com&lt;/a&gt; along with your CV. Tell us a bit about yourself and imagine our futures together. We’d also love to hear your answers to these questions:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;Why are you considering working here and why now?&lt;/li&gt;
    &lt;li&gt;In the past, what have you done to gain confidence that the ideas and features being put forward for development are good bets?&lt;/li&gt;
    &lt;li&gt;Imagine the project team is about to finish an exciting new feature. It has the potential to grow earnings for the organisation that use it, but it will require them to make some tough changes to their internal processes. Working with our marketing and customer relationship teams, what tactic might you use to help the organisation understand and take on the new feature?&lt;/li&gt;
    &lt;li&gt;Tell us about an experience where an idea that you turned into a feature and shipped ended up being a mistake. What did you learn from that experience and what would you have changed if you could go back in time?&lt;/li&gt;
    &lt;li&gt;Briefly describe some of the previous roles you’ve had (It does not have to be a product role). What are you are most proud of achieving while in that role? What did you learn that you’ve used in other roles? What would you do differently now if you had that role again?&lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;…and here’s an excerpt from a job ad I posted in mid 2020 for an IT Support Specialist:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;A description of a great support/customer service experience you had recently and what made it great.&lt;/li&gt;
    &lt;li&gt;A time you taught yourself a new skill to complete a job or project.&lt;/li&gt;
    &lt;li&gt;A guide to making your favourite meal (Or maybe the only meal you can make?)&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;All job ads I’ve posted since mid 2020 have signed off with questions. Originally they were in addition to the cover letter, but now they’re in lieu of the cover letter. I’ve experimented with asking 3 questions, 5 questions, and 6 questions. I’ve experimented with asking general questions and specific questions. I’ve learnt to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Ask 5-6 short answer questions. Any less and you don’t get enough breadth. Any more and it’s too time consuming for the applicant to write, and for you to read.&lt;/li&gt;
  &lt;li&gt;Cover a spectrum of characteristics. It doesn’t matter if the questions themselves are general or specific. Spend them wisely and don’t double up.&lt;/li&gt;
  &lt;li&gt;Draw inspiration from recent experience or problems. If it’s an existing job ask someone in the job. If it’s a new job consider the circumstances of how you learnt about the problem.&lt;/li&gt;
  &lt;li&gt;Keep questions relevant. Don’t assume you can copy questions from an old job ad for your new job ad.&lt;/li&gt;
  &lt;li&gt;Write questions yourself. Don’t leave it to someone else.&lt;/li&gt;
  &lt;li&gt;Emphasise to applicants that you, the hiring manager, who is also a human, will read their submissions.&lt;/li&gt;
  &lt;li&gt;Give gratitude to applicants for taking the time to apply, irrespective of your evaluation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When it comes to reviewing submissions the first thing you’ll notice is the applicants who read the job ad, and the applicants who didn’t. I decline the applicants who didn’t. The second thing you’ll notice is how comprehensive the cover letters are, and the baseline you now have to compare objectively. I recommend doing a pass on cover letters first to make your initial shortlist, and then go back and do a pass on CVs to make your final shortlist. I weigh cover letters above CVs because of their relevance to the job ad.&lt;/p&gt;

&lt;p&gt;When it comes to interviewing applicants, the experience may feel closer to the second interview. Not quite the second interview because you’ve never met before, but not quite the first interview because you’ve already gained an insightful perspective. I recommend using some of the applicant’s answers to go deeper, especially if they are surprising to you.&lt;/p&gt;

&lt;p&gt;Next time you post a job ad consider signing off with 5-6 questions and you may get an inbox full of good cover letters. They may help you resolve a tie breaker, or they may help you discover an applicant outside your sphere. Likewise, they may help applicants write more insightfully about themselves. Either way, you’ll be making your shortlist with a more insightful perspective. Feel free to use and mix any of the questions from the above excerpts if they inspire you.&lt;/p&gt;</content>
      <author>
        <name>Tate Johnson</name>
        <uri>https://tatey.com</uri>
      </author>
    </entry>
  
    <entry xml:lang="en">
      <title type="html">How Namestork evolved from an idea to a tiny service over four years</title>
      <link href="https://tatey.com/2022/01/04/how-namestork-evolved-from-an-idea-to-a-tiny-service-over-four-years/" rel="alternate" type="text/html" title="How Namestork evolved from an idea to a tiny service over four years" />
      <published>2022-01-04T00:00:00+10:00</published>
      <updated>2022-01-04T00:00:00+10:00</updated>
      <id>https://tatey.com/2022/01/04/how-namestork-evolved-from-an-idea-to-a-tiny-service-over-four-years</id>
      <content type="html" xml:base="https://tatey.com/2022/01/04/how-namestork-evolved-from-an-idea-to-a-tiny-service-over-four-years/">&lt;p&gt;This is the story behind my tiny service, &lt;a href=&quot;https://namestork.app&quot;&gt;Namestork&lt;/a&gt;. It brings nine names to you and your partner’s inbox once a day at a time of your choosing. If you’re looking for a calm way to find the perfect name for your baby consider trying it.&lt;/p&gt;

&lt;h1 id=&quot;idea&quot;&gt;Idea&lt;/h1&gt;

&lt;p&gt;In 2017 my partner and I were expecting our second child and we weren’t happy with any of the names we had. We were overwhelmed with scrolling endless A-Z lists. We were tired of putting down each others’ suggestions. We didn’t know if we were having a girl or a boy. Our baby was 6 months away and all we could feel was this pressure to come up with a name.&lt;/p&gt;

&lt;p&gt;Why were we rushing it? We had time on our side. We wanted to move at a slower, calmer pace. That’s when the idea came to us. What if we could get a handful of names delivered to our inbox once a day? A mix of popular and unique names that we could look at in the morning along with our newsletters. We could favourite the names we liked, and if we both favourited the same name, we’d get told about our match. If we didn’t like any of the names, that’s ok, we could calmly move on knowing we’d get more the next day.&lt;/p&gt;

&lt;p&gt;I began to imagine how the service might work, but I didn’t know if it was going to help us find a baby name. I was determined for it to be a sustainable hobby so I set myself two constraints. The first was to budget my time to a few hours a week. The second was to imagine the least I could get away with, and when I imagined that, I challenged myself to get away with even less.&lt;/p&gt;

&lt;h1 id=&quot;test-1-whats-it-like-to-get-a-daily-email-with-random-baby-names&quot;&gt;Test #1: What’s it like to get a daily email with random baby names?&lt;/h1&gt;

&lt;p&gt;The first thing I wanted to test was the medium. My plan was to email a list of random baby names once a day, similar to how you might get daily newsletters sent to your inbox. If I could get away with email then I could expirement faster because I wouldn’t need to make native apps for iOS and Android.&lt;/p&gt;

&lt;p&gt;I sat at my computer and typed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails new&lt;/code&gt;. I defaulted everything. I used Minitest. I used callbacks. I wrote fat controllers. I was cheating and my progress was flying. After four nights over two weeks I had created a basic service. My partner and I were getting random baby names in our inboxes. We could tap a name to favourite it. We got another email when we had a match. There was no way to sign up or sign in. There was no user interface or customisation. There was no way to stop the emails or see favourites. Just &lt;a href=&quot;https://github.com/tatey/list_of_baby_names&quot;&gt;random baby names from public datasets&lt;/a&gt; I scraped together.&lt;/p&gt;

&lt;p&gt;My partner and I didn’t get many matches, but when we did, we both knew we had a baby name to talk about over dinner. The matches we got become our shortlist and the random names we were being exposed to widened our perspective. We had heard some of these names before, but we weren’t considering them because they were outside our sphere, so rediscovering them was a delight. We weren’t putting down each other’s suggestions anymore. We weren’t feeling pressure anymore. It was fun!&lt;/p&gt;

&lt;h1 id=&quot;test-2-would-it-work-with-other-people&quot;&gt;Test #2: Would it work with other people?&lt;/h1&gt;

&lt;p&gt;The next thing I wanted to test was other people using the service. The service was working well for us and we were having fun, but would it work for other people and would they have fun too?&lt;/p&gt;

&lt;p&gt;I needed a domain for the web and mail server, but I didn’t want to get stuck here. I quickly registered something a bit long, but completely unambigious: findmeababyname.com. We invited our friends, our co-workers, and anyone we knew who was expecting. To my delight people wanted to try it out so I typed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rails console&lt;/code&gt; and created a record in the database to sign them up. They found some invalid names like “infant” and “unknown”. They found a bug where the favorite link would sometimes break because of how I expired tokens. Mostly, they told me what they liked, and what they didn’t, and no one wanted to stop the emails. I could see names were being favourited and matches were being made.&lt;/p&gt;

&lt;p&gt;The basic service was working, but it would take months before I learned if it helped anyone find a baby name. My next decision was between going deeper on the mechanics or designing the user interface. Given most people seemed satisfied with how the mechanics worked, I opted to polish what was already there over adding new features. I opened Sketch and &lt;a href=&quot;https://dribbble.com/shots/4017603-List-of-baby-name-suggestions-by-Namestork&quot;&gt;designed the daily list of baby name suggestions&lt;/a&gt;. This is the most important screen people landed on it when they favorited a name from their inbox. I didn’t design any more screens in Sketch. With this mock up as inspiration I designed the rest of the user interface straight in HTML and CSS. I like working on nice things and now the service looked nice enough.&lt;/p&gt;

&lt;h1 id=&quot;hiatus&quot;&gt;Hiatus&lt;/h1&gt;

&lt;p&gt;At the start of 2018 we welcomed our baby into the world and the service had given us a handful of matches. If we had a girl she would have been Willow, but we had a boy, so we named him Hamish (Dean was a close second). It worked! We calmly found a name for our baby.&lt;/p&gt;

&lt;p&gt;The service was sending about 50 emails a day, and while it worked for us, taking it to the next level wouldn’t be sustainable at this time in my life. My partner and I had a new human we were responsible for. No one could sign up. There was still a weird bug with expired tokens. The service would need to be maintained and the servers would need to be patched. It wasn’t generating any revenue.&lt;/p&gt;

&lt;p&gt;One of the neat things about sending an email once a day is you already have a way to reach out to people. When I made changes to the service I would place a paragraph at the top to give everyone a heads up. I used this technique to announce my decision to shutdown the service and set the reply-to to my personal email address. I waited until people told me they copied down their shortlists and then I shut the service down and let the domain expire.&lt;/p&gt;

&lt;h1 id=&quot;test-3-launch-on-product-hunt&quot;&gt;Test #3: Launch on Product Hunt&lt;/h1&gt;

&lt;p&gt;At the end of 2020 I caught up with a friend who had welcomed their second child that year. They shared with me the name they gave their child came from the service. I was chuffed. I was looking to pick up a hobby again so I dusted off the service with the intent to launch publically.&lt;/p&gt;

&lt;p&gt;Over the next few weeks I made it so you could sign up, invite your partner (or not!), stop the emails, change the time of day, and filter based on gender. I wanted to test if people would sign up cold and I wanted to test if they’d sign up knowing the service would be supported by classified ads. I didn’t do the work to put the ads in because I was trying to get away with the least, but I wanted to see if stating it would deter people. This is an excerpt from the home page:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;We run a single classified ad at the bottom of the daily email. There’s no tracking. There’s no spy pixels. We don’t sell or share any data with the advertiser. The only data the advertiser knows is they’re running an ad on Namestork.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I had let findmeababyname.com expire so I needed a domain. I didn’t like the old domain and decided to think of something new. I like names that are short, descriptive, and fun. I wanted something people could remember, type into a search engine, and find from the first result. I came up with Namestork, like a stork that brings you baby names. Someone already had the .com which was a bit of a bummer, but undeterred I registered namestork.app.&lt;/p&gt;

&lt;p&gt;I’ve been a long time lurker on Product Hunt, but I’ve never posted before. I noticed the posts I usually upvote have a nice logo, impactful description, a few screenshots, and a compelling home page. I thought this would give me the best chance of success so I set out to replicate it. I &lt;a href=&quot;https://mastodon.social/@tatey/106513613651379845&quot;&gt;bought and customised a stock logo&lt;/a&gt;, decorated some screenshots, wrote an FAQ on the home page, and &lt;a href=&quot;https://www.producthunt.com/posts/namestork&quot;&gt;launched on Product Hunt&lt;/a&gt;. It didn’t get in the top 10, but &lt;a href=&quot;https://mastodon.social/@tatey/106539251805874111&quot;&gt;people did sign up&lt;/a&gt;, and at its peak the service was sending about 500 emails a day.&lt;/p&gt;

&lt;h1 id=&quot;whats-next&quot;&gt;What’s next?&lt;/h1&gt;

&lt;p&gt;I have two goals.&lt;/p&gt;

&lt;p&gt;The first is to improve the service. I’m sitting on a tonne of feedback and I’ve got a few ideas on how to refine the mechanics, like flitering based on culture.&lt;/p&gt;

&lt;p&gt;The second is to make the service sustainable. It’s costing me about US$25/m when you factor in the VPS, backups, mail, and monitoring. I’m not convinced people would pay a monthly subscription for the service, so I’d like to expirement with running a single classified ad which doesn’t share data back to the advertiser. I think this could be a good compromise between sustainabilty and privacy. This model is common in other regular emails, like newsletters.&lt;/p&gt;

&lt;p&gt;If you’re looking to diplomatically find the perfect name for your baby consider trying &lt;a href=&quot;https://namestork.app&quot;&gt;Namestork&lt;/a&gt;. If you have any thoughts, questions, or comments I’d love to hear them. Drop me an email &lt;a href=&quot;mailto:tate@tatey.com?subject=Namestork&quot;&gt;tate@tatey.com&lt;/a&gt;.&lt;/p&gt;</content>
      <author>
        <name>Tate Johnson</name>
        <uri>https://tatey.com</uri>
      </author>
    </entry>
  
</feed>
