Earlier quoted context omitted.
Object tag can do it. iframe also with limitations.
Does it really? I think, this makes you have a wrapper and I am not sure if you can get rid of all issues with "display: contents". Also you are already in the body, so you can't change the head, which makes it useless for the most idiomatic usecase for that feature.
30 years of tags
61–70 of 103 posts
Re: 30 years of <br> tags
#62Very nice article. However, some very heavy firepower was glossed over.. TLS/HTTPS gave us the power to actually buy things and share secrets. The WWW would not be anywhere near this level of commercialized if we didn't have that in place.
Re: 30 years of <br> tags
#63> For that, you needed CGI scripts, which meant learning Perl or C. I tried learning C to write CGI scripts. It was too hard. Hundreds of lines just to grab a query parameter from a URL. The barrier to dynamic content was brutal. That's folk wisdom, but is it actually true? "Hundreds of lines just to grab a query parameter from a URL." /*@null@*/ /*@only@*/ char * get_param (const char * param) { const char * query =…
No, because...
> In practice you would probably parse all parameters at once and maybe use a library.
In the 90s I wrote CGI applications in C; a single function, on startup, parsed the request params into an array (today I'd use a hashmap, but I was very young then and didn't know any better) of `struct {char name; char value}`. It was paired with a `get(const char name)` function that returned `const char ` value for the specified name.
TBH, a lot of the "common folk wisdom" about C has more "common" in it than "wisdom". I wonder what a C library would look like today, for handling HTTP requests.
Maybe hashmap for request params, union for the `body` depending on content-type parsing, tree library for JSON parsing/generation, arena allocator for each request, a thread-pool, etc.
Re: 30 years of <br> tags
#64Great read. I have fond memories of all the tricks we used to amaze visitors and fellow developers. Like using fonts that weren't installed on the visitors' computer using sIFR. https://mikeindustries.com/blog/sifr
Re: 30 years of <br> tags
#65"Virtual private servers changed this. You could spin up a server in minutes, resize it on demand, and throw it away when you were done. DigitalOcean launched in 2011 ..." The first VPS provider, circa fall of 2001, was "JohnCompanies" handing out FreeBSD jails advertised on metafilter (and later, kuro5hin). These VPS customers needed backup. They wanted the backup to be in a different location. They preferred to use…
Re: 30 years of <br> tags
#66I've been creating web pages since 1993, when you could pretty much read every web site in existence and half of them were just HTML tutorials. I've lived through every change and every framework. 2025 is by far the best year for the Web. Never has it been easier to write pages and have them work perfectly across every device and browser, and look great to boot.
Re: 30 years of <br> tags
#67Earlier quoted context omitted.
HTML was invented as an SGML vocabulary, and SGML and thus also XML has entities/text macros you can use to reference shared documents or fragments such as shared headers, footers, and site nav, among other things.
Not sure, why you are getting downvoted, as that was pretty much the case before HTML5.
Re: 30 years of <br> tags
#68Earlier quoted context omitted.
And in the code in C it looks like this, which is also a proper solution, I did not measure the time, it took me to write that. name = cgiGetValue (cgi, "name"); if (!name) name = SOME_DEFAULT; If you allow for GCC extensions, it looks like this: name = cgiGetValue (cgi, "name") ?: SOME_DEFAULT;
That would fail on a user supplying a multiple where you don't expect. > If multiple fields are used (i.e. a variable that may contain several values) the value returned contains all these values concatenated together with a newline character as separator.
Re: 30 years of <br> tags
#69Earlier quoted context omitted.
And in the code in C it looks like this, which is also a proper solution, I did not measure the time, it took me to write that. name = cgiGetValue (cgi, "name"); if (!name) name = SOME_DEFAULT; If you allow for GCC extensions, it looks like this: name = cgiGetValue (cgi, "name") ?: SOME_DEFAULT;
That would fail on a user supplying a multiple where you don't expect. > If multiple fields are used (i.e. a variable that may contain several values) the value returned contains all these values concatenated together with a newline character as separator.
> concatenated together with a newline character
Re: 30 years of <br> tags
#70Earlier quoted context omitted.
It’s been a while (a decade?!) but if I recall correctly Capistrano did this for rails deployments too, didn’t it?
I am now feeling old for using Capistrano even today. I think there might be “cooler and newer” ways to deploy, but i never ever felt the need to learn what those ways are since Capistrano gets the job done.