4 ms·
"This simple tool solves X at my org" is probably the most underrated type of project. There's not enough room to overcomplicate something that isn't a core par
by rollcat 3y ago
"This simple tool solves X at my org" is probably the most underrated type of project. There's not enough room to overcomplicate something that isn't a core part of the business, it must be practical to maintain, simple&stupid enough so that onboarding is not a hurdle, etc.
I encourage everyone to share your "splunk in 1kloc of Python" projects! Some of my own:
- https://github.com/rollcat/judo https://github.com/rollcat/judo is Ansible without Python or YAML
- https://github.com/rollcat/zfs-autosnap https://github.com/rollcat/zfs-autosnap manages rolling ZFS snapshots
- eigenvalue 3y agoThanks, based on the dismissive replies to my original comment in the Splunk acquisition discussion, I thought this would get a lot of hostile takes saying that it was dumb, that I reinvented the wheel because I didn't want to spend 2 weeks trying to figure out opentelemetry nonsense and tools X, Y, and Z, that it was trivial, that it wouldn't scale, etc. But people are actually being surprisingly nice and friendly! I guess people just really hate Splunk!
- egwor 3y agoI suggest you sell it to Oracle, get some popcorn and watch the Cisco vs Oracle log war begin!
- RexM 3y agomired in antitrust lawsuits
- _aavaa_ 3y ago> reinvented the wheel I hate this meme. It's as if cars, trains, and airplanes all use the same wheels. Or that wheels under my stove, my tiny filing dresser, and my shopping cart are all the same. Oh yeah, re-inventing the wheel, what a stupid idea and something we obviously don't frequently do and for good reasons. This meme is almost as bad as the horrible misquoted "premature optimisation is the root of all evil".
- facorreia 3y agoYour project sounds like something that definitely could come in handy. I forked it as a "bookmark". I particularly like the idea of storing the data in a local SQLite database. Not everything needs to be "web scale".
- eigenvalue 3y agoThe real power is that with datasette you can instantly turn that SQLite DB into a full fledged responsive web app with arbitrarily complex filtering and sorting, which all gets serialized to the URL so you can share it and bookmark it for future use.
- silasb 3y agoNot only that, but with https://litestream.io/ https://litestream.io/ things becomes even more interesting. I'm currently using this for a small application to easily backup databases in docker containers.
- rollcat 3y ago> But people are actually being surprisingly nice and friendly! I guess people just really hate Splunk! Best things in life come through love and passion. Frustration can be a good motivator but don't let it guide you. > I thought this would get a lot of hostile takes [...] To be entirely honest with you, recognizing and praising the good parts is a lot easier than giving proper feedback on what needs to be improved;)
- olafalo 3y agoFor me, it's configinator[0]. Write a spec file for a config like [1], get a Go file that loads a config from environment variables like [2]. Code-gen only, no reflection, fairly type-safe, supports enums, string, bool, and int64. I made it because it was gross to add new config vars in a project at work, and it's come in handy a lot! [0] https://github.com/olafal0/configinator https://github.com/olafal0/configinator [1] https://github.com/olafal0/configinator/blob/0576a53970bcb4dd7c05a7cc73b396ae313e2a68/example/config_spec.toml https://github.com/olafal0/configinator/blob/0576a53970bcb4d... [2] https://github.com/olafal0/configinator/blob/0576a53970bcb4dd7c05a7cc73b396ae313e2a68/example/config.go https://github.com/olafal0/configinator/blob/0576a53970bcb4d...
- aaviator42 3y agoMy org's apps heavily use this simple key-value interface built on sqlite: https://github.com/aaviator42/StorX https://github.com/aaviator42/StorX There's also a bunch of other purpose-built tiny utilities on that GitHub account: https://github.com/aaviator42?tab=repositories https://github.com/aaviator42?tab=repositories
- emodendroket 3y ago> There's not enough room to overcomplicate something that isn't a core part of the business, it must be practical to maintain, simple&stupid enough so that onboarding is not a hurdle, etc. You would think. But no, there is lots of room to make it over complicated without the corresponding efforts to manage the complexity.
- dynisor 3y agoDon’t worry, that’s just tech debt and we will deeefinitely come back to it next sprint.
- xorcist 3y agoYour software is cool but the description is a bit unfair to Ansible. Ansible works by solving for desired state. This software runs scripts, it replaces "for host in; do ssh $host < script.sh; done".
- matrss 3y agoLast time I checked, ansible playbooks were also essentially just sequential steps to execute via ssh, albeit in yaml format. There was certainly no way to describe a desired state nor did ansible accomplish consistently bringing a system into some desired state. Two executions of the same playbook could result in a very different system state for example, depending on what happened in between. The only systems I am aware of which are reliably capable of "solving for desired state" are nix and guix.
- eigenvalue 3y agoAnsible is definitely all about solving from a specified target state and ensuring that it is followed. It’s even at the level of syntax for ansible, which is how it can be used totally declaratively. And if you stick to the native idiomatic ansible way of doing everything (as opposed to doing hacky stuff with ad hoc shell commmands), you get automatic idempotence and other nice stuff “for free”.
- matrss 3y agoSo, the last time I used ansible, which was quite a while ago to be fair, there was a builtin way to install packages with apt on the target system. You could add packages to a list to be installed and that would work. But removing them from that "declared state" would not remove them on the target system on the next playbook run. You would have to add an explicit uninstall command. And that is where ansible failed to be declarative. Did that change in the meantime? Ansible might provide idempotence for the builtin things (although I would argue it doesn't, at least not on a bit-by-bit level, since you can't pin down specific versions of package repositories and stuff like that), but to be declarative it would need to provide a 1-to-1 mapping from declared state to running system state. And if what I described above is still the case, then it simply does not do that. In my experience, ansible tries to build a declarative interface to an imperative mode of system management, which works to some extent, but breaks down in more complex cases because building this declarative interface can only be a leaky abstraction without the right foundation.
- deleted 3y ago[deleted]