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

GitHub isn’t even good, it’s just the mediocre default everybody uses. PRs were fantastic and the best thing ever - 15 years ago!

100% don't understand why people think github actions are terrible.

everything else is trash.

Github Actions changed the landscape.

They're composable.

The only two other things that come close is Concourse.CI and CircleCi.... and circle-ci is 100% trash


Github Actions is a cobbled together mess. It is mainly based on Azure DevOps Pipelines and still has some glaring bugs and wildly inefficient parts.

If it works for you, great. But it is far from being good.


We use Gitlab for CI/CD and tbh it is amazing. Simple, predictable, debuggable.

This whole thread is various people saying "[This] is trash, [that] is awesome", with the next person claiming the opposite. I suspect most people with strong negative opinions here know enough to have felt the pain, and not enough to be able to properly reason about the system.

I've worked with Github Actions, Gitlab-CI and CircleCI in the last 10 years, and they've all been such an improvement over Jenkins, or god forbid, CVS with manual deployments, that I'm generally just counting my blessings.

For me the pain only came when not adhering to KISS. All the mentioned VCS are pretty much feature complete and only really differ on meta-topics (cost, license, lock-in) or niche topics (Actions marketplace, matrix builds, SSH on Runners). I've not yet run into an issue that would have actually blocked me, because there's always sh to fall back to in case of a bug or missing feature.


Versioning sucks (the references are mutable), debugging sucks, you cant run them locally.

Pin the action's version via a digest and use Renovate for updates.

You can run all your CI locally if you don't embed your logic into the workflows, just use CI for orchestation. Use an env manager(Mise, Nix etc) to install tooling(you'll get consistency across your team & with CI) and call out to a task runner(scripts, Make, Task etc).


> You can run all your CI locally

if you can, you don't need CI. we can't (too slow, needs an audit trail)


I think the idea is GitHub actions calls "build.sh", or "deploy.sh" etc. Those scripts contain all of the logic necessary to build or deploy or whatever. You can run those scripts locally for testing / development, or from CI for prod / auditing.

oh that makes sense. I thought the OP was suggesting running CI locally instead of a workflow on remote runners

Yes this is what I meant! If you structure it correctly using task runners and an environment manager you can do everything locally using the same versions etc. E.g.

```yaml name: Continuous Integration (CI)

on: pull_request

permissions: contents: read

jobs: formatting: name: Formatting runs-on: ${{ matrix.architecture }} strategy: matrix: architecture: [ubuntu-24.04, ubuntu-24.04-arm] language: [rust, shell, python] steps: - name: Checkout code. uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Setup Nix. uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0 - name: Check formatting. run: nix develop -c make check-${{ matrix.language }}-formatting

  linting:
    name: Linting
    runs-on: ${{ matrix.architecture }}
    strategy:
      matrix:
        architecture: [ubuntu-24.04, ubuntu-24.04-arm]
        language: [rust]
    steps:
      - name: Checkout code.
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
      - name: Setup Nix.
        uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
      - name: Check linting.
        run: nix develop -c make check-${{ matrix.language }}-linting

  compile:
    name: Compile
    runs-on: ${{ matrix.architecture }}
    strategy:
      matrix:
        architecture: [ubuntu-24.04, ubuntu-24.04-arm]
    steps:
      - name: Checkout code.
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
      - name: Setup Nix.
        uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
      - name: Compile.
        run: nix develop -c make compile

  unit-test:
    name: Unit Test
    runs-on: ${{ matrix.architecture }}
    strategy:
      matrix:
        architecture: [ubuntu-24.04, ubuntu-24.04-arm]
    steps:
      - name: Checkout code.
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
      - name: Setup Nix.
        uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
      - name: Unit test.
        run: nix develop -c make unit-test
... ```

I think I agree with you that:

- everything else is trash.

- Github Actions changed the landscape.

- They're composable.

And I still hate github actions! Aside from anything else, they have one major flaw, which is there is no good development/test loop for writing them.

If you write most of your CICD in some kind of script, then you can run it locally, and do some basic checks around environment etc before deploying.

If you write most of your CICD in github actions or any alternative, you will be doomed to push 100 commits with messages like "maybe be?", "hmmm. . ." before eventually squashing them all down when it turns out several hours later that you mispelt an environment variable.


top tip: make a repo in your org for pushing all these nonsense changes to, test out your workflows with a dummy package being published to the repo, work out all the weird edge cases/underdocumented features of Actions

