Hacker News new | past | comments | ask | show | jobs | submit | bobbiechen's comments login

This paper is 50+ years old and yet programmers are still making the same mistake of defining modules based on a flowchart, instead of modules that hide design decisions. I think that shows the youth (and perhaps lack of foundational training) of software engineering as a field.

But also the progress of the last 50 years: the KWIC index went from “a small system [that] could be produced by a good programmer within a week or two” to a tiny system that can be written in a couple lines using the standard library of Java (as I once saw a demo of).

Also: I recently wrote a blog post related to this paper and all of the initial test readers told me they had no idea what a KWIC index was and it needed more explanation. Instant full-text search really changes things.


Coincidentally, I reread the paper last weekend, and that side remark, about how the KWIC index would take a week or two to implement got my attention. So, I took the short specification given in the paper, and wrote it down in two dozen lines within a few minutes. I wrote it up as a blogpost just yesterday: https://holzer.online/articles/2025/03-05-kwic-quickly/

With a bit of cocktail napkin math that more than a factor of 100 faster than Parnas' estimate, just for having a higher language with a reasonable standard library at your hands.

Fred Brooks wrote in his 1986 "No silver bullet" essay that "There is no single development, in either technology or management technique, which by itself promises even one order of magnitude improvement in productivity, in reliability, in simplicity.". - but the compound effects of many years of many, many gradual improvements in developer tooling are really not bad.


The paper came out in 1972 which is the same year that C was invented. I don't think the paper mentioned what programming language was used, but since it has function calls with parameters, it's a higher level language than assembly.

The full KWIC index program specification can be found in the original 1971 paper (reference [8] in the 1972 paper): https://kilthub.cmu.edu/articles/journal_contribution/On_the...

The code therein uses the specification language described in https://dl.acm.org/doi/pdf/10.1145/355602.361309 (reference [3] in the 1972 paper). From there:

"The notation is mainly ALGOL-like and requires little explanation. To distinguish references to the value of a function before calling the specified function from references to its value after the call, we enclose the old or previous value in single quotes (e.g. 'VAL'). If the value does not change, the quotes are optional. Brackets ("[" and "]") are used to indicate the scope of quantifiers. "=" is the relation "equals" and not the assignment operator as in FORTRAN."


Yeah! I liked your blog post :)

We can all be 100x programmers, if we look at a broader timespan.


I see this mistake in project planning as well: I'm asked to scope how long it will take to complete module #1, then how long it will take to complete module #2, then module #3, etc. but in reality they all end up going hand-in-hand but depend on some common work that's "invisible" to the planners.

You sort of have to go along with it if you want to estimate. The perfect plan and estimate only happens after the completion date.

There are so many unknown deps and unknown opportunities to optimise at the start of a project.

You find those out as you get in the weeds and as the ICs dream a 1am about their code and bring that idea in the next day.


... then came semantic search, and AI search, which just spits out the answer. I had not heard of KWIC either.

> defining modules based on a flowchart, instead of modules that hide design decisions

ok - "modules that hide design decisions" implies OOP. In thirty years, OOP got applied to build giant systems, some that went too far. There has been backlash against OOP for real reasons, perhaps also ignorant reasons too.

Flowchart coding is straight from "structured programming" an advance from the single line of execution ASM style that sometimes created unintuitive and needlessly-complicated execution flow. IMHO there is nothing wrong with structured programming, or actually OOP when used appropriately.


No, "modules that hide design decisions" implies modular programming. I think schools should teach modular programming before object-oriented programming. Then this confusion wouldn't arise so often. For a small modular programming language (which also supports OOP), have a look at Oberon:

https://www.miasap.se/obnc/oberon-report.html


> ok - "modules that hide design decisions" implies OOP

It doesn't. Implementation/design decision hiding also exists in procedural, functional and in other paradigms.


I didn't say "it demands OOP" I said "implies OOP" .. what you say is true also

As a hammer to be used on every single problem, OOP is unbearable. As a tool used when appropriate, OOP is delightful and I get very mad when languages think that they are above implementing it.

> "modules that hide design decisions" implies OOP.

No; it is the other way around.

OOD/OOP implies information hiding/encapsulation.


Considering the topic, I thought the PCR might be Platform Configuration Registers (it's actually polymerase chain reaction, for scientific lab machines).

I'm sympathetic - knowing something is different from putting it into practice, and sometimes other life things happen too.

I've been writing online for a few years now and for me, it comes in bursts. I recently started a new blog and publish it every two weeks - something that helped me was to write a lot when I was in the write mood, which gave me material to edit during off-weeks.


I remember reading interesting things recently about Arizona State University and the "New American University" model - https://nadia.xyz/asu is a nice summary

> If something is in memory it's under their control regardless of any magical memory encryption implementation providers claim to use.

That's not true. For example, to live-migrate Confidential VMs running on AMD SEV-SNP or Intel TDX, there is an extra step of negotiating encryption keys for live migration so that the hypervisor never sees plaintext memory pages of the guest VM. A few relevant docs:

* https://lpc.events/event/11/contributions/958/attachments/76...

* https://lpc.events/event/17/contributions/1532/attachments/1...

* https://lpc.events/event/11/contributions/960/attachments/83...

I'm not aware of any Confidential Computing platform where it is possible to snapshot/cold migrate VMs at all.


Assuming one trusts this model and there are no implementation bugs or undocumented lawful intercept API's one would be stuck with Google Cloud or Azure. I assume AWS probably also has this. Who else?

Given it's used by the big providers one has to assume there are lawful intercept API's or some other mechanism to abide by lawful orders to monitor traffic given MitM will not work. eBPF perhaps to grab keys or intercept the HSM if not API's.


You might enjoy Manifold Destiny: The One! The Only! Guide to Cooking on Your Car Engine! by Chris Maynard and Bill Scheller.

https://www.eater.com/23749614/manifold-destiny-the-one-the-...


I'm sorry to hear that.

On the topic of Steam, according to their terms of service, you buy non-transferable licenses for access, and they will argue you can't inherit the games of a deceased person: https://arstechnica.com/gaming/2024/05/after-you-die-your-st... . This follows a tradition of digital media providers asserting deep control over things that you might think you "own" : https://www.nytimes.com/2009/07/18/technology/companies/18am...

(I had a hard time fitting this thread into the blog post and eventually cut it)


At the risk of possibly sounding crass, the practical solution is to simply never tell them of the decedent's passing.

Unless the matter of concern is a legal or financial one (eg: bank accounts, pensions, insurance, etc.), quite literally nothing and nobody else requires knowledge that the account holder passed away.

Never tell Valve that your gamer dad passed away and they will be none the wiser and noone will have any problems as you "inherit" his account and its associated games. You're not trying to defraud Social Security as a 150 year old, after all (...right?).


This might work for the first generation of steam users for now, but eventually they might require some kind of verification for old Steam accounts. Also remember that Steam is providing two things - a license for the games and a service to download them. I wouldn't expect a court to agree that a relatively low one-time fee obliges Steam to provide your or your heirs a service in perpetuity.

Why take the chance for games that you can get DRM-free and transfer independently from some live service.


Yes that is a claim they have made, but unless they show up in probate court to defend that position, they will do what the judge orders them to in a default judgement.


Have you gotten a probate court to order Steam to transfer games, which they then followed?


I am still alive, so no, I have not.


Hopefully your family won't have to test it for a long time then :-)

Please don't state something as a matter-of-fact if you don't know it to be true but just merely believe it to be true. Otherwise please link to an instance where a probate court has ordered it with a successful outcome.

It seems like a novel idea and I hope someone tries it and posts about it.


I agree, chat is only useful in scenarios that are 1) poorly defined, and 2) require a back-and-forth feedback loop. And even then, there might be better UX options.

I wrote about this here: https://digitalseams.com/blog/the-ideal-ai-interface-is-prob...


This lines up with my experience loitering in the soup aisle and stopwatching the grocery checkouts: https://bobbiechen.com/blog/2022/2/17/let-them-check-you-out


Neat. Reminds me of https://www.cnbc.com/amp/2019/03/21/beau-jessup-teen-pays-co... in the opposite direction.


Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: