# Rok Garbas > 20+ years DevOps/SRE/Release Engineering. Mozilla, Tweag, Flox. Technical enough to build, human enough to explain. Personal blog about NixOS, DevOps, programming, and building products. All posts are available as markdown files by appending `index.md` to the URL. ## Blog Posts - [Running MCP Servers Directly from GitHub](https://garbas.si/posts/mcp-servers-from-github/index.md): Not every MCP server is on npm. Here's how to run them directly from GitHub using npx. - [The Programmer's Job Is Being Redefined (As I Write This)](https://garbas.si/posts/programmer-job-redefined/index.md): Engineers are discovering they can solve ten times more problems than before. The tools changed. We're adapting. Here's what that looks like. - [#code2016](https://garbas.si/posts/code-2016/index.md): Technologies explored in 2016: Haskell struggles, Rust progress, Elm adoption at Mozilla, Python functional thinking, and daily Nix work. Year-end reflections. - [Reproducible builds summit in Berlin](https://garbas.si/posts/reproducible-builds-summit-in-berlin/index.md): Attending the Reproducible Builds Summit in Berlin with Eelco Dolstra. Defining reproducibility, understanding it as an ongoing goal like security, not a binary state. - [Updating your Nix sources](https://garbas.si/posts/updating-your-nix-sources/index.md): Automating Nix package updates with Travis CI cron jobs. Learn from Mozilla Release Engineering how to continuously update nix sources without manual work. - [SystemD Conference 2016](https://garbas.si/posts/systemd-conf-2016/index.md): Summary from SystemD Conference 2016. Deep dive into journald, systemd-nspawn containers, and learning systemd beyond NixOS module writing. - [pypi2nix reborn](https://garbas.si/posts/pypi2nix-reborn/index.md): pypi2nix is a tool that generates Nix expressions from Python requirements.txt, buildout.cfg, or setup.py files for reproducible Python package management. - [NixOS Meetup Report](https://garbas.si/posts/nixos-meetup-report/index.md): Report from 3-day NixOS hackathon in Berlin with 17 participants. Beginner workshops, presentations, and collaborative hacking at Mozilla office. - [Building ACI images with Nix](https://garbas.si/posts/building-aci-images-with-nix/index.md): Building ACI container images with Nix at systemd.conf 2015. Exploring how Nix's reproducible builds and dependency management can improve CoreOS rkt container workflows. - [Reproducible development environments](https://garbas.si/posts/reproducible-development-environments/index.md): How to create truly reproducible development environments with Nix by pinning nixpkgs versions. Ensure every developer has identical environments with one command. - [Thank you RhodeCode](https://garbas.si/posts/thank-you-rhodecode/index.md): After a year of implementing Nix-based DevOps at RhodeCode, I'm back on the job market. A retrospective on building reliable enterprise software installation with Nix. - [I love WeeChat](https://garbas.si/posts/i-love-weechat/index.md): Why WeeChat is the ultimate IRC client and unified messaging solution for developers. Configure notifications, integrate any protocol, and work from any device. - [1st NixOS meetup in Berlin](https://garbas.si/posts/1st-nixos-meetup-in-berlin/index.md): Organizing the first NixOS meetup in Berlin in March 2015. How we introduced Nix to the Berlin tech community with beginner-friendly talks hosted by RhodeCode. - [Getting the message across (and yearly blog redesign)](https://garbas.si/posts/blog-redesign/index.md): Yearly blog redesign - switching from Plone to Pelican static site generator. Reflections on the importance of writing skills for developers and the journey to better express technical ideas. - [Time to learn Javascript](https://garbas.si/posts/time-to-learn-javascript/index.md): Results from 3 Plone sprints teaching JavaScript. Work on Mockup, plone.app.widgets, and wildcard.foldercontents. What needs doing for Plone 5 release. - [Arnhem sprint 2013 report](https://garbas.si/posts/arnhem-sprint-2013-report/index.md): Arnhem sprint 2013 report: Introducing Mockup to developers, releasing plone.app.widgets and plone.app.toolbar, merging PLIP 13476 into Plone 5 coredev. - [Make "FIRE" on Plone - Learn Javascript at PloneConf 2013 in Brasilia, Brasil](https://garbas.si/posts/make-fire-on-plone-learn-javascript-at-ploneconf-2013-in-brasilia-brasil/index.md): PloneConf 2013 Brasilia talk announcement: JavaScript is the new essential skill for Plone developers. Learn modern JavaScript, Mockup, and Plone 5 patterns. - [Contribution in January](https://garbas.si/posts/contribution-in-january/index.md): January 2013 Plone contributions: Beer & Wine Sprint, Mockup project launch, plone.app.widgets release, plone.app.toolbar modal improvements, Chipin fundraising. - [Day 1 - plone.app.toolbar - let the fun begin!](https://garbas.si/posts/day-1-plone-app-toolbar-let-the-fun-begin/index.md): Day 1 of plone.app.toolbar Chipin work: Researching Deco/Plone designs, iframe approach for edit toolbar, exploring modern JavaScript patterns for Plone 5. - [Day 6 - mid report on plone.app.toolbar work](https://garbas.si/posts/day-6-mid-report-on-plone-app-toolbar-work/index.md): Day 6 mid-report on plone.app.toolbar Chipin work: Progress on patterns, iframe integration, modal improvements, and challenges with modern JavaScript in Plone. - [Escaping April weather - PLOG reportout](https://garbas.si/posts/escaping-april-weather-plog-reportout/index.md): PLOG (Plone Oldenburg Group) sprint report: Working on plone.app.toolbar, Mockup patterns, and escaping Berlin's April weather for productive coding week. - [plone.app.toolbar final report!](https://garbas.si/posts/plone-app-toolbar-final-report/index.md): Final report on plone.app.toolbar Chipin work: Completed features, screencast demo, lessons learned, and what's next for Plone 5 JavaScript modernization. - [Plonistas! It's time to test your javascript](https://garbas.si/posts/plonistas-its-time-to-test-your-javascript/index.md): Complete guide to JavaScript unit testing with BusterJS for Plone developers. Test across browsers, use SinonJS mocks, integrate with buildout. ## Pages - [About](https://garbas.si/about/index.md): About Rok Garbas - [Speaking](https://garbas.si/speaking/index.md): Conference talks and presentations