once you're done, make the actual changes in your real repo. I call the test repo 'pincushion'


We call ours "bombing-range"

We maintain an internal service that hosts two endpoints; /random-cat-picture (random >512KB image + UUID + text timestamp to evade caching) and /api/v1/generic.json which allows developers and platform folks to test out new ideas from commit to deploy behind a load balancer in an end-to-end fashion, it has saved countless headaches over the years.


a display of great wisdom, nice

Thumbs up on Concourse CI: I like seeing all my builds at once on any easy-to-read dashboard. That’s why we switched from GitHub actions: the dashboard.

GitHub Actions are amazing ! For a public repository who will give you a free machine to run for 6 hours at a stretch for a job !!

This thread is largely commentary on the technical aspects of GitHub Actions.

The fact the business gives away free compute is irrelevant and more a discussion of their marketing budget.


Without trying to sound snarky: What is the fancy alternative you are suggesting to pull requests?

Something like Gerrit. Instead of carefully crafting a logical series of patches that are all well documented with commit messages, PRs are just garbage filled diff soup of "fix typo" commits. I hate it. It's hard to review and seems to be based on putting the least amount of effort into proposing changes to the code. See https://gist.github.com/thoughtpolice/9c45287550a56b2047c631...

That's down to culture and (self) discipline, not tools.

It's not entirely, because Github simply does not support inter-version diffs when you have multiple commits. If you force push onto multiple commits there is no way to show a diff between version 2 and version 3 of those commits. How Github lacks such basic (and imo necessary) functionality in 2025 is amazing to me.

Something like linked and dependent PRs in a chain would go someway to replicating Gerrit but again this basic functionality is not available out of the box for whatever reason.


Well but this is controllable, i.e. it is people who choose to do this not the platform. Very much an internal design choice.

Just curious - what do you think the current best git platforms are?

What ever happened to Hudson/Jenkins? That was the full featured CI/CD solution before github actions.

I'm not at all a fan of GitHub actions, but come on, Hudson/Jenkins was a nightmare world, GitHub actions is a million times better

Jenkins is in every way a “Java” program, and not the good kind.

What you can say for it, is that it was free and near infinitely hackable.


I use Jenkins every single day, and have been using it my entire career through three different companies self hosting it.

Please tell me how we somehow have been hobbled despite having simple and clear pipelines setup that autobuild any branch we want and allow one click deploys to our preprod environment and automatically manage versioning and scalably handle load from "Literally zero" to "Everyone in the company wants to rebuild everything now" and goes down less than github.

What are we supposedly missing?

More importantly, what are we missing that tangibly improves results for our consumers?


Assuming all those three were post-Jenkinsfile, it’s pretty decent.

Multibranch is still weird and obviously added-on.

Writing plugins is ugly.


Working with Jenkins CasC, JobDSL and declarative pipelines, I'm not sure where the million times comes from. Sure, there are some annoying parts, and GHA has the social network for reusable actions, but apart from that it's not that different.

Oldschool maven type jobs where you type shell script into a `<textarea>`? Yeah, let's not talk about those, but we don't have a single one left anymore.


Jenkins Groovy is awful and full of footguns. Have you ever run into a serialization exception?

It's too powerful and there are too many of its implementation details exposed to the user.


I haven't seen a serialization exception, but I have run into plenty of footguns with YAML (ref GitHub Actions).

The DSL semantics can be weird with when things like params/env expansions in options block are evaluated.


That also is/was awful. But it's just another platform like GHA, and the solution to this kind of thing is always the same, should not be surprising, and is boring in the good way. Write automation so that it's not tightly coupled to the platform on the backend. If you can't migrate between platforms then you're eventually going to be unhappy.

If someone is forcing you towards high stakes tight-coupling with no thought whatsoever towards the lock-in, you should get it in writing that "we at ${org} are fully committed to ${vendor} with ${platform}, on ${cloud} using ${tech} come what may, now and forever" and lots of sign off so that everyone knows who to blame when this is inevitably wrong.


Azure DevOps is the gold standard for Pipelines.

That's not saying much, since it's still dependent upon the untyped mess that is YAML.

YAML is just a data format. Make your own "thing" that takes input in any format you desire, then dump it to YAML. (also, YAML is dynamically typed, and supports explicit typing, but the parser can choose to ignore it)

these days we generate yaml out of cue

i don't know why it's not more popular.


