Hacker Newsnew | past | comments | ask | show | jobs | submit | more JeffMcCune's commentslogin

  Location: Portland, OR
  Remote: Yes
  Willing to relocate: No
  Technologies: Kubernetes, Go, Python, AWS, GCP, OIDC, TCP/IP, TLS
  Résumé/CV: https://docs.google.com/document/d/1L4l22IdwtW75MaNzQnJoOx2apQUKV9-J5TBz6bMS5BQ/edit?usp=sharing
  Email: mccune.jeff+hn2506@gmail.com
Seeking a Senior/Staff level Platform Engineer / SRE / infrastructure focused role developing software in Go for Kubernetes on AWS or GCP. Ideally integrating with AI/ML platforms and coding agents.

Specializing in infrastructure and deployment automation, platform integration, networking, and security. Recently launched Holos, a holistic platform management tool here on Show HN. Previous startup experience at Puppet as the 12th employee. Overhauled and redesigned Twitter's configuration management system for 300K+ hosts before it was acquired. Lots of successful cloud projects over the past 10 years.

Resume/CV Link: https://docs.google.com/document/d/1L4l22IdwtW75MaNzQnJoOx2a...


Yesterday I installed Karabiner Elements to get a jk chord mapped to escape globally. I’m a bit disappointed it’s not actually a chord, it’s a simultaneous press with a 100ms window.

Does Kanata support chords like jk to escape with a configurable timeout on when k is pressed, say 80ms or so?


This seems to rely on Karabiner for keyboard hooking, so it wouldn't be that different ? (maintainer mainly uses windows and linux, so kinda makes sense)

On macos limitations, kernel extensions are officially deprecated so I don't think we'll see a mechanism that can hook deep enough into the keyboard manager system to allow for complex chords. That's what Karabiner did as kernel ext. before switching to Elements, and the timeout workaround was introduced at that time if I remember correctly.


AFAIK https://github.com/houmain/keymapper should support this on MacOS even though it also makes use of the Karabiner virtual device lib (referring to a sibling comment). I suggest giving both a try!


Think Karabiner supports custom timeout (though not sure what you mean by the difference between a chord and a simultaneous key)


An artifact depends on the tools used to build it.

This is why we pin versions. Go tool is common sense, allowing for any old tool version in the build chain invites failure.


I'm not debating that. I'm pointing out, that the person replied to, said there's no reason to mix it together with the artifact dependencies.

In other words, no need to mix "dependencies" and "dev dependencies" together.


As other sibling comments suggest these use cases are better solved with a generator.

The rendered manifest pattern is a simpler alternative. Holos [1] is an implementation of the pattern using well typed CUE to wrap Helm and Kustomize in one unified solution.

It too supports Projects, they’re completely defined by the end user and result in the underlying resource configurations being fully rendered and version controlled. This allows for nice diffs for example, something difficult to achieve with plain ArgoCD and Helm.

[1]: https://holos.run/docs/overview/


The rendered manifests pattern is a great read by itself: https://akuity.io/blog/the-rendered-manifests-pattern


Congrats on the launch! Since this is Go have you considered using CUE or looked at their flow package? Curious how you see it relating or helping with data pipelines.


thanks!

I did look into CUE in the very early days of Bruin but ended up going with a more YAML-based configuration due to its support. I am not familiar with their flow package specifically, but I'll definitely take a deeper look. From a quick look, it seems like it could have replaced some of the orchestration code in Bruin to a certain extent.

One of the challenges, maybe specific to the data world, is that the userbase is familiar with a certain set of tools and patterns, such as SQL and Python, therefore introducing even a small variance into the mix is often adding friction, this was one of the reasons we didn't go with CUE at the time. I should definitely take another look though. thanks!


Go was the first language where I deeply appreciated strong typing. I’d used other before but it was go to definition working 100% of the time that did it for me. Maybe start there with them?

CUE is a close cousin to Go, the authors are deeply involved in Go. Marcel worked with Rob Pike on the design of CUE. I could see how it’d feel foreign, without first appreciating Go maybe CUE wouldn’t have clicked for me.


Very nice, would love to see a kubectl explain type plugin to integrate with this somehow.


Could you clarify what process you're speaking of as the end goal?

Holos is designed to produce configuration for Kubernetes. That configuration can be as small as a 10 line yaml file, but in larger operations it often ends up being multiple millions of lines of yaml spread over multiple clusters across the globe.

Once Holos produces the configuration, we stop. We leave it up to you to decide what to do next with it. For example we pass it to ArgoCD to deploy, others pass it to Flux. In development I pass it directly to kubectl apply.


I share Marcel's view, a DSL is the ideal position on the configuration complexity clock. CUE in particular is ideal for configuration because of how it handles unification.

I wrote up why we selected CUE here, with links to explanations from Marcel who explains it better than I: https://holos.run/blog/why-cue-for-configuration/

These comments in particular reminded me of Marcel's video linked at the bottom of that article, where he talks about the history of CUE in the context of configuration languages at Google: https://www.youtube.com/watch?v=jSRXobu1jHk


> Many general purpose languages support type checking, but few support constraints and validation of data. We must write our own validation logic which often means validation happens haphazardly, if at all.

Python with z3 and some AST magic can support constraint validation.

In fact, type checking can be seen as a form of that. I have a fork of typpete, a z3 based type checker from 3 years ago that should still work.

https://adsharma.github.io/pysmt/


That's why I said it's an unpopular opinion :P


Got you, I did not mean to be argumentative, only to explain why Holos is what it is.


This is a great summary, thank you.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: