<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>bosabosa</title>
        <link>https://dds.bosabosa.org</link>
        <description>Writings on life, personal events, troubles, struggles, and work.</description>
        <lastBuildDate>Sun, 05 Apr 2026 13:05:41 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Next.js using Feed for Node.js</generator>
        <language>en</language>
        <copyright>All rights reserved 2026, David D. Smith.</copyright>
        <item>
            <title><![CDATA[Violence in America]]></title>
            <link>https://dds.bosabosa.org/news/20220525-violence</link>
            <guid isPermaLink="false">https://dds.bosabosa.org/news/20220525-violence</guid>
            <pubDate>Thu, 26 May 2022 06:07:00 GMT</pubDate>
            <description><![CDATA[The shift in late 20th century America and the prophet George Carlin]]></description>
            <content:encoded><![CDATA[
America seems like a strange place to live in this day and age. Another mass murder at an elementary school. This time, 19 of 22 victims are fourth graders. My daughter is also a fourth grader, discussing it at school before I even pick her up.

Last night, we played Scrabble and I lit the candle that I got from the synagogue when my dad died. We had a good time and did not discuss it. We were all processing it. I don't feel bad about not discussing it last night and simply turning it off.

Tonight, daughter and I spoke about it, over a video call. We are scared. California does what it can but gun violence is just one consequence of the broken politics in America. It has happened in San Francisco. I don't know what to say.

I'm watching the George Carlin documentary. The drug culture part of it shows the root psychological challenge -- the stress, the ledger in the black. Seven dirty words.
]]></content:encoded>
            <author>David D. Smith</author>
        </item>
        <item>
            <title><![CDATA[Explorations in Cloud Orchestration]]></title>
            <link>https://dds.bosabosa.org/news/explorations-in-cloud-orchestration</link>
            <guid isPermaLink="false">https://dds.bosabosa.org/news/explorations-in-cloud-orchestration</guid>
            <pubDate>Mon, 04 Jan 2021 11:42:00 GMT</pubDate>
            <description><![CDATA[The state of the art in cloud orchestration in January 2021 with Pulumi, k3s, gRPC, tailscale, and more.]]></description>
            <content:encoded><![CDATA[
[github workflows]: https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions
[react]: https://reactjs.org/
[dave anderson's new kubernetes idea]: https://blog.dave.tf/post/new-kubernetes/
[pulumi guestbook]: https://github.com/pulumi/examples/tree/master/kubernetes-go-guestbook
[jrscott's k3s on raspberrypi]: https://medium.com/coming-about/10-minutes-to-k3s-on-raspberry-pis-efe3daf2a33d
[ingress spec]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#ingressspec-v1-networking-k8s-io
[k3s]: https://k3s.io/
[tailscale]: https://tailscale.com/
[tailscale acls]: https://tailscale.com/kb/1018/acls
[ice (rfc 8445)]: https://tools.ietf.org/html/rfc8445
[how nat traversal works]: https://tailscale.com/blog/how-nat-traversal-works/
[tailscale dog cam]: https://tailscale.com/kb/1076/dogcam
[mdx]: https://mdxjs.com/
[oxide]: https://oxide.computer/
[securing the boot process]: https://cacm.acm.org/magazines/2020/3/243026-securing-the-boot-process/fulltext
[raspberrypi kubernetes cluser over tailscale]: https://nativecloud.dev/scale-out-your-raspberry-pi-k3s-cluster-to-the-cloud/
[ec2 terraform for hybrid cloud]: https://github.com/voigt/pinetes/tree/master/terraform
[tailscale home server]: https://mrkaran.dev/posts/home-server-updates/
[openfaas, cert-manager, and k3sup]: https://blog.alexellis.io/tls-the-easy-way-with-openfaas-and-k3sup/
[traefik ingress controller]: https://doc.traefik.io/traefik/v1.7/configuration/backends/kubernetes/
[mailu k8s setup]: https://mailu.io/1.7/kubernetes/mailu/index.html
[digitalocean's tutorial on cert-manager]: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes
[kuard]: https://github.com/kubernetes-up-and-running/kuard
[orga]: https://orga.js.org/
[grpc]: https://grpc.io/
[go]: https://go.dev/
[thrift]: https://thrift.apache.org/
[openapi]: https://openapis.org/
[k8s tutorials]: https://kubernetes.io/docs/tutorials/
[faas]: https://en.wikipedia.org/wiki/Function_as_a_service
[openfaas]: https://www.openfaas.com/
[gcp appengine]: https://cloud.google.com/appengine
[aws lambda]: https://aws.amazon.com/lambda/
[kubernetes]: https://kubernetes.io/

Last month, I was able to play with lots of tech that we don't use at work. It
started with setting up automation with [github workflows] to replicate some of
what I've gotten accustomed to at work: configuring GitHub actions for automated
versioning and dependency updates, all controlled through the repo.

I launched this blog to share the experience so I began [learning
gatsby](/b/learning-gatsby). That's been extremely educational and rewarding.
This site is written in a mix of markdown and orgmode files with embedded React
components. I'll never go back. The power in the [MDX] and [Orga] libraries is
bay far the best way I've found to author and manage content.

When I brought this up to a friend, who normally works on more front-end things,
he gave me some advice and also had a question for me: what do I think of using
[gRPC] with [Go] on the back-end with [React] apps on the front-end. That made
me think, "how can I show off a guestbook app powered by gRPC?" Shouldn't be
hard, right? What I would have liked to do is to give him a git branch where he
could just run the gRPC backend on a server-less (or [FaaS]) system like [GCP
AppEngine] or [AWS Lambda]. It turns out you _still cannot_ use gRPC in any of
those environments. gRPC requires a long-running server process (meanwhile, you
_can_ use [thrift]). And that actually makes a ton of sense.

[pi-hole]: https://pi-hole.net/
[five years doing raspberry pi clusters]: https://www.raspberrypi.org/blog/five-years-of-raspberry-pi-clusters/
[micro-k8s]: https://microk8s.io/
[k0s]: https://k0sproject.io/
[alex ellis]: https://www.alexellis.io/
[openfaas architecture]: https://docs.openfaas.com/openfaas-cloud/architecture/
[k3sup]: https://github.com/alexellis/k3sup

Alright, let's make a guestbook server. For some reason, I thought this would be
a neat project to explore the state of the art of [kubernetes] (aka k8s). Maybe,
somewhere in the back of my mind, I had once seen that the official [k8s
tutorials] actually deploy a PHP Guestbook application however I would re-learn
that fact a few days later. I wanted to set up a [k8s][kubernetes] cluster on a
pair of [raspberry pi
4s](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) I use at home
for various things like [Pi-Hole] for parental controls, network monitoring,
DNS, DHCP, and network booting and OS installs. There are now at least three
alternative distributions of [k8s] to run on your pi: [micro-k8s], [k3s], and
[k0s]. I did a little digging and [Alex Ellis] has spent the last [five years
doing raspberry pi clusters]. He's started the [openfaas] project which, I
believe, will eventually be the model for almost all software. Alex's work is
extremely impressive. Reading about his experience and seeing how
[popular][jrscott's k3s on raspberrypi] and [tested][openfaas, cert-manager, and k3sup] his work is, I chose to use his [k3sup] program to bring up [k3s] on my
pair of pis. It really was as easy as advertised. I was able to rebuild the
cluster a few times in a day and it's now in a shape I'm excited to play with
next time. Great work, Alex!

And [OpenFaaS] does not dictate that you must be server-less. It actually just
runs containers and provides a bunch of attenuating services and some services
over familiar APIs in the cluster. Basically, it's k8s, so you're just going to
be running containers in pods, to which OpenFaaS provides integration points for
things like identity, storage, and more. But the problem is that I still need to
do a lot of setup to get this done and now that December is over and it's back
to the grind-stone, I still don't have OpenFaaS running in the cluster and I've
got other problems to overcome, too, such as:

- Ingress: The [ingress spec] reached stable 1.0 in November 2020. It's still
  quite hard to configure and the docs for the [traefik ingress controller] are
  dense and new to me.
- Off-site resources: Since I'm running this at home, I expect to use [tailscale] to
  integrate my pis with more resources off-site; see [raspberrypi kubernetes
  cluster over tailscale]).
- SSL certificates: Once I have ingress, I need to get SSL/TLS certificates set up;
  see [openfaas, cert-manager, and k3sup] and [digitalocean's tutorial on cert-manager].
- Mail service: The cluster has a domain name and I want to be able to send and
  receive email there; see [mailu k8s setup].

[terraformpy]: https://github.com/NerdWalletOSS/terraformpy
[pulumi]: https://pulumi.com/
[platform team anti-pattern]: https://acloudguru.com/blog/engineering/why-central-cloud-teams-fail-and-how-to-save-yours
[terraform]: https://terraform.io/
[aws cloud formation]: https://aws.amazon.com/cloudformation/

As you can see, there's quite a lot of work left to do. Meanwhile, I discovered
that managing all of this cluster configuration as a set of YAML files was not
going to cut it. And we're no closer to writing the guestbook app 😓. But
there's more to say here because we discovered [pulumi]. Since I'm familiar with
[terraformpy], I'm thrilled to see the concept made into a full-featured
product. What is pulumi? It provides bindings for infrastructure APIs from Go,
Python, JS, TS, and .NET. It can convert or co-exist with [terraform], [AWS
cloud formation], or other config files and let's you write real code which you
can test and factor into how you want the infrastructure and permissions to be
structured. True infrastructure-as-code, not the mess of YAML files. Pulumi is
actually a few years old and has a huge following. I'm surprised I'd not heard
of it. I want to talk to some customers and see how much it costs before
recommending it to my company but I'm very keen to do so if the numbers work
out. Writing the infrastructure with real code, making it importable in other
repos, keeping things factored where they make sense would be what allows us to
refactor it well would ease my organization to break free from the [platform
team anti-pattern]. I found the [pulumi guestbook] example project to be a very
thoughtful and easy to understand factoring of a real infrastructure as code.

[drone]: https://drone.io/
[jenkins]: https://jenkins.io/

Along the way, I noticed the [drone] project and it made me very happy to see a
well contained replacement for [jenkins]. I like that drone makes it so much
easier to build whatever and do whatever with the build data and artifacts. Very
slick, can't wait to explore more.

[gitops]: https://www.gitops.tech/#:~:text=GitOps%20is%20a%20way%20of,Git%20and%20Continuous%20Deployment%20tools.
[systemd]: https://www.freedesktop.org/wiki/Software/systemd/

What does it all mean? Well, it means 2021 is going to be another amazing year
in the technology and internet business. We're a long way from having a simple
solution for managing the software life-cycle and the organizing the teams that
do that work. Do you think the pieces are there in what we see today? [Dave
Anderson's new kubernetes idea] about how a very different k8s, essentially an
add-on to [systemd] for clustering, resonated strongly with me (minus the parts
about IPv6 and kubernetes networking). I think he's right in that such a thing
probably won't be built (any time soon, at least). However, kubernetes will get
much simpler and we will be deploying more with it. I can imagine a self-hosted
pulumi in k8s auto-deployer that gets a team bootstrapped with a cluster that
meets their needs and is easily managed. I can imagine all of the pieces there
so that teams just write code, merge it into the main branch, the code describes
the entire state of its required infrastructure, and away it goes building it.
It's self-healing and self-managed after initial deploy. That is, we're almost
at the state of [GitOps].

As for that gRPC guestbook app, armed with the knowledge above, I'm going to
write it and package it as a container. Adieu till next time 👋
]]></content:encoded>
            <author>David D. Smith</author>
        </item>
        <item>
            <title><![CDATA[So long, 2020]]></title>
            <link>https://dds.bosabosa.org/news/so-long-2020</link>
            <guid isPermaLink="false">https://dds.bosabosa.org/news/so-long-2020</guid>
            <pubDate>Fri, 01 Jan 2021 05:34:00 GMT</pubDate>
            <description><![CDATA[What do you say about the worst year in living memory? You say to the next year, ...]]></description>
            <content:encoded><![CDATA[
This post is one in most in need of an editor.

What can we say about 2020 but, dear 2021, let's not do this again. There have been so many important lessons.

We could have avoided lockdowns in so many places if we had paid attention.

The president launched these great vaccines and hasn't taken one.

Of all the statistics of 2020, according to the news tonight, the police have
killed about 930 people in the united states is the one that lingers in my mind.
In a year when more than 300,000 people died of a virus that we could have
stopped, 930 people killed by the their own protectors in the so-called leader
of the democratic world. Christ, help us.

The pandemic is the story. The children out of school. The people lost. The end
of the ability for a plurality of Americans to earn a living. Tomorrow, with
2021, we will all begin to measure how much the dagger that was 2020 inflicted
on the body of the united states of America. The ramifications of the damage are
only beginning to be felt.

And the problems of the world have never been greater. Thank you to everyone who
worked on developing the vaccines.
]]></content:encoded>
            <author>David D. Smith</author>
        </item>
        <item>
            <title><![CDATA[Systems Design]]></title>
            <link>https://dds.bosabosa.org/news/systems-design</link>
            <guid isPermaLink="false">https://dds.bosabosa.org/news/systems-design</guid>
            <pubDate>Mon, 28 Dec 2020 18:10:00 GMT</pubDate>
            <description><![CDATA[Systems design and going from Senior to Staff+ Engineer.]]></description>
            <content:encoded><![CDATA[
[apenwarr's systems design post]: https://apenwarr.ca/log/20201227

[Apenwarr's systems design post] is a great breakdown of what systems design is
and how it fits in the typical career path for software engineers going from
senior to staff levels. Specifically, Apenwarr explains that the difference
between senior and staff engineers is that staff engineers design and implement
previously _un-diagnosed business problems_. Their article goes into where this
expectation may break-down.

More to come...
]]></content:encoded>
            <author>David D. Smith</author>
        </item>
        <item>
            <title><![CDATA[Christmas Day 2020]]></title>
            <link>https://dds.bosabosa.org/news/christmas-day-2020</link>
            <guid isPermaLink="false">https://dds.bosabosa.org/news/christmas-day-2020</guid>
            <pubDate>Sat, 26 Dec 2020 07:44:00 GMT</pubDate>
            <description><![CDATA[Merry Christmas and happy holidays, 2020.]]></description>
            <content:encoded><![CDATA[
Oh my God, what a terrible year 2020 has been for everyone. I'm incredibly
thankful for the people in my life and all of the relative comfort and stability
I've been able to have this year.

I want to say to everyone with an empty space in their family where a loved one
should be, I'm sorry. Chances are, you feel lonely but are not alone. I hope you
find healing. You're due to enjoy simple pleasures, whatever you enjoy. Just
please, don't hurt yourself, drink lots of water, and try to go to bed early.

My dad passed away of cancer on Christmas morning last year, 2019. In April of
that year, he suffered strokes which occurred following surgery for a broken leg
due to the cancer's metastasizes. My dad's strokes happened while I was out of
work and was between surgeries on both hands for carpal tunnel syndrome. I'd
been fired from my job after claiming that the carpal tunnel syndrome was work
related.

This year, I'm grateful to my team at work for all the big and small help
they've given me and each other through the pandemic and my personal loss. And
thank you to all who provide compassion to those grieving.
]]></content:encoded>
            <author>David D. Smith</author>
        </item>
        <item>
            <title><![CDATA[Why Review Code?]]></title>
            <link>https://dds.bosabosa.org/news/why-review-code</link>
            <guid isPermaLink="false">https://dds.bosabosa.org/news/why-review-code</guid>
            <pubDate>Sat, 19 Dec 2020 17:35:00 GMT</pubDate>
            <description><![CDATA[Why is it valuable to review code?]]></description>
            <content:encoded><![CDATA[
[sophie alpert's post]: https://sophiebits.com/2018/12/25/why-review-code.html
[sharadh krishnamurthy's post]: https://www.nerdwallet.com/blog/engineering/mindful-pr-reviews/
[differential]: https://www.phacility.com/phabricator/differential/
[pr to add a feature]: https://github.com/terraform-providers/terraform-provider-aws/pull/11459
[reviewing earlier in the development of a change]: https://secure.phabricator.com/phame/post/view/766/write_review_merge_publish_phabricator_review_workflow/

Recently, I read [Sophie Alpert's post] on code review. It resonated with me.
Similar to her experience, I learned how to review code from working at Google
and I agree with Sophie's assessment: on changing her team's process to review
code, "it was a great decision," she writes. I'm in 100% agreement of the nine points on her bullet list of the benefits of code review.

My friend [Sharadh Krishnamurthy's post] on mindfulness in code review also
resonates with my personal style. However, I go back and forth on this, because
communications and cultures vary wildly and I have seen groups with curt comms
not suffer lack of trust or hurt feelings because of them.

I wanted to list some of the ways I have seen code-review go wrong:

1. **Massive code dump review.** I regularly see senior developers dump huge
   code reviews with several thousand lines of delta and pages of description on
   their juniors. The juniors spend days reviewing, maybe add a few comments
   here or there, approve, and then the code goes to production and all hell
   breaks lose. This makes me appreciate that [Differential] focuses on
   [reviewing earlier in the development of a change] with the expectation of
   frequent iteration. Yet, GitHub is fully adequate for this. It is easy to
   publish a branch and begin code review in a draft. But, if imposing the
   burden of making developers seek review earlier forces them to **optimize for
   the reviewer**, it could be worth it to switch tools.

1. **"Don't call us, we'll call you," code review.** Poor turnaround time can
   cause you to miss your deliverable deadline. Imagine you're working with an
   open-source GitHub project (not to name names, but it's HashiCorp Terraform)
   and you send a [PR to add a feature]. That PR has been waiting on code review
   for a year and there have been no comments from HashiCorp on why that PR has
   not been reviewed yet. It's small. The author rebases his PR every few weeks
   and pings the PR for review to deafening silence. The problem here isn't
   code-review per-se, but even on a smaller scale, without _measuring the
   amount of time code waits in review_ and making that metric an SLI of your
   _software development life-cycle_, code-review purgatory can hamstring one's
   ability to deliver (or put out a dumpster fire).

1. **Soap-box derby review.** Human reviewers can use code-review as a
   soap-box for irrelevant pet concerns like premature optimization. Or in the
   reverse, without style guides, code authors refusing to make changes for
   readability or other legitimate concerns. To prevent these situations,
   engineering teams must have shared high standards for code review.
   Engineering leaders must prioritize documenting what matters in code review,
   code style guides, common code review feedback, and measuring code review
   performance throughout the organization. Golang makes a good example of doing
   this all-in on the GitHub platform:

   - [Go Code Review Basics](https://github.com/golang/go/wiki/CodeReview)
   - [Common Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments)
   - [Go Project Commit Messages](https://github.com/golang/go/wiki/CommitMessage)

1. **Disallowing machine review.** Encourage automation to elevate human time
   and consciousness. If the engineering team doesn't value the time and
   creative output of its people, if instead the people are expected to
   repetitive tasks and toil, that's a signal to those engineers that they could
   just as well sleep walk through this work. Snooze, who cares. If your team
   isn't constantly harvesting the low-hanging fruit of automation, team members
   end up emulating the automatons leadership claims they don't want to pay for.
]]></content:encoded>
            <author>David D. Smith</author>
        </item>
        <item>
            <title><![CDATA[Mark Shields' Courage, Grace, and Candor]]></title>
            <link>https://dds.bosabosa.org/news/mark-shields-newshour</link>
            <guid isPermaLink="false">https://dds.bosabosa.org/news/mark-shields-newshour</guid>
            <pubDate>Fri, 18 Dec 2020 21:24:00 GMT</pubDate>
            <description><![CDATA[How I learned my place in the world through Mark Shields' weekly interpretation of events.]]></description>
            <content:encoded><![CDATA[
[david brooks' column]: https://www.nytimes.com/2020/12/17/opinion/mark-shields-liberalism.html

Today I read in [David Brooks' column] that Mark Shields, 83, is not going to be
making his regular appearance on the PBS NewsHour's Friday political commentary
segment. David wrote that he and Mark have been doing that segment for 19 years
and I have watched it all. In the wake of the Clinton presidency in the waning
years of the 1990s, I started college and became politically minded by watching
the 2000 presidential campaign unfold. At only 18 years old and with my limited
background, growing up the son of a small business owner in northern Virginia,
all I knew was my dad was on the side of the bosses, not the majority of people
who work for them. When George Bush was made president in 2000, I thought it was
a travesty that Al Gore, clearly the better informed, more capable candidate,
lost by a court decision that amounted to an end-run around the democratic
process. But Mark Shields, David Brooks, Judy Woodruff, Gwenn Ifill, Jim Lehrer,
Miles O'Brien, Ray Suarez, Jeffery Brown, and many others who work and
contribute to the PBS NewsHour helped me understand that people can have
differences of opinion but still like each other. That real exchange of ideas,
appreciation for opposing priorities, and rational processes can see us, one
people, through our shared trials. These people taught and continue to teach me
the values to live my life by.

Mark, you are irreplaceable. Your wit and charm are legendary. Mark, your
appreciation for what David has had to say all these years, how you've been able
to show him and all of us how at the core of liberalism is care: caring for how
every individual is treated in our society. The NewsHour is a apolitical but in
these times, one of our greatest understatements is that it's challenging to
speak with fairness to the Republican party's positions. And yet, Mark, you've
shown us all how to do it with grace.

Thank you, Mark, for sharing yourself with us. I wish to add to this tribute
over time as I reflect more on the ways you've touched my life. It's been my
dear pleasure and to the profound benefit of my mind to have listened to you all
these years.
]]></content:encoded>
            <author>David D. Smith</author>
        </item>
        <item>
            <title><![CDATA[Learning Gatsby]]></title>
            <link>https://dds.bosabosa.org/news/learning-gatsby</link>
            <guid isPermaLink="false">https://dds.bosabosa.org/news/learning-gatsby</guid>
            <pubDate>Thu, 10 Dec 2020 04:42:23 GMT</pubDate>
            <description><![CDATA[First impressions building this web site with React and Gatsby.]]></description>
            <content:encoded><![CDATA[
[gatsby]: https://www.gatsbyjs.org/
[react]: https://reactjs.org/
[graphql]: https://graphql.org/
[doom emacs]: https://github.com/hlissner/doom-emacs
[climateaction.tech]: https://climateaction.tech/
[free and open-source software]: https://itsfoss.com/what-is-foss/

I'm building this site in [Gatsby] because I want the advantages of a static
website with great frontend integration and `git push` to deploy.

## Why?

Why do this at all? Right now, we are surrounded by crises. There's the climate
crisis, the pandemic crisis, the poverty crisis, the economic crisis, the social
crisis, and more. Well, this part of me [taking action][climateaction.tech] by
moving my website to green software engineering and sustainable product design
built on [free and open-source software].

## What's [Gatsby]?

[Gatsby] is a framework and ecosystem of plugins that brings together the best
of web development in a neat package. It's the [Doom Emacs] of JavaScript. The
framework is built around combining [React] with [GraphQL] for building a
in-browser experiences.

## What Makes [Gatsby] So Great?

Gatsby brings it all together:

- Free and open-source (MIT license).
- Static website served from the edge, shared infrastructure and minimal resource consumption. So cheap, it's free!
- Built on React so building the user interface is a breeze.
- GraphQL for integrating data, decoupling the data sources from the way they are used in the experience.
- Plugins bring all the features from other frameworks.
]]></content:encoded>
            <author>David D. Smith</author>
        </item>
        <item>
            <title><![CDATA[Advent of Code 2020]]></title>
            <link>https://dds.bosabosa.org/news/advent-of-code-2020</link>
            <guid isPermaLink="false">https://dds.bosabosa.org/news/advent-of-code-2020</guid>
            <pubDate>Sat, 05 Dec 2020 07:44:00 GMT</pubDate>
            <description><![CDATA[Crafting with Code for the Holidays.]]></description>
            <content:encoded><![CDATA[
The [Advent of Code](https://adventofcode.com/) is an annual puzzle tradition created by [Eric Wastl](http://was.tl/). It's great fun if you enjoy analytic thinking. For me, I enjoy the craft of writing code quite a bit and, since hearing of AoC in 2018, I've tried to participate. This year, I have more free time available to participate than prior years. So it's been quite fun to prepare, participate, discuss, and just _craft_ this year. That's my favorite part: the feeling of _creating_ for its own sake.

My puzzle solutions are [online](https://github.com/dds/aoc2020). This year, I'm trying to incorporate some of what I consider important and valuable features of modern development, particularly with project management and structure. I'm working in Golang this year because it is so much less of a fuss than Python and my goal is to have fun, explore a variety of solutions, and share.
]]></content:encoded>
            <author>David D. Smith</author>
        </item>
    </channel>
</rss>