Recent submissions

Comment · 1 year ago
In busy systems, GOMAXPROCS=cpu.limits will still lead to the process exceeding its cfs quota and be throttled as the Go runtime has additional threads beyond just GOMAXPROCS. IME, the only way to (nearly) guarantee there's no throttling is to set cpu.limits=GOMAXPROCS+1 to leave some room for these system threads. Unfortunately, there's broad adoption of uber/automaxprocs (which makes the same error) and utilizing the downward API to do this for other cases.
Comment · 3 years ago
The truth is that most "big data" problems aren't big and can often be solved with awk and xargs.
Comment · 4 years ago
Clicked expecting this to be about the history (https://officialrealbook.com/history/) of jazz fake books, which eventually evolved into the Real Book!
Comment · 4 years ago
I remember the pure magic of playing Sierra games after adding a Sound Blaster. Dr Sbaitso was also a hoot.
Comment · 4 years ago
This is a design flaw in Kubernetes. The article doesn't really explain what's happening though. The real problem is that there is no synchronization between the ingress controller (which manages the ingress software configuration, e.g. nginx from the Endpoints resources), kube-proxy (which manages iptables rules from the Endpoints resource), and kubelet (which sends the signals to the container). A presStop hook w/ a sleep equivalent to an acceptable timeout will handle the 99%+ cases (and the cases it doesn't will have exceeded your timeout anyhow). Things become more complicated when there are sidecar containers (say an envoy or nginx routing to another container in the same pod) and that often requires shenanigans such as shared emptyDir{} volumes that waits (with fsnotify or similar) for socket files to be closed to ensure requests are fully completed.
Comment · 6 years ago
Right out of Dvorak Symphony 9!
Comment · 9 years ago
Hey, this is Aaron from GitHub. We're using devicemapper w/ LVM backed pools. Would love to hear about your experience there. We definitely see this problem during periods of high container churn.
Comment · 9 years ago
iTerm works with Cmd-[0-9] just fine.
Comment · 10 years ago
Have you tried `hub`? https://github.com/github/hub

    ~/src/bar (foo =)$ hub pull-request
    https://github.com/foo/bar/pull/5
There is also `hub fork` and others:

    These GitHub commands are provided by hub:

       pull-request   Open a pull request on GitHub
       fork           Make a fork of a remote repository on GitHub and add as remote
       create         Create this repository on GitHub and add GitHub as origin
       browse         Open a GitHub page in the default browser
       compare        Open a compare page on GitHub
       release        List or create releases (beta)
       issue          List or create issues (beta)
       ci-status      Show the CI status of a commit
Comment · 10 years ago
With close to a decade of remote work experience under my belt at companies that are more than 50% remote (GitHub) down to being the only remote guy, I have concluded that some things are best left in the physical world...

There is an actual whiteboard on my wall and a webcam on a stand. When I want to whiteboard something, I get up, switch camera angles, and literally draw it out. I have found this to be far more productive than any whiteboard apps out there.

For something more interactive, Google Draw isn't awful, but it's not a pen and paper.

Comment · 10 years ago
I have had 3 Ecobee thermostats in my house for over 3 years. They have been extremely reliable and have an API, so I can do all sorts of fun stuff with them. Right now I'm working on hooking them up so my themostats change settings when the house is empty based on the presence of family member phones on our LAN.
Comment · 10 years ago
And all of the config management tools have a comparable concept. Ansible 2.0 has 16 levels of variable precedence, Puppet has hiera which gives you arbitrary levels of precedence, and Chef has attributes, of which there are 11-15, depending on how you count.
Comment · 10 years ago
To make this a fair comparison, you should be comparing chef-solo (or chef-zero) deployments to Ansible since the closet thing Ansible has to a dynamic source of truth is dynamic inventories. But we'll table the discussion of whether or not I should be required to build my own CMDB from scratch or not for now...

The Chef Server stack is somewhat complicated, though with an omnibus install you will rarely have to interact with it at that level. These days, it scales well up to thousands of client nodes with no meaningful effort.

I'm not sure what you mean by the server using its own versioning. Cookbooks are versioned, as they are deployable artifacts. Environments then define which versions of all the cookbooks exist, so you have an easy promotion strategy. The challenge with Chef Server and DVCS is that you have to centralize the uploading of Chef artifacts (roles, environments, data bags, cookbooks) to Chef Server if you have a team with more than 1 person. That challenge is not unique to Chef, however. Hopefully, a team of Ansible users are not running Ansible playbooks directly from their workstations. If you try to upload a version of a cookbook that is older than the current version, it yells at you, so it makes certain bad behaviors more difficult.

There is plenty I don't like about Chef. And Puppet. And Ansible...I've worked with all of them, but I still haven't seen a valid argument to support the phrase "over-engineered" when used on Chef. Of all the configuration management products out there, Chef is still the most flexible and the most powerful.

Comment · 10 years ago
In what way is attribute precedence over-engineered? You can ignore most of it for most cases and just use default for everything, but when you need it, it's there for you. I don't see how it's more or less simple than what Ansible has defined: http://docs.ansible.com/ansible/playbooks_variables.html#var.... I count 16 precedence rules in Ansible 2.0.

Every time a new configuration management utility comes out, everyone loves it because of it's simplicity or some arbitrary measure of "lightweight," but once Systems Engineers need to solve real automation problems in the real world, they start adopting features to work around the illusion of being "lightweight."

I like Ansible for automating my home network where I have simple problems and no need for environment separation. For professional work, I stick with Chef or Puppet.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton