frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Paras's Product

https://calendar.google.com/calendar/u/0/r/month/2025/6/1?pli=1
1•ParasPatil•1m ago•0 comments

URL Unshortener Pro – Analyze hidden redirects with server-side sandboxing

https://chromewebstore.google.com/detail/url-unshortener-pro/mibajemffcbpbailkjgliajhplhcnnho
1•Indri_Fazliji•1m ago•1 comments

SoftBank Son reportedly pitches $1T Arizona AI hub

https://www.cnbc.com/2025/06/20/softbank-son-reportedly-pitches-1-trillion-arizona-ai-hub.html
1•jonbaer•1m ago•0 comments

Show HN: Atomic – A to-do app inspired by GitHub squares and Atomic Habits

https://github.com/SwapnilChand/atomic/releases/tag/v0.1
1•dreamymoon•3m ago•0 comments

Windows ME released June 19, 2000

https://dfarq.homeip.net/windows-me-released-june-19-2000/
1•rbanffy•3m ago•0 comments

Show HN: KimTrack – A Desktop Time Tracking App for Kimai

https://www.kimai.org/fr/store/playmoweb-kimtrack.html
1•edouardouvrard•6m ago•0 comments

Using the SoftWare Hash Identifier (Swhid): A Tutorial

https://www.softwareheritage.org/2025/06/13/software-hash-identifier-swhid-tutorial/
1•ibobev•8m ago•0 comments

Show HN: SnapQL – Desktop app to query Postgres with AI (local, open source)

https://github.com/NickTikhonov/snap-ql
5•nicktikhonov•11m ago•1 comments

Paras's Product

1•ParasPatil•11m ago•0 comments

Why every developer should try Vim

https://govigilant.io/articles/every-developer-should-try-vim
1•DutchBytes•13m ago•0 comments

Why Gen Z Feels Stuck in This Economy

https://www.inc.com/phil-rosen/gen-z-job-market-economic-outlook-ai-recession-millennials/91203167
1•eligrid•14m ago•0 comments

I Deleted My Second Brain

https://www.joanwestenberg.com/p/i-deleted-my-second-brain
1•durmonski•14m ago•1 comments

Where is the social internet taking us?

https://www.bbc.co.uk/rd/articles/2025-06-social-media-change-issues-problems-report
1•notarobot123•15m ago•0 comments

A deep critique of AI2027s bad timeline models

https://www.lesswrong.com/posts/PAYfmG2aRbdb74mEp/a-deep-critique-of-ai-2027-s-bad-timeline-models
1•iNic•16m ago•0 comments

An Introduction to Virtual Consensus in Delos

https://jack-vanlightly.com/blog/2025/2/5/an-introduction-to-virtual-consensus-in-delos
1•anhldbk•18m ago•0 comments

What if you funneled Niagara Falls through a straw? [video]

https://www.youtube.com/watch?v=pfbzrrcQZjs
1•skibz•21m ago•0 comments

Show HN: Android Apps

https://github.com/Psyhackological/AAA
1•guilamu•22m ago•0 comments

Wayland Is Growing Up. and Now We Don't Have a Choice

https://fireborn.mataroa.blog/blog/i-want-to-love-linux-it-doesnt-love-me-back-post-4-wayland-is-growing-up-and-now-we-dont-have-a-choice/
2•mmoya•22m ago•0 comments

Kioxia CD9P Released for a 61.44TB PCIe Gen5 NVMe SSD Era – ServeTheHome

https://www.servethehome.com/kioxia-cd9p-released-for-a-61-44tb-pcie-gen5-nvme-ssd-era/
1•rbanffy•23m ago•0 comments

Ask HN: Is there value in a "generalized" visual tool for agent workflows?

1•chaoz_•24m ago•0 comments

Why Voice Startups Should Ditch ElevenLabs Before It Ditches Them

https://medium.com/@artavazd.yeritsyan/stop-feeding-the-beast-why-voice-ai-startups-should-ditch-elevenlabs-before-it-ditches-them-521b93362747
3•baghdasaryana•25m ago•2 comments

We made a technical debt impact analyzer in a few hours

https://tech-debt-dashboard-yasens.replit.app/
1•priyanshu_101•25m ago•1 comments

Dev snapshot: Godot 4.5 beta 1

https://godotengine.org/article/dev-snapshot-godot-4-5-beta-1/
2•__natty__•27m ago•0 comments

Tarantulas bend rules to keep running after losing two legs

https://phys.org/news/2025-06-tarantulas-legs.html
2•bookofjoe•27m ago•0 comments

False Flags and Fake MAGA

https://networkcontagion.us/reports/6-18-25-false-flags-and-fake-maga-how-foreign-and-inauthentic-networks-use-fake-speech-to-destabilize-the-right-from-within/
1•Dowwie•30m ago•0 comments

Cyberpunk Aesthetic: Why Hackers Still Love CRT Monitors

https://www.gizvault.com/archives/why-hackers-still-love-crt-monitors
2•ricecat•32m ago•0 comments

Fired by an AI? California Is Saying No to Pink Slips from Bots

https://www.inc.com/kit-eaton/fired-by-an-ai-california-is-saying-no-to-pink-slips-from-bots/91203506
2•eligrid•34m ago•0 comments

OpenAI Cofounder Warns: AI May Outsmart You–Then Break Everything

https://gazeon.site/openai-cofounder-warns-ai-may-outsmart-you-then-break-everything/
1•eligrid•35m ago•0 comments

Show HN: Fun gamified screen time app with a mascot that roasts you

https://lockedin.tech
1•cchc•37m ago•1 comments

X68000 Z Super and XVI: Japan's Retro PC Reborn

https://www.indiegogo.com/projects/x68000-z-super-xvi-japan-s-retro-pc-reborn
1•rbanffy•38m ago•0 comments
Open in hackernews

Learn Makefiles

https://makefiletutorial.com/
90•dsego•3h ago

Comments

signa11•2h ago
why single meson out ? infinitely better than most alternatives mentioned in the article.
stabbles•1h ago
A couple make flags that are useful and probably not very well known:

Output synchronization which makes `make` print stdout/stderr only once a target finishes. Otherwise it's typically interleaved and hard to follow:

    make --output-sync=recurse -j10
On busy / multi-user systems, the `-j` flag for jobs may not be best. Instead you can also limit parallelism based on load average:

    make -j10 --load-average=10
Randomizing the order in which targets are scheduled. This is useful for your CI to harden your Makefiles and see if you're missing dependencies between targets:

    make --shuffle # or --shuffle=seed/reverse
holsta•1h ago
> A couple make flags that are useful [..]

But not portable. Please don't use them outside of your own non-distributable toy projects.

stabbles•1h ago
The guide is basically about GNU Make, and the flags are obviously just for end users to invoke make.
nrclark•1h ago
Agreed if you're looking at it through the lens of portable software that you plan to distribute. Automake generates portable Makefiles for a reason.

But there's another huge category: people who are automating something that's not open-source. Maybe it stays within the walls of their company, where it's totally fine to say "build machines will always be Ubuntu" or whatever other environment their company prefers.

GNU Make has a ton of powerful features, and it makes sense to take advantage of them if you know that GNU Make will always be the one you use.

matheusmoreira•1h ago
Portability is overrated. Better to make full use of one's tools. Restricting oneself to some "portable" subset of all features is pure masochism.

GNU Make is feature rich and is itself portable. It's also free software, as in freedom. Just use it.

f1shy•1h ago
Not only overrated, but also the source of extreme complex and gigantic pieces of software, which end being a nightmare to keep updated.

Just like optimization, it has its place and time.

wahern•35m ago
People are too quick to [ab]use GNU Make features. IME, learning how to make do with portable make constructs can help discipline oneself to avoid excessive complexity, especially when it comes to macro definitions where GNU Make's Lispy looping and eval constructs are heavily overused and quickly lead to obtuse, impenetrable code. POSIX pattern substitutions are quite powerful and often produce easier to read code than the GNU equivalent. I'm not sure if computed variable names/nested variable references are well-defined in POSIX (e.g. "$($(FOO))"), but they are widely supported nonetheless, and often more readable than $(eval ...). (They can also be used for portable conditional constructs, but I'm wouldn't argue they're more readable, though I often find them so.)

Some GNU Make constructs, like pattern rules, are indispensable in all but the simplest projects, but can also be overused.

For some reason there's a strong urge to programmatically generate build rules. But like with SQL queries, going beyond the parameterization already built into the language can be counter productive. A good Makefile, like a good SQL query, should be easy to read on its face. Yes, it often means greater verbosity and even repetition, but that can be a benefit to be embraced (at least embraced more than is instinctively common).

Tor3•39m ago
And it's available everywhere. All Unix platforms had it back then, and the still existing ones (AIX is alive, at least) have it available. Which made it easy for our company to base our build system on GNU Make for everything, back in the day.
f1shy•1h ago
Not every project has to be a multi-platform, multi-os, multi-language monster. It is perfectly fine to target a specific set of architecture, os, etc. And I find insulting and silly calling it a “toy project”
deng•1h ago
I will not restrict myself to an arcane subset of Make just because you refuse to type 'gmake' instead of 'make'. Parallel execution, pattern rules, order-only prerequisites, includes, not to mention the dozens of useful function like (not)dir, (pat)subst, info... There's a reason why most POSIX Makefiles nowadays are generated. It's not GNU's fault that POSIX is stale.

EDIT: There's one exception, and that would be using Guile as an extension language, as that is often not available. However, thanks to conditionals (also not in POSIX, of course), it can be used optionally. I once sped up a Windows build by an order of magnitude by implementing certain things in Guile instead of calling shell (which is notoriously slow on Windows).

matheusmoreira•1h ago
Completely agree. POSIX is irrelevant anyway. Every single unixlike has unique features that are vastly superior to whatever legacy happens to be standardized by POSIX. Avoiding their use leads to nothing but misery.
Tor3•41m ago
Agreed. My company decided on using GNU Make on every platform we supported, which back then (last century) was a bunch of Unix variants, and Linux. That made it possible to write a simple and portable build system which could be used for everything we did, no hassle. And not difficult, because gmake was available basically everywhere, then just as now.
f1shy•1h ago
The one that I most use is -B for unconditional build all
davemp•20m ago
I’ve seen and had ‘make -j’ dos machines enough times that I consider it a bug.
matheusmoreira•1h ago
Makefiles are great but do try not to get carried away. Years ago I tried to create a pure GNU Make framework, only to realize I was effectively reinventing autoconf. That was the moment I finally understood what the GNU autotools had been made for.

Makefiles are eerily lisplike turing tarpits. GNU Make even has metaprogramming capabilities. Resisting the urge to metaprogram some unholy system inside the makefile can be difficult. The ubiquitousness of GNU Make makes it quite tempting.

stabbles•1h ago
Another thing that's interesting lately is that CMake has decided that Makefiles are unfit for projects that use C++20 modules, and ninja is the way to go. [1]

Basically it's considered too hard if not impossible to statically define the target's dependencies. This is now done dynamically with tools like `clang-scan-deps` [2]

[1] https://cmake.org/cmake/help/latest/manual/cmake-cxxmodules....

[2] https://llvm.org/devmtg/2019-04/slides/TechTalk-Lorenz-clang...

nrclark•1h ago
Modules are a disaster tbh.
dgan•1h ago
can you expand on that?
alextingle•21m ago
If you can't easily reason about dependencies, then your builds will just get more and more bloated.

People who care about build systems are a special kind of nerd. Programmers are often blissfully ignorant of what it takes to build large projects - their experience is based around building toy projects, which is so easy it doesn't really matter what you do.

In my experience, once a project has reached a certain size, you need to lay down simple rules that programmers can understand and follow, to help them from exploding the build times. Modules make that extra hard.

buserror•1h ago
Very nice article, seems to mention all the modern bits that helps making makefile so, SO much easier than in decades past...

The interesting bits are for example the -MMD flag to gcc, which outputs a .d file you can -include ${wildcard *.d} and you get free, up to date dependencies for your headers etc.

That and 'vpath' to tell it where to find the source files for % rules, and really, all the hard work is done and your 1/2 page Makefile will stay the same 'forever' and wills still work in 20 years...

kjgkjhfkjf•46m ago
Why would you use make for a C or C++ project when bazel exists?
taminka•37m ago
because i don't want to learn another C build system and i actually have useful stuff to get done
elteto•31m ago
Cross-compilation and using multiple toolchains was/is a nightmare in bazel (at least it was until a couple of years ago).

Not saying make is strictly better here but at least you can find plenty of examples and documentation on it.

llukas•43m ago
This is excellent modern replacement for part where Makefiles get messy: https://github.com/casey/just
PhilippGille•32m ago
Or:

- Task (Go): https://github.com/go-task/task

- Cake (C#): https://cakebuild.net/

- Rake (Ruby): https://github.com/ruby/rake

Or an entirely different concept: Makedown, as discussed on HN 8 months ago: https://news.ycombinator.com/item?id=41825344

Lyngbakr•28m ago
Task* is another alternative, although I admittedly only use it with simple hobby projects in C so I can't speak to whether it scales well or not.

*https://taskfile.dev/

izabera•16m ago
they do place themselves as an alternative to make, but imho they're entirely different and not at all comparable. make is centered around creating artefacts and not rebuilding what is already built. just is a command runner.
donatj•41m ago
I have been working with Makefiles for over a decade, though never with C nor C++

I knew there was a lot of weirdness and baggage but I am frankly kind of horrified to learn about these "implicit rules" that seemingly automatically activate the C compiler due to the mere presence of a rule that ends in ".c" or ".o"

smidgeon•37m ago
Implicit rules are our friends, in life as in make.
alextingle•16m ago
A serious makefile will disable all the default rules by defining the empty rule ...

.SUFFIXES:

donatj•33m ago
Generally speaking, it would be nice if the examples had simple execution examples like

    $ make foo
    Hello foo
    This ran too!
That's a contrived example, but some of these take a bit too much thought parsing the example Makefile alone to understand the execution order and rule selection.

It would just be very helpful to have clear examples of when I run this, I get this.

pards•28m ago
> Note: Makefiles must be indented using TABs and not spaces or make will fail.

Oh no. I have never worked with Makefiles but I bet that causes pain and suffering.

I've lost so many hours to missing/extraneous spaces in YAML files that my team recently agreed to get rid of YAML from our Spring Boot codebase.

bitwize•23m ago
An editor that groks Makefiles will help immensely, as it will ensure that the TAB key does the right thing. Emacs is good at this.

Of course the real solution is: just use CMake, you dweeb.

izabera•19m ago
this is literally never an issue because every editor automatically uses tabs for makefiles
globular-toast•20m ago
Make is one of those things that I'm really glad I learnt at the beginning of my career. Not because I use it much any more, but because it showed me the power of a declarative system over an imperative one.

I also realised at one point how naturally the idea extends to other tasks that I do. Going by the picture at the top of this site, it seems the author realised a similar thing to me: you can understand food recipes better if you think about them declaratively like makefiles, rather than imperatively like scripts, which is how recipes are traditionally written down.

I wrote about it here: https://blog.gpkb.org/posts/cooking-with-make/

I always scribble down recipes in a way that I can read like a Makefile and take that into the kitchen with me. I'm curious if anyone has tried typesetting or displaying recipes in this way as I feel like it would save a lot of time when reading new recipes as I wouldn't have to convert from a script to a makefile myself.

danw1979•18m ago
Make has its place as a build tool for large C codebases.

People sometimes treat it as a generic “project specific job runner”, which it’s not a good fit for. Even simple conditionals are difficult.

I’ve seen several well-intentioned attempts at wrapping Terraform with it, for example, which have ended terribly.

bsenftner•12m ago
Way back in the dark ages of 1985, I encountered a guy at the Boston University Graphics lab that was using Makefiles to drive the generation of a 3D renderer for animation. He was a Lisp guy, doing early procedural generation and 3D actor systems. His Makefile was extremely elegant, about 10 lines total. It generated hundreds of animations, all based on the simple file date dependency. He had Lisp generating the 3d form for each frame, and them Make would generate the frames. This being '85, pre pretty much everything we take for granted with 3D and animation, the guy was blowing everyone's mind. He went on to write the 3D renderer for Iron Giant, and was key in Caroline too, I seem to remember. Brian Gardner.
claytonaalves•10m ago
I work with Makefiles on Delphi/FreePascal projects.