frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

AGENTS.md – Open format for guiding coding agents

https://agents.md/
519•ghuntley•10h ago•233 comments

How to Think About GPUs

https://jax-ml.github.io/scaling-book/gpus/
115•alphabetting•1d ago•27 comments

Ask HN: Why does the US Visa application website do a port-scan of my network?

165•mbix77•4h ago•68 comments

How to Draw a Space Invader

https://muffinman.io/blog/invaders/
320•abdusco•11h ago•36 comments

Modern CI Is Too Complex and Misdirected

https://gregoryszorc.com/blog/2021/04/07/modern-ci-is-too-complex-and-misdirected/
80•thundergolfer•6h ago•35 comments

Copilot broke audit logs, but Microsoft won't tell customers

https://pistachioapp.com/blog/copilot-broke-your-audit-log
505•Sayrus•10h ago•174 comments

How we exploited CodeRabbit: From simple PR to RCE and write access on 1M repos

https://research.kudelskisecurity.com/2025/08/19/how-we-exploited-coderabbit-from-a-simple-pr-to-rce-and-write-access-on-1m-repositories/
597•spiridow•18h ago•201 comments

Tiny microbe challenges the definition of cellular life

https://nautil.us/a-rogue-new-life-form-1232095/
99•jnord•11h ago•23 comments

D2 (text to diagram tool) now supports ASCII renders

https://d2lang.com/blog/ascii/
319•alixanderwang•16h ago•52 comments

Type-machine

https://arthi-chaud.github.io/posts/type-machine/
23•todsacerdoti•5h ago•4 comments

How I Made Ruby Faster Than Ruby

https://noteflakes.com/articles/2025-08-18-how-to-make-ruby-faster
42•ciconia•1d ago•9 comments

The Value of Hitting the HN Front Page

https://www.mooreds.com/wordpress/archives/3530
93•mooreds•8h ago•37 comments

Show HN: I've made an easy to extend and flexible JavaScript logger

https://github.com/inshinrei/halua
4•inshinrei•20h ago•3 comments

Gaussian Processes for Machine Learning [pdf]

https://gaussianprocess.org/gpml/chapters/RW.pdf
27•susam•1d ago•5 comments

Fast and observable background job processing for .NET

https://github.com/mikasjp/BusyBee
16•mikasjp•2d ago•5 comments

Emacs as your video-trimming tool

https://xenodium.com/emacs-as-your-video-trimming-tool
243•xenodium•17h ago•124 comments

Customizing Lisp REPLs

https://aartaka.me/customize-repl.html
14•nemoniac•1d ago•2 comments

Candle Flame Oscillations as a Clock

https://cpldcpu.com/2025/08/13/candle-flame-oscillations-as-a-clock/
291•cpldcpu•4d ago•65 comments

Without the futex, it's futile

https://h4x0r.org/futex/
269•eatonphil•20h ago•124 comments

Rails Charts Using ECharts from Apache

https://github.com/railsjazz/rails_charts
45•amalinovic•2d ago•4 comments

Intel Foundry Demonstrates First Arm-Based Chip on 18A Node

https://hothardware.com/news/intel-foundry-demos-deer-creek-falls-reference-soc
45•rbanffy•1d ago•20 comments

CRDT: Text Buffer

https://madebyevan.com/algos/crdt-text-buffer/
121•skadamat•14h ago•6 comments

AnduinOS

https://www.anduinos.com/
129•TheFreim•15h ago•158 comments

Drunken Bishop (2023)

https://re.factorcode.org/2023/08/drunken-bishop.html
67•todsacerdoti•12h ago•12 comments

How Figma’s multiplayer technology works (2019)

https://www.figma.com/blog/how-figmas-multiplayer-technology-works/
150•redbell•3d ago•48 comments

We’re Not So Special: A new book challenges human exceptionalism

https://democracyjournal.org/magazine/78/were-not-so-special/
74•nobet•7h ago•140 comments

Show HN: OpenAI/reflect – Physical AI Assistant that illuminates your life

https://github.com/openai/openai-reflect
77•Sean-Der•14h ago•29 comments

Show HN: Hanaco Weather – A poetic weather SNS from the OS Yamato project

https://github.com/osyamato/os-yamato
12•tsuyoshi_k•6h ago•5 comments

Custom telescope mount using harmonic drives and ESP32

https://www.svendewaerhert.com/blog/telescope-mount/
287•waerhert•1d ago•105 comments

Analysis of the GFW's Unconditional Port 443 Block on August 20, 2025

https://gfw.report/blog/gfw_unconditional_rst_20250820/en/
136•kotri•5h ago•88 comments
Open in hackernews

Modern CI Is Too Complex and Misdirected

https://gregoryszorc.com/blog/2021/04/07/modern-ci-is-too-complex-and-misdirected/
80•thundergolfer•6h ago

Comments

jph•3h ago
You're 100% right IMHO about the convergence of powerful CI pipelines and full build systems. I'm very curious what you'll think if you try Dagger, which is my tool of choice for programming the convergence of CI and build systems. (Not affiliated, just a happy customer)

https://dagger.io/

ajb•1h ago
So, it sounded interesting but they have bet too hard on the "developer marketing" playbook of "just give the minimum amount of explanation to get people to try the stuff".

For example, there is a quick start, so I skip that and click on "core concepts". That just redirects to quick start. There's no obvious reference or background theory.

If I was going to trust something like this I want to know the underlying theory and what guarantees it is trying to make. For example, what is included in a cache key, so that I know which changes will cause a new invocation and which ones will not.

tacker2000•2h ago
These online / paid CI systems are a dime a dozen and who knows what will happen to them in the future…

Im still rocking my good old jenkins machine, which to be fair took me a long time to set up, but has been rock solid ever since and will never cost me much and will never be shut down.

But i can definitely see the appeal of github actions, etc…

thrown-0825•2h ago
until you have to debug a GH action, especially if it only runs on main or is one of the handful of tasks that are only picked up when committed to main.

god help you, and don’t even bother with the local emulators / mocks.

bubblyworld•1h ago
I've had a great experience using `act` to debug github actions containers. I guess your mileage, as usual, will vary depending on what you are doing in CI.
thrown-0825•1h ago
i tried act a couple years ago and ran into a lot of issues when running actions that have external dependencies
myaccountonhn•1h ago
Sourcehut builds is so much better. You can actually ssh into the machine and debug it directly.
whstl•1h ago
There is a community action for doing so in Github too, but god knows if it's secure or works as well as Sourcehut.

https://github.com/marketplace/actions/debugging-with-ssh

dgfitz•43m ago
+1 for Jenkins.

At $dayjob they recently set up git runners. The effort I’m currently working on has the OS dictated to us, long story don’t ask. The OS is centos 7.

The runners do not support this. There is an effort to move to Ubuntu 22.04. The runners also don’t support this.

I’m setting up a Jenkins instance.

forrestthewoods•2h ago
> But if your configuration files devolve into DSL, just use a real programming language already.

This times a million.

Use a real programming language with a debugger. YAML is awful and Starlark isn’t much better.

thrown-0825•1h ago
bonus points when you start embedding code in your yamlified dsl.
CGamesPlay•1h ago
> Use a real programming language with a debugger. YAML is awful and Starlark isn’t much better.

I was with you until you said "Starlark". Starlark is a million times better than YAML in my experience; why do you think it isn't?

qwertytyyuu•2h ago
Wait a CI isn't supposed to be a build system that also runs tests?
athrowaway3z•39m ago
But you see - it's efficient if we add _our_ configuration layer with custom syntax to spawn a test-container-spawner with the right control port so that it can orchestrate the spawning of the environment and log the result to production-test-telemetry, and we NEED to have a dns-retry & dns-timeout parameter so our test-dns resolver has time to run its warm-up procedure.

And I want it all as a SaaS!

IshKebab•1h ago
Yeah I think this is totally true. The trouble is there are loads of build systems and loads of platforms that want to provide CI with different features and capabilities. It's difficult to connect them.

One workaround that I have briefly played with but haven't tried in anger: Gitlab lets you dynamically create its `.gitlab-ci.yaml` file: https://docs.gitlab.com/ci/pipelines/downstream_pipelines/#d...

So you can have your build system construct its DAG and then convert that into a `.gitlab-ci.yaml` to run the actual commands (which may be on different platforms, machines, etc.). Haven't tried it though.

Thom2000•40m ago
I've used dynamic pipelines. They work quite well, with two caveats: now your build process is two step and slower. And there are implementation bugs on Gitlab's side: https://gitlab.com/groups/gitlab-org/-/epics/8205

FWIW Github also allows creating CI definitions dynamically.

dakiol•38m ago
If there’s something worse than a gitlab-ci.yaml file that is a dynamically-generated gitlab-ci.yaml file.
dochtman•1h ago
(2021)
positron26•1h ago
Fiefdoms. Old as programming. Always be on the lookout for people who want to be essential rather than useful.
aa-jv•1h ago
I have built many CI/build-servers over the decades for various projects, and after using pretty much everything else out there, I've simply reverted, time and again - and, very productively - to using Plain Old Bash Scripts.

(Of course, this is only possible because I can build software in a bash shell. Basically: if you're using bash already, you don't need a foreign CI service - you just need to replace yourself with a bash script.)

I've got one for updating repo's and dealing with issues, I've got one for setting up resources and assets required prior to builds, I've got one for doing the build - then another one for packaging, another for signing and notarization, and finally one more for delivering the signed, packaged, built software to the right places for testing purposes, as well as running automated tests, reporting issues, logging the results, and informing the right folks through the PM system.

And this all integrates with our project management software (some projects use Jira, some use Redmine), since CLI interfaces to the PM systems are easily attainable and set up. If a dev wants to ignore one stage in the build pipeline, they can - all of this can be wrapped up very nicely into a Makefile/CMakeLists.txt rig, or even just a 'build-dev.sh vs. build-prod.sh' mentality.

And the build server will always run the build/integration workflow according to the modules, and we can always be sure we'll have the latest and greatest builds available to us whenever a dev goes on vacation or whatever.

And all this with cross-platform, multiple-architecture targets - the same bash scripts, incidentally, run on Linux, MacOS and Windows, and all produce the same artefacts for the relevant platform: MacOS=.pkg, Windows=.exe, Linux=.deb(.tar)

Its a truly wonderful thing to onboard a developer, and they don't need a Jenkins login or to set up Github accounts to monitor actions, and so on. They just use the same build scripts, which are a key part of the repo already, and then they can just push to the repo when they're ready and let the build servers spit out the product on a network share for distribution within the group.

This works with both Debug and Release configs, and each dev can have their own configuration (by modifying the bash scripts, or rather the env.sh module..) and build target settings - even if they use an IDE for their front-end to development. (Edit: /bin/hostname is your friend, devs. Use it to identify yourself properly!)

Of course, this all lives on well-maintained and secure hardware - not the cloud, although theoretically it could be moved to the cloud, there's just no need for it.

I'm convinced that the CI industry is mostly snake-oil being sold to technically incompetent managers. Of course, I feel that way about a lot of software services these days - but really, to do CI properly you have to have some tooling and methodology that just doesn't seem to be being taught any more, these days. Proper tooling seems to have been replaced with the ideal of 'just pay someone else to solve the problem and leave management alone'.

But, with adequate methods, you can probably build your own CI system and be very productive with it, without much fuss - and I say this with a view on a wide vista of different stacks in mind. The key thing is to force yourself to have a 'developer workstation + build server' mentality from the very beginning - and NEVER let yourself ship software from your dev machine.

