Hacker News new | past | comments | ask | show | jobs | submit login
Quicksort with Jenkins for fun and no profit (susam.net)
121 points by todsacerdoti on Jan 25, 2024 | hide | past | favorite | 39 comments



> …it helps in avoiding wasteful build jobs…

I appreciate that the author went to the effort of optimizing this given how terribly this would perform in the first place.


Premature optimization and whatnot


Awesome. I’ve seen worse Jenkins pipelines than this.


I maintain worse Jenkins pipelines than this. Reminds me, I need to restock some whiskey...


This is like a flower sprouting out of the ground of an abandoned factory.

I think jenkins is very useful yet painful.


This post has awakened ancient pagan demons. Only purification by fire can save us now. Please shut down all of your Jenkins machines before it is too late.


Anyone know of a version that is no fun and many profit? Asking for a friend


Becoming an expert on jenkins then selling your services as a 'jenkins consultant'.


But it’s like a deal with a devil, just instead of selling your soul, you would be giving away a lot of tears. Frequently. In large quantities.


I didn't know Jenkins was this powerful. Do GitHub Actions and GitLab CI/CD support something similar? I doubt it because they seem to heavily focus on declarative style, though.


GitHub Actions can do anything jenkins can do, you just need to do 300 commits to test it.


This made me laugh out loud! So much related!

Ever since I discovered `act` [1], I made a lot less commits.

[1]: https://github.com/nektos/act


Ideas for anyone who wants to go further with this:

1. Implement the Ackermann function.

2. Implement the factorial function using iterative recursion [1]. Does Jenkins execute the function iteratively or recursively?

[1] https://mitp-content-server.mit.edu/books/content/sectbyfn/b...


>Yes, patches and trunk! We were still using SVN back then.

Is SVN really that obsolete? I thought it was still used


It's still maintained by Apache, and I'm sure it is still used by a lot of legacy systems, but it has basically lost to git.

As one data point, GitHub removed SVN support last year - https://github.blog/2023-01-20-sunsetting-subversion-support...


You can't pry SVN from gaming artists. Good luck. Binary files in git suck.


git + nexus maybe would be the way to go ?


SVN was obsolete around 2010; it just had a lot of inertia from existing projects.


Oh dear. Reminds me of when a programmed a batch job processor in Groovy for Jenkins to run a build in parallell. Got it down from 26h to 2h on 14 machines.

I guess that is the point of this divide and conquer example. I did a linear and randomized division to keep it simple ...


that is such a common thing people have to do, why doesn't it do it out-of-the-box? (probably a plugin somehow)



There is some parallell job thing but if I remember correctly there are some limitations.

I don't remember the details it was to long time ago.


Since we're on the subject, is there a modern alternative to Jenkins?


IMO Jenkins works great and the hate is vastly overblown. So... I would say Jenkins is the modern alternative to Jenkins, personally.


Groovy is god-awful though.

Jenkins is... fine, basically, if you can get away with almost never having to touch Groovy.


A good Groovy script limits itself to running scripts in better languages.


This is the way. Groovy isn’t that bad but the CPS interpreter & sandboxing is god awful to develop on and troubleshoot.


Groovy is a far better scripting language than YAML, which seems to be the choice of many other NYPD systems.


Agreed. Jenkins is one of those things where the biggest strength and biggest weakness is that it will do anything you want.

You, yourself, need to make good choices. Jenkins isn't going to stop you from making poor ones. Reminds me of Jira in that sense.


Outside of github/gitlab native pipeline runners, my preferred CICD system was Concourse but I've read that Dagger is where it's at now.

Also, newer CICD systems don't offer a webui to configure pipelines but use pipeline descriptors in a declarative file format (YAML usually). Last I used it, Jenkinsfile tried to do the same but I didn't like the groovy DSL _at all_.


I'm building one! It's still under heavy development. Doing a lot of yak-shaving trying to get the internal architecture to suck as little as possible. Jenkins is surprisingly complex. Things that seem like should be simple, turns out is difficult to implement in a way that isn't horrible, when everything is a plugin. The good news is, at the pace i'm going, it should be production-ready in about 2 years :D But at least it will be GPL, and not strangled by some company trying to monetize it.

If you want something today that's closest to Jenkins in design, that would be StackStorm. It's not very trendy, but it has basically everything you need, and a flexible, pluggable architecture. They open-sourced all the Enterprise components too.


Not sure what you mean by "strangled", Jenkins seems quite to open to me, in fact I'm paid to take care of its OSS infrastructure and its community and only that, by the main company behind it, and they don't ask anything more, I feel quite free in my job.

Disclosure: this main company is CloudBees


Gitlab and github ci is fine until you're working in an environment with major compliance requirements for self hosted everything and/or basically infinite build history. At that point, sadly you're back in Jenkins world.

Another thing that kills Jenkins alternatives is just a sufficiently diverse number of languages/projects/build types. Plugin ecosystem sucks, but it's massive, and some of it will probably work for whatever use case. It's painful but your only alternative is also painful.. curating custom runner-containers for another ci tool with less existing historical effort to leverage


If you want to be radical and meme-y, use a language that compiles fast (ocaml,go for example), nix with local builds for deploys then all you’ll need is commit hooks.


GitLab CI is great, I've seen CircleCI used a lot.


GitHub Actions is very solid IMO.

If you are into dynamic stuff or approvals, you could check out Buildkite.


[deleted]


Where's Spanish inquisition when we need them?


Jenkins is barely useful for CI/CD, so you might as well see what else you can do with it for fun.


Christ! Kill it with fire..?




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: