By this logic, nothing ever would have had to have been invented. At least if you carry it through to the end, it the way stated, not the way it was intended.
This particular line of refutation and critique is probably the most common refrain I hear when this sort of article or sentiment is brought up. It’s also wrong–note the “maybe” in the post title.
Let’s not flatter ourselves: yet another “HTML DOM but with better syntax”, “jQuery but with cleaner syntax”, “HTML DOM but with databinding”, “Angular but with smarter data-binding this time”, “Angular but with version-breaking and typescript”, “HTML DOM but with better diffing”, “React but artisinal”, “React but artisinal but also angular”, is hardly invention in the sense you probably mean it.
Our use of common tools has forced us into fixing the things that bother us about them, instead of developing truly new ways of solving our problems. The common solutions don’t make us think, and destroy our ability to think outside the box.
What would software be like if the free software movement never happened? Instead of “buying” loose fitting uniforms, I bet we’d all be excellent fabric makers, and tailors of original clothes that fit just right.
And worse, now that we have too many tools to ever fix any of them, there is actually an entire generation of “developers” who simply have no capacity to write quality, durable code.
What would software be like if the free software movement never happened? Instead of “buying” loose fitting uniforms, I bet we’d all be excellent fabric makers, and tailors of original clothes that fit just right.
Some of us anyway.
But unlike good clothing, most people cannot “see” code, so very few people appraise it’s quality – A lot of people actually think they’re paying for code, that somehow more code is more valuable.
Weird.
I actually welcome legislation that puts programmers and business on the hook legally (with proper teeth, like the GDPR promises to have) for their work, because I would like to always do good work, but I know I can’t do that while being competitive.
And worse, now that we have too many tools to ever fix any of them, there is actually an entire generation of “developers” who simply have no capacity to write quality, durable code.
This isn’t any different from how it used to be. For as long as we’ve had computers we’ve had people worried about developers writing bad, brittle code. The usual solution? High quality, well tested components we know are good, so that developers have fewer places to screw up.
Not having to roll our own crypto is, on the whole, a good thing.
And worse, now that we have too many tools to ever fix any of them, there is actually an entire generation of “developers” who simply have no capacity to write quality, durable code.
You sound old and grumpy, it’s gonna be alright. I’ve seen old people and young generation alike write shitty (and good) code. At least by reusing existing components people might have an easier time to build systems or complex program relying on widely used and tested pattern.
I actually welcome legislation that puts programmers and business on the hook legally (with proper teeth, like the GDPR promises to have) for their work
How would such legislation going to encourage individuals from taking risk and rewrite their own components instead of reusing existing more tested and widely used ones?
because I would like to always do good work, but I know I can’t do that while being competitive.
If you need legislation to be able to market your good work, “maybe it’s you”.
I’m confident if we are planning more, writing better specs, coding more carefully, focusing on reducing code size, and doing more user-testing, then software will be better.
And there may always be a gap: As we learn where it is, we can probably refine those fines…
What if I don’t want to be a tailor, though? I want to be a welder, but I can’t, because I spend all my time tailoring!
Component programming has, historically, been the hoped-for solution to the software crisis. Parnas made that a central advantage of his work on modules, high-correctness software is predicated on using verified components, etc etc. It might not have lived to it’s standards, but it’s a lot better than where we used to be.
Consider the problems you want to think about, and then consider how hard it would be to solve then if you had to write your own compiler.
It might not have lived to it’s standards, but it’s a lot better than where we used to be.
Hmm. Can you elaborate on why it’s better? I feel that in a lot of ways it’s worse!
Consider the problems you want to think about, and then consider how hard it would be to solve then if you had to write your own compiler.
We’ve trained ourselves to make a base set of assumptions about what a computer is, and has to be. A C compiler is just a commodity tool, these days. But, obviously, people have invented their own languages, and their own compilers.
But, consider a very basic computer, and forth. Forth is simple enough that you can write very big functioning systems, in a small amount of code. Consider the VPRI Steps project that’s been attempting to build an entire computing system in a fraction of the code modern systems take. What would things look like, then?
Hmm. Can you elaborate on why it’s better? I feel that in a lot of ways it’s worse!
The most popular Python time library, Arrow, is 2000+ lines of core code and another 2000+ lines of localization code. If you tried to roll your own timezone library you absolutely will make mistakes that will bite you down the line, but Arrow is battle-tested and, to everybody’s knowledge, correct.
Consider the VPRI Steps project that’s been attempting to build an entire computing system in a fraction of the code modern systems take. What would things look like, then?
That report lists 17 personnel and was funded by a 5 million dollar grant. I don’t have that kind of resources.
When was the last time you wrote code that required accurate timezones (UTC is almost always OK for what I do)? And, to be honest, 4,000 lines doesn’t seem like enough to be exhaustive here…
But, I don’t disagree that there are exceptional things that we should all share.
Just that, in the current state of things, relying on an external library responsibly, requires a deep understanding of it to use it properly. You can’t rely on documentation—it’s incomplete. You can’t rely on its tests—they don’t exhaustively prove it works. You can’t trust the names of functions—they lie, or at least have ambiguity. And, more often than not, you care about only a small percentage of the functionality, anyway.
That report lists 17 personnel and was funded by a 5 million dollar grant. I don’t have that kind of resources.
The point wasn’t “we should all go define 2,000 line systems that do everything.” It was, apparantly poorly, attempting to point out that there may have been another way to “compute,” that would have made rolling everything yourself more appropriate. I think it’d be pretty hard to go back to a place where that’s true—the market has spoken, and it’s OK with bloated, completely broken software that forces them to upgrade their computers every 3 years just to share photos in a web browser and send plain text email to their familes.
When was the last time you wrote code that required accurate timezones (UTC is almost always OK for what I do)? And, to be honest, 4,000 lines doesn’t seem like enough to be exhaustive here…
Maybe not timezones, but definitely https, authentication libraries, web scrapers, crypto, unit testing frameworks, standard library stuff…
I think it’d be pretty hard to go back to a place where that’s true—the market has spoken, and it’s OK with bloated, completely broken software that forces them to upgrade their computers every 3 years just to share photos in a web browser and send plain text email to their familes.
Right, but I’m asking historically if this was caused by the rise of component-based programming, as opposed to just being correlated with it, or even if it happened despite it! It’s really hard to prove a counterfactual.
Thb, when I read “maybe it’s you”, I understand this as a stylistic device, and don’t read it literally. And I guess it depends on the situation, I totally agree with you than 99% of the “new” stuff invented for the web have no need to be created (which one could generalized to the whole economy if one would want to). I just want to say that there are situations where being open to new ideas wouldn’t be bad, because sometimes bad ideas are kept just because of a network effect.
And if we’re already talking about what exactly was written (I should have clarified this, so it’s my fault), i was talking about the title. I know the text says something different, that’s why I said “not the way it was intended”.
Author here. Thank you for your feedback! You’re right: the title may be construed as an accusative. For the record: it is not. I’ll take better care with such things going forward!
I’m sorry, if I have the skill to build it, i’ll likely build it myself. That’s the beauty of software and computers. These things should be empowering and we should not be at the mercy of “the open market”. In fact, the market kind of sucks for giving you what you want.
What people want and what is good for them are usually different things, and having a common tool with some common discomfort is far better than a bunch of bespoke solutions.
It is no accident in history that the spread of interchangeable parts and industry made artisans basically irrelevant.
Not if they never get fixed and are poorly documented or hard to contribute changes into. Then people have to create something new in order to fix common discomforts.
Indeed. To bring in a little more jargon, even if I were to believe in such a strong version of the “efficient market hypothesis” that applied outside of formal markets with real prices, why should I expect that it should apply in such a novel and immature area as software, where Ecclesiastes is obviously wrong?
Author here. Should have posted with the “devops” tag.
Absolutely, I encourage you to! The point I try to make in the article is not to deter you from building anything new. Just to make you think if the effort is worth it, and to make you question if the problem you’re solving is indeed a problem that has no solution other than requiring you to build a new thing from scratch. In fact, I repeat this quite a few times throughout the writing. But some things just aren’t the focus of your work, and for those things making a couple of compromises and adopting the general case might be worth it.
Glad you think the market sucks when catering to your demands, as diversity is what makes the ecosystem evolve.
Yesterday I published Hendrix, p2p chat for web. It’s build on some cool, new technologies like PeerJS (WebRTC) and React (Shadown DOM). It’s an attempt to create IRC for web that’s as server-less as possible. I would like to hear what do you think and a star would be great!
so how easy is peer-to-peer in browsers now? a while (a few years i guess) back when opengl becamme available in browsers i started writing an “arcade” game that would run in browsers and allow people to fly around the surface of a planet shooting each other. it didn’t get very far (i am not an experienced 3d programmer), but it was clear the p2p part was not going to be ready any time soon anyway… is that now “trivial”?
I can’t comment on how it has changed in past years because I’m new to the WebRTC myself and this is my first attempt to make something with it. However, PeerJS (WebRTC wrapper) helps and it’s a matter of listening and triggering events that PeerJS offers.
this looks great! I’ve been working on a leisure project similar to this one, only not web based. I’d be happy to share my ideas or designs with you, if you wish.
I can’t seem to get it up and running, though. would you consider adding some instructions into the README file so other people know how to get this booted up?
I love the project. We need to bring internet tech back to a distributed model from which it came from. I am also excited about WebRTC. Have a look at my project Fire★, I had to implement something like WebRTC from scratch. Though mine is built from C++ and not web tech.
If you see any awesome idea from Fire★, go ahead and clone. We need more p2p to take off.
Looks like a cool project :)
You might also be interested in https://echoplex.us. I’m using PGP to sign/encrypt messages, which I think works pretty well for identity in an anonymous environment
I have some choice words for OP which I won’t share out of respect for the platform.
OP, tell me what you think about this simple case: https://www.drupal.org/project/drupal/issues/2859381#comment-12417374
I can’t see non-default state as the moderation state. I need it. What does OP suggest I do?
I suggest you actually read the article. Or even just the title in its entirety.
By this logic, nothing ever would have had to have been invented. At least if you carry it through to the end, it the way stated, not the way it was intended.
This particular line of refutation and critique is probably the most common refrain I hear when this sort of article or sentiment is brought up. It’s also wrong–note the “maybe” in the post title.
Let’s not flatter ourselves: yet another “HTML DOM but with better syntax”, “jQuery but with cleaner syntax”, “HTML DOM but with databinding”, “Angular but with smarter data-binding this time”, “Angular but with version-breaking and typescript”, “HTML DOM but with better diffing”, “React but artisinal”, “React but artisinal but also angular”, is hardly invention in the sense you probably mean it.
Our use of common tools has forced us into fixing the things that bother us about them, instead of developing truly new ways of solving our problems. The common solutions don’t make us think, and destroy our ability to think outside the box.
What would software be like if the free software movement never happened? Instead of “buying” loose fitting uniforms, I bet we’d all be excellent fabric makers, and tailors of original clothes that fit just right.
And worse, now that we have too many tools to ever fix any of them, there is actually an entire generation of “developers” who simply have no capacity to write quality, durable code.
Some of us anyway.
But unlike good clothing, most people cannot “see” code, so very few people appraise it’s quality – A lot of people actually think they’re paying for code, that somehow more code is more valuable.
Weird.
I actually welcome legislation that puts programmers and business on the hook legally (with proper teeth, like the GDPR promises to have) for their work, because I would like to always do good work, but I know I can’t do that while being competitive.
This isn’t any different from how it used to be. For as long as we’ve had computers we’ve had people worried about developers writing bad, brittle code. The usual solution? High quality, well tested components we know are good, so that developers have fewer places to screw up.
Not having to roll our own crypto is, on the whole, a good thing.
You sound old and grumpy, it’s gonna be alright. I’ve seen old people and young generation alike write shitty (and good) code. At least by reusing existing components people might have an easier time to build systems or complex program relying on widely used and tested pattern.
How would such legislation going to encourage individuals from taking risk and rewrite their own components instead of reusing existing more tested and widely used ones?
If you need legislation to be able to market your good work, “maybe it’s you”.
That probably results in more money for insurance companies but not better software.
I’m confident if we are planning more, writing better specs, coding more carefully, focusing on reducing code size, and doing more user-testing, then software will be better.
And there may always be a gap: As we learn where it is, we can probably refine those fines…
What if I don’t want to be a tailor, though? I want to be a welder, but I can’t, because I spend all my time tailoring!
Component programming has, historically, been the hoped-for solution to the software crisis. Parnas made that a central advantage of his work on modules, high-correctness software is predicated on using verified components, etc etc. It might not have lived to it’s standards, but it’s a lot better than where we used to be.
Consider the problems you want to think about, and then consider how hard it would be to solve then if you had to write your own compiler.
Hmm. Can you elaborate on why it’s better? I feel that in a lot of ways it’s worse!
We’ve trained ourselves to make a base set of assumptions about what a computer is, and has to be. A C compiler is just a commodity tool, these days. But, obviously, people have invented their own languages, and their own compilers.
But, consider a very basic computer, and forth. Forth is simple enough that you can write very big functioning systems, in a small amount of code. Consider the VPRI Steps project that’s been attempting to build an entire computing system in a fraction of the code modern systems take. What would things look like, then?
The most popular Python time library, Arrow, is 2000+ lines of core code and another 2000+ lines of localization code. If you tried to roll your own timezone library you absolutely will make mistakes that will bite you down the line, but Arrow is battle-tested and, to everybody’s knowledge, correct.
That report lists 17 personnel and was funded by a 5 million dollar grant. I don’t have that kind of resources.
When was the last time you wrote code that required accurate timezones (UTC is almost always OK for what I do)? And, to be honest, 4,000 lines doesn’t seem like enough to be exhaustive here…
But, I don’t disagree that there are exceptional things that we should all share.
Just that, in the current state of things, relying on an external library responsibly, requires a deep understanding of it to use it properly. You can’t rely on documentation—it’s incomplete. You can’t rely on its tests—they don’t exhaustively prove it works. You can’t trust the names of functions—they lie, or at least have ambiguity. And, more often than not, you care about only a small percentage of the functionality, anyway.
The point wasn’t “we should all go define 2,000 line systems that do everything.” It was, apparantly poorly, attempting to point out that there may have been another way to “compute,” that would have made rolling everything yourself more appropriate. I think it’d be pretty hard to go back to a place where that’s true—the market has spoken, and it’s OK with bloated, completely broken software that forces them to upgrade their computers every 3 years just to share photos in a web browser and send plain text email to their familes.
Maybe not timezones, but definitely https, authentication libraries, web scrapers, crypto, unit testing frameworks, standard library stuff…
Right, but I’m asking historically if this was caused by the rise of component-based programming, as opposed to just being correlated with it, or even if it happened despite it! It’s really hard to prove a counterfactual.
So… do you not believe in evolution, then?
Thb, when I read “maybe it’s you”, I understand this as a stylistic device, and don’t read it literally. And I guess it depends on the situation, I totally agree with you than 99% of the “new” stuff invented for the web have no need to be created (which one could generalized to the whole economy if one would want to). I just want to say that there are situations where being open to new ideas wouldn’t be bad, because sometimes bad ideas are kept just because of a network effect.
And if we’re already talking about what exactly was written (I should have clarified this, so it’s my fault), i was talking about the title. I know the text says something different, that’s why I said “not the way it was intended”.
Author here. Thank you for your feedback! You’re right: the title may be construed as an accusative. For the record: it is not. I’ll take better care with such things going forward!
I’m sorry, if I have the skill to build it, i’ll likely build it myself. That’s the beauty of software and computers. These things should be empowering and we should not be at the mercy of “the open market”. In fact, the market kind of sucks for giving you what you want.
What people want and what is good for them are usually different things, and having a common tool with some common discomfort is far better than a bunch of bespoke solutions.
It is no accident in history that the spread of interchangeable parts and industry made artisans basically irrelevant.
Not if they never get fixed and are poorly documented or hard to contribute changes into. Then people have to create something new in order to fix common discomforts.
EG, check out the node ecosystem.
Indeed. To bring in a little more jargon, even if I were to believe in such a strong version of the “efficient market hypothesis” that applied outside of formal markets with real prices, why should I expect that it should apply in such a novel and immature area as software, where Ecclesiastes is obviously wrong?
Because economics is religion. Religion can’t be wrong.
Author here. Should have posted with the “devops” tag.
Absolutely, I encourage you to! The point I try to make in the article is not to deter you from building anything new. Just to make you think if the effort is worth it, and to make you question if the problem you’re solving is indeed a problem that has no solution other than requiring you to build a new thing from scratch. In fact, I repeat this quite a few times throughout the writing. But some things just aren’t the focus of your work, and for those things making a couple of compromises and adopting the general case might be worth it.
Glad you think the market sucks when catering to your demands, as diversity is what makes the ecosystem evolve.
Indeed. The market isn’t for building things, it’s for setting prices.
Penafiel, Portugal
…well, working in Lisbon for the time being.
Yesterday I published Hendrix, p2p chat for web. It’s build on some cool, new technologies like PeerJS (WebRTC) and React (Shadown DOM). It’s an attempt to create IRC for web that’s as server-less as possible. I would like to hear what do you think and a star would be great!
Currently I’m planning to add things like:
so how easy is peer-to-peer in browsers now? a while (a few years i guess) back when opengl becamme available in browsers i started writing an “arcade” game that would run in browsers and allow people to fly around the surface of a planet shooting each other. it didn’t get very far (i am not an experienced 3d programmer), but it was clear the p2p part was not going to be ready any time soon anyway… is that now “trivial”?
I can’t comment on how it has changed in past years because I’m new to the WebRTC myself and this is my first attempt to make something with it. However, PeerJS (WebRTC wrapper) helps and it’s a matter of listening and triggering events that PeerJS offers.
this looks great! I’ve been working on a leisure project similar to this one, only not web based. I’d be happy to share my ideas or designs with you, if you wish.
I can’t seem to get it up and running, though. would you consider adding some instructions into the README file so other people know how to get this booted up?
thanks, and good luck!
Thanks! I would like to hear your thoughts on Hendrix.
I added some instructions to the repo! ;)
Great project! Would love to see live demo :)
Thanks!
I’ve been trying to implement group chat now. As soon as it’s ready, I will create a demo page! ;)
I will be waiting for that. Meanwhile I hope that there will be time to try it on my own.
I love the project. We need to bring internet tech back to a distributed model from which it came from. I am also excited about WebRTC. Have a look at my project Fire★, I had to implement something like WebRTC from scratch. Though mine is built from C++ and not web tech.
If you see any awesome idea from Fire★, go ahead and clone. We need more p2p to take off.
Looks like a cool project :) You might also be interested in https://echoplex.us. I’m using PGP to sign/encrypt messages, which I think works pretty well for identity in an anonymous environment
here’s another one: [INFRA-7524] migrate Apache Subversion project over to the git repo - ASF JIRA
It is insane to me how many people are taking that as a Real Thing, but it’s been picked up even by quasi-legitimate sites like InfoQ as of this writing (http://www.infoq.com/news/2014/04/svn-migrates-to-git).