As the grownups came along and commercialised everything a lot of that went away and back then if you wanted to say something online you had to learn HTML and what FTP was as a minimum.
So things were weird because quite a few early adopters were not techies by nature.
It's different now.
It's one of the reasons I don't use facebook, instagram, snap etc, they just don't stick for me.
I do use twitter but that is because it's a nice way to follow projects and programmers I admire so it has some utility to me.
I was an early user of reddit but since the redesign (on the back of cleaning up the community) the trend towards just another social network (EDIT: speaking of which https://news.ycombinator.com/item?id=19039571) is pretty clear at this point, it's utility is going down as is the quality of the average posts in the subreddit's I cared about.
HN has been fairly consistent since I join over the last 5 years, a testament to the effectiveness of decent moderation.
It used to be I checked HN after reddit but that switched over the last year or two.
Things are more weird. Where there was one weird place, there are now thousands. Even if only 1% of today’s sites are “weird” that’s bigger than all of the internet of 1995 combined. Rising tide lifts all ships.
Want to talk on a BBS? Head on over to SDF. They got you covered. IRC is still alive and kicking, though now with far greater capabilities. GitHub. Think about what people used to have before GitHub. I uploaded things to SourceForge back when it was one of the few choices. Oof. Think about the kind of weird shit you can find on GitHub/GitLab/etc. today.
The thing is that the apparent problem is that non-nerds are now allowed online. The horror. I have found plenty of strange, weird, niche, 1337, whatever communities now and they are made better by the fact that you don’t always have to have a magnetized needle and a steady hand to use them. All you gotta do to find them is to look just beyond Facebook, Twitter, and Instagram. Hell, some subreddits are microcosms onto themselves.
But this nostalgia for the “good old days” when you couldn’t have a web page in Russian and Korean at the same time is just that, nostalgia. What has actually been lost that we used to have but don’t today?
Wikipedia alone would make that choice easy.
Throw in that I can get an answer to some obscure error code in some library to talk to an old piece of hardware in <30s and I'm completely sold.
I was just describing my experience between then and now.
> The thing is that the apparent problem is that non-nerds are now allowed online.
Now you are just projecting, I never said modern internet was worse and I definitely didn't say anything about non-nerds been a problem, the internet is a larger part of my mums life (nearly house bound due to arthritis) than it is mine and that's a good thing.
My comment about the non-nerds being the apparent problem is not that I actually think that. It’s that this sentiment often comes up. But reality is that we have way more nerds online now than before.
And overall the whole article is basically an advert for a new blogging system. Which may or may not be fun to use, but pining for the days when XSS was a desired feature.
Yes, this is the counterpoint to TFA. Sure, it's a lot harder to find "weird" stuff now. Especially because it tends to get pushed down in search results. But once you find something that's "weird" in your preferred way, there are often links to lots more of it.
Also, you'll find lots more "weird" on Tor onion sites, I2P and Freenet. There are a few reasons for that, I think. One is relative lack of censorship. Also, a lot of content is more or less standalone, generated by users using simple tools, on VPS or shared hosting. And there are constraints imposed by high latency and limited bandwidth. All of that is like the old Web.
So anyway, TFA is correct, if we're talking about the Web ("internet") as a whole. But not if we're talking about the absolute amount of “weird” content.
Eternal September is forever.
HN is a PR project for an accelerator/venture capital firm. Since its purpose is to make ycombinator look awesome and generate leads for them (providing indirect monetary value), we all get a fun place to hang out and discuss stuff so they can project that image, but I have no doubt that without that fairly unique situation it would quickly devolve into some variation of what we commonly see with social networks that have to find a way to pay for the services they provide.
I could build a HN, I could maybe moderate it (though probably not as well as dang and co, they are rather more even handed than me) but getting people to come and use it without attaching it to a VC fund not so much.
If I wanted to make a profit though then things are different.
Good community projects can self fund, lichess is a good example, hundreds of thousands of users, millions of games a day and zero advertisings, scheezy tactics.
Completely funded on donations, even pays the lead developer a liveable salary (though certainly not what he'd earn on the open market working for said scheezy social networks sadly).
I also agree it's not impossible, as you point our with lichess, it's just that with the current level of consumer awareness of privacy, I think most people (still) don't realize what they are paying for some competitors that appear free, but are really just monetized through selling personal information, and for some services network effects trump almost all others. A free chess matching service, where being linked with random people of appropriate skill level is a selling point is a lot different than a social network that's built around connecting with friends and family.
AS to being funded on donations, while I think it's wonderful that a project can be funded on donations, I wouldn't want any project I care about to be in this situation unless the donations exceed all operating/staffing costs by a very comfortable margin. There's just not enough leeway for unforeseen problems in a situation like that. Server failure? Severe illness in key personnel? Massive influx of new users that haven't matured in the user lifecycle to consider donating yet? That's such a stressful situation that I can't imagine wanting to live it for more than a few years. Unfortunately, if you can't get enough donations to get past that point (or keep increasing scope until you are at that point no matter the incoming funds), I'm not sure a solution besides monetization in some manner, and the problems and perverse incentives that come along with it. :/
I agree with your basic observation but I have a slightly different response:
Most people aren't all that fun or weird, at least not in a way which translates to text or graphical arts or music or anything else you can transmit over the Internet. Most people are the majority, and you'll never find the majority you're currently steeped in to be especially fun or weird. (Example: A great way to make a living as a comedian is to rephrase normality to make people see it as fun and weird. Observational comedy takes a keen eye for the obvious.)
None of my friends had a computer at home and didn't understand anything about them beyond those things we use in school for an hour once a week I was literally the only kid in my year who programmed them as a hobby.
We were not rich or anything but my father (for his faults) was fascinated with them and so I had access years before they became a thing.
They just were not embedded into the fabric of a working class northern town in England the way that they are now.
It's strange been under 40 and remembering three distinct phases in my life, pre-computers in homes, 1 computer in a home (maybe) and now everyone is wandering around with the kind of hardware 15 year old me would have dreamed of in their pocket.
I've been on the leading edge of computer adoption since a child and I still get future shock when I walk through a bus station and literally everyone is starting at a little glass rectangle streaming video wirelessly.
The other thing that still makes me smile is that my mum has three computers in her house, all of them running a linux kernel (Kindle Fire, Chromebook and a desktop running Mint) meaning as a percentage of devices owned she out 'Linuxs' me (I have an Xbox and dual boot for gaming), in 1998 when I was faffing about with RH and getting in trouble for breaking the family PC I wouldn't have seen that coming either.
It took me way too many runs around the sun to finally get that :(.
When in doubt, use the same mechanisms to accomplish things that everybody else uses.
That sort of peer pressure is intended to reduce the variability between web sites. I think for better or worse we are seeing the dividends of that effort.
More on-topic, you're totally right. I keep a copy of "Macintosh Human Interface Guidelines" on my desk and show it to designers sometimes when they want to suggest interaction patterns that are unnecessarily novel. Very handy! haha :)
I don't personally agree, as far as I know, with any of the communities that were banned, apart from the communities for buying and selling stuff, which no one should really have a problem with. And some of the communities that were banned, I vehemently disagree with, and would probably strongly oppose if they formed a political platform. The "involuntary porn" subreddits were probably breaking the law and in some cases causing great emotional distress. This latter case I think clearly crosses the line, but there were plenty that were in a gray area at worst.
There's something to having free speech readily available for criticism and scrutiny that feels very valuable. These people are around whether you want them to or not, and there's value in being able to scrutinize their views. Also, I feel there's a chilling effect when you've seen examples that saying certain things leads to explulsion.
What was illegal should already have been banned but the removal of non illegal but objectionable (to many) content stuck at the heart of what Reddit was, of course it's their platform and they can do as they please but I often enjoyed debating with people holding diametrically opposite views.
I mean I entirely get why they would do it from a business point of view but it was a stark sea change from what they'd done up to that point.
Throw in all the other odds and ends and Reddit just feels different.
The constant nagging to install their app, the hilariously bad redesign and handling of the redesign etc it just adds up.
It's the underlying protocol that connects the various federated services in the "Fediverse", (see https://en.wikipedia.org/wiki/Fediverse) like Mastodon, PeerTube, NextCloud, etc. At root it's just a standardized way for nodes in a network to send messages to each other, though, so you could use it to get those "connections of a social network" you're looking for. And then Mastodon users, say, could get updates/notifications from your site/service/whatever right in their feed.
My first website was about about TNG and why DS9 sucked balls.
Ironic since I now consider DS9 the better series (but TNG still has the truly stand out episodes, I think young me was just oblivious to a lot of the subtler stuff but I digress), it was shockingly bad (and I'd been programming since the 80's, HTML was just weird).
I spent about five years hating the crap out of it and never even considered web development as a career, if you'd have asked me back then I'd have said you'd claw the compiler out of my cold dead hands.
20 odd-years later and I do enterprise web dev (and C#/WPF and Java)
Also, tt-rss is an excellent reader.
If you do check out the forums for it you will very quickly see that the developer is a massive asshole.
I wouldn't trust any code that a person like that writes to run on my machine.
Here's an example of some weird shit in the dessert. https://find.xyz/map/toto-forever
Also one on the death of RSS since someone mentioned that https://find.xyz/map/what-happened-to-rss
You've got a typo on https://find.xyz/about : s/beatuful/beautiful/g
Trying to shoehorn social media profile integration into this system will eventually end up influencing the content, and once more it'll be a race to the bottom, with everyone posting stuff only for other people's validation. It shouldn't work that way for the 'weird web'.
Bingo.
There are still weird sites now. But back then, that's all there were.
I think there are still a ton of "fun and weird" sites out there, they're just not on highly promoted, corporate backed platforms. And they're now a much smaller percentage of the entire web.
Marketing people like boring and predictable.
I think this has made a huge difference, not so much if it is open source our not but how much things have become locked down. Before if you made a cool program you could hand it out to your friends on a usb stick and run it. These days you have to pay $100 to apple and go through a long approval process before you get listed on the app store. Its the same with all the platforms people use now. They have become more and more locked down pushing the regular user in to simply consuming content and only the corporations with large dev teams are able to make anything.
Sure you can still do things but we are constantly raising the bar for creating and making consuming easier.
The first is Google. Google was such a phenomenally good search engine that you rarely needed to “surf” the web to accomplish a task. You could search “order a hand powered woodworking drill” and likely be taken to a page that let you do just that. Much of the discoverability of “fun, weird” stuff came from the “surfing” aspect of the web, Google vastly reduced that.
The second is Wikipedia (and the Wikia networks). Much of the wonderful weirdness of the early web was passionate amateurs compiling information, wrapped in their own design aesthetic (or lack thirst of.). Wikipedia as amazing and wonderful as it is, gets rid of the need to find these sites to answer a question about the world (again, reducing surfing behavior, at least outside of Wikipedia.)
The last is Facebook. So much of geo cities and the early web was the “personal website”- a Sort of combination of Facebook profile, blog, and experiment in web art. These sometimes grew into impressive little gems of content, but mostly they were terrible quips and “under construction” banners. Then came the Friendster->MySpace-> Facebook and LinkedIn transition, and the need for these personal sites dropped away. They still exist, but the interaction patterns for using fbook and LinkedIn are so much easier.
I feel like YouTube still has the early web experience to it. Much of the content remains the domain of passionate amateurs and the “up next” algorithm regularly takes me in serendipitous locations (and sometimes down some darker paths).
The fun and weird communities now seem like “islands in the net” if you will, they are there and probably larger than ever, but much harder to get to (or at least stumble upon), due to tooling that allows use to accomplish tasks without detours.
One must not forget that Google is actively optimising search results away from the "weird stuff" and blocking users that try to dig deeper into the results to find it, insulting them with the accusation that they're a bot (a bit ironic, considering that if you behave "like the billion other mindless drones" you don't get singled out...) and presenting them with endless CAPTCHAs.
On the other hand, Bing still feels a bit like the "old school" search engines, and I've had better success finding the rare and niche "weird stuff" with it; apparently you can even find stuff horribly beyond legality, which is not surprising given how "dumb" it is: https://news.ycombinator.com/item?id=18876361
I'd say the "fun and weird" Internet is definitely still alive; but the efforts of search engines to "clean up" their results have basically resulted in censorship and hiding of the less popular parts.
You can see a very different tone in YouTube video comments, for example, before they switched to using real names.
Now, people are afraid to risk damaging their own personal reputation by posting "weird" things (I don't mean extremely weird either -- people are extremely self-conscious in general of saying things that MIGHT be considered weird in front of others, so they don't be themselves as much as they did when they were anonymous). And often, "fun" is synonymous with "weird".
It's not ALL bad -- people also say FAR less offensive things to each other when their real names are attached (but it still happens), but if you're looking for reasons for the shift, user de-anonymization is definitely one of them.
Even show me a declarative, idempotent API that can generate an arbitrarily long scroll of user-generated content.
If your answer is that users shouldn't expect to be able to do these things, then you have aliased the word "web" to mean something that 99% of web users will not recognize.
RSS. With a good reader software.
Since functional programming (FP) and declarative programming (DP) have many similarities, the same issue of hardness (for lack of a better term) exists in languages like Elixer/Clojure/Julia/Haskell/Scala/F# etc etc.
This all comes down to one of the most poorly understood concepts in FP, the monad:
https://en.wikipedia.org/wiki/Monad_(functional_programming)...
Honestly, I'm still not sure I understand internally how monads work, or if there are related terms for how I think of them. But monads (and related devices) are a way to deal with imperative logic and side effects when pure FP can't.
Imagine you're writing Tetris in a spreadsheet. It's easy to visualize how you might enter a piece's (x,y) coordinate in 2 cells and then pipe that through a series of cells containing logic that examines the blocks and outputs the next (x,y) coordinate for the following main loop.
But the actual main loop (that grabs input events) is very hard to visualize as a spreadsheet. This "glue" with the imperative stuff is where the monad comes in. Another way to think of it is, how to represent exceptions in a spreadsheet or a pure functional implementation of a promise chain (you can't without monads).
To write Tetris in HTML/CSS with no Javascript, we'd probably have to write a ton of CSS rules to show/hide/move DOM elements based on the state. That's an intractable problem for humans, so we'd probably compile the CSS from another language, which defeats the whole purpose. Maybe someone has tried it, I can't tell:
https://news.ycombinator.com/item?id=6709466
https://codepen.io/alexdevp/pen/pgdKf
But if we had something like a CSS monad, then we could write rules that are based on dynamic state from other rules. Writing this all out now, something like this might be useful, if anyone knows of such a thing.
Anyway, from what I understand, languages like Clojurescript get around this by suspending execution via a monad and then entering again with new input. Here is an almost purely functional Tetris clone written in Clojurescript:
https://github.com/yogthos/clj-tetris
Piece definitions, with code to offset/rotate the matrices and check for collisions by counting the number of cells to see if any have overlapped:
https://github.com/yogthos/clj-tetris/blob/master/src/tetris...
https://github.com/yogthos/clj-tetris/blob/master/src/tetris...
What I assume to be a thread sleep and JS setTimeout monads:
https://github.com/yogthos/clj-tetris/blob/master/src/tetris...
https://github.com/yogthos/clj-tetris/blob/master/src/tetris...
https://github.com/yogthos/clj-tetris/blob/master/src/tetris...
I know that code looks a little strange. But conceptually it's orders of magnitude simpler than that equivalent imperative code. Note that this is different from easy:
https://medium.com/@kiksdium/simple-vs-easy-bfd897ab293c
TL;DR; you bring up a really good point. FP and DP probably shouldn't be considered proven techniques until they can be used in the same problem domains as IP.
Of the languages you mentioned just Haskell, and Scala to some extent, has any deep concept of monads (and even in haskell they’re not part of the language, just a common idiom and ”easily” implemented)
Also, I’m using FP for the exact problems I used to use IP for, not sure what needs ti be proven..?
What I was trying to get at is that (IMHO) somehow the FP and DP paradigm has a huge blind spot when it comes to tackling the problems that IP solves handily. These are the problems that mostly involve integrating with the outside world - things like mutating state, exceptional situations, side effects etc.
Sure FP can largely avoid them via strong type handling and categories etc, but I've rarely seen good explanations of how to REALLY do something that programmers like to do, like write video games and social media feeds (things which the parent poster alluded to).
It's easy to visualize FP as a spreadsheet where the inputs generate a certain output. It's even straightforward to visualize how FP and IP are equivalent:
https://cs.stackexchange.com/questions/44305/why-are-functio...
https://cstheory.stackexchange.com/questions/625/relationshi...
https://en.wikipedia.org/wiki/Church–Turing_thesis
But I'm not convinced that pure functional programming can handle the simplest thing like new input without suspending execution or via a device like a monad. I also wonder if using those things makes functional programming impure. Which would make pure functional programming a fantasy..
This is maybe just a misunderstanding on my part since I haven't actually written much FP since learning Scheme back in the 90s. I'm all ears if you or anyone else knows of any articles exploring these issues.
Purity (and lazyness) is primarily there to help you reason about your code with referential transparency (purity ensures no side effects, and lazyness makes dealing with (certain parts of) bottom (think undefined) easier).
Of course any program needs to communicate with the outside world, and monads are a very general way of dealing with this. It’s worth noting that the first releases of haskell did not handle IO with monads.
At the same time, haskell contains functions to subvert lazyness (the function seq, which forces strict evaluation), and purity (the Debug.trace function which prints values in the middle of evaluating a pure function).
There’s also some fairly well-founded arguments that the State-monad violates the monad laws, which causes problems for referential transparency.
And you can still write a divergent function, in which case all your referential transparency goes out the window (kinda)..
Does this make haskell less pure? Probably, but since these are generally considered escape hatches or debug functions, the main paradigm of the language allows you (imho) to reason about your code in a way that’s (again imho) more amenable to separating your problem logically into discrete parts.
At the same time these escape hatches allow us to use haskell in the situations you describe. And you can often wrap them in a monad, in a way that allows you to reason about that boundary of the more purely logical parts of your code.
(There is obviously a tradeoff to using a type system like haskell’s. I’m a big fan of elm, precisely because it makes typed functional progamming easier to explain, and doesn’t distract people with all the fancy type theory stuff you can find in haskell (which I also love of course, and don’t get me started on agda))
A monad is analogous to the imaginary number i.
So in FP, a monad gets passed along as a placeholder until it can be computed. Here is a pretty good description of how they work:
https://medium.com/@newhouseb/motivating-monads-f93c9ddf7014
I agree with his analysis except that in his "MAGIC TRICK" example, I would have used something that is UNDEFINED in the interim but can be computed to a real value at the end (just like how we use i as a placeholder device in math). His example:
f(x) = x^2 + x + 1
g(x) = 2x
h(x) = sqrt(x)
m(x, f) = UNDEFINED, if x is UNDEFINED f(x), if it isn’t
m(m(h(-1), g), f) ~= (2(sqrt(-1)))^2 + 2(sqrt(-1)) + 1 ~= -3 + 2i ~= UNDEFINED
In this case, the 2(sqrt(x)) is still undefined for -1, so can't be simplified further, so the answer is UNDEFINED.
But I probably would have used an example like:
f(x) = x^2 + 1 # <- note that his was x^2 + x + 1
g(x) = 2x
h(x) = sqrt(x)
m(x, f) = UNDEFINED, if x is UNDEFINED f(x), if it isn’t
m(m(h(-1), g), f) ~= (2(sqrt(-1)))^2 + 1 ~= (2(i))^2 + 1 = -3
See, using i or a monad as a placeholder allows us to compute a real answer.
In FP, all computable parts of the stack could be collapsed (optimized). Then if anything is left uncomputed, the runtime could block on any involved monad. Then when the monad is set to a real value from the input stream, it could be collapsed completely and return the final answer.
I haven't succeeded in learning Haskell yet, but when I tried, I got stuck on its mutability implementation, which seems to use monads:
https://en.wikibooks.org/wiki/Haskell/Mutable_objects
Honestly today, I would prefer to use pure FP. I think that allowing mutability anywhere in the language is a huge cost, because we can no longer visualize the whole thing as a spreadsheet.
I'd really like to know if another FP language solved the mutating state problem by doing something more like ClojureScript (CS), where it stops execution until the monad gets set from the runtime. Unfortunately, it looks like CS has mutable variables via reset!:
https://stackoverflow.com/a/36847124/539149
So it's not pure either :-/
Anyway, I'm still learning. Hope this helps someone.
Monads doesn’t represent uncomputable values like sqrt(-1), it’s more like they represent a context, where computations take place.
So you can separate all computations involving IO into the parameterized function type ’Monad a’, where a is your result type
This for me is especially soul-crushing. Some of the biggest minds of our time are working, devoting their talents and their ful attention, to the noble goal of... making us click more ads.
These people could be trying to research diseases, to come up with solutions for the big problems that affect us -- in short, working to to improve our lives. Instead, we reward those that make our lives even more miserable/erode democracy/help concentrate power even more. In our economic system, those are the ones that get rewarded.
Sigh.
In my mind, weird/interesting internet died with the phrase "link in bio."
"I'm going to get downvoted, but..." - proceeds to get upvoted
"Unpopular opinion: " - is actually a popular opinion
I like it. I'm going to start using this.
_Ars Rhetorica_, BTW is great read.
It’s a rhetorical device meant to captivate the audience by humility.
Someone uses cleuasms (I’m gonna create a word by inferring a translation) many times in a discussion. Pay attention: this unsolicited and reiterated form of humbleness can be too much. If you shouldn’t have right for a statement, apply suspension instead ;)
The problem is our wants have become too complex. A blog site that used to be simple self-hosted markup, now requires commenting, moderation, voting, recommendations, authentication, backup, performance, media, analytics, seo, and more. How much coding skill can we expect from people? And even if they had it, should everyone use their time re-implementing or deploying and maintaining tens of individual platforms to participate on the web? There doesn't seem to be a feasible way but to centralize. And now you need to monetize and people have shown they are not willing to pay money, leaving the only other possibility we know: monetizing the data - which, of course, only encourages even more centralization and data capture.
None of this is new, but these are the fundamental natural forces that need to be addressed.
When Marissa Mayer was in control of Yahoo (which included Tumblr) she used to brag about how she was using a "data driven" approach to maximize the revenue from Yahoo. This seems to have been abysmal for the actual users. Engagement on Tumblr stagnated, then declined. The great business guru Peter Drucker has pointed out that entrepreneurs often ruin their own products because they are uncomfortable with the type of success they end up with. Marissa Mayer would be an example of this. She had one of the great gems of the Internet, but she was uncomfortable with how weird it was. And it is difficult for leadership to really lead when the leadership is uncomfortable with the product they have.
I tried to capture how destructive her rhetoric about "data driven decision making" can be when I wrote the essay "When companies make a fetish of being data driven they reward a passive aggressive style":
"I’m especially curious because Google is famous for basing its decisions on “data”. I have no idea how things work in Google, but I can say that every company I’ve worked at that supposedly valued “data” in meetings actually valued something darker. The use of “data” in meetings tends to be a passive aggressive negotiating tactic for a group of people who for cultural or emotional reasons don’t think it is reasonable to express strong disagreement or actual anger. Instead of expressing strong emotion, people are taught to quote data — they then cherry pick whatever statistics back up their beliefs."
As far as I know, there has never been a company that said “We want the worst informed people to make the decisions” so in a sense all companies have always valued data. But they didn’t make a fetish out of it. They simply expected people to be well informed, and to make intelligent arguments, based on what they know. That would have been true at General Motors in 1950. That much has probably been true at most companies for centuries. When management says that the company is going to be “data driven” they are implicitly asking for a particular type of interaction to happen in meetings, an elaborate dance where people hide their emotions and quote statistics.
Trust your instincts. Over the years, we often condense many years of learning to a few simple rules. If you asked me from what peer-reviewed study I learned to value minimalist design, I would not be able to answer you — it comes from dozens of books, hundreds of articles, thousands of conversations, and countless observations, and if the accumulated wisdom of my years of experience is of no value to you, then why did you hire me?
Obviously I am not advocating that meetings should be abusive. No one should be allowed to talk over another person, as that would be disrespectful, but when one has a chance to speak, often the most effective kind of communication is one where people show how strongly they feel about an issue. If you are an experienced professional, then presumably you’ve been hired because the company wants to know the lessons you’ve learned over the years. If your instincts tell you that a given policy will be a disaster, don’t let anyone silence you with their demands for “data.” Speak the truth that you know."
http://www.smashcompany.com/business/when-companies-make-a-f...
But then it was decided that there was no semantic purpose to the <b> tag, <span style="font-weight:bold">so it became this</span>.
Now, with the ubiquity of js, it's more like <span id="bold-text">this</span> (along with something like getElementById("bold-text").setAttribute("style", "font-weight:bold") in the background).
It should be pointed out that things come full-circle: frameworks like Bootstrap define the <strong> tag which, via similar JS to above, all-but-duplicate the functionality of the original <b> tag. I think the OP's point though is that you have to add a JS framework to do this.
<span style=...> vs <b> vs <strong> have different semantic meaning, and all have valid uses in modern HTML.
Semantic markup is nice, but 'div/span soup' is still very popular and isn't technically incorrect.
import Ghost from "../components/Ghost";
<Ghost size={80}>Thanks for reading!</Ghost><span class="bold-text">this</span> and .bold-text {font-weight: 600;}
http://latentflip.com/imperative-vs-declarative
https://stackoverflow.com/questions/45016234/what-is-idempot...
https://en.wikipedia.org/wiki/Side_effect_(computer_science)
The early goal of the web was to create a longterm available, reliable, discoverable network of media over an inherently unreliable transport.
I keep trying to write a concise explanation of these but I can't fit it in a comment. Let's do it DECLARATIVELY haha:
imperative->functional->declarative
for()->foreach()->map()->executables+pipes->spreadsheet
C/BBS->perl/cgi-bin->Apache->HTML/CSS
manual network config->DNS
state machine/brittle long running process/fear of manual retry->idempotent request/response
Always, always, always work towards the rightmost side if you want the least side effects and highest reliability (critical for a distributed system built on unreliable parts!)
I'd like to say that declarative idempotency was an immediately obvious thing to the architects of the www, but what really happened is more like Darwinian evolution where each solution's fitness was measured by reliability. Declarative idempotency was also cheaper because requests/responses could be cached and scaled.
If we flip it around for a moment, imagine a web without these things. Every site would have a complex tangle of brittle code to do even the most trivial operations, and it wouldn't be able to pass data on to other sites (it would be an app). Without idempotency, users would have to be really careful to only click the send button once when they were transferring money (thankfully this hasn't happened much).
The one thing that I wish the web had though was a layer to make unreliable communication reliable. It would look something like a promise or future with no exceptional logic. That way we could think in terms of wiring up the inputs and outputs of many websites and then "load" it to execute the logic. Kind of like Ansible, where internally the logic is imperative but on the surface is declarative.
I'd also like to see declarative idempotence replace imperative code (especially object-oriented programming) at the developer level.
The iPhone came out. Before the iPhone DSL was a thing, making big-ish pages was a thing.
Suddenly your pages had to be downloaded on a 2g connection. Eventually 3g, and 3g today is seen as insanity, but back then was the best we can get and still only few could get that.
We started to minify the hell out of our code. Every byte was critical. CDNs were used to speed every bit of our site up. Google came out with their research that you have ~150ms to serve content before it stops feeling instantaneous.
Boom.
Eventually tools came out to make all this so easy, why wouldn't you do it.
And thus here we are today.
I was using the internet when AltaVista was a thing. Searching was SLOW! If you wanted to find something online, grab a cup of tea, because its gonna be a while.
1) apps created niche proprietary software everywhere that used to be free and open media
2) the declarative, idempotent roots of the world wide web have been replaced by imperative, brittle Javascriptified spaghetti code
3) Javascript build systems have largely obfuscated any code that can be seen
4) Web 2.0 introduced private social networks in walled gardens that in many ways offer fewer privacy guarantees than before (due to the profit motive of exploiting user info)
5) Monopolies and duopolies now receive the lion's share of funding for research (which tends to aim for increasing profits and attracting eyeballs instead of fundamentally advancing the state of the art)
I'll stop there. It's hard to say how many of these are fundamental impasses to having an open internet again..