<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>karlcordes.com</title>
    <link>https://karlcordes.com/</link>
    <description>Recent content on karlcordes.com</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 11 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://karlcordes.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Running Llama.cpp Agents on AMD RX 9060 XT with Docker and gVisor</title>
      <link>https://karlcordes.com/running-llama.cpp-agents-on-amd-rx-9060-xt-with-docker-and-gvisor/</link>
      <pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate>
      <guid>https://karlcordes.com/running-llama.cpp-agents-on-amd-rx-9060-xt-with-docker-and-gvisor/</guid>
      <description>&lt;h2 id=&#34;hardware-setup&#34;&gt;Hardware Setup&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2x AMD RX 9060 XT GPUs&lt;/li&gt;&#xA;&lt;li&gt;16GB VRAM per GPU&lt;/li&gt;&#xA;&lt;li&gt;Total 32GB VRAM available for model loading&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;software-stack&#34;&gt;Software Stack&lt;/h2&gt;&#xA;&lt;h3 id=&#34;llamacpp&#34;&gt;llama.cpp&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Quantized model inference using GGUF format&lt;/li&gt;&#xA;&lt;li&gt;Multi-GPU support for AMD RDNA architecture&lt;/li&gt;&#xA;&lt;li&gt;CPU fallback for non-GPU workloads&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;docker-with-gvisor&#34;&gt;Docker with gVisor&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;gVisor provides user-space container runtime for enhanced security&lt;/li&gt;&#xA;&lt;li&gt;Isolated from host kernel for agent sandboxing&lt;/li&gt;&#xA;&lt;li&gt;Suitable for running untrusted or experimental AI agents&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;docker-configuration&#34;&gt;Docker Configuration&lt;/h2&gt;&#xA;&lt;h3 id=&#34;base-image&#34;&gt;Base Image&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;FROM gcr.io/go-containerregistry/docker:27.3.1-dind&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;gpu-passthrough&#34;&gt;GPU Passthrough&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;--gpus all&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;memory-limits&#34;&gt;Memory Limits&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;--memory=&amp;#34;32g&amp;#34;&#xA;--memory-swap=&amp;#34;32g&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;volume-mounts&#34;&gt;Volume Mounts&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;-v /path/to/models:/models:ro&#xA;-v /path/to/agents:/agents&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;model-loading&#34;&gt;Model Loading&lt;/h2&gt;&#xA;&lt;h3 id=&#34;supported-quantizations&#34;&gt;Supported Quantizations&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Q4_K_M (4-bit, good balance of speed/accuracy)&lt;/li&gt;&#xA;&lt;li&gt;Q5_K_M (5-bit, improved accuracy)&lt;/li&gt;&#xA;&lt;li&gt;Q8_0 (8-bit, near-precision)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;model-size-considerations&#34;&gt;Model Size Considerations&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;7B models: ~4-5GB at Q4_K_M&lt;/li&gt;&#xA;&lt;li&gt;13B models: ~8-9GB at Q4_K_M&lt;/li&gt;&#xA;&lt;li&gt;Can load multiple smaller models simultaneously&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;agent-architecture&#34;&gt;Agent Architecture&lt;/h2&gt;&#xA;&lt;h3 id=&#34;container-structure&#34;&gt;Container Structure&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;agents/&#xA;├── agent1/&#xA;│   ├── Dockerfile&#xA;│   └── main.py&#xA;├── agent2/&#xA;│   ├── Dockerfile&#xA;│   └── main.py&#xA;└── shared/&#xA;    └── models/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;communication&#34;&gt;Communication&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Inter-agent communication via shared volumes&lt;/li&gt;&#xA;&lt;li&gt;Model sharing between agents to reduce memory footprint&lt;/li&gt;&#xA;&lt;li&gt;Centralized logging and monitoring&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;performance-considerations&#34;&gt;Performance Considerations&lt;/h2&gt;&#xA;&lt;h3 id=&#34;vram-management&#34;&gt;VRAM Management&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Monitor VRAM usage with &lt;code&gt;nvidia-smi&lt;/code&gt; (for AMD: &lt;code&gt;radeontop&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;Implement model unloading for idle agents&lt;/li&gt;&#xA;&lt;li&gt;Use quantization to fit larger models&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;inference-speed&#34;&gt;Inference Speed&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Batch processing for improved throughput&lt;/li&gt;&#xA;&lt;li&gt;Context window management&lt;/li&gt;&#xA;&lt;li&gt;Temperature and top-p tuning for response quality&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;security-notes&#34;&gt;Security Notes&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;gVisor provides kernel isolation but not network isolation&lt;/li&gt;&#xA;&lt;li&gt;Additional network policies recommended&lt;/li&gt;&#xA;&lt;li&gt;Regular container image scanning&lt;/li&gt;&#xA;&lt;li&gt;Minimal base images reduce attack surface&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h2&gt;&#xA;&lt;h3 id=&#34;common-issues&#34;&gt;Common Issues&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;VRAM fragmentation: Use smaller quantizations&lt;/li&gt;&#xA;&lt;li&gt;Slow inference: Check CPU fallback is not being used&lt;/li&gt;&#xA;&lt;li&gt;Container crashes: Verify GPU driver compatibility&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;amd-gpu-specific&#34;&gt;AMD GPU Specific&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Verify ROCm support in Docker image&lt;/li&gt;&#xA;&lt;li&gt;Check &lt;code&gt;dmesg&lt;/code&gt; for GPU errors&lt;/li&gt;&#xA;&lt;li&gt;Monitor with &lt;code&gt;rocm-smi&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;future-improvements&#34;&gt;Future Improvements&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Implement model caching between agents&lt;/li&gt;&#xA;&lt;li&gt;Add persistent storage for conversation history&lt;/li&gt;&#xA;&lt;li&gt;Integrate with existing LLM orchestration tools&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Compile Emacs 29 with Tree-sitter</title>
      <link>https://karlcordes.com/compile-emacs-29-tree-sitter/</link>
      <pubDate>Thu, 15 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://karlcordes.com/compile-emacs-29-tree-sitter/</guid>
      <description>&lt;p&gt;Compile emacs with tree-sitter master&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Add the deb-src lines to /etc/apt/source.list&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;```&#xA;sudo apt update&#xA;sudo apt install build-essential&#xA;sudo (apt build-dep thing) emacs&#xA;make&#xA;```&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Checkout tree-sitter&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;```&#xA;make&#xA;sudo make install&#xA;```&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;```&#xA;export LD_LIBRARY_PATH=/usr/local/lib/&#xA;make &#xA;```&lt;/p&gt;&#xA;&lt;p&gt;&#xA;References:&#xA;&lt;a href=&#34;https://www.masteringemacs.org/article/how-to-get-started-tree-sitter&#34;&gt;https://www.masteringemacs.org/article/how-to-get-started-tree-sitter&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Can&amp;#39;t start emacs from dmenu. Add this to /etc/ld.so.conf.d/x86_64-linux-gnu.conf&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;```&lt;/p&gt;&#xA;&lt;p&gt;/usr/local/lib/x86_64-linux-gnu&#xA;/lib/x86_64-linux-gnu&#xA;/usr/lib/x86_64-linux-gnu&#xA;/usr/local/li &#xA;```&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Then run&#xA;```&#xA;sudo ldconfig    &#xA;```&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;run emacs and tree-sitter&lt;/li&gt;&#xA;&lt;li&gt;figure out how to use tree-sitter..&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>ecowitt to Prometheus using JSON exporter</title>
      <link>https://karlcordes.com/json-exporter-ecowitt-fronius/</link>
      <pubDate>Tue, 20 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://karlcordes.com/json-exporter-ecowitt-fronius/</guid>
      <description>&lt;h1 id=&#34;ecowitt-to-prometheus-using-json-exporter&#34;&gt;ecowitt to Prometheus using JSON exporter&lt;/h1&gt;</description>
    </item>
    <item>
      <title>Get ecowitt sensor data into InfluxDB</title>
      <link>https://karlcordes.com/ecowitt-to-influx/</link>
      <pubDate>Sun, 15 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://karlcordes.com/ecowitt-to-influx/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Get ecowitt sensor data into InfluxDB&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>How to flash coreboot on Lenovo X220</title>
      <link>https://karlcordes.com/coreboot-x220/</link>
      <pubDate>Fri, 16 Dec 2016 03:19:05 +1100</pubDate>
      <guid>https://karlcordes.com/coreboot-x220/</guid>
      <description>&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;&#xA;&lt;p&gt;Laptops are regressing. 2016&amp;rsquo;s laptops are thinner and sleeker than last year&amp;rsquo;s - but this usually comes at the cost of user servicability.&lt;/p&gt;&#xA;&lt;p&gt;Internal batteries are hard to swap out, RAM is soldered to the motherboard. If you want to upgrade any single component, you&amp;rsquo;re going to need to buy a new laptop.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://en.wikipedia.org/wiki/ThinkPad_X_Series#X220&#34;&gt;Lenovo X220&lt;/a&gt; are great little machines from 2011 that still have plenty of life left in them. I picked up mine on Ebay for AUD $200 - 4GB of RAM, i5 CPU and 120 GB Samsung SSD. Excellent Linux support at a very reasonable price. I use one at work instead of the provided Macbook/Dell options, and it&amp;rsquo;s great.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configure a ZFS mirror on Ubuntu 16.04</title>
      <link>https://karlcordes.com/zfs-ubuntu-1604/</link>
      <pubDate>Sun, 01 May 2016 03:19:05 +1100</pubDate>
      <guid>https://karlcordes.com/zfs-ubuntu-1604/</guid>
      <description>&lt;p&gt;Very rough notes on setting up ZFS on Ubuntu 16.04 - with LXD&lt;/p&gt;&#xA;&lt;pre&gt;&#xA;sudo apt-get install zfsutils-linux&#xA;&#xA;dmesg | grep -i sata | grep &#39;link up&#39;&#xA;[    6.208581] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)&#xA;  [    6.896647] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)&#xA;  [    7.216674] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)&#xA;&#xA;&#xA;k@sagan:~$ sudo zpool create apollo mirror /dev/sdb /dev/sdc&#xA;invalid vdev specification&#xA;use &#39;-f&#39; to override the following errors:&#xA;/dev/sdb does not contain an EFI label but it may contain partition&#xA;information in the MBR.&#xA;/dev/sdc does not contain an EFI label but it may contain partition&#xA;information in the MBR.&#xA;# wtf&#xA;&#xA;k@sagan:~$ sudo zpool create -f apollo mirror /dev/sdb /dev/sdc&#xA;k@sagan:~$ sudo zpool status&#xA;  pool: apollo&#xA; state: ONLINE&#xA;  scan: none requested&#xA;config:&#xA;&#xA;        NAME        STATE     READ WRITE CKSUM&#xA;        apollo      ONLINE       0     0     0&#xA;          mirror-0  ONLINE       0     0     0&#xA;            sdb     ONLINE       0     0     0&#xA;            sdc     ONLINE       0     0     0&#xA;&#xA;errors: No known data errors&#xA;&#xA;&#xA;k@sagan:~$ sudo zfs create apollo/projects&#xA;k@sagan:~$ ls&#xA;k@sagan:~$ sudo zfs list&#xA;NAME              USED  AVAIL  REFER  MOUNTPOINT&#xA;apollo            372K  5.27T    96K  /apollo&#xA;apollo/projects    96K  5.27T    96K  /apollo/projects&#xA;&lt;/pre&gt;&#xA;&lt;h1 id=&#34;performance&#34;&gt;Performance&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://blog.ashodnakashian.com/2013/12/18tb-home-nashtpc-with-zfs-on-linux-part-3/&#34;&gt;http://blog.ashodnakashian.com/2013/12/18tb-home-nashtpc-with-zfs-on-linux-part-3/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Root Nook Glowlight plus and install Safari Queue</title>
      <link>https://karlcordes.com/root-nook-glowlight/</link>
      <pubDate>Tue, 16 Feb 2016 03:19:05 +1100</pubDate>
      <guid>https://karlcordes.com/root-nook-glowlight/</guid>
      <description>&lt;p&gt;Update: May 23 2016&lt;/p&gt;&#xA;&lt;p&gt;My Rooted nook locked up and refused to boot properly. I managed to restore it to factory defaults but the screen had permanent distortion.&lt;/p&gt;&#xA;&lt;p&gt;I returned the Nook to B&amp;amp;N for a replacement. Which is running the stock software.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;An E-ink Android device has been on my wish list for a while, but until yesterday I hadn’t seen any high quality examples. The &lt;a href=&#34;http://www.barnesandnoble.com/w/nook-glowlight-plus-barnes-noble/1122314015&#34;&gt;Nook Glowlight Plus&lt;/a&gt; looks great, feels sturdy and runs Android, so I picked one up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating RAID 1 MDADM on an existing Ubuntu install</title>
      <link>https://karlcordes.com/creating-raid-1-mdadm-on-an-existing-ubuntu-install/</link>
      <pubDate>Sat, 23 Aug 2014 00:00:00 +0000</pubDate>
      <guid>https://karlcordes.com/creating-raid-1-mdadm-on-an-existing-ubuntu-install/</guid>
      <description>&lt;hr&gt;&#xA;&lt;p&gt;Remove all the old partions on the disks&lt;/p&gt;&#xA;&lt;pre&gt;&#xA;sudo parted&#xA;&#xA;select /dev/sda&#xA;rm 1&#xA;rm 2&#xA;select /dev/sdb&#xA;sudo mkfs.ext4 /dev/sd[a-d]1&#xA;&lt;/pre&gt;&#xA;&lt;p&gt;#Setup MDADM&lt;/p&gt;&#xA;&lt;pre&gt;&#xA;sudo mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sda1 /dev/sdb1&#xA;&#xA;karlcordes@spacex:~$ sudo mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sda1 /dev/sdb1&#xA;mdadm: /dev/sda1 appears to contain an ext2fs file system&#xA;size=1953513472K  mtime=Thu Jan  1 10:00:00 1970&#xA;mdadm: Note: this array has metadata at the start and&#xA;may not be suitable as a boot device.  If you plan to&#xA;store &#39;/boot&#39; on this device please ensure that&#xA;your boot-loader understands md/v1.x metadata, or use&#xA;--metadata=0.90&#xA;mdadm: /dev/sdb1 appears to contain an ext2fs file system&#xA;size=1953513472K  mtime=Thu Jan  1 10:00:00 1970&#xA;mdadm: size set to 1953382208K&#xA;&#xA;&#xA;karlcordes@spacex:~$ sudo mdadm --create --verbose /dev/md1 --level=mirror --raid-devices=2 /dev/sdc1 /dev/sdd1&#xA;mdadm: /dev/sdc1 appears to contain an ext2fs file system&#xA;size=1953513472K  mtime=Thu Jan  1 10:00:00 1970&#xA;mdadm: Note: this array has metadata at the start and&#xA;may not be suitable as a boot device.  If you plan to&#xA;store &#39;/boot&#39; on this device please ensure that&#xA;your boot-loader understands md/v1.x metadata, or use&#xA;--metadata=0.90&#xA;mdadm: /dev/sdd1 appears to contain an ext2fs file system&#xA;size=1953513472K  mtime=Thu Jan  1 10:00:00 1970&#xA;mdadm: size set to 1953382208K&#xA;Continue creating array? y&#xA;mdadm: Defaulting to version 1.2 metadata&#xA;mdadm: array /dev/md1 started.&#xA;&#xA;&#xA;karlcordes@spacex:~$ cat /proc/mdstat &#xA;Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] &#xA;md1 : active raid1 sdd1[1] sdc1[0]&#xA;1953382208 blocks super 1.2 [2/2] [UU]&#xA;[&gt;....................]  resync =  0.4% (8139008/1953382208) finish=243.9min speed=132882K/sec&#xA;&#xA;md0 : active raid1 sdb1[1] sda1[0]&#xA;1953382208 blocks super 1.2 [2/2] [UU]&#xA;[&gt;....................]  resync =  0.4% (9560128/1953382208) finish=253.9min speed=127572K/sec&#xA;&#xA;&#xA;karlcordes@spacex:~$ cat /proc/mdstat &#xA;Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] &#xA;md1 : active raid1 sdd1[1] sdc1[0]&#xA;1953382208 blocks super 1.2 [2/2] [UU]&#xA;[=&gt;...................]  resync =  7.2% (140990656/1953382208) finish=222.1min speed=135966K/sec&#xA;&#xA;md0 : active raid1 sdb1[1] sda1[0]&#xA;1953382208 blocks super 1.2 [2/2] [UU]&#xA;[=&gt;...................]  resync =  6.9% (136385792/1953382208) finish=239.9min speed=126214K/sec&#xA;&#xA;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;save-the-configuration&#34;&gt;Save the configuration&lt;/h2&gt;&#xA;&lt;pre&gt;&#xA;mdadm --detail --scan &gt;&gt; /etc/mdadm/mdadm.conf&#xA;&#xA;&#34;after you&#39;ve created your array, it&#39;s important to save the configuration in the proper mdadm configuration file. In Ubuntu, this is file /etc/mdadm/mdadm.conf. In some other distributions, this is file /etc/mdadm.conf. Check your distribution&#39;s documentation, or look at man mdadm.conf, to see what applies to your distribution.&#xA;To save the configuration information:&#xA;Ubuntu:&#xA;&#xA;https://raid.wiki.kernel.org/index.php/RAID_setup#Saving_your_RAID_configuration&#xA;&#xA;Add to /etc/fstab&#xA;&#xA;/dev/md0  /mnt/io       ext4  noatime,rw 0 0&#xA;/dev/md1  /mnt/europa   ext4  noatime,rw 0 0&#xA;&#xA;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>CV</title>
      <link>https://karlcordes.com/cv/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://karlcordes.com/cv/</guid>
      <description>&lt;script type=&#34;application/ld+json&#34;&gt;&#xA;{&#34;@context&#34;:&#34;https://schema.org&#34;,&#34;@type&#34;:&#34;Person&#34;,&#34;name&#34;:&#34;Karl Cordes&#34;,&#34;url&#34;:&#34;https://karlcordes.com/&#34;,&#34;email&#34;:&#34;karl@cordes.com.au&#34;,&#34;telephone&#34;:&#34;+61415397713&#34;,&#34;almaMater&#34;:{&#34;@type&#34;:&#34;CollegeOrUniversity&#34;,&#34;name&#34;:&#34;University of New South Wales&#34;},&#34;jobTitle&#34;:&#34;Senior Systems Engineer&#34;,&#34;knowsAbout&#34;:[&#34;Bash&#34;,&#34;C&#34;,&#34;CSS&#34;,&#34;Go&#34;,&#34;HTML&#34;,&#34;Java&#34;,&#34;JavaScript&#34;,&#34;PHP&#34;,&#34;Perl&#34;,&#34;Python&#34;,&#34;Ruby&#34;,&#34;Flask&#34;,&#34;Ruby on Rails&#34;,&#34;Sinatra&#34;,&#34;AWS&#34;,&#34;Docker&#34;,&#34;Git&#34;,&#34;Emacs&#34;,&#34;MySQL&#34;,&#34;nginx&#34;,&#34;PostgreSQL&#34;,&#34;Terraform&#34;,&#34;Linux&#34;],&#34;workExperience&#34;:[{&#34;@type&#34;:&#34;EmploymentRecord&#34;,&#34;employer&#34;:{&#34;@type&#34;:&#34;Organization&#34;,&#34;name&#34;:&#34;Atlassian&#34;,&#34;url&#34;:&#34;https://www.atlassian.com&#34;},&#34;title&#34;:&#34;Senior Systems Engineer&#34;,&#34;startDate&#34;:&#34;2020&#34;},{&#34;@type&#34;:&#34;EmploymentRecord&#34;,&#34;employer&#34;:{&#34;@type&#34;:&#34;Organization&#34;,&#34;name&#34;:&#34;Atlassian&#34;,&#34;url&#34;:&#34;https://www.atlassian.com&#34;},&#34;title&#34;:&#34;Systems Engineer&#34;,&#34;startDate&#34;:&#34;2018&#34;,&#34;endDate&#34;:&#34;2020&#34;},{&#34;@type&#34;:&#34;EmploymentRecord&#34;,&#34;employer&#34;:{&#34;@type&#34;:&#34;Organization&#34;,&#34;name&#34;:&#34;Atlassian&#34;,&#34;url&#34;:&#34;https://www.atlassian.com&#34;},&#34;title&#34;:&#34;Site Reliability Engineer&#34;,&#34;startDate&#34;:&#34;2015&#34;,&#34;endDate&#34;:&#34;2018&#34;},{&#34;@type&#34;:&#34;EmploymentRecord&#34;,&#34;employer&#34;:{&#34;@type&#34;:&#34;Organization&#34;,&#34;name&#34;:&#34;Yahoo7&#34;,&#34;url&#34;:&#34;https://au.yahoo.com&#34;},&#34;title&#34;:&#34;Service Engineer&#34;,&#34;startDate&#34;:&#34;2014&#34;,&#34;endDate&#34;:&#34;2015&#34;},{&#34;@type&#34;:&#34;EmploymentRecord&#34;,&#34;employer&#34;:{&#34;@type&#34;:&#34;Organization&#34;,&#34;name&#34;:&#34;Tectonic Digital&#34;,&#34;url&#34;:&#34;https://tectonicdigital.com.au&#34;},&#34;title&#34;:&#34;Web Developer&#34;,&#34;startDate&#34;:&#34;2011&#34;,&#34;endDate&#34;:&#34;2014&#34;},{&#34;@type&#34;:&#34;EmploymentRecord&#34;,&#34;employer&#34;:{&#34;@type&#34;:&#34;Organization&#34;,&#34;name&#34;:&#34;CMC Technologies&#34;,&#34;url&#34;:&#34;https://www.cmctechnologies.com.au&#34;},&#34;title&#34;:&#34;Web Application Developer &amp; Linux Systems Administrator&#34;,&#34;startDate&#34;:&#34;2007&#34;,&#34;endDate&#34;:&#34;2011&#34;}]}&#xA;&lt;/script&gt;&#xA;&lt;p&gt;Karl Cordes is a software developer and systems administrator with experience at Atlassian, Yahoo, and more.&lt;/p&gt;&#xA;&lt;h2 id=&#34;skills&#34;&gt;Skills&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Infrastructure &amp;amp; DevOps:&lt;/strong&gt; AWS, Docker, Kubernetes, Terraform, CI/CD pipelines, monitoring (Prometheus, Grafana)&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Languages &amp;amp; Frameworks:&lt;/strong&gt; Bash, Python, Go, Ruby, JavaScript, PHP, Perl, Flask, Rails, Sinatra&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Databases:&lt;/strong&gt; PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
