8 ms·
There's a lot of false premises and a lot of things that don't follow in this. > Maybe the most marvellous, utopian idea for software was Unix program design,
by madhadron 6y ago
There's a lot of false premises and a lot of things that don't follow in this.
> Maybe the most marvellous, utopian idea for software was Unix program design, in the mid-1970s. This is the idea that programs will all talk together via unstructured streams of text.
It was a great idea in the 1970's. But we had OLE and COM and CORBA and GNOME and KDE and now PowerShell where you can load .NET assemblies and pass around structured objects in the same process. We've had Cocoa which exposed Smalltalk style control of objects in applications since the 1980's.
This isn't a problem of technology. It's a problem of incentives. It's the same incentives that drive programs to try to look different from each other instead of fitting smoothly into a set of user interface guidelines. It requires a producer of software to find it beneficial to them to fit into the ecosystem around them.
> The promise of a computer is to reveal truth, through a seamless flow of information.
Seamless flow of information requires connecting the underlying semantic domains. Semantic domains rarely exactly match. Humans use enormous amounts of context and negotiation to construct language games in these situations.
> music was around forever but in the 16th century, if you made music, you made it for god, or the king.
This is empirically false. We have records of dance music, of broadside ballads that were sung in the streets, of the music people played at home. And there were lots of student drinking songs about being young and free.
I think the real solution to the author's angst is to go study the field more broadly and get out of whatever ghetto they are living in.
- natpalmer1776 6y agoYour comment was a very interesting read up until that last paragraph. Seems a bit harsh despite your many valid* points. Edit: Made typo on mobile.
- npsimons 6y agoHe's not wrong. Look further down thread, you can find people pointing out examples of domains where there is a dearth of software, and a definite need to keep writing it. All due respect to the expertise shown in articles posted on HN (it's part of the reason I keep coming back), but the Dunning-Kruger effect hits hard. As Einstein put it, "the horizon of many people is a circle with a radius of zero. They call this their point of view."
- CodeMage 6y agoThis isn't about whether @madhadron's point in that paragraph was wrong, it's about civility. The usage of "ghetto" was gratuitous.
- qayxc 6y agoI'm really sorry, but have you looked at all the pictures in the author's story? I came up with the same association and took madhadron's remark to be about those pictures, not the author. If your first reflex is to be 2nd hand offended, maybe you should relax a little and try to not to see hostility everywhere ¯\_(ツ)_/¯
- CodeMage 6y agoYes, I've looked at all the pictures in the author's story. And it never occurred to me to assume those are pictures of a ghetto the author lives in, as implied by the words "the real solution to the author's angst is to go study the field more broadly and get out of whatever ghetto they are living in" (emphasis mine). But after I read your comment, I went back to the story and did a Google image search for a few (but not all) of those pictures. And guess what? They all come from other sources. ¯\_(ツ)_/¯ It's not like I was looking for hostility. I was reading the comment and nodding along and then the hostility came out of nowhere and smacked me in the face.
- zaroth 6y agoObviously OP was speaking of a figurative coding ghetto, not their literal physical surroundings.
- npsimons 6y ago"Code ghetto" is actually a term I've heard bandied about before, usually used to denigrate an ecosystem someone doesn't like, but in this case I think it's wholly appropriate terminology[0], and I don't think the offense taken at it is justified. [0] This comes up top of Google for me: https://www.laurencegellert.com/2012/12/software-ghettos-a-form-of-technical-debt/ https://www.laurencegellert.com/2012/12/software-ghettos-a-f... I feel that "code ghetto" conveys the myopic POV of the article perfectly.
- Xevi 6y agoI assumed it was just a tongue-in-cheek joke because of all the pictures with trash in them.
- npsimons 6y ago"Code ghetto" is actually a term I've heard bandied about before, usually used to denigrate an ecosystem someone doesn't like, but in this case I think it's wholly appropriate terminology[0], and I don't think the offense taken at it is justified. [0] This comes up top of Google for me: https://www.laurencegellert.com/2012/12/software-ghettos-a-form-of-technical-debt/ https://www.laurencegellert.com/2012/12/software-ghettos-a-f... and I feel that it conveys the meaning, even if you disagree with the particular ecosystems being denigrated.
- madhadron 6y agoPerhaps it was too harsh. I could have expressed that they are projecting the problems of their local milieu too broadly more kindly.
- YeGoblynQueenne 6y ago>> This is empirically false. We have records of dance music, of broadside ballads that were sung in the streets, of the music people played at home. And there were lots of student drinking songs about being young and free. We have recordings from the 16th century? Do you mean "recordings" as in sheet music for automatic pianos or organs etc?
- doodpants 6y agoThey said "records", not "recordings". I took this to mean references in historical records.
- YeGoblynQueenne 6y agoAh, my bad. I misread the comment above. Thanks for the correction.
- cgh 6y ago> I think the real solution to the author's angst is to go study the field more broadly and get out of whatever ghetto they are living in. He has another post about VS Code where he expresses amazement about its basic refactoring ability. So yeah, fully agree.
- chpmrc 6y agoThat post is about a lot more than just "basic refactoring ability". Why are you trying to discredit the author?
- arkadiytehgraet 6y agoThat post literally expresses amazement about "basic refactoring ability". It would blow author's mind of what a proper IDE can do, if they get a chance to use it.
- yourapostasy 6y agoQuick, someone raise his blub level by showing him Lisp Machines and Genera in their heyday.
- xavierlint 6y agoCould you please share some examples of proper IDEs and what mind-blowing things they can do?
- madhadron 6y agoMaybe not mind blowing, but just a few examples from my (very normal) day: I wrote a statement in Rider that used a class that didn't exist. So I hit Alt+Enter with my cursor there, and had it create me a class. Then I hit Alt+Enter on that class and had it move it to a separate file. Then I added the base class it should inherit from, hit Alt+Enter, and had it scaffold out all the methods I need to override. About fifteen or twenty seconds with a modern IDE and didn't require any of my intellectual capacity to actually execute. I realized that another class in this multi-GB codebase had a typo in its name, and hit Shift+F6 to rename it. Typed in the correct name, and twiddled my thumb for two or three minutes while it renamed every instance in the codebase. Found a file that used a declaration style that's against our coding style. Hit Alt+Enter on one example, told Rider to configure the project to always prefer the other style and replace all examples in the file. None of those are particularly magic, but having so many of them that are completely reliable a context menu away makes an enormous difference. Also with a recent file list popup and really excellent code navigation, I find that I don't keep a file list or tabs open at all. I just jump to symbols and toggle back and forth between the last couple of files.
- hakrIconz 6y agoYa no I’ve always thought a little bit different since I was a kid. Then I got locked up for a few years and I had those years to think about the world for what it true you is. But you just got to accept it. Which is also the variable that should be set for. Everything is going to continue moving on as long as time itself lasts. So that veriable is adaptivity. Say I wanted to do as you say and build a utopia. A utopia is something that you perseve as “your” perfect world But my question I guess is. Would there be control over you in your utopia? Then why would you put it there in the first place. I mean that as control in a way how cops control the streets. Gangsters and drugs. As I said I think very differently and if you read it several times and still don’t get it:),,, but from there. I have my adaptive variable. And now comes my constant, manipulation. And persuasion. You may think but that’s wrong..... well that’s true but then again that’s how cops and lawyers stay in control. So my theory I wrote a while back is the stack theory;) I wrote it idk I named it so yeah.... It’s all about the people around you to start with. You have to trust the first group to the fullest to have your back 100% . And I know I’m getting off the path of technology. But idk if you ever were younger not knowing anything about bloods and crips and there is always that one kid that’s like . Yeah the rulers of each gang is the same guy, or best friends.. well same is true to any concept. There cannot be peace without chaos I hear sometimes.. well actually that’s a little true in stack theory. Because...to have your utopia you have to be willing to do anything to get it. In stackz theory you structure your business like your adaptive variable.. which is the goal in which your company heads. But has to be fluently. For example how a tree trimming service could sell their wood to a lumber mill. So keep that tree service . The profit. Open up a lumber mill and continue to “stack” with the same normal responsibilities or average employees. You hire as you expand. Move as one organism. Starting off with the first stack.
- d0mine 6y agotext streams are a wonderful idea in 2020 too. Exchanging opaque blobs (objects) requires a fit too fine. It is like Kalashnikov (not very precise but works everywhere) vs. some finicky contraption that is more efficient by some metric but it can only be used in a sterile environment without frustration(e.g. all software version must be just so for it to work satisfactory).
- tuatoru 6y agoOr using an electronics analogy, text is wire and objects are connectors. Sometimes all you need is to temporarily connect things together, the environment is benign, and your requirements are not demanding. But Mouser.com shows over 2 000 000 entries (over 390 000 datasheets) in "Connectors". High current, high voltage, high frequency, environmental extremes, safety requirements, ... There are all sorts of situations where crimping wires together won't do the job. Same with text. By the same token, there are all sorts of situations where text will do the job, but people are tempted to over-engineer things.
- d0mine 6y agoit is high cohesion vs. loose coupling (old concepts that are also as useful in 2020 as ever). If something is too inter-tangled, it probably should be inside the same program/system where you can guarantee a tight fit between components.
- jeff-davis 6y agoUnix uses byte streams, not text streams for stdout/stdin. It can contain embedded zero bytes, so it's not even like a C string.
- madhadron 6y agoI have to say, having started using PowerShell recently, it's better. It's frustrating because I have decades of muscle memory in ksh and bash, but that's not enough to prevent me from recognizing that the CLR for loading components into the same process space and being able to work with and pass objects in that process space in your shell is clearly the right way forward.
- devilduck 6y agoMaybe you should stop writing bad code though.
- marta_morena_28 6y ago> This is the idea that programs will all talk together via unstructured streams of text. Curious. To me this is the worst thing you could ever do. Talking via streams to say `cat file.txt | grep ERROR | wc -l` is cool. But you could do SOOO much more, if programs would actually output structured data streams. You could connect standalone applications much in the same way as Visual Scripting, where you plug inputs and outputs together and mix them with operators (think of Unreal Engine's Blueprint, just for command line tooling). It's a true shame that Linux did not develop a well defined CLI metaformat that defined exactly what parameters are there, what's their documentation, their completion, what outputs does a program produce based on the parameters you provide, etc. You could do true magic with all this information. Right now you kinda still can, but it is very brittle, a lot of work and breaks potentially with each version increment. I think it stems from the design failure to build your app around a CLI. Instead, you should build your app around an API and generate the CLI for that API. Then all properties of structured data streams and auto-explore CLI shells come for free.
- ZeteticElench 6y agoHave you used PowerShell? It passes full objects via pipes and it works really well.
- bzb6 6y agoAs my sibling dead comment says you should try powershell.
- liversage 6y agoEven the original post said so in the third paragraph: > and now PowerShell where you can load .NET assemblies and pass around structured objects
- npsimons 6y ago> But you could do SOOO much more, if programs would actually output structured data streams. Like even treating code and data the same, and minimizing the syntax required so you're left with clean, parseable code and data. Maybe in some sort of tree, that is abstract. Where have I heard this idea before . . . > I think it stems from the design failure to build your app around a CLI. Instead, you should build your app around an API and generate the CLI for that API. Now this I am fully in favor of, and IMHO, it leads to much better code all around: you can then test via the API, build a GUI via the API, etc, etc, etc.