<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://lesiw.dev/</id><title>lesiw.dev</title><subtitle>The technical blog of Chris Lesiw, a Go developer with a focus on building simple, robust, and sustainable software.</subtitle> <updated>2026-03-26T21:50:34-04:00</updated> <author> <name>Chris Lesiw</name> <uri>https://lesiw.dev/</uri> </author><link rel="self" type="application/atom+xml" href="https://lesiw.dev/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://lesiw.dev/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Chris Lesiw </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Many-Step Sequences in Go</title><link href="https://lesiw.dev/go/step/" rel="alternate" type="text/html" title="Many-Step Sequences in Go" /><published>2026-03-24T00:00:00-04:00</published> <updated>2026-03-24T00:00:00-04:00</updated> <id>https://lesiw.dev/go/step/</id> <content type="text/html" src="https://lesiw.dev/go/step/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>Breaking up programs with lots of linear steps.</summary> </entry> <entry><title>Create an Ollama server</title><link href="https://lesiw.dev/ollama/listen/" rel="alternate" type="text/html" title="Create an Ollama server" /><published>2025-04-19T00:00:00-04:00</published> <updated>2025-04-19T00:00:00-04:00</updated> <id>https://lesiw.dev/ollama/listen/</id> <content type="text/html" src="https://lesiw.dev/ollama/listen/" /> <author> <name>Chris Lesiw</name> </author> <category term="ollama" /> <summary>Learn how to configure Ollama on a spare Macbook or Mac Mini so it can be accessed remotely.</summary> </entry> <entry><title>An overview of Go structs</title><link href="https://lesiw.dev/go/struct/" rel="alternate" type="text/html" title="An overview of Go structs" /><published>2025-04-13T00:00:00-04:00</published> <updated>2025-04-13T00:00:00-04:00</updated> <id>https://lesiw.dev/go/struct/</id> <content type="text/html" src="https://lesiw.dev/go/struct/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>An overview of Go structs: fields, tags, empty structs, size optimization, anonymous declarations, and embedding.</summary> </entry> <entry><title>repo: A tiny solution for a tiny problem</title><link href="https://lesiw.dev/repo/" rel="alternate" type="text/html" title="repo: A tiny solution for a tiny problem" /><published>2025-04-09T00:00:00-04:00</published> <updated>2025-04-09T00:00:00-04:00</updated> <id>https://lesiw.dev/repo/</id> <content type="text/html" src="https://lesiw.dev/repo/" /> <author> <name>Chris Lesiw</name> </author> <summary>I wrote a small program to answer the question, &amp;quot;Now where did I put that code?&amp;quot;</summary> </entry> <entry><title>Don't defer in tests</title><link href="https://lesiw.dev/go/cleanup/" rel="alternate" type="text/html" title="Don&amp;apos;t defer in tests" /><published>2025-04-08T00:00:00-04:00</published> <updated>2025-04-08T00:00:00-04:00</updated> <id>https://lesiw.dev/go/cleanup/</id> <content type="text/html" src="https://lesiw.dev/go/cleanup/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>Deferring is a useful mechanism in most of Go, but in tests, there&amp;#39;s a better way.</summary> </entry> <entry><title>golang-announce RSS feed</title><link href="https://lesiw.dev/go/announce/" rel="alternate" type="text/html" title="golang-announce RSS feed" /><published>2025-04-07T00:00:00-04:00</published> <updated>2025-04-07T00:00:00-04:00</updated> <id>https://lesiw.dev/go/announce/</id> <content type="text/html" src="https://lesiw.dev/go/announce/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>The golang-announce Google group wasn&amp;#39;t available as an RSS feed, so I wrote a small program to fix that. Here&amp;#39;s the feed if you&amp;#39;d also like to use it.</summary> </entry> <entry><title>Go review references</title><link href="https://lesiw.dev/go/review/" rel="alternate" type="text/html" title="Go review references" /><published>2025-03-16T00:00:00-04:00</published> <updated>2025-03-16T00:00:00-04:00</updated> <id>https://lesiw.dev/go/review/</id> <content type="text/html" src="https://lesiw.dev/go/review/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>A collection of Go wisdom for easy access and sharing during code review.</summary> </entry> <entry><title>Go proverbs</title><link href="https://lesiw.dev/go/proverbs/" rel="alternate" type="text/html" title="Go proverbs" /><published>2025-03-15T00:00:00-04:00</published> <updated>2025-03-15T00:00:00-04:00</updated> <id>https://lesiw.dev/go/proverbs/</id> <content type="text/html" src="https://lesiw.dev/go/proverbs/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>A transcription of the Go Proverbs talk given by Rob Pike at Gopherfest 2015.</summary> </entry> <entry><title>Limit line length</title><link href="https://lesiw.dev/len/" rel="alternate" type="text/html" title="Limit line length" /><published>2025-03-14T00:00:00-04:00</published> <updated>2025-03-14T00:00:00-04:00</updated> <id>https://lesiw.dev/len/</id> <content type="text/html" src="https://lesiw.dev/len/" /> <author> <name>Chris Lesiw</name> </author> <summary>Want a codebase that&amp;#39;s easier to read, maintain, and extend? Enforce a line length limit.</summary> </entry> <entry><title>Add methods to anything</title><link href="https://lesiw.dev/go/method/" rel="alternate" type="text/html" title="Add methods to anything" /><published>2025-03-13T00:00:00-04:00</published> <updated>2025-03-13T00:00:00-04:00</updated> <id>https://lesiw.dev/go/method/</id> <content type="text/html" src="https://lesiw.dev/go/method/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>Go methods don&amp;#39;t have to be declared on structs.</summary> </entry> <entry><title>Single-binary Docker images</title><link href="https://lesiw.dev/go/docker/" rel="alternate" type="text/html" title="Single-binary Docker images" /><published>2025-03-12T00:00:00-04:00</published> <updated>2025-03-12T00:00:00-04:00</updated> <id>https://lesiw.dev/go/docker/</id> <content type="text/html" src="https://lesiw.dev/go/docker/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>Go applications are very self-contained. So self-contained, in fact, that they can act as their own Docker container!</summary> </entry> <entry><title>Build your own stacktrace</title><link href="https://lesiw.dev/go/stacktrace/" rel="alternate" type="text/html" title="Build your own stacktrace" /><published>2025-03-11T00:00:00-04:00</published> <updated>2025-03-11T00:00:00-04:00</updated> <id>https://lesiw.dev/go/stacktrace/</id> <content type="text/html" src="https://lesiw.dev/go/stacktrace/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>Go doesn&amp;#39;t come with stacktraces. It encourages you to build your own.</summary> </entry> <entry><title>Git notes</title><link href="https://lesiw.dev/git/" rel="alternate" type="text/html" title="Git notes" /><published>2025-03-10T00:00:00-04:00</published> <updated>2025-03-10T00:00:00-04:00</updated> <id>https://lesiw.dev/git/</id> <content type="text/html" src="https://lesiw.dev/git/" /> <author> <name>Chris Lesiw</name> </author> <summary>Recommended git configurations and other tips.</summary> </entry> <entry><title>Structs are configuration</title><link href="https://lesiw.dev/go/opts/" rel="alternate" type="text/html" title="Structs are configuration" /><published>2025-03-09T00:00:00-05:00</published> <updated>2025-03-09T00:00:00-05:00</updated> <id>https://lesiw.dev/go/opts/</id> <content type="text/html" src="https://lesiw.dev/go/opts/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>The &amp;quot;functional options&amp;quot; pattern in Go is very silly. Here&amp;#39;s an easier alternative.</summary> </entry> <entry><title>Done channels</title><link href="https://lesiw.dev/go/done/" rel="alternate" type="text/html" title="Done channels" /><published>2025-03-08T00:00:00-05:00</published> <updated>2025-03-08T00:00:00-05:00</updated> <id>https://lesiw.dev/go/done/</id> <content type="text/html" src="https://lesiw.dev/go/done/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>If you need multiple goroutines to wait for the same thing, use a done channel.</summary> </entry> <entry><title>Error handling in main()</title><link href="https://lesiw.dev/go/runfunc/" rel="alternate" type="text/html" title="Error handling in main()" /><published>2025-03-06T00:00:00-05:00</published> <updated>2025-03-06T00:00:00-05:00</updated> <id>https://lesiw.dev/go/runfunc/</id> <content type="text/html" src="https://lesiw.dev/go/runfunc/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>What&amp;#39;s the right way to handle errors in the main function?</summary> </entry> <entry><title>For/Else in Go</title><link href="https://lesiw.dev/go/forelse/" rel="alternate" type="text/html" title="For/Else in Go" /><published>2025-03-04T00:00:00-05:00</published> <updated>2025-03-04T00:00:00-05:00</updated> <id>https://lesiw.dev/go/forelse/</id> <content type="text/html" src="https://lesiw.dev/go/forelse/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>Python has a handy for/else construction. Go has an equivalent.</summary> </entry> <entry><title>Go testing tips</title><link href="https://lesiw.dev/go/testing/" rel="alternate" type="text/html" title="Go testing tips" /><published>2025-03-01T00:00:00-05:00</published> <updated>2025-03-01T00:00:00-05:00</updated> <id>https://lesiw.dev/go/testing/</id> <content type="text/html" src="https://lesiw.dev/go/testing/" /> <author> <name>Chris Lesiw</name> </author> <category term="go" /> <summary>This page collates some strategies I&amp;#39;ve found useful when testing Go programs.</summary> </entry> </feed>