(EDIT: call me a grey-beard, but get off my lawn: if you're shipping your code off to someone else [github actions, grrr...] to build artefacts for your end users, you probably haven't read Ken Thompsons' "Reflections On Trusting Trust" deeply or seriously enough. Pin it to your forehead until you do!)

j4coh•1h ago
Since the article came out in 2021 did anyone ever build the product of his dreams described in the conclusion?
MathMonkeyMan•1h ago
I remember a Rich Hickey talk where he described Datomic, his database. He said "the problem with a database is that it's over there." By modeling data with immutable "facts" (a la Prolog), much of the database logic can be moved closer to the application. In his case, with Clojure's data structures.

Maybe the the problem with CI is that it's over there. As soon as it stops being something that I could set up and run quickly on my laptop over and over, the frog is already boiled.

The comparison to build systems is apt. I can and occasionally do build the database that I work on locally on my laptop without any remote caching. It takes a very long time, but not too long, and it doesn't fail with the error "people who maintain this system haven't tried this."

The CI system, forget it.

Part of the problem, maybe the whole problem, is that we could get it all working and portable and optimized for non-blessed environments, but it still will only be expected to work over there, and so the frog keeps boiling.

I bet it's not an easy problem to solve. Today's grand unified solution might be tomorrow's legacy tar pit. But that's just software.

AtlasBarfed•37m ago
I want my build system to be totally declarative

Oh the DSL doesn't support what I need it to do.

Can I just have some templating or a little bit of places to put in custom scripts?

Congratulations! You now have a turing complete system. And yes, per the article that means you can cryptocurrency mine.

Ansible terraform Maven Gradle.

Unfortunate fact is that these IT domains (builds and CI) are at a junction of two famous very slippery slopes.

1) configuration

2) workflows

These two slippery slopes are famous for their demos of how clean and simple they are and how easy it is to do. Anything you need it to do.

In the demo.

And sure it might stay like that for a little bit.

But inevitably.... Script soup

lelanthran•9m ago
Alternative take: CI is the successful monetization of Make-as-a-Service.
KronisLV•21m ago
> Part of the problem, maybe the whole problem, is that we could get it all working and portable and optimized for non-blessed environments, but it still will only be expected to work over there, and so the frog keeps boiling.

Build the software inside of containers (or VMs, I guess): a fresh environment for every build, any caches or previous build artefacts explicitly mounted.

Then, have something like this, so those builds can also be done locally: https://docs.drone.io/quickstart/cli/

Then you can stack as many turtles as you need - such as having build scripts that get executed as a part of your container build, having Maven or whatever else you need inside of there.

donperignon•1h ago
2025 and Jenkins still the way to go
ohdeargodno•45m ago
The fact that maintaining any Jenkins instance makes you want to shoot yourself and yet it's the least worst option is an indictment of the whole CI universe.

I have never seen a system with documentation as awful as Jenkins, with plugins as broken as Jenkins, with behaviors as broken as Jenkins. Groovy is a cancer, and the pipelines are half assed, unfinished and incompatible with most things.

benterix•55m ago
The author has a point about CI being a build system and I saw it used and abused in various ways (like the CI containing only one big Makefile with the justification that we can easily migrate from one CI system to another).

However, with time, you can have a very good feel of these CI systems, their strong and weak points, and basically learn how to use them in the simplest way possible in a given situation. Many problems I saw IRL are just a result of an overly complex design.

mike_hearn•53m ago
I've investigated this idea in the past. It's an obvious one but still good to have an article about it, and I'd not heard of Taskcluster so that's cool.

My conclusion was that this is near 100% a design taste and business model problem. That is, to make progress here will require a Steve Jobs of build systems. There's no technical breakthroughs required but a lot of stuff has to gel together in a way that really makes people fall in love with it. Nothing else can break through the inertia of existing practice.

Here are some of the technical problems. They're all solvable.

• Unifying local/remote execution is hard. Local execution is super fast. The bandwidth, latency and CPU speed issues are real. Users have a machine on their desk that compared to a cloud offers vastly higher bandwidth, lower latency to storage, lower latency to input devices and if they're Mac users, the fastest single-threaded performance on the market by far. It's dedicated hardware with no other users and offers totally consistent execution times. RCE can easily slow down a build instead of speeding it up and simulation is tough due to constantly varying conditions.

• As Gregory observes, you can't just do RCE as a service. CI is expected to run tasks devs aren't trusted to do, which means there has to be a way to prove that a set of tasks executed in a certain way even if the local tool driving the remote execution is untrusted, along with a way to prove that to others. As Gregory explores the problem he ends up concluding there's no way to get rid of CI and the best you can do is reduce the overlap a bit, which is hardly a compelling enough value prop. I think you can get rid of conventional CI entirely with a cleverly designed build system, but it's not easy.

