Before nginx was a thing, I worked with a guy who forked apache httpd and wrote this blog in C, like, literally embedded html and css inside the server, so when he made a tpyo or was adding another post he had to recompile the source code. The performance was out of this world.
This reminds me of one of my older projects. I wanted to learn more about network communications, so I started working on a simple P2P chat app. It wasn’t anything fancy, but I really enjoyed working on it. One challenge I faced was that, at the time, I didn’t know how to listen for user input while handling network communication simultaneously. So, after I had managed to get multiple TCP sockets working on one thread, I thought, why not open another socket for HTTP communication? That way, I could incorporate a fancy web UI instead of just a CLI interface.
So, I wrote a simple HTTP server, which, in hindsight, might not have been necessary.
It’s because certain jurisdictions require companies to not allow access to potential 18+ content without getting consent and the user saying they are over 18. If there isn’t an age selection then in their T&Cs it’ll likely have something saying that creating an account confirms you are over 18.
You could just use a popup that says “Are you over 18 and willing to see NFSW content?” like most NSFW website do, but I guess that doenst generate enough money unlike forcing accounts does.
That’s not always the case because signing up and accepting a T&C makes it more binding of the user to say they are who they say they are. If they aren’t, then it’s close to fraud. Having just a “are you over” screen is not enough, since the user can easily lie and the company can get done for not having enough measures in place to stop that from happening.
I know in the end it’s all futile anyway because of many reasons. But for companies it’s checking off a box that gets a governing body off their back and making sure they have the right certifications to do what they need/want to do.
Since when does a reddit account require me to submit ID proving I am indeed 18+? I literally see no difference in reliability between requiring an account where one claims to be 18+ and a banner where one has to claim to be 18+. In both scenario’s you are relying 100% on user input.
Also the difference is in legislation, business certifications and responsibility.
Like I also said, in the end these measures don’t matter to end result of the user (other than now needing to make an account, but still able to lie through it) but they do matter when a company wants to work with another that require all of its partners to have specific certifications and whatnot.
Nothing like receiving a GitHub email with a page of traceback cuz someone replied to an issue thread. It looks like they’re running anaconda on windows. And their problem is probably something else. Oh gosh, why did I waste my brain looking into this traceback? But sure this was very relevant to the discussion.
was it a car crash video/gif sub? sounds familiar.
I also remember a dank meme with a sketch of jesus and a helicopter pilot, with different dumb captions, like “hit this bong before you takeoff, bro, trust me, my son”
Sure, but you can get frameworks that generate that for you. I’ve written whole webpages in WASM without writing any JS.
You don’t get around reading JS documentation, though. Especially the DOM API is just documented as JS, and you basically hope that your framework makes it obvious enough how to write that in your non-JS language of choice.
This is exactly the reason why I can’t believe that was ever a requirement. I would have crazy respect for webassembly if it could stand on it’s own as it would allow people to completely move away from JS, but if JS is still in the stack in any way it will introduce a (even if it is minimal) compatibility and maintenance cost in the long run.
I used to think so, too, but on the one hand, the DOM API is absolutely massive. Going through the standardization, implementation and documentation process another time would take decades.
And on the other hand, a language-agnostic API in WebAssembly would mean specifying it WebAssembly itself. And well, it’s Assembly-like, so what’s currently a single line for calling a JS function would turn into tens of lines of low-level code.
Ultimately, you’d want code from some other high-level language to give you a summary of how you may need to call your language-specific wrapper. In practice, that’s likely even worse than translating it from JS, because the high-level call isn’t standardized.
i believe they plan to remove that requirement? at least i know they are trying to use a native wasm<->dom api instead of wasm<->js<->dom, which is slow
Big if true, do you have a link to follow that development? I’ve been curious about some languages that compile to JS+WASM but I’ve been waiting for something like this to finally cut out the middle man and give me an excuse to learn WASM directly.
There’s actually in theory all the pieces in place to use a different scripting language, because in the early days, there really were multiple. But yeah, the massive DOM API is only really standardized+implemented+documented for JS, so you don’t get around it in the end.
As the others said, though, WebAssembly is starting to become a thing and the JS boilerplate for calling the DOM API can be generated for you.
Most of the weirdness comes from being designed for the web, and specifically for working with forms. The value of a form field will always be a string, which is a simple and straightforward idea, but then the trouble showed up when we tried to make it more convenient to work that way.
Actually, most of the weirdness comes from having been originally designed in a matter of 10 days by a single engineer working to accommodate a tight release schedule.
I mean, do you think that has more explanatory power though? The type coercion rules are actually more elaborate with == than necessary for equality checking, because it was intended as a clever convenience for working with strings. If it was really all about the short timeline, wouldn’t you just skip that and do a more straightforward equality comparison, like the algorithm that === implements?
Besides, it’s not like everything in the language was conceived and implemented in those 10 days. The language has been evolving steadily since then. I’m not even sure if the modern == comparison algorithm worked that way in the first iteration.
Personally, I find it more useful to understand the context that lets me say “that’s a quirky consequence of a sensible principle,” rather than blaming it on the “ten days” legend generically.
I think the “ten days” explanation has the merit of being charitable, because it implies that Brendan Eich wouldn’t have made such short-sighted design choices under more favorable circumstances.
(I do not believe that it’s a “sensible principle” to treat text as such a fundamental form of data that a basic language feature like the equality operator should be entirely shaped around it. Surely the consequences of building an entire language around text manipulation should be apparent by considering how awkward Posix-style shells are for any nontrivial scripts.)
Well… The circumstances were that he was asked to whip up a little scripting language, that felt a little like Java and a little like Scheme, which could be used to add simple manipulations and interactions to web pages. Specifically to web pages. Not webservers, mobile apps, databases, banking systems, physics simulations, robotics… Only web pages. And nobody had even conceived yet of something like Google Sheets-- It was simple HTML forms and DOM manipulation.
IMO in that context, it makes alot of sense. I think it was probably still the wrong decision-- definitely with the benefit of hindsight, and quite possibly even at the time, even in that narrow context. Way more trouble than it’s worth.
But it’s beneficial to know that there was a principled (if misguided) reason behind it, that ties into the nature and history of the language-- It’s not simply “dude was in a hurry and not thinking.” Both are kinda true, but the former perspective helps us understand something useful, whereas the latter doesn’t get us anywhere interesting.
Can you write a website in other languages, like c# or python?
Yeah, anything that outputs HTML and CSS can do so. There’s a module for Apache to write webpages in Python (libapache-mod-python) and I’m p sure someone somewhere made a module to do it in Rust already except they’re infighting over whether tag parsing in it should be marked unsafe.
For that matter you do can write web pages in your shell eg.: bash, that’s what CGI is all about.
I guess why it’s weird because of the loose rules it follows, like what is mentioned about === and ==. There is WebAssembly which kinda acts like Javabyte code or CIL there used to be huge hype that it’s going to replace JavaScript, though it’s not used that much today. I think why there is low adoption is mainly because JavaScript is good enough, it’s widespread and easy to learn.
No matter the GUI you use, you’re leaving a lot of useful functionality on the table. By their nature, you only get a small fraction of git’s features. There are many useful commands I use regularly that are impossible to replicate using GUIs.
A good UI (for you personally) should do all the things you regularly do. Git is a complex and messy enough beast that when I have to use the CLI I’m going off the golden path and copy+pasting something arcane.
It’s also clearly not a bug as some people suggest. Bugs are – by definition – unintended behavior.
There are plenty of bugs that are well documented. I can’t tell you the number of times that I’ve seen someone do something wrong, that they think is 100% right, and “carefully” document it. Then someone finds an edge case and points out the defined behavior has a bug, because the human forgot to account for something.
The other thing I’d point out that I didn’t see in your blog is that I’ve seen many many people say they need to evaluate the 2(3) portion first because “parenthesis”. No matter how many times I explain that this is a notation for multiplication, they try to claim it doesn’t matter because parenthesis. screams into the void
The fact of the matter is that any competent person that has to write out one of these equations will do so in a way that leaves no ambiguity. These viral math posts are just designed to insert ambiguity where it shouldn’t be, and prey on people who can’t remember middle school math.
Regarding your first part in general true, but in this case the sheer amount of calculators for both conventions show that this is indeed intended behavior.
Regarding your second point I tried to address that in the “distributive property” section, maybe I need to rewrite it a bit to be more clear.
programming.dev
Top