Really?

I grant you pipelines are the best bit about ado, but the fact that you can’t test them is a pain.

And the webhooks and templating are pretty messy and unpleasant quickly.

We’re changing from ADO to GitHub (had to be an MS product for corporate) and the infra people are looking forward to GHA as they prefer their maintenance to ADO pipelines.


AD is just sourcesafe/tfs/vsts with rebranding, each time trying to get rid of the bad reputation in developer circles.

if only they supported ed25519 ssh keys


It’s very simple. In the US your pharmacy has a contract with the drug supplier that prevents the pharmacist from telling you that you could buy the drug without insurance for $10 while he charges you the $20 copay. As long as this is legal and your pharmacist’s duty isn’t to you the patient, don’t waste time worrying about the details.


This has been illegal since 2018. I think you'll find that pharmacies have a book to show you every price if you ask.

See S. 2554, the "Patient Right to Know Drug Prices Act"


I am grateful to every pharmacist / pharmacist assistent who's sotto voce ignored that immoral "rule".

On the flip side, before I transferred my prescriptions to my (excellent) locally-owned small pharmacy, I checked that these are drugs on which the respective Pharmacy Benefits Manager allows them to make a profit rather than a loss. That reminds me that I'll need to repeat that conversation when our insurance changes in January.


Anywhere where the correct Java version is installed correctly, important caveat


You can just supply a minimized runtime for your program, which is the primary way to ship Java programs for quite some time now.


Are you a Java dev by any chance?


I'm a dev. I don't know, I'm using a bunch of different languages, Java being one of them and I find it a very good fit for typical backend requirements.


Java’s cardinal sin was not owning the OS like Microsoft’s C# to force end-users to update the framework. Oracle really didn’t understand what they were sitting on with their Ubuntu competitor Solaris.


This has no longer been the case for C# for 10 years since the release of .NET Core and (now) .NET. The runtime is no longer bundled with the OS.

This is only true for older .NET Framework applications.


Isn’t it post installation still updated via Windows Update as they said (force end-users to update the framework)?


Only patches, it doesn't automatically install new major versions


Sanctions work, but not in the way that is the common public perception. The expectation isn’t that Russia or whoever falls apart a few weeks after we lock them out of Visa payment rails or whatever. The reality is that the sanctions stifle economic growth and that effect is compounding. Even if sanctions only reduce growth by 1 percentage point, after ~19 years your economy is already 20% smaller than it would be without sanctions and that is measurable. From a national security perspective, it makes Russia a lot less concerning if their industrial output is 20% less. Now imagine trying to start a software business in Iran, the stifling effect is way higher than a measly percentage point. Note that I’m not making a moral judgement, I’m simply sharing my understanding of sanctions.


> Now imagine trying to start a software business in Iran, the stifling effect is way higher than a measly percentage point.

Depriving Iranians of legal access to Western tools opens the market to locals. I suspect that the market is big enough to build a business.

It'difficult to assess gdp impact in this particular area. It's not really dependent on blockable imports.


> From a national security perspective, it makes Russia a lot less concerning if their industrial output is 20% less

Russian military industrial output has significantly increased and more importantly they demonstrated the ability to scale it up very quickly. The economy has grown during the war - the effects of the sanctions may become painful in the long term only if they will stay for decades, which is unlikely.


The US constitution is outdated and vulnerable. Modern constitutions like Germany’s basic law are a lot more resilient. We are watching the US constitution fail right now, it didn’t even take smart men to start dismantling it. I hope I’ll be proven wrong, but what indications do you see right now that the US constitution is performing as intended?


I’m unfamiliar with German basic law, but considering the lawlessness we’re seeing play out in the US right now, I’m curious how/why modern constitutions are less vulnerable?

By this I mean: it’s not as if the things we see playing out are lawful. Is there a structural difference that somehow prevents the same kind of lawlessness?

Put another way, what stops a movement that decides to ignore Germany’s constitution from ignoring it should they somehow gain power?


For starters, Germany does not give a single person the right to be king with decrees and military leadership.

Also (though not an issue with the law itself) it's really dangerous only having two parties at the helm.


> For starters, Germany does not give a single person the right to be king with decrees and military leadership.

Separation between civilian leaders and military leaders is a big one, yeah. When the same person controls both the military directly and the executive branch of the civilian government directly you don't have any way to punish him without his subordinates overthrowing him since he controls all the power.


