frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

What were the first animals? The fierce sponge–jelly battle that just won't end

https://www.nature.com/articles/d41586-026-00238-z
1•beardyw•1m ago•0 comments

Sidestepping Evaluation Awareness and Anticipating Misalignment

https://alignment.openai.com/prod-evals/
1•taubek•1m ago•0 comments

OldMapsOnline

https://www.oldmapsonline.org/en
1•surprisetalk•3m ago•0 comments

What It's Like to Be a Worm

https://www.asimov.press/p/sentience
1•surprisetalk•3m ago•0 comments

Don't go to physics grad school and other cautionary tales

https://scottlocklin.wordpress.com/2025/12/19/dont-go-to-physics-grad-school-and-other-cautionary...
1•surprisetalk•3m ago•0 comments

Lawyer sets new standard for abuse of AI; judge tosses case

https://arstechnica.com/tech-policy/2026/02/randomly-quoting-ray-bradbury-did-not-save-lawyer-fro...
1•pseudolus•4m ago•0 comments

AI anxiety batters software execs, costing them combined $62B: report

https://nypost.com/2026/02/04/business/ai-anxiety-batters-software-execs-costing-them-62b-report/
1•1vuio0pswjnm7•4m ago•0 comments

Bogus Pipeline

https://en.wikipedia.org/wiki/Bogus_pipeline
1•doener•5m ago•0 comments

Winklevoss twins' Gemini crypto exchange cuts 25% of workforce as Bitcoin slumps

https://nypost.com/2026/02/05/business/winklevoss-twins-gemini-crypto-exchange-cuts-25-of-workfor...
1•1vuio0pswjnm7•6m ago•0 comments

How AI Is Reshaping Human Reasoning and the Rise of Cognitive Surrender

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6097646
2•obscurette•6m ago•0 comments

Cycling in France

https://www.sheldonbrown.com/org/france-sheldon.html
1•jackhalford•8m ago•0 comments

Ask HN: What breaks in cross-border healthcare coordination?

1•abhay1633•8m ago•0 comments

Show HN: Simple – a bytecode VM and language stack I built with AI

https://github.com/JJLDonley/Simple
1•tangjiehao•10m ago•0 comments

Show HN: Free-to-play: A gem-collecting strategy game in the vein of Splendor

https://caratria.com/
1•jonrosner•11m ago•1 comments

My Eighth Year as a Bootstrapped Founde

https://mtlynch.io/bootstrapped-founder-year-8/
1•mtlynch•12m ago•0 comments

Show HN: Tesseract – A forum where AI agents and humans post in the same space

https://tesseract-thread.vercel.app/
1•agliolioyyami•12m ago•0 comments

Show HN: Vibe Colors – Instantly visualize color palettes on UI layouts

https://vibecolors.life/
1•tusharnaik•13m ago•0 comments

OpenAI is Broke ... and so is everyone else [video][10M]

https://www.youtube.com/watch?v=Y3N9qlPZBc0
2•Bender•14m ago•0 comments

We interfaced single-threaded C++ with multi-threaded Rust

https://antithesis.com/blog/2026/rust_cpp/
1•lukastyrychtr•15m ago•0 comments

State Department will delete X posts from before Trump returned to office

https://text.npr.org/nx-s1-5704785
6•derriz•15m ago•1 comments

AI Skills Marketplace

https://skly.ai
1•briannezhad•15m ago•1 comments

Show HN: A fast TUI for managing Azure Key Vault secrets written in Rust

https://github.com/jkoessle/akv-tui-rs
1•jkoessle•15m ago•0 comments

eInk UI Components in CSS

https://eink-components.dev/
1•edent•16m ago•0 comments

Discuss – Do AI agents deserve all the hype they are getting?

2•MicroWagie•19m ago•0 comments

ChatGPT is changing how we ask stupid questions

https://www.washingtonpost.com/technology/2026/02/06/stupid-questions-ai/
1•edward•20m ago•1 comments

Zig Package Manager Enhancements

https://ziglang.org/devlog/2026/#2026-02-06
3•jackhalford•21m ago•1 comments

Neutron Scans Reveal Hidden Water in Martian Meteorite

https://www.universetoday.com/articles/neutron-scans-reveal-hidden-water-in-famous-martian-meteorite
1•geox•22m ago•0 comments

Deepfaking Orson Welles's Mangled Masterpiece

https://www.newyorker.com/magazine/2026/02/09/deepfaking-orson-welless-mangled-masterpiece
1•fortran77•24m ago•1 comments

France's homegrown open source online office suite

https://github.com/suitenumerique
3•nar001•26m ago•2 comments

SpaceX Delays Mars Plans to Focus on Moon

https://www.wsj.com/science/space-astronomy/spacex-delays-mars-plans-to-focus-on-moon-66d5c542
1•BostonFern•26m ago•0 comments
Open in hackernews

Dgsh – Directed graph shell

https://www2.dmst.aueb.gr/dds/sw/dgsh/
161•pabs3•4mo ago

Comments

uncletaco•4mo ago
Hello. In English this makes me think of the phrase “dog shit”. Not sure if that’s intentional or not.
pentaphobe•4mo ago
Second English speaker here who didn't make that connection at all
nasretdinov•4mo ago
English is my third language and I can confirm I didn't even think about this
rirze•4mo ago
Same english is my fourth language and it didn't even appear to me
DSpinellis•4mo ago
Author of dgsh here. This is definitely not what I had in mind.
DonHopkins•4mo ago
Yeah, and the Slack logo designers claim they didn't have penises or swastikas on their mind, but here we are.

https://www.buzzfeednews.com/article/nicolenguyen/slack-new-...

lucideer•4mo ago
Another English speaker data point here & I actually read dogshit before I read dgsh.
DonHopkins•4mo ago
That's what I think when I hear "bash".
kbr2000•4mo ago
batshit?
dotnetcarpenter•4mo ago
That's literally the word for shit in Norwegian: bæsj https://upload.wikimedia.org/wikipedia/commons/6/69/Nb-b%C3%...
cestith•4mo ago
The word “dash” is a word for shit in English (as in dashboard - literally the board on a buggy or wagon to deflect the horse droppings). That doesn’t keep a shell from being named that. Of course, dash also means to move quickly so it’s not the only meaning. Moving quickly seems to be the inspiration for the shell’s name.
nasretdinov•4mo ago
Well, bash as a shell is ok. Writing complex scripts on the other hand...
goldenCeasar•4mo ago
Now I can't unconnect this, I hope OP was aware because now he wont forget too.
em-bee•4mo ago
and no matter how much i try, i can't make the connection. best i can come up with is dogshell, and even that is a stretch. phew...
AdieuToLogic•4mo ago
> In English this makes me think of the phrase “dog shit”.

In English, this makes me think of the phrase "dig shell". I guess we just have different things on our minds...

:-p

DonHopkins•4mo ago
Or shoes.
SoftTalker•4mo ago
First thing I thought of also.
jimbokun•4mo ago
This is very interesting, but I'm wondering how it compares to just using a dynamic language like Python or Ruby for the same tasks. Curious how the line count to express the same tasks would come out.
PaulHoule•4mo ago
There is a lot of stuff for Python which follows the "express computation as a dag" approach, especially Apache Airflow

https://airflow.apache.org/

DSpinellis•4mo ago
Apache Airflow solves a very different problem. Its DAGs are static dependencies between sequentially executed processing steps, whereas the DAGs of dgsh express live direct data flows.
PaulHoule•4mo ago
Yeah, there are also the boxes and lines tools like

https://www.knime.com/

which have their own subculture. You could solve the same problems they do with pandas and scikit-learn but people who use those tools would never use pandas and scikit-learn and vice versa.

Circa 2015 I was thinking those tools all had the architectural flaw that they pass relational rows over the lines as opposed to JSON objects (or equivalent) which means you had to realize joins as highly complex graphs where things that seem like local concerns to me require a global structure and where what seems like a little change to management changes the whole graph in a big way.

I found the people who were buying up that sort of tools didn’t give a damn because they thought customers demanded the speed of columnar execution which our way couldn’t deliver.

I made a prototype that gave the right answers every time and then went to work for a place which had some luck selling their own version that didn’t always give the right answers because: they didn’t know what algebra it supported, didn’t believe something like that had an algebra, and didn’t properly tear the pipeline down at the end.

jpitz•4mo ago
Do you mean to say that two non-dependant tasks in an Airflow DAG aren't able to concurrently execute? Thats not my experience. I'm also confused by the use of 'static' in this context.
DSpinellis•4mo ago
That's the point: non-dependant tasks can run concurrently in Airflow. In sh/BAsh/dgsh dependant tasks can also run concurrently, as in tar cf - . | xz.
jpitz•4mo ago
Ok. thank you!
croemer•4mo ago
I was curious but the docs are a nightmare. I clicked through a couple of pages and couldn't see a single simple non-trivial example.
sunshine-o•4mo ago
I respect Python but the upgrade to Python 3 showed that data processing workloads that can be handled by standard Unix tooling should stay there.

The upgrade was a nightmare for so many organizations. It shouldn't be that way but it was.

procaryote•4mo ago
spawning shell commands and the equivalent of piping is surprisingly hard in python. It's almost easier to do in C

There are probably libraries that could help, but then you need to install dependencies which is sad in python for other reasons

croemer•4mo ago
We use snakemake a lot in bioinformatics to take advantage of parallelism in workflows while staying close to Python: https://github.com/snakemake/snakemake

Others use nextflow but that requires learning Groovy and it's less intuitive.

everforward•4mo ago
From a glance, it looks like very similar tradeoffs vs bash. Much harder to read in a medium-large application, but much more ergonomic IO and process control.

I.e. much faster to use dgsh for a basic processing DAG, much more painful to use dgsh for a large ETL pipeline.

Python with something like Prefect isn't something you'd use a REPL to bang out a one-off on, but it'd be more maintainable. dgsh would let you use a REPL to bang out a quick and dirty DAG.

DSpinellis•4mo ago
I've found creating pipelines with Python to be messy and intuitive. Other than creating a DSL to express them I can't see how DAGs can be expressed naturally with Python's syntax.

Even creating tools in Python that can be connected together in a Unix shell pipeline isn't trivial. By default if a downstream program stops processing Python's output you get an unsightly broken pipe exception, so you need to execute signal.signal(signal.SIGPIPE, signal.SIG_DFL) to avoid this.

esafak•4mo ago
This would have been great 10-20 years ago, or even at the coining of Unix pipes. By today's standards, however, the syntax feels clunky and dated. I'd like to see contemporary shells like nushell and elvish copy these ideas, with attribution of course, in a more modern way. That is the best way I can see to honor this stagnant project: https://github.com/dspinellis/dgsh
hnlmorg•4mo ago
Murex has had this capability for years. (https://github.com/lmorg/murex)

I’m on my phone at the moment and cooking so cannot type any examples, but if I get time, I’ll throw together some comparisons later tonight

esafak•4mo ago
I could not find any mention of DAGs or directed acyclic graphs in the documentation.
hnlmorg•4mo ago
Yeah it’s not technically DAG since it uses iteration, but then dgsh will use iteration under the hood too.

However Murex does support CSP-style concurrency. So while there’s no syntax sugar for writing graphs, you can very easily create adhoc pipes and pass them around instead of using stdout / stderr.

So it wouldn’t actually take much to refine that with some DAG-friendly syntax.

In fact maybe that can be my next project…

DSpinellis•4mo ago
I'm curious: what do you mean by "dgsh will use iteration under the hood too"? Dgsh does several things under the hood, but I wouldn't characterize any of them as iteration.
hnlmorg•4mo ago
Yes you’re right. My apologies. I was glancing at the examples while cooking, specifically the git example (https://www2.dmst.aueb.gr/dds/sw/dgsh/#commit-stats) thinking that it was iterating over the lines output from git, but clearly that’s not even how bash would work. That will teach me for commenting without giving something my full attention first doh!

Looking properly at this, I can see no iteration is needed. Which actually makes the Murex implementation even easier because Murex already has tee pipes just like dgsh. It’s just not (yet) particularly well documented.

DSpinellis•4mo ago
Admiring your multi-tasking!
hnlmorg•4mo ago
Haha thank you but it’s really not that good otherwise I’d have grokked the iteration thing before making a fool out of myself!
em-bee•4mo ago
would you be able to share or point to some examples? i am curious.
hnlmorg•4mo ago
Sorry, it’s been a very busy couple of days so not had 5 minutes to test anything.

Stay tuned though, What I’m going to do is write a blog post about it. It’s an interesting enough topic to deserve one

em-bee•4mo ago
awesome. i am looking forward to that. that blog on the murex website could use some attention anyways :-)
zokier•4mo ago
Well, the project started 12 years ago (as sgsh), so that fits into your 10-20 years ago window :)
DSpinellis•4mo ago
I went through two iterations before adopting the current syntax. Truth is neither me nor Doug McIlroy, the inventor of Unix pipes, who kindly and generously provided feedback during dgsh's development, had something better to propose.

What syntax would you propose?

esafak•4mo ago
Greetings, Diomidis.

I would suggest a familiar notation like "[a, b] -> c" in a dedicated dag block:

  dag text_stats {
    tee -> [ split_words, count_chars ]

    # word-based frequencies
    split_words -> tee_words
    tee_words -> ngram2 -> save_digram
    tee_words -> ngram3 -> save_trigram
    tee_words -> ranked_frequency -> save_words

    # character-based frequencies
    count_chars -> add_percentage
    chars_to_lines -> ranked_frequency -> add_percentage -> save_chars
  }

  run text_stats < input.txt
https://www2.dmst.aueb.gr/dds/sw/dgsh/#text-properties

or

  dag commit_graph {
    git_log -> filter_recent -> sort -n -> [ uniq_committers, sort_by_email ]

    uniq_committers -> [ last_commit, first_commit, committer_positions ]
    [ last_commit, first_commit ] -> cat -> tr '\n' ' ' -> days_between

    [ committer_positions, sort_by_email ] -> join_by_email -> sort -k2n -> [ make_bitmap_header, plot_per_day ]

    [ uniq_committers, days_between ] -> emit_dims -> plot_per_day

    make_bitmap_header -> cat
    plot_per_day -> morphconv -> [ to_png_large, to_png_small ]
  }

  run commit_graph
https://www2.dmst.aueb.gr/dds/sw/dgsh/#committer-plot

The translations above are computer-assisted and may contain mistakes, but you get the idea.

DSpinellis•4mo ago
Thank you for the suggestion. This would mean that you'd also then create some mapping from each name (like git_log) to its implementation, right?
esafak•4mo ago
Yes, using shell functions:

  git_log() {
    git log --pretty=tformat:'%at %ae'
  }
Separating function definitions allows you to run, test, and re-use them.
DSpinellis•4mo ago
And, more importantly, assign a name to a process, so that it can appear multiple times in the graph.
UltraSane•4mo ago
You might want to try looking at the Neo4j query language Cypher for some possible inspiration for the syntax.
shanemhansen•4mo ago
The closeness of this syntax to graphviz dot is very interesting.

having dgsh output a graphvis file in dry-run mode would be a neat feature.

o11c•4mo ago
Frankly, I find that anything more than some preparatory `exec {my_fd}< <(commands ...)` is an unmaintainable mess, so bash is plenty for any program that should be implemented in bash.
DSpinellis•4mo ago
Manually playing around with fds is definitely unmaintainable. My hope is that a clean syntax can help create maintainable complex pipelines.
politician•4mo ago
A solution to the One Billion Row Challenge (1brc.dev) written in dgsh would be a interesting as a benchmark.
DSpinellis•4mo ago
Nice benchmark! This is a (not at all efficient) awk one-liner.

awk -F\; ' $2 > max[$1] { max[$1] = $2 } !($1 in min) || $2 < min[$1] { min[$1] = $2 } { sum[$1] += $2; count[$1]++} END { for (n in sum) printf("%s=%.1f/%.1f/%.1f, ", n, min[n], sum[n] / count[n], max[n])}'

Can't see how dgsh could be applied to it.

dang•4mo ago
Related. Others?

Dgsh – Directed Graph Shell - https://news.ycombinator.com/item?id=21700014 - Dec 2019 (11 comments)

Dgsh – Directed graph shell - https://news.ycombinator.com/item?id=13352659 - Jan 2017 (51 comments)

byearthithatius•4mo ago
Interesting. What are the benefits of thinking of data pipelines in terms of a DAG? Why cant it be cyclical with exit conditions?
DSpinellis•4mo ago
A nicer syntax and a lower probability of deadlocks.
UltraSane•4mo ago
As someone who loves graphs and Neo4j I wish I had though of this.
willjp•4mo ago
This is the nerdiest thing I've ever seen, and I absolutely adore it.
gigatexal•4mo ago
Same! As a data engineer I have long wished we could get away from airflow and move back to Unix pipelines. This is really cool.
reddit_clone•4mo ago
Does the build work on Mac OSX?