• In some big ecosystems like JS/Python there aren't really build systems, just a pile of ad-hoc scripts that run linters, unit tests and Docker builds. Such devs are often happy with existing CI because the task DAG just isn't complex enough to be worth automating to begin with.

• In others like Java the ecosystem depends heavily on a constellation of build system plugins, which yields huge levels of lock-in.

• A build system task can traditionally do anything. Making tasks safe to execute remotely is therefore quite hard. Tasks may depend on platform specific tooling that doesn't exist on Linux, or that only exists on Linux. Installed programs don't helpfully offer their dependency graphs up to you, and containerizing everything is slow/resource intensive (also doesn't help for non-Linux stuff). Bazel has a sandbox that makes it easier to iterate on mapping out dependency graphs, but Bazel comes from Blaze which was designed for a Linux-only world inside Google, not the real world where many devs run on Windows or macOS, and kernel sandboxing is a mess everywhere. Plus a sandbox doesn't solve the problem, only offers better errors as you try to solve it. LLMs might do a good job here.

But the business model problems are much harder to solve. Developers don't buy tools only SaaS, but they also want to be able to do development fully locally. Because throwing a CI system up on top of a cloud is so easy it's a competitive space and the possible margins involved just don't seem that big. Plus, there is no way to market to devs that has a reasonable cost. They block ads, don't take sales calls, and some just hate the idea of running proprietary software locally on principle (none hate it in the cloud), so the only thing that works is making clients open source, then trying to saturate the open source space with free credits in the hope of gaining attention for a SaaS. But giving compute away for free comes at staggering cost that can eat all your margins. The whole dev tools market has this problem far worse than other markets do, so why would you write software for devs at all? If you want to sell software to artists or accountants it's much easier.

k3vinw•46m ago
This speaks to me. Lately, I’ve encountered more and more anti patterns where the project’s build system was bucked in favor of using something else. Like having a maven project and instead of following the declarative convention defining profiles and goals, everything was a hodge podge of shell scripts that only the Jenkins pipeline knew how to stitch together. Or a more recent case where the offending project had essential build functionality embedded in a Jenkins pipeline so you have to reverse engineer what it’s doing just so you can execute the build steps from your local machine. A particularly heinous predicament as the project depends on the execution of the pipeline to provide basic feedback.

Putting too much responsibility in the ci environment makes life as a developer (or anyone responsible for maintaining the ci process) more difficult. It’s far more superior to have a consistent use of the build system that can be executed the same way on your local machine as it is in your ci environment. I suppose this is the mess you find yourself in when you have other teams building your pipelines for you?

GnarfGnarf•26m ago
CI = Continuous Integration
bob1029•23m ago
I've been able to effectively skip the entire CI/CD conversation by preferring modern .NET and SQLite.

I recently spent a day trying to get a GH Actions build going but got frustrated and just wrote my own console app to do it. Polling git, tracking a commit hash and running dotnet build is not rocket science. Putting this agent on the actual deployment target skips about 3 boss fights.

mettamage•19m ago
IMO development is too complex and misdirected in general since we cargo cult FAANG.

Need AWS, Azure or GCP deployment? Ever thought about putting it on bare metal yourself? If not, why not? Because it's not best practice? Nonsense. The answer with these things is: it depends, and if your app has not that many users, you can get away with it, especially if it's a B2B or internal app.

It's also too US centric. The idea of scalability applies less to most other countries.

Angostura•13m ago
'Continuous Integration' in case anyone is wondering. Not spelled out anywhere in the article.
lukaslalinsky•12m ago
Any universal build system is complex. You can either make the system simple and delegate the complexity to the user, like the early tools, e.g. buildbot. Or you can hide the complexity to the best of your ability, like GitHub actions. Or you expose all the complexity, like jenkins. I'm personally happy for the complexity being hidden and can deal with a few leaky abstractions if I need something non standard.