HN user

DSpinellis

443 karma

See my home page at http://www.spinellis.gr

Posts46
Comments52
View on HN
www.spinellis.gr 7d ago

Barings, Boeing, and Bots: The Promises and Perils of Delegation

DSpinellis
2pts0
www.spinellis.gr 14d ago

Why agentic AI needs better experts

DSpinellis
3pts0
www.spinellis.gr 2mo ago

Why reviewing AI-generated code is devilishly hard

DSpinellis
3pts2
www.spinellis.gr 4mo ago

Vibe coding toward the incident horizon

DSpinellis
3pts1
www.spinellis.gr 7mo ago

An initial analysis of the discovered Unix V4 tape

DSpinellis
98pts4
www.spinellis.gr 9mo ago

Choosing Email over Messaging

DSpinellis
1pts1
researchintegrityjournal.biomedcentral.com 1y ago

False authorship: An AI-generated article was published under my name

DSpinellis
2pts0
www.computer.org 1y ago

A 50 year retrospective on the first source code control system

DSpinellis
4pts1
academic.oup.com 1y ago

Large language models reduce public knowledge sharing on online Q&A platforms

DSpinellis
5pts0
ieeexplore.ieee.org 2y ago

Nine tips for engineering data processing workflows

DSpinellis
1pts0
in.marketscreener.com 2y ago

Raspberry confirms London IPO plan

DSpinellis
2pts1
csdl-downloads.ieeecomputer.org 2y ago

Pair programming with generative AI: The good, the bad, and avoiding the ugly

DSpinellis
1pts1
dl.acm.org 2y ago

How the C preprocessor solves the Halting Problem

DSpinellis
8pts1
ieeexplore.ieee.org 2y ago

Automating an Open Online Course's Production

DSpinellis
1pts0
www.spinellis.gr 3y ago

Show HN: How I debugged and fixed Git-grep macOS UTF-8 support

DSpinellis
1pts1
www.spinellis.gr 4y ago

I found a bug in Python, Node.js, Java, javac, GCC, and pandoc

DSpinellis
5pts0
m-cacm.acm.org 5y ago

Why computing students should contribute to open source software projects

DSpinellis
3pts0
peerj.com 5y ago

A line of code will live unmodified for about 2.4 years

DSpinellis
1pts0
www.spinellis.gr 5y ago

Fast database UPDATE/DELETE operations

DSpinellis
2pts0
www.spinellis.gr 5y ago

Raspberry Pi 400 vs. ZX Spectrum

DSpinellis
9pts0
www.spinellis.gr 5y ago

Error handling under Unix and Windows: A retrospective and outlook

DSpinellis
2pts0
www.spinellis.gr 5y ago

Shell Scripting for Software Developers

DSpinellis
3pts0
github.com 6y ago

J.Bentley's DFORMAT binary data format typesetter reconstistuted after 32 years

DSpinellis
2pts0
louridas.github.io 6y ago

How many can fit in a space under social distancing rules?

DSpinellis
2pts0
www.spinellis.gr 6y ago

The titanic battle between big iron and microprocessors

DSpinellis
1pts0
github.com 6y ago

Help assemble the released GW-BASIC source code

DSpinellis
1pts1
www.spinellis.gr 6y ago

Construct a standalone COVID19 contact tracing device with a Raspberry Pi

DSpinellis
7pts0
github.com 6y ago

A low-cost, open, privacy-preserving DP-3T contact tracer on a Raspberry Pi

DSpinellis
2pts0
www.spinellis.gr 6y ago

What explains the unintuitive numbering of chip pins?

DSpinellis
38pts32
www.spinellis.gr 6y ago

What explains the unintuitive numbering of chip pins?

DSpinellis
2pts0

I convinced a software company to use a version control system (RCS on shared disk) back in 1993. To make it work we had to setup a network — Ethernet over (thin) coaxial cable at the time. This was so new to us that we didn't know we needed to use terminators on the two cable ends.

30 years ago (1995) open source offerings: mostly CVS for large projects and RCS for smaller ones. On the proprietary side, the aged SCCS was available and used, while Perforce and Microsoft Visual Source Safe were being launched.

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.

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.

Manually playing around with fds is definitely unmaintainable. My hope is that a clean syntax can help create maintainable complex pipelines.

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?

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.

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.

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?

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.

Fifty years ago Marc Rochkind wrote SCCS, the first version control system, which later inspired RCS, CVS, and Git. In the March issue of the IEEE Transactions on Software Engineering he provides a retrospective of SCCS: its innovations, its problems, and how subsequent systems improved on it.

I advocate the following rules for when to write and when not to write a shell script.

# Write a shell script:

* Heavy lifting done by powerful tool (sort, grep, curl, git, sed, find, …)

* Script will glue diverse tools

* Workflow resembles a pipeline

* Steps can be interactively developed as shell commands

* Portability

* Avoid dependency hell

* One-off job

# Avoid shell scripting:

* Difficult to see the preceding patterns

* Hot loops

* Complex arithmetic / data structures / parameters / error handling

* Mostly binary data

* Large code body (> 500 LoC)

* Need a user interface

A need for associative arrays (implemented in Bash as via hashmaps) moves the task to the second category (avoid shell scripting).

[dead] 3 years ago

The ai-cli library attaches to programs that offer interactive command-line editing and modifies their interface so you can obtain generative AI suggestions with a single keystroke.

[dead] 4 years ago

A repository with GitHub Markdown and troff-inspired extended typography hotstrings for the AutoHotkey program. Input thousands of math symbols and emojis in your editor, chat, CLI, IDE, email, browser. ∄ a,b,c,n∈ℕ∧n>2 ∋ aⁿ+bⁿ=cⁿ 2H₂O + 2e⁻ → H₂ + 2OH⁻ I +

Tue, we trace the evolution of the Unix code along the line that currently is FreeBSD over 50 years. The Linux kernel started its life decades later than Unix and it didn't (initially) share any code with the original Unix code base. Furthermore the GNU and other programs and tools required to form a GNU/Linux distribution have their own separate history, further complicating the picture. Linux's evolution, though shorter, is also interesting, but it is a very different story.

Indeed: I try to give priority to people who haven't yet been heard. But giving also some priority to those who were first incentivizes students to participate more actively and energetically. Being first to raise your hand is more difficult than tagging along the others.