Constitution is just a social contract, it’s not a law of physics. Without people wanting to preserve it, it’s just words on a piece of paper with no real power. With a majority in the Supreme Court, the Constitution can be interpreted however one wants.


1. When Trump lost to Biden, many Republicans including Mike Pence certified Biden's win as prescribed by the constitution.

2. Trump knows the military will not participate in a coup.

3. Trump will not run for a third term. If he does, he will loose because Americans knows it's unconstitutional.

So Americans know that all the dirty laundry will come out when the next president takes office.


1. There's barely any normal republicans left, its all MAGA now that would hang Pence like they wanted to in 2021.

2. Likely true, but they don't really need the military as ICE which now employs all the armed racists they need, like Jan 6 people.

3. He's floating the idea, even talking about not having elections if they're in a war like Ukraine, even though its not in the constitution. Either way they're going all in on rigging elections so Vance will take over.


Which foreign country is going to invade one third of USA ?

(Never mind, Trump never cared about little details like these...)


The problem is norms are being destroyed.

It’s not all new with Trump (governing by executive order, ignoring duly enacted laws, strong arming media companies, etc.). But while earlier administrations might have done those things on the margins, Trump takes them to 11 (in the spirit of the new Spinal Tap) and makes them the central and primary means of administration.

With the norms destroyed, we potentially lose our nation of laws, and become a plutocracy with different juntas every few years.


What is the logic or science behind that claim? I’ve fast charged my iPhone 16 pro (heavy user) daily if not more often for a year using Apple chargers with the charge limit set to 80%. Remaining battery capacity is still 100%, which is something I’ve never had after a whole year. Fast charge doesn’t seem to hurt.


My guess is that, from the factory, Apple's firmware doesn't actually charge the battery all the way up to its 4.2V "full" threshold. It's probably stopping at 4.12 Volts, or something like that. Then, that threshold will slowly rise over the years in order to keep perceived battery life consistent. Eventually, after several hundred (or maybe a couple thousand) cycles, the threshold stops rising at around 4.2 Volts, and that's when you'll start to see the "battery health" number start to decline.

While I'm not an Apple engineer, I am an embedded systems engineer. I promise you, this kind of trickery is commonplace in consumer electronics. It's also far more common in expensive stuff (phones, laptops) than in cheap stuff (power banks, vapes). Cheap stuff could do this, it's not hard, but the people making those devices don't get paid enough to care.

Point being: A lithium ion battery's capacity is reduced every time you charge it - sometimes by only a couple mAh, but still. This is intrinsic to the chemistry. Your phone is doing things behind the scenes to mitigate that wear, but wear still happens. If you intend to keep your phone beyond its designed 2-3 year lifespan, it behooves you to keep charging current down.


> Fast charge doesn’t seem to hurt.

For me a year is nothing though, my phone is on its 4th year, my daughter has my old iphone X.


Yes but if after 1 year I’m at 100% battery health then isn’t it reasonable to assume that what I’m doing isn’t significantly harming my battery and I can continue like this for several more years? On previous iPhones where I didn’t use the 80% charge limit battery health dropped mostly linearly over the 3-5 years that I had the phone.


The logic is that is causes the battery to get hotter.


The issue that needs fixing with the H1 program isn’t FAANG, it’s Infosys etc.


They have AI features in Slack but they just aren’t that useful. The RAG search is the most useful one, but it falls short of solutions like Dust or Glean because it only covers a single silo (Slack). AI search is way more useful when it searches across Notion, Linear, Slack, etc so you’ll buy that instead of the Slack AI addon.


Oh, they know, that's why they have banned all other AI from interacting with Slack.


The API changes are scummy, I agree. It’ll generate some ARR short term but ultimately people will be looking elsewhere, new companies will start on alternatives and others switch when the opportunity arises. It’s also not like Slack is a beloved product.


Just how software engineers are in the hacker news thought bubble you have the VC and CEO thought bubble. It roughly goes like this: Someone has some productivity or whatever problem and RTOs. That costs money, they lose people, so they can’t later admit it was a wash or a net negative. So they go on Twitter or LinkedIn and trumpet how great their hardcore 996 RTO is going. Now others see this and fomo kicks in. They start their own RTO which they are then again highly incentivized to report as successful. Rinse and repeat.


It doesn’t always have to be status. Apple is very good at withholding features from low end models to ensure everyone has that one thing they want that makes them go for the pro variant.


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

Search: