<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://abhinavg.net/posts/index.xml" rel="self" type="application/atom+xml" /><link href="https://abhinavg.net/" rel="alternate" type="text/html" /><updated>2026-04-06T03:52:57+00:00</updated><id>https://abhinavg.net/posts/index.xml</id><title type="html">Abhinav Gupta</title><author><name>Abhinav Gupta</name></author><entry><title type="html">GopherCon 2023: Future-Proof Go Packages</title><link href="https://abhinavg.net/2023/09/27/future-proof-packages/" rel="alternate" type="text/html" title="GopherCon 2023: Future-Proof Go Packages" /><published>2023-09-27T00:00:00+00:00</published><updated>2023-09-27T00:00:00+00:00</updated><id>https://abhinavg.net/2023/09/27/future-proof-packages</id><author><name>Abhinav Gupta</name></author><category term="golang" /><summary type="html"><![CDATA[Slides for my talk from GopherCon 2023.]]></summary></entry><entry><title type="html">Designing Go Libraries</title><link href="https://abhinavg.net/2022/12/06/designing-go-libraries/" rel="alternate" type="text/html" title="Designing Go Libraries" /><published>2022-12-06T00:00:00+00:00</published><updated>2022-12-06T00:00:00+00:00</updated><id>https://abhinavg.net/2022/12/06/designing-go-libraries</id><author><name>Abhinav Gupta</name></author><category term="golang" /><summary type="html"><![CDATA[Requirements for writing high-quality Go libraries and patterns and best practices to help meet them.]]></summary></entry><entry><title type="html">Introduction to generics in Go</title><link href="https://abhinavg.net/2022/11/23/generics-intro/" rel="alternate" type="text/html" title="Introduction to generics in Go" /><published>2022-11-23T00:00:00+00:00</published><updated>2022-11-23T00:00:00+00:00</updated><id>https://abhinavg.net/2022/11/23/generics-intro</id><author><name>Abhinav Gupta</name></author><category term="golang" /><summary type="html"><![CDATA[Basics of function and type-level generics in Go, their limitations, and how to design around those limitations.]]></summary></entry><entry><title type="html">Bare minimum semantic versioning</title><link href="https://abhinavg.net/2022/11/07/semver/" rel="alternate" type="text/html" title="Bare minimum semantic versioning" /><published>2022-11-07T00:00:00+00:00</published><updated>2022-11-07T00:00:00+00:00</updated><id>https://abhinavg.net/2022/11/07/semver</id><author><name>Abhinav Gupta</name></author><summary type="html"><![CDATA[Basics of semantic versioning, and why you should do it.]]></summary></entry><entry><title type="html">Go Patterns and Practices</title><link href="https://abhinavg.net/2022/09/19/go-patterns-and-practices-talk/" rel="alternate" type="text/html" title="Go Patterns and Practices" /><published>2022-09-19T00:00:00+00:00</published><updated>2022-09-19T00:00:00+00:00</updated><id>https://abhinavg.net/2022/09/19/go-patterns-and-practices-talk</id><author><name>Abhinav Gupta</name></author><category term="golang" /><summary type="html"><![CDATA[Slides from a talk about writing maintainable Go packages.]]></summary></entry><entry><title type="html">Subcommands with Go’s flag package</title><link href="https://abhinavg.net/2022/08/13/flag-subcommand/" rel="alternate" type="text/html" title="Subcommands with Go’s flag package" /><published>2022-08-13T00:00:00+00:00</published><updated>2022-08-13T00:00:00+00:00</updated><id>https://abhinavg.net/2022/08/13/flag-subcommand</id><author><name>Abhinav Gupta</name></author><category term="golang" /><summary type="html"><![CDATA[Gain a better understanding of Go's standard flag package and use it to build CLIs with subcommands.]]></summary></entry><entry><title type="html">Handle spaces in file names with xargs</title><link href="https://abhinavg.net/2022/06/04/xargs-spaces/" rel="alternate" type="text/html" title="Handle spaces in file names with xargs" /><published>2022-06-04T00:00:00+00:00</published><updated>2022-06-04T00:00:00+00:00</updated><id>https://abhinavg.net/2022/06/04/xargs-spaces</id><author><name>Abhinav Gupta</name></author><category term="command line" /><summary type="html"><![CDATA[A gotcha with xargs, and how to work around it.]]></summary></entry><entry><title type="html">Mock programs to test os/exec in Go</title><link href="https://abhinavg.net/2022/05/15/hijack-testmain/" rel="alternate" type="text/html" title="Mock programs to test os/exec in Go" /><published>2022-05-15T00:00:00+00:00</published><updated>2022-05-15T00:00:00+00:00</updated><id>https://abhinavg.net/2022/05/15/hijack-testmain</id><author><name>Abhinav Gupta</name></author><category term="golang" /><category term="testing" /><summary type="html"><![CDATA[Learn how the test machinery works in Go and how you can use it to inject arbitrary mock behavior into external binaries during tests.]]></summary></entry><entry><title type="html">Go errors: Use %q with fmt.Errorf</title><link href="https://abhinavg.net/2021/12/29/fmt-errof-q/" rel="alternate" type="text/html" title="Go errors: Use %q with fmt.Errorf" /><published>2021-12-29T00:00:00+00:00</published><updated>2021-12-29T00:00:00+00:00</updated><id>https://abhinavg.net/2021/12/29/fmt-errof-q</id><author><name>Abhinav Gupta</name></author><category term="golang" /><summary type="html"><![CDATA[Why you should almost always use %q for strings variables in printf-style functions in Go.]]></summary></entry><entry><title type="html">How to write flexible YAML shapes in Go</title><link href="https://abhinavg.net/2021/02/24/flexible-yaml/" rel="alternate" type="text/html" title="How to write flexible YAML shapes in Go" /><published>2021-02-24T00:00:00+00:00</published><updated>2021-02-24T00:00:00+00:00</updated><id>https://abhinavg.net/2021/02/24/flexible-yaml</id><author><name>Abhinav Gupta</name></author><category term="golang" /><summary type="html"><![CDATA[Leverage the YAML package to write flexible YAML shapes. Adapt the same technique to make JSON shapes flexible.]]></summary></entry></feed>