<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Greg Donald</title>
  <id>https://gregdonald.com/</id>
  <link href="https://gregdonald.com/"/>
  <link href="https://gregdonald.com/feed.xml" rel="self"/>
  <updated>2026-10-03T00:00:00Z</updated>
  <entry>
    <title>Loose-Leaf Is Not Coming Back</title>
    <id>https://gregdonald.com/pages/loose-leaf-is-not-coming-back</id>
    <link href="https://gregdonald.com/pages/loose-leaf-is-not-coming-back"/>
    <updated>2026-10-03T00:00:00Z</updated>
    <summary>No one has to like the paperclip factory, but pretending the world is going back to loose-leaf isn’t a strategy.</summary>
  </entry>
  <entry>
    <title>Serve a home server through a VPS with WireGuard and nginx</title>
    <id>https://gregdonald.com/pages/serve-a-home-server-through-a-vps-with-wireguard-and-nginx</id>
    <link href="https://gregdonald.com/pages/serve-a-home-server-through-a-vps-with-wireguard-and-nginx"/>
    <updated>2026-08-24T00:00:00Z</updated>
    <summary>I have a server rack full of servers in my garage. Renting CPU, memory, and disk space from a hosting provider means paying for hardware I already own. Instead, I run the sites on my own machines…</summary>
  </entry>
  <entry>
    <title>Raku Is the Most Advanced Scripting Language</title>
    <id>https://gregdonald.com/pages/raku-is-the-most-advanced-scripting-language</id>
    <link href="https://gregdonald.com/pages/raku-is-the-most-advanced-scripting-language"/>
    <updated>2026-08-10T00:00:00Z</updated>
    <summary>A while back I wrote about why Raku has yet to catch on in the mainstream. Nothing in that post was about the language itself, and I want to be clear about what I think of the language itself: Raku…</summary>
  </entry>
  <entry>
    <title>LearnRaku.dev is live</title>
    <id>https://gregdonald.com/pages/learnraku-dev-is-live</id>
    <link href="https://gregdonald.com/pages/learnraku-dev-is-live"/>
    <updated>2026-07-21T00:00:00Z</updated>
    <summary>I just released LearnRaku.dev into production. It is an interactive, browser-based trainer for learning Raku. You get an exercise, a failing spec, and an editor. You write code until the spec…</summary>
  </entry>
  <entry>
    <title>Dogfooding My Own Raku MVC Web Framework</title>
    <id>https://gregdonald.com/pages/dogfooding-my-own-raku-mvc-web-framework</id>
    <link href="https://gregdonald.com/pages/dogfooding-my-own-raku-mvc-web-framework"/>
    <updated>2026-07-11T00:00:00Z</updated>
    <summary>A few weeks ago I blog&apos;d about shipping behave.dev, the first Raku app I ever put into production. This blog post is an even bigger deal to me personally. The site you are reading right now,…</summary>
  </entry>
  <entry>
    <title>Shipping My First Raku App</title>
    <id>https://gregdonald.com/pages/shipping-my-first-raku-app</id>
    <link href="https://gregdonald.com/pages/shipping-my-first-raku-app"/>
    <updated>2026-05-25T00:00:00Z</updated>
    <summary>Shipping My First Raku App: behave.dev</summary>
  </entry>
  <entry>
    <title>Flying at Peeler Park, May 2nd, 2026</title>
    <id>https://gregdonald.com/pages/flying-at-peeler-park-may-2nd-2026</id>
    <link href="https://gregdonald.com/pages/flying-at-peeler-park-may-2nd-2026"/>
    <updated>2026-05-02T00:00:00Z</updated>
    <summary>Flying at Peeler Park, May 2nd, 2026</summary>
  </entry>
  <entry>
    <title>Blackjack in Clojure</title>
    <id>https://gregdonald.com/pages/blackjack-in-clojure</id>
    <link href="https://gregdonald.com/pages/blackjack-in-clojure"/>
    <updated>2026-04-18T00:00:00Z</updated>
    <summary>I wrote Blackjack in Clojure.</summary>
  </entry>
  <entry>
    <title>The anti-AI people are angry again</title>
    <id>https://gregdonald.com/pages/the-anti-ai-people-are-angry-again</id>
    <link href="https://gregdonald.com/pages/the-anti-ai-people-are-angry-again"/>
    <updated>2026-01-11T00:00:00Z</updated>
    <summary>I’m seeing a hilarious new time-wasting trend emerging: software engineers are making &quot;naughty lists&quot; of software &quot;tainted&quot; by AI/LLM involvement, seemingly to shame authors who use AI-assisted…</summary>
  </entry>
  <entry>
    <title>Blackjack for VSCode</title>
    <id>https://gregdonald.com/pages/blackjack-for-vscode</id>
    <link href="https://gregdonald.com/pages/blackjack-for-vscode"/>
    <updated>2025-12-27T00:00:00Z</updated>
    <summary>I wrote an extension to play the classic game of Blackjack inside VS Code.</summary>
  </entry>
  <entry>
    <title>Console Blackjack in Java</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-java</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-java"/>
    <updated>2025-01-27T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in Java:</summary>
  </entry>
  <entry>
    <title>Console Blackjack in GNU Smalltalk</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-gnu-smalltalk</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-gnu-smalltalk"/>
    <updated>2024-12-25T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in GNU Smalltalk:</summary>
  </entry>
  <entry>
    <title>The Rise of Autonomous Code</title>
    <id>https://gregdonald.com/pages/the-rise-of-autonomous-code</id>
    <link href="https://gregdonald.com/pages/the-rise-of-autonomous-code"/>
    <updated>2024-11-23T00:00:00Z</updated>
    <summary>The idea of code that can fix itself represents a monumental advancement in artificial intelligence (AI) and software development. However, this innovation has a dark counterpart: autonomous…</summary>
  </entry>
  <entry>
    <title>A Tribute To My Friend John</title>
    <id>https://gregdonald.com/pages/a-tribute-to-my-friend-john</id>
    <link href="https://gregdonald.com/pages/a-tribute-to-my-friend-john"/>
    <updated>2024-11-17T00:00:00Z</updated>
    <summary>John was usually a man of few words and even fewer visitors. He&apos;d kept to himself for as long as I&apos;d known him - a grumpy, stubbornly solitary guy whose real passion was the hobby of remote control…</summary>
  </entry>
  <entry>
    <title>Assessing the Environmental and Human Cost of AI</title>
    <id>https://gregdonald.com/pages/assessing-the-environmental-and-human-cost-of-ai</id>
    <link href="https://gregdonald.com/pages/assessing-the-environmental-and-human-cost-of-ai"/>
    <updated>2024-11-14T00:00:00Z</updated>
    <summary>The advent of large language models (LLMs) has revolutionized the fields of artificial intelligence, machine learning, and natural language processing. LLMs, which include tools like OpenAI&apos;s…</summary>
  </entry>
  <entry>
    <title>Sam Harris, Robert Sapolsky, Dan Dennett, and Rush Walk Into a Bar…</title>
    <id>https://gregdonald.com/pages/sam-harris-robert-sapolsky-dan-dennett-and-rush-walk-into-a-bar</id>
    <link href="https://gregdonald.com/pages/sam-harris-robert-sapolsky-dan-dennett-and-rush-walk-into-a-bar"/>
    <updated>2024-11-10T00:00:00Z</updated>
    <summary>Do We Really Have Free Will?</summary>
  </entry>
  <entry>
    <title>Console Blackjack in Zig</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-zig</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-zig"/>
    <updated>2024-10-19T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in Zig:</summary>
  </entry>
  <entry>
    <title>The 7 stages of accepting that you probably do not have free will</title>
    <id>https://gregdonald.com/pages/the-7-stages-of-accepting-that-you-probably-do-not-have-free-will</id>
    <link href="https://gregdonald.com/pages/the-7-stages-of-accepting-that-you-probably-do-not-have-free-will"/>
    <updated>2024-10-15T00:00:00Z</updated>
    <summary>1. Shock / Disbelief &quot;Wait, what do you mean I don’t have free will?&quot; Encountering the idea for the first time can be unsettling. Many people are startled, as the belief in personal freedom feels…</summary>
  </entry>
  <entry>
    <title>I Passed the CISSP Exam</title>
    <id>https://gregdonald.com/pages/i-passed-the-cissp-exam</id>
    <link href="https://gregdonald.com/pages/i-passed-the-cissp-exam"/>
    <updated>2024-08-27T00:00:00Z</updated>
    <summary>Today, I finally conquered the CISSP exam—a milestone I’ve been working toward recently. It’s been a long journey filled with lots of late-night study, some anxiety near the end, and a whole lot of…</summary>
  </entry>
  <entry>
    <title>The Pentester Blueprint</title>
    <id>https://gregdonald.com/pages/the-pentester-blueprint</id>
    <link href="https://gregdonald.com/pages/the-pentester-blueprint"/>
    <updated>2024-07-31T00:00:00Z</updated>
    <summary>“The Pentester Blueprint” is a great guide for anyone interested in pursuing a career in penetration testing or cybersecurity. The book, co-authored by Kim Crawley and Phillip L. Wylie, provides a…</summary>
  </entry>
  <entry>
    <title>Raku: Why It Hasn&apos;t Caught On</title>
    <id>https://gregdonald.com/pages/raku-why-it-hasnt-caught-on</id>
    <link href="https://gregdonald.com/pages/raku-why-it-hasnt-caught-on"/>
    <updated>2024-07-28T00:00:00Z</updated>
    <summary>I&apos;ve been watching Raku since it was still Perl 6, back when Larry Wall gave his State of the Onion talk in 2000. Fifteen years from announcement to 1.0. You can defend the timeline; they were…</summary>
  </entry>
  <entry>
    <title>Do Not &quot;Switch To Linux&quot;</title>
    <id>https://gregdonald.com/pages/do-not-switch-to-linux</id>
    <link href="https://gregdonald.com/pages/do-not-switch-to-linux"/>
    <updated>2024-07-13T00:00:00Z</updated>
    <summary>Using Linux for your first time can be very exciting. You suddenly gain access to a wealth of customization options, all the free and open-source software you could ever want or need, and access to…</summary>
  </entry>
  <entry>
    <title>Subsequent Data Breaches</title>
    <id>https://gregdonald.com/pages/subsequent-data-breaches</id>
    <link href="https://gregdonald.com/pages/subsequent-data-breaches"/>
    <updated>2024-07-08T00:00:00Z</updated>
    <summary>The perspective that once personal identifiable information (PII) or personal health information (PHI) has been leaked, subsequent leaks are less significant is a common one. However, there are…</summary>
  </entry>
  <entry>
    <title>Note Taking Applications</title>
    <id>https://gregdonald.com/pages/note-taking-applications</id>
    <link href="https://gregdonald.com/pages/note-taking-applications"/>
    <updated>2024-06-14T00:00:00Z</updated>
    <summary>As I delve deeper into the field of cybersecurity and penetration testing I’ve discovered that if you search Google or Youtube for “penetration testing note-taking applications” you’ll see there are…</summary>
  </entry>
  <entry>
    <title>Why Use Strong Passwords?</title>
    <id>https://gregdonald.com/pages/why-use-strong-passwords</id>
    <link href="https://gregdonald.com/pages/why-use-strong-passwords"/>
    <updated>2024-05-13T00:00:00Z</updated>
    <summary>During my penetration testing studies I’ve come to realize the need for strong passwords is now more important than ever. I only realized recently just how easy it is to crack a weak password.</summary>
  </entry>
  <entry>
    <title>Automate Linux Kernel Builds</title>
    <id>https://gregdonald.com/pages/automate-linux-kernel-builds</id>
    <link href="https://gregdonald.com/pages/automate-linux-kernel-builds"/>
    <updated>2024-02-25T00:00:00Z</updated>
    <summary>I wrote a small shell script™ to automate building new Linux kernels. I use this to build new kernels on my Debian systems:</summary>
  </entry>
  <entry>
    <title>Hand-on Test-Driven Development Book</title>
    <id>https://gregdonald.com/pages/hand-on-test-driven-development-book</id>
    <link href="https://gregdonald.com/pages/hand-on-test-driven-development-book"/>
    <updated>2023-12-17T00:00:00Z</updated>
    <summary>My new book Hand-on Test-Driven Development Book has been published: https://tddbook.com/.</summary>
  </entry>
  <entry>
    <title>Reorder Rails database migrations files</title>
    <id>https://gregdonald.com/pages/reorder-rails-database-migrations-files</id>
    <link href="https://gregdonald.com/pages/reorder-rails-database-migrations-files"/>
    <updated>2023-11-26T00:00:00Z</updated>
    <summary>On new Rails apps, that are not in production yet, I sometimes like to reorder my database migrations. I wrote a small Ruby script to automate things.</summary>
  </entry>
  <entry>
    <title>Meta-programming a dynamic method inside a dynamic class in Raku and Ruby</title>
    <id>https://gregdonald.com/pages/meta-programming-a-dynamic-method-inside-a-dynamic-class-in-raku-and-ruby</id>
    <link href="https://gregdonald.com/pages/meta-programming-a-dynamic-method-inside-a-dynamic-class-in-raku-and-ruby"/>
    <updated>2023-08-02T00:00:00Z</updated>
    <summary>I wanted to learn to create a dynamically-named method inside a dynamically-named class in Raku. This is what I ended up with:</summary>
  </entry>
  <entry>
    <title>Blackjack written in Elisp</title>
    <id>https://gregdonald.com/pages/blackjack-written-in-elisp</id>
    <link href="https://gregdonald.com/pages/blackjack-written-in-elisp"/>
    <updated>2023-04-28T00:00:00Z</updated>
    <summary>I wrote Blackjack in Elisp. It allows you to play Blackjack in your Emacs editor.</summary>
  </entry>
  <entry>
    <title>Marten, the Crystal web framework</title>
    <id>https://gregdonald.com/pages/marten-the-crystal-web-framework</id>
    <link href="https://gregdonald.com/pages/marten-the-crystal-web-framework"/>
    <updated>2022-12-25T00:00:00Z</updated>
    <summary>Wow, if Django and Rails had a baby it would be Marten, the web framework written in Crystal, https://martenframework.com/.</summary>
  </entry>
  <entry>
    <title>Current State of the Hanami Web Framework</title>
    <id>https://gregdonald.com/pages/current-state-of-the-hanami-web-framework</id>
    <link href="https://gregdonald.com/pages/current-state-of-the-hanami-web-framework"/>
    <updated>2022-11-27T00:00:00Z</updated>
    <summary>About two days ago I built the “bookshelf” app described in the Hanami guide. Hanami is currently missing any sort of “model” layer, as well as any sort of “view” layer, as you might expect to be…</summary>
  </entry>
  <entry>
    <title>MP3 Player written in Ruby using Ruby on Rails</title>
    <id>https://gregdonald.com/pages/mp3-player-written-in-ruby-using-ruby-on-rails</id>
    <link href="https://gregdonald.com/pages/mp3-player-written-in-ruby-using-ruby-on-rails"/>
    <updated>2022-10-10T00:00:00Z</updated>
    <summary>I wrote a simple MP3 player:</summary>
  </entry>
  <entry>
    <title>Debug a Linux Kernel in QEMU</title>
    <id>https://gregdonald.com/pages/debug-a-linux-kernel-in-qemu</id>
    <link href="https://gregdonald.com/pages/debug-a-linux-kernel-in-qemu"/>
    <updated>2021-09-15T00:00:00Z</updated>
    <summary>mkinitramfs -o ../ramdisk.img 5.11.0-34-generic</summary>
  </entry>
  <entry>
    <title>Customize New zsh</title>
    <id>https://gregdonald.com/pages/customize-new-zsh</id>
    <link href="https://gregdonald.com/pages/customize-new-zsh"/>
    <updated>2021-09-12T00:00:00Z</updated>
    <summary>Install packages:</summary>
  </entry>
  <entry>
    <title>PostgreSQL Backup Script</title>
    <id>https://gregdonald.com/pages/postgresql-backup-script</id>
    <link href="https://gregdonald.com/pages/postgresql-backup-script"/>
    <updated>2021-03-28T00:00:00Z</updated>
    <summary>#!/bin/sh</summary>
  </entry>
  <entry>
    <title>IPv4 Subnet Calculator</title>
    <id>https://gregdonald.com/pages/ipv4-subnet-calculator</id>
    <link href="https://gregdonald.com/pages/ipv4-subnet-calculator"/>
    <updated>2021-02-14T00:00:00Z</updated>
    <summary>I built an IPv4 subnet calculator:</summary>
  </entry>
  <entry>
    <title>Console::Blackjack</title>
    <id>https://gregdonald.com/pages/console-blackjack-raku</id>
    <link href="https://gregdonald.com/pages/console-blackjack-raku"/>
    <updated>2021-01-23T00:00:00Z</updated>
    <summary>Console Blackjack for Raku.</summary>
  </entry>
  <entry>
    <title>RetroPie Arcade</title>
    <id>https://gregdonald.com/pages/retropie-arcade</id>
    <link href="https://gregdonald.com/pages/retropie-arcade"/>
    <updated>2021-01-19T00:00:00Z</updated>
    <summary>I built a RetroPie arcade machine. I didn&apos;t record video, but I did take a few pictures along the way.</summary>
  </entry>
  <entry>
    <title>Apache Bench load testing</title>
    <id>https://gregdonald.com/pages/apache-bench-load-testing</id>
    <link href="https://gregdonald.com/pages/apache-bench-load-testing"/>
    <updated>2021-01-17T00:00:00Z</updated>
    <summary>Apache Bench (ab) is a popular command-line tool used for benchmarking the performance of HTTP web servers. Here&apos;s a basic guide on how to use it:</summary>
  </entry>
  <entry>
    <title>Factorio on systemd</title>
    <id>https://gregdonald.com/pages/factorio-on-systemd</id>
    <link href="https://gregdonald.com/pages/factorio-on-systemd"/>
    <updated>2021-01-17T00:00:00Z</updated>
    <summary># adduser factorio</summary>
  </entry>
  <entry>
    <title>Generate new Factorio map</title>
    <id>https://gregdonald.com/pages/generate-new-factorio-map</id>
    <link href="https://gregdonald.com/pages/generate-new-factorio-map"/>
    <updated>2021-01-17T00:00:00Z</updated>
    <summary>su -</summary>
  </entry>
  <entry>
    <title>Cisco CCNA Study :: Home Lab Notes</title>
    <id>https://gregdonald.com/pages/cisco-ccna-study-home-lab-notes</id>
    <link href="https://gregdonald.com/pages/cisco-ccna-study-home-lab-notes"/>
    <updated>2020-12-20T00:00:00Z</updated>
    <summary>####################################################################</summary>
  </entry>
  <entry>
    <title>Console Blackjack in Rust</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-rust</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-rust"/>
    <updated>2020-07-12T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in Rust:</summary>
  </entry>
  <entry>
    <title>Install and setup snmpd on RedHat Enterprise Linux</title>
    <id>https://gregdonald.com/pages/install-and-setup-snmpd-on-redhat-enterprise-linux</id>
    <link href="https://gregdonald.com/pages/install-and-setup-snmpd-on-redhat-enterprise-linux"/>
    <updated>2020-06-06T00:00:00Z</updated>
    <summary>I wanted to access a RHEL machine from Cacti, so I needed to install and configure net-snmp on there first.</summary>
  </entry>
  <entry>
    <title>Install and setup irssi and oidentd on Debian</title>
    <id>https://gregdonald.com/pages/install-and-setup-irssi-and-oidentd-on-debian</id>
    <link href="https://gregdonald.com/pages/install-and-setup-irssi-and-oidentd-on-debian"/>
    <updated>2020-06-01T00:00:00Z</updated>
    <summary>Install irssi and oidentd:</summary>
  </entry>
  <entry>
    <title>Install xfce4 on Debian</title>
    <id>https://gregdonald.com/pages/install-xfce4-on-debian</id>
    <link href="https://gregdonald.com/pages/install-xfce4-on-debian"/>
    <updated>2020-05-31T00:00:00Z</updated>
    <summary>This is how I install xfce4 on a new Debian:</summary>
  </entry>
  <entry>
    <title>ORM::ActiveRecord</title>
    <id>https://gregdonald.com/pages/orm-activerecord</id>
    <link href="https://gregdonald.com/pages/orm-activerecord"/>
    <updated>2020-05-25T00:00:00Z</updated>
    <summary>ORM::ActiveRecord is an object-relational mapping module for Raku that mostly follows the Active Record Pattern.</summary>
  </entry>
  <entry>
    <title>Console Blackjack in Perl</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-perl</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-perl"/>
    <updated>2020-05-24T00:00:00Z</updated>
    <summary>I wrote a Console version of Blackjack in Perl:</summary>
  </entry>
  <entry>
    <title>BDD::Behave</title>
    <id>https://gregdonald.com/pages/bdd-behave</id>
    <link href="https://gregdonald.com/pages/bdd-behave"/>
    <updated>2020-05-05T00:00:00Z</updated>
    <summary>A behavior driven development framework for Raku.</summary>
  </entry>
  <entry>
    <title>Template::HAML</title>
    <id>https://gregdonald.com/pages/template-haml</id>
    <link href="https://gregdonald.com/pages/template-haml"/>
    <updated>2020-05-05T00:00:00Z</updated>
    <summary>HTML Abstraction Markup Language for Raku. A shameless rip-off of Ruby HAML.</summary>
  </entry>
  <entry>
    <title>Selenium::WebDriver::Error::UnknownError</title>
    <id>https://gregdonald.com/pages/selenium-web-driver-error-unknown-error</id>
    <link href="https://gregdonald.com/pages/selenium-web-driver-error-unknown-error"/>
    <updated>2020-01-20T00:00:00Z</updated>
    <summary>I forget this every time I run Rspec on a new Debian. Maybe if I write it down it will help me in the future.</summary>
  </entry>
  <entry>
    <title>Game of Life in C++ using the SDL2</title>
    <id>https://gregdonald.com/pages/game-of-life-in-c++-using-the-sdl2</id>
    <link href="https://gregdonald.com/pages/game-of-life-in-c++-using-the-sdl2"/>
    <updated>2020-01-10T00:00:00Z</updated>
    <summary>I wrote a GUI version of Game of Life in C++ using the SDL2 graphics library:</summary>
  </entry>
  <entry>
    <title>PigPen (dots and boxes) in C++ using the SDL2</title>
    <id>https://gregdonald.com/pages/pigpen-dots-and-boxes-in-c++-using-the-sdl2</id>
    <link href="https://gregdonald.com/pages/pigpen-dots-and-boxes-in-c++-using-the-sdl2"/>
    <updated>2020-01-01T00:00:00Z</updated>
    <summary>I wrote a GUI version of Pig Pen (dots and boxes) in C++ using the SDL2 graphics library:</summary>
  </entry>
  <entry>
    <title>GUI TicTacToe in C++ using the SDL2</title>
    <id>https://gregdonald.com/pages/gui-tictactoe-in-c++-using-the-sdl2</id>
    <link href="https://gregdonald.com/pages/gui-tictactoe-in-c++-using-the-sdl2"/>
    <updated>2019-12-21T00:00:00Z</updated>
    <summary>I wrote a GUI version of TicTacToe in C++ using the SDL2 graphics library:</summary>
  </entry>
  <entry>
    <title>Console Blackjack in Ruby</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-ruby</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-ruby"/>
    <updated>2019-11-09T00:00:00Z</updated>
    <summary>I wrote a Console version of Blackjack in Ruby:</summary>
  </entry>
  <entry>
    <title>Raku Fizz Buzz</title>
    <id>https://gregdonald.com/pages/raku-fizz-buzz</id>
    <link href="https://gregdonald.com/pages/raku-fizz-buzz"/>
    <updated>2019-11-08T00:00:00Z</updated>
    <summary>for (1..100) {</summary>
  </entry>
  <entry>
    <title>Build Raku from source</title>
    <id>https://gregdonald.com/pages/build-raku-from-source</id>
    <link href="https://gregdonald.com/pages/build-raku-from-source"/>
    <updated>2019-10-26T00:00:00Z</updated>
    <summary>Here&apos;s my shell script for building MoarVM, Not Quite Perl, and Rakudo from source.</summary>
  </entry>
  <entry>
    <title>ORM::ActiveRecord has-many through</title>
    <id>https://gregdonald.com/pages/orm-activerecord-has-many-through</id>
    <link href="https://gregdonald.com/pages/orm-activerecord-has-many-through"/>
    <updated>2019-10-24T00:00:00Z</updated>
    <summary>ORM::ActiveRecord now has support for has-many through relationships.</summary>
  </entry>
  <entry>
    <title>Raku split delimiter can be a list</title>
    <id>https://gregdonald.com/pages/raku-split-delimiter-can-be-a-list</id>
    <link href="https://gregdonald.com/pages/raku-split-delimiter-can-be-a-list"/>
    <updated>2019-10-20T00:00:00Z</updated>
    <summary>Raku&apos;s string split routine accepts a scalar as well as a list for its delimiter.</summary>
  </entry>
  <entry>
    <title>The Perl 6 To Raku Rename</title>
    <id>https://gregdonald.com/pages/the-perl-6-to-raku-rename</id>
    <link href="https://gregdonald.com/pages/the-perl-6-to-raku-rename"/>
    <updated>2019-10-15T00:00:00Z</updated>
    <summary>It has been decided that Perl 6 will be renamed to Raku.</summary>
  </entry>
  <entry>
    <title>Custom Operator - Basic Object Identity</title>
    <id>https://gregdonald.com/pages/custom-operator-basic-object-identity</id>
    <link href="https://gregdonald.com/pages/custom-operator-basic-object-identity"/>
    <updated>2019-10-12T00:00:00Z</updated>
    <summary>It is often the case in object oriented programming you need to compare two objects to see if they are the same. Usually it just means doing a deeper comparison of the attributes on each object.…</summary>
  </entry>
  <entry>
    <title>Raku (Perl 6) Books - Fixed</title>
    <id>https://gregdonald.com/pages/raku-perl-6-books-fixed</id>
    <link href="https://gregdonald.com/pages/raku-perl-6-books-fixed"/>
    <updated>2019-10-10T00:00:00Z</updated>
    <summary>I fixed my Raku (Perl 6) book titles:</summary>
  </entry>
  <entry>
    <title>Roles - an alternate form of class inheritance</title>
    <id>https://gregdonald.com/pages/roles-an-alternate-form-of-class-inheritance</id>
    <link href="https://gregdonald.com/pages/roles-an-alternate-form-of-class-inheritance"/>
    <updated>2019-10-08T00:00:00Z</updated>
    <summary>Roles are collections of methods and attributes that can be mixed into classes. A role provides an alternate form of code reuse from inheritance. Roles are typically mixed in using &quot;does&quot;.</summary>
  </entry>
  <entry>
    <title>Meta-programming capabilities using FALLBACK</title>
    <id>https://gregdonald.com/pages/meta-programming-capabilities-using-fallback</id>
    <link href="https://gregdonald.com/pages/meta-programming-capabilities-using-fallback"/>
    <updated>2019-10-04T00:00:00Z</updated>
    <summary>Being a long time Ruby user and Lisp dabbler, Rakudo Perl 6 meta-programming capabilities ranked high on my list of curiosities.</summary>
  </entry>
  <entry>
    <title>Raku spiral matrix</title>
    <id>https://gregdonald.com/pages/raku-spiral-matrix</id>
    <link href="https://gregdonald.com/pages/raku-spiral-matrix"/>
    <updated>2019-08-28T00:00:00Z</updated>
    <summary># Given a matrix of m x n elements (m rows, n columns),</summary>
  </entry>
  <entry>
    <title>Console Blackjack in Elixir</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-elixir</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-elixir"/>
    <updated>2019-07-14T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in Elixir:</summary>
  </entry>
  <entry>
    <title>TicTacToe in ReactJS using Typescript</title>
    <id>https://gregdonald.com/pages/tictactoe-in-reactjs-using-typescript</id>
    <link href="https://gregdonald.com/pages/tictactoe-in-reactjs-using-typescript"/>
    <updated>2019-05-17T00:00:00Z</updated>
    <summary>I wrote a web version of TicTacToe in ReactJS using Typescript:</summary>
  </entry>
  <entry>
    <title>Git commands for pair programming</title>
    <id>https://gregdonald.com/pages/git-commands-for-pair-programming</id>
    <link href="https://gregdonald.com/pages/git-commands-for-pair-programming"/>
    <updated>2019-05-02T00:00:00Z</updated>
    <summary>At my work I&apos;m on an agile team and we do pair programming. Here are some git commands I find useful and use almost every day:</summary>
  </entry>
  <entry>
    <title>Change default SSH port on Fedora</title>
    <id>https://gregdonald.com/pages/change-default-ssh-port-on-fedora</id>
    <link href="https://gregdonald.com/pages/change-default-ssh-port-on-fedora"/>
    <updated>2019-03-24T00:00:00Z</updated>
    <summary>I wanted to change my default SSH port to something else. Here are the commands I used:</summary>
  </entry>
  <entry>
    <title>Console Blackjack in Crystal</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-crystal</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-crystal"/>
    <updated>2019-01-27T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in Crystal:</summary>
  </entry>
  <entry>
    <title>Nautical War</title>
    <id>https://gregdonald.com/pages/nautical-war</id>
    <link href="https://gregdonald.com/pages/nautical-war"/>
    <updated>2019-01-12T00:00:00Z</updated>
    <summary>I reworked my old Battleship game for Android:</summary>
  </entry>
  <entry>
    <title>Web Blackjack in ReactJS</title>
    <id>https://gregdonald.com/pages/web-blackjack-in-reactjs</id>
    <link href="https://gregdonald.com/pages/web-blackjack-in-reactjs"/>
    <updated>2018-12-02T00:00:00Z</updated>
    <summary>I wrote a web version of Blackjack in ReactJS/Typescript:</summary>
  </entry>
  <entry>
    <title>Console Blackjack in Python 3</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-python-3</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-python-3"/>
    <updated>2018-03-09T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in Python 3:</summary>
  </entry>
  <entry>
    <title>GUI Blackjack in C using the SDL2</title>
    <id>https://gregdonald.com/pages/gui-blackjack-in-c-using-the-sdl2</id>
    <link href="https://gregdonald.com/pages/gui-blackjack-in-c-using-the-sdl2"/>
    <updated>2018-01-05T00:00:00Z</updated>
    <summary>I wrote a GUI version of Blackjack in C using the SDL2 graphics library:</summary>
  </entry>
  <entry>
    <title>CRM12 - Customer relationship management software</title>
    <id>https://gregdonald.com/pages/crm12-customer-relationship-management-software</id>
    <link href="https://gregdonald.com/pages/crm12-customer-relationship-management-software"/>
    <updated>2017-04-13T00:00:00Z</updated>
    <summary>I wrote a customer relationship management tool in Ruby on Rails:</summary>
  </entry>
  <entry>
    <title>How-to build latest Linux kernel from Linus&apos; git repo on Debian</title>
    <id>https://gregdonald.com/pages/how-to-build-latest-linux-kernel-from-linus-git-repo-on-debian</id>
    <link href="https://gregdonald.com/pages/how-to-build-latest-linux-kernel-from-linus-git-repo-on-debian"/>
    <updated>2017-01-01T00:00:00Z</updated>
    <summary>Here&apos;s a how-to for building a recent Linux kernel on your Debian GNU/Linux box:</summary>
  </entry>
  <entry>
    <title>Console Blackjack in C</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-c</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-c"/>
    <updated>2016-11-11T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in C:</summary>
  </entry>
  <entry>
    <title>ignore latin1 problem via psql</title>
    <id>https://gregdonald.com/pages/ignore-latin1-problem-via-psql</id>
    <link href="https://gregdonald.com/pages/ignore-latin1-problem-via-psql"/>
    <updated>2016-10-20T00:00:00Z</updated>
    <summary>CREATE DATABASE _</summary>
  </entry>
  <entry>
    <title>Console Blackjack in C++</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-c++</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-c++"/>
    <updated>2016-08-11T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in C++:</summary>
  </entry>
  <entry>
    <title>Console Blackjack in Raku</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-raku</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-raku"/>
    <updated>2016-01-17T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in Rakudo Raku:</summary>
  </entry>
  <entry>
    <title>Convert one m4a file to many mp3s</title>
    <id>https://gregdonald.com/pages/convert-one-m4a-file-to-many-mp3s</id>
    <link href="https://gregdonald.com/pages/convert-one-m4a-file-to-many-mp3s"/>
    <updated>2015-09-22T00:00:00Z</updated>
    <summary>#!/bin/bash</summary>
  </entry>
  <entry>
    <title>How-to guide for beginner-level Linux Kernel patch submissions</title>
    <id>https://gregdonald.com/pages/how-to-guide-for-beginner-level-linux-kernel-patch-submissions</id>
    <link href="https://gregdonald.com/pages/how-to-guide-for-beginner-level-linux-kernel-patch-submissions"/>
    <updated>2015-06-20T00:00:00Z</updated>
    <summary>Every day I see new Linux Kernel hackers fail at their first patch submission. I&apos;m not an expert, but I&apos;ve learned how the process works and most importantly I&apos;ve learned how to avoid irritating…</summary>
  </entry>
  <entry>
    <title>Console Blackjack in Go</title>
    <id>https://gregdonald.com/pages/console-blackjack-in-go</id>
    <link href="https://gregdonald.com/pages/console-blackjack-in-go"/>
    <updated>2015-04-25T00:00:00Z</updated>
    <summary>I wrote a console version of Blackjack in Go:</summary>
  </entry>
  <entry>
    <title>Raspberry Pi LEDs Test</title>
    <id>https://gregdonald.com/pages/raspberry-pi-leds-test</id>
    <link href="https://gregdonald.com/pages/raspberry-pi-leds-test"/>
    <updated>2015-01-20T00:00:00Z</updated>
    <summary>#!/usr/bin/env python3</summary>
  </entry>
  <entry>
    <title>Shell script to automate go lang pkg test coverage</title>
    <id>https://gregdonald.com/pages/shell-script-to-automate-go-lang-pkg-test-coverage</id>
    <link href="https://gregdonald.com/pages/shell-script-to-automate-go-lang-pkg-test-coverage"/>
    <updated>2015-01-13T00:00:00Z</updated>
    <summary>#!/bin/sh</summary>
  </entry>
  <entry>
    <title>go log function</title>
    <id>https://gregdonald.com/pages/go-log-function</id>
    <link href="https://gregdonald.com/pages/go-log-function"/>
    <updated>2015-01-08T00:00:00Z</updated>
    <summary>func log(s ...interface{}) {</summary>
  </entry>
  <entry>
    <title>Linux Kernel Powerball Module</title>
    <id>https://gregdonald.com/pages/linux-kernel-powerball-module</id>
    <link href="https://gregdonald.com/pages/linux-kernel-powerball-module"/>
    <updated>2014-09-28T00:00:00Z</updated>
    <summary>I don&apos;t play the lottery but I find random number generators and the Linux Kernel interesting so I wrote a simple Linux Kernel module that does a PowerballTM &quot;quick pick&quot;.</summary>
  </entry>
  <entry>
    <title>How to filter out Bash arguments</title>
    <id>https://gregdonald.com/pages/how-to-filter-out-bash-arguments</id>
    <link href="https://gregdonald.com/pages/how-to-filter-out-bash-arguments"/>
    <updated>2014-09-22T00:00:00Z</updated>
    <summary>Ever want to know how to drop an argument (and value), --dir in this case, from a Bash script?</summary>
  </entry>
  <entry>
    <title>MongoDB Data Durability</title>
    <id>https://gregdonald.com/pages/mongodb-data-durability</id>
    <link href="https://gregdonald.com/pages/mongodb-data-durability"/>
    <updated>2014-01-31T00:00:00Z</updated>
    <summary>It doesn&apos;t seem you can lose data even when you might otherwise expect to ;)</summary>
  </entry>
  <entry>
    <title>My bashrc file</title>
    <id>https://gregdonald.com/pages/my-bashrc-file</id>
    <link href="https://gregdonald.com/pages/my-bashrc-file"/>
    <updated>2012-05-20T00:00:00Z</updated>
    <summary>alias ll=&apos;ls -lavh --color=always&apos;</summary>
  </entry>
  <entry>
    <title>PostgreSQL Sequence Updates</title>
    <id>https://gregdonald.com/pages/postgresql-sequence-updates</id>
    <link href="https://gregdonald.com/pages/postgresql-sequence-updates"/>
    <updated>2012-01-07T00:00:00Z</updated>
    <summary>I had a problem with PostgreSQL pgdump recently. My setval() calls were all set to &apos;1&apos;.</summary>
  </entry>
  <entry>
    <title>Mutt Configuration</title>
    <id>https://gregdonald.com/pages/mutt-configuration</id>
    <link href="https://gregdonald.com/pages/mutt-configuration"/>
    <updated>2011-04-03T00:00:00Z</updated>
    <summary>I use Mutt :)</summary>
  </entry>
  <entry>
    <title>Debian rc.local howto</title>
    <id>https://gregdonald.com/pages/debian-rc-local-howto</id>
    <link href="https://gregdonald.com/pages/debian-rc-local-howto"/>
    <updated>2010-01-26T00:00:00Z</updated>
    <summary>If you&apos;re using a flavor of *nix that has an rc.local file, and then you start using Debian GNU/Linux, you might be wondering where your rc.local file is. Quite simply, it&apos;s not there. Here&apos;s how to…</summary>
  </entry>
  <entry>
    <title>Debian Games</title>
    <id>https://gregdonald.com/pages/debian-games</id>
    <link href="https://gregdonald.com/pages/debian-games"/>
    <updated>2006-01-14T00:00:00Z</updated>
    <summary>Here&apos;s a command to install lots of games on your Debian box:</summary>
  </entry>
</feed>
