13
15

I'm the author. With 5 years experience as a DevOps Engineer then Lead, I've wanted, for a very long time, to distill my critique and pave a way toward a healthier practice of DevOps. Before anyone jumps to tell me how DevOps Engineer is a misnomer, I address this in the article.

I wrote this piece because DevOps has all too often been misunderstood as a practice. Here I attempt to examine successful DevOps practice as a sociotechnical solution that weds culture and tools (the DevOps most are familiar with) with radical agency and visibility. I reference some stupendous thinkers in this space, like Jabe Bloom and Andrew Clay Shafer who were the first to argue for a sociotechnical approach to our work as IT professionals.

[-] worldofgeese@lemmy.world 6 points 9 months ago* (last edited 9 months ago)

Now that I've finished the first draft of an article on setting up rootless Podman on Guix System, I'm using and building out a set of tools to support a new article covering an all Red Hat stack from inner loop to CI.

So far, it's

  • OpenShift for the platform services run on
  • Podman for my local container engine
  • Podman Compose for inner loop development
  • OpenShift Pipelines for CI
  • Shipwright for building container images locally with Buildah
  • Quay for image scanning and storage
  • OpenShift Serverless for scale-to-zero deployments
7
submitted 9 months ago by worldofgeese@lemmy.world to c/guix@lemmy.ml

I thought this was really cool: it's backed by a non-profit and one of their supported distros is Guix System!

[-] worldofgeese@lemmy.world 31 points 9 months ago* (last edited 9 months ago)

Hmm, well Fedora on its own (so no Silverblue) is very much your classic way of shipping a distro. That tends to mean that, over time, "cruft" accumulates as you upgrade your system, uninstall/reinstall packages, etc. They leave bits of themselves behind that can cause unwanted behavior.

Fedora Silverblue, that Bluefin is based on, treats the entire system layer as "immutable". Basically, it ensures consistency so that upgrades and package upgrades don't leave the system in an inconsistent state.

What Bluefin adds on top of this is a set of opinionated, pre-configured layers suited for getting particular groups of tasks done. Those layers are also immutable and tested as a whole, which makes shipping those layers at velocity easy (faster upgrades, less wonky behavior on upgrade) and easy to swap between, so you can go from gaming to developer mode without worrying about an accumulation of cruft.

Is that helpful at all? There's also this announcement blog post, which I found very helpful in understanding the value proposition.

[-] worldofgeese@lemmy.world 32 points 9 months ago* (last edited 9 months ago)

Because it uses OCI images, it auto-updates like a Chromebook, and you can switch between modes, like say a gaming mode that's a full SteamOS replacement, to a mode that gives you an entire development environment without needing to install and configure these layers or stacks of capabilities yourself.

That's very powerful. For cloud native developers like myself who are used to working with container images as the deliverable artifact, this makes that workflow very easy. Podman is included. You can create entire development environments at will that are totally "pure": no side effects because everything you need is in the container. That's a Dev Container.

137
submitted 9 months ago by worldofgeese@lemmy.world to c/linux@lemmy.ml

OCI images that you can turn into a full-fledged developer workstation shipping Devbox, Nix, Homebrew, devcontainers and DevPod with one command. Pretty swanky!

[-] worldofgeese@lemmy.world 7 points 9 months ago

It should be harder to support Docker, which hasn't released a new open source product since before Docker Desktop, which is also proprietary. Podman Desktop? OSS. It'd be hard to name a product Red Hat supports that isn't OSS.

[-] worldofgeese@lemmy.world 8 points 10 months ago* (last edited 10 months ago)

Can't believe I'm the first one to come in with Guix System!! I like it because, just like NixOS, it's immutable, declarative and pure. I also dig that everything is written in Guile Scheme, a full-fat programming language. You don't need to know the language exhaustively to get started. There's some wonderful folks in the community though it's a bit spread out since not everyone wants to chat on IRC and mailing lists.

The Guix sublemmy.

[-] worldofgeese@lemmy.world 7 points 10 months ago* (last edited 10 months ago)

Sorry, I should have clarified: Bluetooth or USB-connected trackpad. I use a fancy mechanical keyboard so I need some other input device that isn't my laptop's integrated trackpad.

31
submitted 10 months ago by worldofgeese@lemmy.world to c/linux@lemmy.ml

Is it Apple's Magic Trackpad? If I dual-boot Windows (for work, I swear!) does it work equally as well across both?

[-] worldofgeese@lemmy.world 9 points 10 months ago

Come over to team Guix System, we have cookies 🍪

[-] worldofgeese@lemmy.world 8 points 10 months ago

I'm very sad I paid for a Fold and don't get 7 years of updates.

[-] worldofgeese@lemmy.world 7 points 10 months ago* (last edited 9 months ago)

My employer, garden.io, offers pipelines you can run anywhere: in GitHub Actions, GitLab CI, locally, wherever! We capture all your dependencies in a dependency graph, then cache all your inputs: builds, tests, run scripts. We're open source at https://github.com/garden-io/garden

[-] worldofgeese@lemmy.world 13 points 10 months ago

Racket but I'll take Guile Scheme as a close second. Then Hy, a lisp dialect of Python. I'm writing a blog written in a DSL of Racket right now, Pollen, that makes authoring a joyful experience. Hy gives me access to the entire Python ecosystem plus access to things like macros. Guile Scheme is the configuration language of the Linux distribution, Guix System. Guile's G-Expressions are so powerful for writing packages.

[-] worldofgeese@lemmy.world 6 points 10 months ago

I use and love Telegram. I use almost all of its features. All of its clients are open source. It has an incredible API for writing bots (which I also do). Their desktop Linux app is native! When I'm traveling I use Stories to share the experience with friends and family. I love the new topics to separate group discussions. It's the one app I've been able to onboard absolutely everyone to. I was never able to do the same when I tried to with Matrix and you only get so many chances before people stop moving.

What is crufty garbage to you?

1
submitted 11 months ago by worldofgeese@lemmy.world to c/guix@lemmy.ml

My error message when trying to run minikube from a guix shell is bash: /gnu/store/ixry3pdrrb52mdiypmlrdn19c7gcc5r4-minikube-1.31.2/bin/minikube: No such file or directory

According to ldd and file, it looks like everything is hunky dory as far as where all my linkers are pointing. I'm also including an strace further below. I've run out of options for debugging this and would welcome any feedback and suggestions!

ldd shows what looks like clean RPATHs:

 /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6 (0x00007f9299546000)
	libpthread.so.0 => /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libpthread.so.0 (0x00007f9299541000)
	libresolv.so.2 => /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libresolv.so.2 (0x00007f929952e000)
	/lib64/ld-linux-x86-64.so.2 => /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/ld-linux-x86-64.so.2 (0x00007f9299744000)

Here's file:

/gnu/store/xhyv7k87gy9k368yrv6faray37z615cr-minikube-1.31.2/bin/minikube: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/ld-linux-x86-64.so.2, Go BuildID=aBEWfkldQzf4mlUsITym/a6aHGcy9omlZPRTvR8ta/1-lUpI-DPce979zTpJQy/jMuF_0TfmkRW2e3NFst2, not stripped

And strace:

Error:
strace /gnu/store/xhyv7k87gy9k368yrv6faray37z615cr-minikube-1.31.2/bin/minikube
execve("/gnu/store/xhyv7k87gy9k368yrv6faray37z615cr-minikube-1.31.2/bin/minikube", ["/gnu/store/xhyv7k87gy9k368yrv6fa"...], 0x7ffc5f304810 /* 109 vars */) = 0
brk(NULL)                               = 0x50b7000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2daf26c000
***
SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR, si_addr=0x400318}
***
+++ killed by SIGSEGV +++
Segmentation fault
    (define-module (worldofguix packages minikube)
      #:use-module (guix packages)
      #:use-module (guix download)
      #:use-module ((guix licenses) :prefix license:)
      #:use-module (guix gexp)
      #:use-module (gnu packages gcc)
      #:use-module (gnu packages commencement)
      #:use-module (nonguix build-system binary))

    (define-public minikube
      (package
       (name "minikube")
       (version "1.31.2")
       (source (origin
                 (method url-fetch)
                 (uri (string-append "https://github.com/kubernetes/minikube/releases/download/v" version "/minikube-linux-amd64"))
                  (sha256
                   (base32
                    "16vi7b6vkapc2w3f2yx8mzany5qqvrgvlshc58dambcn2q2hra48"))))
        (build-system binary-build-system)
        (inputs `((,gcc "lib")
              ,gcc-toolchain))
        (arguments
         (list
          #:substitutable? #f
          #:patchelf-plan
           #~'(("./minikube"
              ("gcc" "gcc-toolchain")))
          #:install-plan
          #~'(("minikube" "bin/"))
          #:phases
          #~(modify-phases %standard-phases
              (replace 'unpack
                (lambda _
                  (copy-file #$source "./minikube")
                  (chmod "minikube" #o644)))
              (add-before 'install 'chmod
                (lambda _
                  (chmod "minikube" #o555))))))
        (home-page "https://minikube.sigs.k8s.io")
        (synopsis "minikube is a tool for running local Kubernetes clusters.")
        (description "minikube implements a local Kubernetes cluster. minikube's primary goals are to be the best tool for local Kubernetes application development and to support all Kubernetes features that fit.")
        (license license:asl2.0)))

    minikube
[-] worldofgeese@lemmy.world 6 points 1 year ago* (last edited 1 year ago)

In the spirit of answering a question of genuine interest, it's because tabs are much easier to process out on desktop, whether to read-it-later archives like Pocket or Omnivore or to project folders or tasks. I'd just sync them up and call it a day but I lost my moment when my tabs crept up over one hundred. There's a lot of good research there, whether for work or home programming projects.

32

I just moved to a new phone and I just want all tabs bookmarked. Opening all of them on desktop won't work because that option usually only loads the first hundred or so before locking up.

view more: next ›

worldofgeese

joined 1 year ago