I'm Patrick D'appollonio, I'm a Chilean 🇨🇱 Canadian 🇨🇦 and a Principal Engineer working at Kubefirst. I work mostly with Go and Kubernetes in my day-to-day, and as such, you'll see a few tools below I've built over time to solve personal itches. You should also see some Rust code here and there. If any of the applications you see are valuable to you or have any feedback, please do not hesitate to create an issue in their respective repository, or message me on Twitter: @marlex. I'm always looking forward to feedback!
If you want to know more about me, you can visit my personal website (some of the most recent articles I've written are listed below!), follow me on Twitter/X or add me on LinkedIn.
My personal favourite projects are 📌 pinned below!
(Some content might be written in Spanish)
- Cultural differences between Chile and USA (and North America) (published on January 21, 2024)
- Benchmarking is Hard: Caddy vs Nginx Edition (published on September 23, 2023)
- 4 alternative tools to replace Terraform in your Infrastructure as Code (published on August 18, 2023)
- How to manage Kubernetes clusters in WSL with OpenLens on Windows (published on January 27, 2023)
- Mounting Secrets and ConfigMaps in a preexistent folder without deleting the folder's contents (published on October 31, 2022)
... And several additional articles are available on my blog. Check it out!
Pull Requests I've opened or contributed to recently, only public repositories are visible.
- #11 - Ensure GVK is properly detected. on
konstructio/colony
- open - #287 - Update Chart.yaml: bump to +1 number on
konstructio/charts
- merged - #286 - Update Chart.yaml on
konstructio/charts
- merged - #129 - Update documentation on README on
patrickdappollonio/http-server
- merged - #128 - Add support for custom status codes in "serveFile". on
patrickdappollonio/http-server
- merged - #10 - Ensuring latest tag on Colony CLI on
konstructio/colony-vagrant
- merged - #125 - Add support for regexp-based redirections. on
patrickdappollonio/http-server
- in draft - #124 - Enable option to disable directory listing. on
patrickdappollonio/http-server
- merged - #123 - Fix redirecting on empty path parameter on
patrickdappollonio/http-server
- merged - #128 - Fix linting message. on
patrickdappollonio/kubectl-slice
- merged
Overall, my most recent contributions (besides my own repos) have gone to @ansible, @jbrukh, @konstructio and @kubernetes-sigs.
My best recommendations of projects I maintain that might help you in your day-to-day. Happy to take feedback or feature requests!
patrickdappollonio/http-server
: A small, but batteries-included static HTTP server. Includes a file explorer and support for Github-flavoured Markdown rendering. It's fully air-grapped, meaning it won't make any request to any third-party site (unless your code does so), so it plays well with highly-regulated environments. Useful for static pages like documentation.patrickdappollonio/kubectl-slice
: Have you ever wanted to split YAML manifests separated by "---" into individual files? This tool does that for you, and uses a template-style approach to generate filenames by tapping into typical Kubernetes YAML structure.patrickdappollonio/gc-rust
: I've always thought the developer experience of cloning a repo is a bit cumbersome: you have to find a path where you want to store the repo, then ensure you copied the right URL or Git reference, then rungit clone
. This tool simplifies that process by allowing you to clone a repo by just sayinggc <user>/<repo>
.patrickdappollonio/tgen
: My own attempt at a template tool that can be used in CI and automation environments. Provide a Go template either from a file or directly as an argument, load environment variables from the environment or from a file, then render the template! It includes a "strict" mode that prevents you from rendering a template if an environment variable that the template depends on is missing.patrickdappollonio/wait-for
: After seeing multiple bash attempts, I decided to write my own as well. This is a tiny application that can query a TCP endpoint (like a website or database) and hold until the endpoint is reachable or a timeout happens. Super useful to use in CI/CD pipelines orinitContainers
in Kubernetes.patrickdappollonio/tabloid
: I'm always doingkubectl get X
and while I know someawk
, I'm not an expert. This tool can parse table-like outputs found inkubectl
and other CLI tools and use an expression engine to query and filter the output, while at the same time reformatting whitespaces and headers to make it more readable.patrickdappollonio/nginx-vs-caddy-benchmark
: Born off a Twitter argument where someone claimed Caddy was faster than Nginx, I decided to write a small environment to test that claim. This repo holdsdocker-compose
files to spin up environments and steps to try them out. The idea is to get a comparison as close to apples-to-apples as possible between Caddy and Nginx.patrickdappollonio/cloudflare-cache-purger
: Looking at CI as well, whenever I deploy my own site I need to also purge the aggressive Cloudflare cache I have in front of it. This tool allows you to purge the cache by just providing a token and the zone ID. It's also offered as a container, so you can use it in your CI/CD pipelines.patrickdappollonio/find-project
: I like Go's$GOPATH
and the brainless process it becomes maintaining folders with projects in your machine wheregithub.com/foo/bar
becomes~/go/src/github.com/foo/bar
. Switching between projects though becomes a pain.find-project
is a small tool that allows you to provide a project name and it will find the project in your$GOPATH
by choosing whatever is closest to the root first.patrickdappollonio/kubernetes-guestbook
: The Kubernetes community wrote a Guestbook in PHP that requires a Redis backend with quite a few requirements to run. I decided to write a version of it in Go that uses several backend options instead (as of now, basic Redis and SQL Server). Available both as a container and a Helm chart.
Repositories I've starred recently because they were interesting, cool, or useful.
- fsnotify/fsnotify from @fsnotify with 9.5K ⭐️
- drawdb-io/drawdb from @drawdb-io with 20.1K ⭐️
- TruDan/dbdiagram-oss from @TruDan with 293 ⭐️
- go-simpler/env from @go-simpler with 63 ⭐️
- ivansaul/CLI-Video-Compressor from @ivansaul with 12 ⭐️
- stakater/Forecastle from @stakater with 595 ⭐️
- corona10/goimagehash from @corona10 with 738 ⭐️
- projectdiscovery/wappalyzergo from @projectdiscovery with 726 ⭐️
- go-rod/rod from @go-rod with 5.3K ⭐️
- traefik/yaegi from @traefik with 7K ⭐️
- uber-go/automaxprocs from @uber-go with 4.1K ⭐️
- pijng/prep from @pijng with 373 ⭐️
- mainmatter/100-exercises-to-learn-rust from @mainmatter with 5.3K ⭐️
- bramvdbogaerde/go-scp from @bramvdbogaerde with 420 ⭐️
- go-gost/core from @go-gost with 43 ⭐️
- judwhite/go-svc from @judwhite with 481 ⭐️
- dlvhdr/diffnav from @dlvhdr with 247 ⭐️
- MightyMoud/sidekick from @MightyMoud with 3K ⭐️
- azlux/log2ram from @azlux with 2.6K ⭐️
- TanStack/query from @TanStack with 42.1K ⭐️
Last updated: October 11, 2024 at 12:04:28 EDT. The content here updates twice daily or when manually triggered.