Live data from Hacker News

30 years of tags

artmann.co

61–70 of 103 posts

Re: 30 years of <br> tags

#61

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.

Gets you header, footer, components. Most of head would be nice but you typically want a custom title for example.

Re: 30 years of <br> tags

#62

Very 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.

For a long time, the standard was that tls was only ever on the credit card submission page. I remember when "finding vulnerabilities" often mean viewing source and noting it still submitted to a uardcoded http page.

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 =…

> That's folk wisdom, but is it actually true? "Hundreds of lines just to grab a query parameter from a URL."

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

#64

Great 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

Wow. Totally forgot about the sIFR years.

Re: 30 years of <br> tags

#65
post #24

"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…

Pre-2000, it wasn't exactly useful as a hosting environment as such, but there were plenty of people renting unix shells by the month. We'd use screen and nohup to leave services running while logged out.

Re: 30 years of <br> tags

#66
This article was amazing. I hope the author continues to update it.

I'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

#67

Earlier 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.

Not one of the downvotes, but: as far as I'm aware, there was never any syntax which could be used for HTML transclusion in the browser. There may have been SGML or XML syntaxes proposed for it, but none of them were actually implemented in this context.

Re: 30 years of <br> tags

#68
post #57

Earlier 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.

[deleted]

Re: 30 years of <br> tags

#69
post #57

Earlier 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.

Why? The actual implementation of cgiGetValue I am talking about does exactly that:

> concatenated together with a newline character

Re: 30 years of <br> tags

#70
post #43

Earlier 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.

I remember using mina and it was much faster than Capistrano. Sadly, it seems it's now unmaintained.
Post reply on HN