Ask HN: What are weird and/or novel ways to do web UIs?
[1] https://en.wikipedia.org/wiki/Zooming_user_interface
[1] https://en.wikipedia.org/wiki/Zooming_user_interface
I love the idea that there was a terrible timesheet system called Agresso. And that it's still around today!
Some things do change with time. If this system was created today, I imagine it would be named something like quiesso or daisy.
Small world
Unfortunately, it doesn't.
https://www.hcltechsw.com/wps/portal/products/products-home/...
It took just one slip of the finger to...
When intranet webapps came along everyone breathed a huge sigh of relief.
https://www.ibm.com/developerworks/lotus/library/ls-NDHistor...
Not so fast. As a web developer we still had to contend with the horror of IE5/6/7 for a few more years, and initially WITHOUT anything resembling the utility of something like JQuery!
Not entirely. Sometimes they were replaced by applets, which are just native application wrapped in a thin layer of html. This causes its own set of problems. At one place I worked (a large government agency), a critical spreadsheet ran as an applet which was only compatible with IE9. They couldn't upgrade anyone's PC's because they risked an auto-update of IE, which would break the ability to run that app.
At another job, a certain time tracking application ran as an applet, requiring a specific version of the jvm to be installed.
Deploying an application that runs in the browser using the browser's native capabilties - js, html, css works great. Using it to embed an applet doubles the misery, as in the short term management thinks they've purchased a portable, always-compatible "web-app", while what they've done is bought a native binary they can no longer properly provision their workstations to run.
After a couple days it was assigned to an engineer for implementation and of course the first thing he did was unflatten it.
Amazing story, and I'm sure they've learned their lesson :)
So on Product Chart, you can for example say "Show me 300 smartphones and put the price on the x-axis and the size on the y-axis".
It's a bit like you would lay out things on a table and then organize them by some criteria.
But then, I love scatterplots.
https://news.ycombinator.com/item?id=7465980
Also similar, and by another HN user:
These do not compare things such as sequential read, sequential write, random read, random write, temperature, MTBF, Backblaze outage percentages (statistical relevant), type of storage (SLC, MLC, AMLC, QLC, TLC, etc), chipset used, and so on, and so forth.
I'm scared shitless to check or use the battprices.com as it probably does not do anything like the above either. Which, in case of batteries, can cause something arguably more severe than bad performance or data loss: fire.
Don't use websites like these. Instead, read reviews and support websites which release quality reviews.
No fires will ensue just because you now know Duracell offering X is slightly cheaper than Energizer type Y per kWh even though the pack costs more.
Breathe!
I miss a page like this for Canada.
In Germany, where I'm originally from, we have geizhals.de for product and price comparison that works a lot like these pages you linked and has been around for ages.
They have an English version you can check out here: https://skinflint.co.uk/?cat=nb (this links directly to the Laptop section so you can check out their filtering capabilities).
Here's their listing of price per TB for SSDs which is very much alike the diskprices.com page you linked: https://skinflint.co.uk/?cat=hdssd&sort=r#productlist
Geizhals is not only useful as a price aggregator, but also when it comes to product discovery itself - often I look for products with very specific attributes, which may be represented by different names and keys between sellers and manufacturers. Geizhals' ability to collect and aggregate them in such detail is second to none. At that point pricing information is just an extra.
Looks very nice though.
This just makes me waste my time compared to a table where I can sort/filter by different criteria.
Most of the time, "creative" visualizations tend to actually obscure meaning, or worse, mislead viewers.
Recommended reading: Show me the numbers by Stephen Few (his blog is also great: http://www.perceptualedge.com/blog/)
Its more like a scatterplot with a grid overlay?
Figma is written in C++ code then run in the browser by cross-compiling it to a subset of JavaScript known as asm.js. The asm.js subset is basically JavaScript where you can only use numbers (no strings, objects, etc.). This is all you need to run C++ code since everything in C++ is either a number or a pointer to a number, and pointers are also numbers. The C++ address space is just a giant JavaScript array of numbers and pointers are just indices into that array.
Of course wasm is more performant as it matures, but they’ve been at this since 2015 and I’m impressed by how responsive the app is.
https://www.figma.com/blog/webassembly-cut-figmas-load-time-...
This company's web UI would allow its users to initiate bank transactions. Nothing weird from the user's end. However, the company had to "approve" the transactions in real time, synchronously. The company could do all sorts of programmatic verification on the user, recipient, transaction, etc, but we had to actually physically press a button on the screen of a smart telephone to approve the transaction. There was no programmatic way around this.
Some programmers at the company came up with a robotic arm which could be controlled programmatically, which would do the telephone screen pressing for us.
I always thought that was pretty clever.
Was this compliant?
I came across this site a few weeks ago. And it's quite unlike anything I've seen. And try to inspect the site using browser inspector. It's a very different ui than I've ever seen before.
So it works in firefox and chrome for me on windows. Not sure, I have pretty vanilla setup.
Enter Google Slides: the product for your uncle Joe and aunt Lysa to create their own websites without knowing how to code!
I even have an example website for you that I made as it is a project that I'm working on in my free time. I already remade the website in actual HTML/CSS/JS but I was simply curious how well Google Slides would work. IMO, it has a thing or two over Sketch (such as displaying GIFs, having links) since I made the actual layout with Sketch, and then redid everything with Google Slides to do a side by side comparison (I went too far with this :P).
There are a few things to consider:
1. Every page needs to be made in its own slide show as you cannot have different document sizes.
2. You will be stuck with a slide viewer, but I figured for the industrious fellow, you could simply inject some JavaScript that disables that whole viewer when you iframe your Google Slides website.
3. There are zooming issues because the pages are of different document sizes.
4. The fact that you need to define document sizes is noteworthy in itself.
So yea, not super duper practical, unless you aren't a web designer and simply want a simple profile page online, but definitely weird :D
Example website / project that I'm working on (and recreated to the best of my abilities in Google Slides for fun): https://docs.google.com/presentation/d/e/2PACX-1vRxqg4SNv1Sl...
(Actual Hypercard is on the web now too: https://archive.org/details/hypercardstacks )
So it's really cool to see hyper card for real this time!
Oh! Of course! I presume you can also inject JS into Google Slides itself. Hmm... I'll see if I can make a simple game then, when I'm bored again.
One week, we were learning about farms which I was really excited for because his love for the computer was matched only by his obsession with animals. Sadly, his outbursts would require me to separate him from the group time where we would show them pictures of animals and learn about their sounds, functions, etc. This made me think of creating and interactive PowerPoint where I made a slide with options for “petting zoo”, “animals with jobs”, “wild cats”, etc. each choice would lead to a new slide with a set of photos, icons that played their sounds, and even tried creating a set of quizzes where I recorded an animal sound and he had to select a photo that matched.
I worked until 3 AM making this PowerPoint and was deliriously tired the next day, but man the joy this kid experienced while he got to play on the computer AND learn about animals without getting worked up over a multitude of decisions sparked something in me that made me decide I wanted to do something with IT.
Your idea really hit home for me and helped me remember one of the reasons I do what I do today - frontend and app development. Lowering boundaries and making technological concepts more accessible can inspire unexpected interest and adoption.
I think you just upped my motivation even higher to be in IT.
[0] https://smallbusiness.chron.com/convert-powerpoint-presentat...
Why did you try to talk her out of it? What was the gain? Feeling superior?
My main argument against using Google Slides is the URL was not going to be easy to remember when telling parents. I pointed her to things like wordpress or wix that would allow her to have a free account but also would allow her to have a URL that would be easy to communicate. She didn't want to spend any money on a domain name either.
It's probably already obvious for people who regularly uses google slides / keynote / powerpoint, but for me who very rarely use them (but often use various graphic editors) it's quite a revelation.
I think It‘s actually the best tool do this on the iPad right now. At first the links seem limited because you link to slide numbers, but they actually update when you move things around. Magic Move is beyond what any design/prototyping tool can do in terms of zero effort animation (though figma launched somehtng like this yesterday?).
discussion:
https://news.ycombinator.com/item?id=20929801
site:
https://3dforreddit.com/r/pics
From a comment:
"
How to use it Desktop: Click to start, WASD and mouse to move
Mobile: Dragging on left half of screen is move, right have is look
Append any subreddit to the url to switch subreddits
"
It should work in any browser but if you have a good GPU it will help a ton.
[1] https://ux.stackexchange.com/questions/11229/is-this-rotatin...
It's all open source but probably doesn't compile on modern machines, and of course for extra fun we wrote the entire stack including the webserver, CGIs, cooperative threading, database layer and C libraries from scratch. From top to bottom this is the entire stack:
http://git.annexia.org/?p=monolith.git;a=summary
http://git.annexia.org/?p=rws.git;a=summary
http://git.annexia.org/?p=pthrlib.git;a=summary
http://git.annexia.org/?p=c2lib.git;a=summary
Edit: I should say that it's obsolete if you can make the nowadays reasonable assumption that Javascript can be used on the client side. It's more like "this is the crazy shit that a team of developers in their 20s with VC funding, disfunctional management and time on their hands get up to".
Edit 2: It was used in production for quite a long time, certainly until the 2010s. If you were in a UK school in the mid 2000s there's a chance you might have used this.
So for a long time this has been a widely used pattern! With today's dominance of (MVC || SPA) architectures I agree it's not as widely known as perhaps it should be.
Interestingly, Blazor seems to be reviving the whole idea. With SignalR, it is actually not completely insane to handle events with the equivalent of code-behind.
I don't really think it's useful as an actual web technology since you'd need to spawn a process, reserve a port, and keep a connection open for each and every user which seems like it wouldn't be workable.
It's a neat trick though.
https://blogs.gnome.org/alexl/2019/03/29/broadway-adventures...
The main downside I see is that every single keystroke needs a roundtrip to the server. Given a ping time of ~200ms that already makes it nearly unusable. So that leaves running broadway on localhost but then why use broadway at all? You might as well run it normally.
Anyways it's a really cool backend and I feel like with a small amount of work it could actually be used for web-apps, with the amazing advantage of basically eliminating front-end programming entirely.
It's full of examples with unconventional design.
They definitely dont all have weird UI, but some do.
This in house framework was written before the advent of major web frameworks (at least in C# at the time) so I can understand where it came from. In fact, I still consider it an impressive feat of engineering. But XSLT to this day makes me shudder..
XSLT is quite different and really powerful. I helped a friend once, he wanted to import his iTunes Db to Qlik for analysis. iTunes keeps its data, with number of plays and all statistics, in an XML file. Qlik has XSLT support. So it was just a matter of a couple of lines of XSLT to get all the data into Qlik. It literally went from a complete headscratcher to done with half an hour of studying MDN's XSLT documentation and some experimentation.
http://mywebsite.com/somepage.html/@say/Hey, neat somepage content, guy.
Some nginx redirects also included to take users to the comments page after submitting.
https://overwebs.ruph.in (warning - sound and high bandwidth)
It emulates a game UI, and uses background video to simulate physical movement when navigating between pages. It also incorporates some controls that are unusual for normal web applications like keyboard controls (shortcuts like 'Esc' to go back, 'Enter' to open chat).
It's a pretty old and very experimental project so some stuff is in a semi-broken state. I should revisit it sometime and clean up.
Animated backgrounds, infinite scrolling, elements that are only partially visible until you mouseover them, and uses zooming interface for opening individual posts.
Feels like a bastard child of GeoCities and modern web.
Careful: the further you dig, the weirder that site gets. Made by some guy (a "world famous artist") who uses the site as some weird recruitment tool for his cult. You could spend an entire day on that site and not see all of it.
You can do anything at zombocom
Nothing happens outside the context of a thread. So it leaves a log of everything that happened in that context. Graphical elements can go full-screen... but you don't lose connection to the thread that they appear in.
It will tile these threads across all your (funky, heterogeneous) screens.
I think this will help you to organize things, and homogenize and simplify your experience with those things across devices.
Imagine actually knowing where everything is, and being able to see who, when, and why anybody touched it.
Smart home dashboard example: https://zircleui.github.io/docs/examples/home.html
But I’m not a web dev and I don’t know the real reasons why it didn’t get traction :)
The point is that you already have the infrastructure that is generating formatted HTML responses (partial views), and you are now re-using it. If you were trying to write a client-side application from scratch while avoiding the easy path of writing a server-side MVC app, then yeah, I can see how it would be more complex than advertised.
Source: I've built a couple of web apps using intercooler.
An example of this was http://carlyayres.com/ though it has since been updated to a non-editable page.
Breezy's insight is that frontends are wildly complex due to the industry vertical (say.. childwelfare), so instead of shaping your state for business, breezy shapes it for content. Content being a header, footer, body as opposed to a post model or user model. This means each page is represented as a node in the Breezy Redux tree with its own header body and footer.
On one hand, it is annoying to traverse the pages to make updates, on the other, I can look at any running application and make close-to-correct assumptions on how to update the store. After all, most applications regardless of industry vertical has a header, body and footer somewhere.
How complicated would it be to do something like this for Ember, is it tightly coupled to react and redux? I might give a try at forking it.
BTW, if you like ZUIs read up on Jef Raskin's "Humane Interface" https://en.wikipedia.org/wiki/The_Humane_Interface
It has a unique capability: it loads quickly.
"I build the biggest software company of its time"
<Drops the mike.>
I mean seriously, what more do you need? A list of coding languages that includes both Java and Javascript?
https://dribbble.com/shots/popular/animation?timeframe=ever
Codepen has stuff you can actually see source code of:
Completely blew my mind! Probably not practical but really make me wonder if anything is possible with webassembly.
Looked exactly like a WASM app, but running in IE.
I spoke to Gelernter at a conference, ages ago. His wares were being compared to JavaSpaces. IIRC, maybe because he had done some work on Linda, or his lifestreams was implemented using same, or something like that. No one really grokked what lifestreams was about or how you'd use it. (Jini and JXTA suffered similar befuddlement.)
Any way, I over enthusiastically encouraged him to repurpose lifestreams into a PIM (personal information manager, shows how old I am) unifying all one's communication and activities. To Gelernter's credit, he listened seriously and pondered.
I'm still waiting. :)
An idea I read about long ago is ring-based context menus. So instead of getting a square list of choices, one per line, you get each choice arranged in a ring around your cursor. So maybe Copy is at 1 o'clock, Cut 2 o'clock, etc. It would be easier to "target" your choice, and even easier once you learned the position of things. I don't know if this has ever been tried. Maybe in a game? EDIT: apparently this is called a pie menu or radial menu: https://en.wikipedia.org/wiki/Pie_menu
I seem to remember trying at least one X11 window manager that used pie menus back in the early 90s - but unless the apps have small menus with small labels, you just get chaos.
Also New York Times and other news site sometimes have really sophisticated interactive story telling or visualizations.
It's really hard because it behaves differently with different aspect ratios.
i.e. http://taotajima.jp/
ie -
https://www.youtube.com/watch?v=N-2sKZjawq4
https://www.youtube.com/watch?v=UHbQmqmmIFk
Now its just the same boring Bootstrap/Material design cookie cutter crap everywhere.
Mobiles pretty much destroyed all of it as we focus on making sites that can render well on any screen size now.
https://play.pokemonshowdown.com/
I don't have a good sense of whether or not users actually like it, though.
Think it's been around for a while, but pretty fun and weird. :)
For little admin/monitoring ui for Linux servers this is crazy quick to build. Probably would not want such sites on the Internet. Pwnd instantly if you have shell shock
If you have a good set of cli admin tools #youmightnotneedphp :)
Probably an old setup, nowadays the .exe would be hidden with a rewrite rule and you would be none the wiser.
Its the common advice that it doesn't work well for multiuser scenarios but I am curious if it is actually a problem for small scale sites.
Most sites I manage usually only got ~10x increased traffic during their peak hour compared to their least busy hour.
Or is he or she referring to the look and feel of the final product itself?
I use it almost every day.
http://www.youmightbe.pressbin.com
It's not a particularly efficient way for users to traverse the content, but I think it's fun.
The site gives an intro to Distributism, a "third way" economic model that is neither Capitalism nor Socialism nor a mishmash of the two.
A small album of the best and worst of these submissions: https://www.reddit.com/r/ProgrammerHumor/comments/6fdl8h/an_...
For example, a widget might have a compile bug where the CSS rules to explicitly lay out component size only get included in media queries requested with devices using such low PPI that you never catch it in testing because your devices are not icky enough. This "bug" might then be "fixed" in an "improvement release" down the track that ships the explicit sizing to everybody... including your page layouts, which are now broken.
Or maybe you could ship a calendar control that includes a fuzzy date parser, and then remove the date parser "because it was confusing too many users". All emails from power users pointing out lost productivity because of their inability to specify dates like "2 1/2 days ago" or "-2h", or having "2018" map to today's date last year and "yesterday" also include the current time, are quietly sent to /dev/null. The calendar control is updated to use Material Design, two days of which are spent building a test jig to autoreload on 18 devices at once using remote debugging, as part of a subfeature sprint to ensure a certain cubic-bezier transition animation (which 4 people have collectively watched 537 times) "flows" correctly with the right... twang. A further day is spent turning an Arduino into a virtual bluetooth keyboard to ping the 18th device in the aforementioned testing rig; it stubbornly refused to not go to sleep, even when plugged in.
A decentralized bidding infrastructure could be implemented that uses Bitcoin to allow users to vote on which UI designs they like the most by sending money to different wallets. Much ado is had about how to rebuild a Merkle tree from first principles on top of the blockchain in order to implement the wallet tracking needed to power the aggregate collection needed to power the feature. After A/B testing (and some shady network sniffing) finds the UI library is only being used by people with 1Gbps (fiber/5G) Internet connections on devices with 8-core CPUs, it is decided to simply download the entire Bitcoin blockchain into the Web browser of every consumer of the UI toolkit to perform the analytics about which style to load on startup. No testing is performed on smartphones, and in the standup meeting for the sprint in question nobody remembers to point out that 8-core ARM CPUs are not the same as 8-core i9s. The stubborn team lead has sufficient karma to retain the feature even after the stunned bugreports flow in.
Kidding aside, I love you HN. Don't ever change.
You have to download thousands of packages, keep track of various dependencies and their security holes, adding an overhead for auditing them.
HTML5 with jQuery IMHO still beats everything in simplicity and getting work done fastly
If you can, don't use it to render entire pages. Use it for only the dynamic parts.
It's just that if nobody except you can understand the patterns you've created the code is not very maintainable in the long run. Sure it's probably fast and slick, but when you're gone can the next guy read your code? And more importantly, build on top of it?
Don't know how you reach your conclusion.
`npx create-react-app some-app-name --typescript`
(it was actually exactly 1000 dependencies which is freaking me out because the number was so round. wondering if it am counting lines wrong `ls | wc -l`)
Don't get me wrong, I would rather there were fewer development dependencies too, but they are tooling abstractions that you are _opting-in_ to.
If that is still a cognitive burden, then there's nothing to stop you using React a build step through a CDN.
It's probably because you haven't seen the light. I'd never ever go back to using jQuery unless it was for a basic marketing site - even then I'd probably think of using Vue if anything got more complex than a carousel on the page.
Page refresh loads are rarely the problem, its usually a database issue, or just a shit load of API calls to load different menus that would be done in one call with server side rendering.
For the vast majority of crud based web apps that I've seen or worked on in the last decade, lambda would not have been a good fit. There's a lot of people drinking the serverless koolaid right now and applying it to scenarios that don't fit it well.
Have you actually built a lambda backed web service? Guessing no, or you'd know better than to complain about price. Plenty of better arguments to be had than the one lambda actually does decently on...
I'm not drinking any kool-aid, I've just broken down the math to see what it would actually cost. You can too if you know what your traffic looks like.
I have. It's pennies, literal pennies. None of those pitfalls actually end up adding up to more than pennies, everything there is entirely theoretical and does not actualize with substantial consequence, in my experience.
Because you can build a site with around half of the code if you keep it server side.
https://developers.google.com/search/docs/guides/javascript-...
It is a 200-line library, and you get React's templating technology, which is the best part of React. You can use jQuery for updating the screen.
Nobody should be using jQuery in 2019 unless you need to target very old browsers. Vanilla JS works fine for the DOM.
I learned how to build dynamic web pages off of jQuery and for that I'm very grateful. I also appreciated the way there was little overhead if you just wanted to create something simple.
When HQ gave our business unit the task of redesigning the entire UI in whatever way we wanted - as long as it looked like the mockups - we decided it was time to move on from JQuery. I had some experience with Angular 2+ at the time, so I tried that one first, but it was too heavy. Same with React for the reasons you outlined. The learning curve on both were steep as well.
Then I came across Vue. When I learned I could easily create an app as quickly as I could in jQuery, without all the dependencies, I knew I found a winner. We moved forward with Vue and although eventually we couldn't avoid npm/node, I still think it's the most beginner friendly and lightest JS framework of them all. That's just my opinion of course, i'm sure plenty will disagree.
Here's an article demonstrating how it can be used without node/npm: https://medium.com/@steveolensky/create-a-spa-vuejs-applicat...
EDIT: BTW that article includes Vue-Router and some other frameworks, but you don't have to use any of it. You can simply include vue.js into your HTML pages just like jQuery and write Vanilla JS for the most part, with the added benefit of turning duplicate code into components. Win-win.
No need to use Webpack, Babel, etc, but you will get lots of nice modern features that will make your life easier.
jQuery got popular because it was easy, and good for quick and dirties, but it fails when you try to scale it to more than a few developers. It's not a bad tech but you can paint yourself into a corner with it pretty quick if you have to scale it across a team. You see bad code happens. Black boxing is a way of limiting bad codes impact on the overall system, because it is easier to rip it out and replace it. Functional programming is black boxes for back end business logic. Components are black boxes for the UI. It protects me from you and you from me and therein lies the importance of it.
Noone is bashing Angular, whew!
Sounds pretty weird to me.
Just like communicating with strangers via on-demand electric currents is weird as well, if you phrase it like that.
You can go on and follow the technical developement, but you will inevitably reach a point where people stopped understanding the whole stack below them and instead started to cobble together new abstractions from the things they did – until the next generation came and abstracted that. We all know this – it is far easier to add onto something existing, than removing or changing existing things that are just not good enough for the things we want.
So at a certain point you stop doing the rational and efficient thing to solve a problem, but react to more or less organically grown structures and go a extra mile to solve problems you might have never had if you included these capabilities in the existing layers below. But the existing layers below were written ages ago in languages you hate by obscure circles talking on mailing lists, so we don't even bother. The resulting Rube-Goldberg-Machine is weird in that sense: nobody rational who understands all the layers would plan it like it is from the ground up if they had the choice.
As I was reading, for a second there I thought you'd actually written a book called "Communicating via electric currents seems weird". Sounds amazing! Where can I buy this book??
/s
For a non technical example we could communicate via math for all human interaction, it would be more efficient, and truthful, it would also limit though and transfer of knowledge as it puts difficult constraints on expression.
Stacks are good, the web got screwed up by SUN, IBM, and Oracle's insistent vision of a thin client world, that needed lots of servers.
But as it turns out he was arguing against 10x complexity and advocating avoiding abstractions with "1x" coding.
It surprises many people to learn that the tone isn’t “always there” and that signalling happens with the exchange to create it. This includes checking billing status and other things.
These systems are so robust we mostly take them for granted.
Are they really just protecting their archane methods because they see that as protecting their income and any simplification a threat to that?
Or is it more tribal, cult like adherence to an overbloated way of creating web UIs?
Or is it people don't want to learn yet another tool and they're just resigned to the fact the these are the tools they have because really, they don't get to decide that anyway, their employer does?
Or is it people don't like being reminded that actually, they're "forced" to use these tools (which they perhaps wouldn't if it wasn't mandated), but because the workplace uses them, they use them, so the existence of other options while accurate is a painful reminder of their own limited autonomy to individually decide the tools they use for their work?
Is the same cultish zealotry seen in other languages and frameworks or is it just (what compiles to) ECMAscript and Web UI/state frameworks?
I can't think of a good reason for depending on thousands of libraries to aid you in laying out and presenting a document, if you are using a language and a platform specifically designed for that purpose.
And they never kept track of their dependencies in the first place. That's the job of some build tool. Whatever it pulls in is fine.
I wanted to move to React initially but after adding a single new app my boss hated the syntax and we switched to Vue. Vue is good too.
Does it not bother you that a machine that can do at least a billion computations in a second struggles with a list that short?
And the possibility of scripts is mentioned at least as far back as HTML3[0] in 1996, with the script tag being added as a placeholder element in HTML 3.2[1], and Java applets were already supported.
So while it wasn't there at the very beginning, it's clear the architects of the web didn't consider running code in the browser to be antithetical to its purpose.
[0]https://www.w3.org/TR/WD-script-960131.html
[1]https://www.loc.gov/preservation/digital/formats/fdd/fdd0004...
Section 5.1.7 Code On Demand
[1] https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding...
This is absolute nonsense. In the beginning the web didn't even have inline images. It was a text-only protocol.
https://www.wired.com/2008/09/history-of-img-and-embed-tags/
Cookies and script tags were hacks added by Netscape, IIRC.
Maybe you misinterpreted my comment. "practically from the beginning" does not mean the same thing as "from the beginning." I think something that was considered to be a part of the HTML spec, regardless of how it came about, since the 1990s counts as "practically from the beginning."
>Cookies and script tags were hacks added by Netscape, IIRC.
Tim Berners-Lee didn't seem to have a problem with the premise of embedded scripting in HTML in 1992[0], albeit not with the script tag and JS per se. And my comment was more referring to whether or not executing code in a browser was considered a legitimate use of HTML and the web at the time - and clearly it was, albeit not universally. That paradigm wasn't something Netscape just "hacked" in and entirely forced upon an unwitting web.
[0]http://1997.webhistory.org/www.lists/www-talk.1992/0064.html
Now we can see the two big vendors Google and Apple trying to slip in features that help their apps or platforms. This is partly why some people worry about the dominance of Chrome; once it's totally dominant, Google can e.g. interfere with adblockers without worrying about losing users to the competition.
I love it; this is great! I imagine somewhere in the world today, a witty instructor is teaching a computer basics or CIS 101 course and using something like your phrase above as the definition for the term "world wide web". lol :-)
...and a protocol for inter-object communication. That's probably the most important part, because that's what creates most of the complexity and security holes today. There is no end to this in sight.
Alan Kay warned web developers about this in 1997:
https://www.youtube.com/watch?v=oKg1hTOQXoY
Nobody listened. The majority of web devs still don't get it. (Can't wait for the arrogant replies here.) We ended up reinventing and re-implementing "internet objects" in the shittiest way possible.
* build your own runtime
* running in your own window
* using your new protocol
* using a sane UI language
Because the way it is now, the document centric web well may be destroyed, sooner or later by trying to fulfill more and more non-document needs. And we know, how that goes: where the money is...What I am talking about is the total applification of the web, as it happened in the last decade.
The Web is much more than a document delivery or archiving system, it is hypertext and the boundary between hypertext and apps is fluid. Is Wikipedia an app or a collection of articles? Is HN an app or a collection of comments and links? There is no precise boundary.
When Berners-Lee invented the Web he was heavily inspired by Hypercard [1], an app development kit based on linking cards together.
Web development is "weird" because the web tries to be device- and platform-agnostic. The web works on large widescreens, laptops, smartphones, in text mode or on a Braille display.
Other technologies that have been used to develop UI apps from the beginning, such as Adobe Flash, assume that the display is a kind of fixed screen on which you can draw, with little or no accessibility and linking in mind.
They generally don't spit out HTML, that's how you get XSS. Rather, they turn the data into DOM nodes, dynamically. In theory, that's more efficient, because the data should be smaller than the marked-up data. That's also how you get a UI to sort of rival a Desktop application, you cannot do this all server-side.
Also, all your server-side code that renders HTML is usually more privileged than your client code, unless you did your job very well, which I know you didn't, because you don't have the time and/or money. That's a huge risk surface area. There's a reason why Wordpress instances (which also have "thousands" of components) get hacked all the time, while static-site-generator sites don't.
> They also do some weird stuff with events like key-ups in order to re-render input fields based on objects rather than letting the browser manage those kinds of things.
The browser doesn't manage those things, or if it does, it's very limited and likely different for each browser. You need some amount of Javascript for all but the most trivial forms.