From 9c18b5ca6c9968020bd4a0570d8eb662883cbf29 Mon Sep 17 00:00:00 2001 From: Dev-Siri Date: Sun, 17 Nov 2024 22:45:48 +0530 Subject: [PATCH] Fix SocialMediaLink import in blog --- public/og/history-of-the-web.jpg | Bin 46156 -> 0 bytes ...ools-the-ultimate-problem-and-solution.mdx | 4 +- src/pages/blog/history-of-the-web.mdx | 191 ------------------ 3 files changed, 1 insertion(+), 194 deletions(-) delete mode 100644 public/og/history-of-the-web.jpg delete mode 100644 src/pages/blog/history-of-the-web.mdx diff --git a/public/og/history-of-the-web.jpg b/public/og/history-of-the-web.jpg deleted file mode 100644 index 0ec23533bd55d3b397caaed13b12f110747a2595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46156 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 WqmM84?d}t&i>?Lhg!M50o&R4BD_B7Q diff --git a/src/pages/blog/browser-devtools-the-ultimate-problem-and-solution.mdx b/src/pages/blog/browser-devtools-the-ultimate-problem-and-solution.mdx index fa95ba4..390a648 100644 --- a/src/pages/blog/browser-devtools-the-ultimate-problem-and-solution.mdx +++ b/src/pages/blog/browser-devtools-the-ultimate-problem-and-solution.mdx @@ -6,7 +6,7 @@ publishdate: Jul 23, 2023 layout: ../../layouts/BlogLayout.astro --- -import SocialMediaLink from "../../components/SocialLinks.astro"; +import SocialMediaLink from "../../components/SocialMediaLink.astro"; If you are a web developer there is a 1 in 1 chance that you use the browser devtools. They are useful for debugging the 2MB of JS or 10MB of WASM you feed to it, but did you know they could create security vulnerabilities? pff yeah I am sure you do... @@ -73,8 +73,6 @@ So uh, yeah, all of this could have been fixed if they just added one more if-st ### validate. -##### you idiot - All you need is a schema validation library. Personally I like to use Zod, but you can also use any other like Yup. Here is some validation code I used for my project: diff --git a/src/pages/blog/history-of-the-web.mdx b/src/pages/blog/history-of-the-web.mdx deleted file mode 100644 index 9d0b1b1..0000000 --- a/src/pages/blog/history-of-the-web.mdx +++ /dev/null @@ -1,191 +0,0 @@ ---- -title: "History of the Web: How it went from sharing documents to a full-blown application platform." -slug: history-of-the-web -description: Nowadays, we aren't here for reading documents, we are here to use something that is just as interactive as it gets. -publishdate: Aug 17, 2023 -layout: ../../layouts/BlogLayout.astro ---- - -My question to you, the reader is, _Have you ever used the web?_. This may sound silly because you are using it right now, but my second question is, _What are you using it for?_. There are a variety of responses I can hear -like _"Reading content from news sites"_ or _"Using some web sites for personal use like Figma to edit photos"_ or _"Using Twitter (theres no way in heaven or hell that I'm calling it X)"_ - -
-These are just general use cases, but have you ever downloaded an app from the **web**? Yes from the web, **not app stores**. I personally have ChatGPT -as a quicklink and Twitter as a PWA installed on my phone. These apps are used by me almost everyday. -
-But now, let me clarify why I am asking these questions in the first place. The web in the start, **wasn't expected to be this advanced**. It **WASN't** -for running full blown applications like Twitter in it. It was never expected to rival native apps. So now the question is, **what changed?** This isn't -a small change either, going from sharing documents to running apps is no small undertaking. There was a catalyst that caused it, over **13 years ago**. - -## Starting of the web - -In the late 1980s, an engineer named Tim Berners-Lee working for CERN was frustated at how hard it was to share information over the internet in an organised way. So he made the World Wide Web in 1989. Along with the HTTP protocol, he also made Hyper-Text-Markup-Language (HTML). _Hey! you are reading some HTML right now_. -But this was made for sharing information in an organised way. It was never meant to be an application platform, thats why, even today, you can access FILES from a web browser. Thats because, they are just there to be shared. -HTML is a special view-format that the browser just parses differently to show a UI instead of text. - -## It had potential - -Many companies in the early 1990s saw the potential this new emerging technology called the 'Internet' or what it was well -known for at the as the 'information super highway'. Most well known of these companies were Netscape & Microsoft (oh god) - -## Netscape's role - -There was one problem in the early days of the web, the staticness of the pages. Originally, websites were just HTML files stored on a server. When someone made a request to get a webpage, the server would find the HTML file on its hard disk and send it back. But then later, there was a new inovation. - -##### What if.... - -##### Instead of writing and sending the same HTML pages, we generated them _on the fly_? - -This was definitely a step in the right direction. But how to determine what to generate? Thats simple! Cookies || Headers! - -Soon enough, we got [PHP](https://php.net). And thats what made web development accessible to the average developer. - -But still, _something was missing_. -Remember, this was the time before concepts like "event-handlers" and "client-side scripting" existed. -There was no way to do anything on the page unless you modify the url, cookies, headers or some other thing that gets sent to the server and **RELOAD THE PAGE**. -With these limitations on the client-side, page reloads were a primary part of the user experience. So, whats next? Well in this entire section of "Netscape's role", I have yet to mention what it did. So here it is. In the December of 1995, a guy (overdosing on caffiene) named Brendan Eich created JavaScript. Although it wasn't perfect (and it still isn't), it was another step in making the web a real application platform. -Now instead of making completely static experiences with a round-trip to the server, you could just update the DOM directly on the page. - -### JavaScript's initial use wasn't ideal - -Instead of the intended use of JavaScript as a client-side scripting language used for enhancing the user experience, it was more used for annoying users on web pages with popups and ads. -But, this was ok (I guess), this was just the start of something new, and there were going to be some people using it for malicous purposes. - -But here we need to introduce... - -## Microsoft - -MS saw a huge success with the launch of Windows 95, which was itself a significant milestone for the Operating System. But, then they saw the internet and its potential. And they **WANTED** a slice of it too. -So, what was the easiest way to control it? Well, getting control over the users who use it. They did this by shipping Internet Explorer along with Windows. - -##### Oh god, this was the worst thing that could happen. - -Microsoft never really cared about playing by the rules. Instead of integrating Web Standards in their browser, they just did whatever the hell they wanted and came up with two abomiations, _"JScript"_ (basically proprietery JavaScript) and _"VBScript"_ (Pushing their own language to the web). This did not go well, and both of these will be removed from future versions of IE going past its market share decline. But in the 90s, it was still a huge monopoly flex for Microsoft since they controlled like 95% of the marketshare. - -## Things look bad for JavaScript, so what's next? - -Not for long. JavaScript was indeed painful to write so most developers just chose to ignore it. I mean, back then you didn't even have stuff like `document.querySelector()` or `fetch()`. JUST LOOK AT THIS CODE: - -```js -function changeColor() { - // IE < 9 doesn't support getElementsByClassName() - var elements = document.getElementsByTagName("div"); - var arr = []; - - for (var i = 0; i < elements.length; i++) { - if (elements[i].className === "example") { - arr.push(elements[i]); - } - } - - for (var i = 0; i < arr.length; i++) { - arr[i].style.backgroundColor = "red"; - } -} - -function showAlert() { - alert("Button was clicked!"); -} - -var button = document.getElementById("button"); - -// IE < 9 only supports attachEvent(), not addEventListener() -if (button.attachEvent) { - button.attachEvent("onclick", showAlert); -} else if (button.addEventListener) { - button.addEventListener("click", showAlert); -} else { - button.onclick = showAlert; -} - -changeColor(); -``` - -**Source**: [The past, current state & future of JavaScript frameworks](https://www.youtube.com/watch?v=5EsLj3JOdE0) - -Now comes the revival of JavaScript with two important technologies, AJAX and JQuery. - -## AJAX - -This was originally popularized by Google. AJAX allows you to send a HTTP request to the server **without** the need for reloading the entire page. See how valuable it is? Its like _its almost_ the thing we need to build a full-blown web app. But... the API kinda sucks. This much code just to send a request? jeez. - -```js -var xhttp = new XMLHttpRequest(); -xhttp.onreadystatechange = function () { - if (this.readyState == 4 && this.status == 200) { - // Typical action to be performed when the document is ready: - document.getElementById("demo").innerHTML = xhttp.responseText; - } -}; -xhttp.open("GET", "filename", true); -xhttp.send(); -``` - -Don't worry, the next big tech will fix this. - -## JQuery - -In 2006, John Resig was frustated with how hard it is to deal with cross browser issues. Like, bro, let me write code, not spend time looking on the internet to see whether its supported in Microsoft's stupid browser. So like any normal person (and most JS devs today), -he created JQuery! JQuery was revolutionary because it allowed you to build web applications, without worrying about browser compability. No wonder people started using it for everything immediately. And now after 17 years, its still used on the majority of websites out there. - -## OK Cool - -So JavaScript at this point is not so much of a pain as it was before. (thanks to JQuery) -But still, we cannot make a full-blown web app without it being miserably slow. JS is interpreted in the browser and way to slow to render and update UI fast enough. - -## What chrome helped us to achieve - -In 2008, Google released Chrome. But more importantly, it also introduced the V8 engine. V8 for the first time actually Just-in-Time compiled the JavaScript leading to much better performance. -This not only means that existing experiences are going to get faster, but this also opens to native-like experiences directly in a web browser. JavaScript was the only major programming language at the time that actually had stuff like state and data/control flow. -Since JavaScript's speed problem has been fixed, it now opens doors for new more interactive experiences on the web. Sundar Pichai even mentioned in his take that he wants to "move" his tools to the web browser. (checkout the launch, I am too lazy to give you the link here :/) - -## Time to conquer the client - -In 2010, (the 13 years ago part I mentioned before) we got our first **JavaScript Frameworks**. -Many people might think this is where things went wrong, but honestly, this is where we actually built **real applications** that rival native apps. - -One of the most significant frameworks of this time was [AngularJS](https://angularjs.org). I myself don't like AngularJS, but I really like the quote from its creator Miško Hevery. - -> "HTML & JavaScript for web-apps rather than documents" - -This outlines a clear picture on what the world was heading into, **web apps that get as interactive as it gets**. - -## \ - -So Facebook recently released this new framework called React, and looks like the JS community isn't very happy about its design decisions. - -With comments like _"React JS is interesting, but JSX, just ugh....."_, it looked like something dead on arrival. -But then one person named _"Sophie Alpert"_ just told everyone to give it a try, and in no time, woah. Almost every site is using it. - -## The age of web apps - -Frameworks, toolchains, browsers. Everything just right to make an actual app-like experience in a website. So, lets get on it! Now we have apps like GMail, Admin UIs (in Frameworks, more snappy), YouTube, Twitter (X sucks) - -We can now build actual web **apps**! There was also an emerging standard called "PWA" (Progressive Web Apps) that extend web apps to just feel like native apps that can be **installed**. - -## Wait, I need to download 2MB of JavaScript just to use your web app? No thank you. - -Oh wow its 2013 all over again. This is current state of things (in 2023). We finally realized, that _yes, web apps are amazing, but we should be a little bit more performance-aware otherwise there will be more harm than good_. - -One of the most significant comebacks in this state is the return of **progressive enhancement**. -If you live under a rock and don't know what this means, its basically rendering a normal HTML document where _most_ things work, but they have their default behaviour. -Then when the JS loads, it enhances the app by preventing page reloads and making the website feel more "native". -Honestly, this is what it should have been from the start. But anyways, I think its safe to say, we have come **full circle**. - -
-Static Documents -> -SSR pages -> -SSR pages with JQuery client -> -Single page applications -> -The web apps era -> -Back to SSR pages with client-side frameworks providing app like experiences with less JavaScript - -## The future - -This evolution has been a wild ride. I am excited to see the future that these technologies hold and what new inovation -will take over the world. - -## HEY YOU FORGOT WASM (bonus part) - -I know, I know, Web Assembly is the new kid on the block that many people are excited about. I am also looking forward to it, but in this article, I am mainly here to point out the evolution of JavaScript and Server-Side languages. -Its impressive to see JavaScript grow from a simple scripting language to a fullstack language powering isomorphic apps, and I can already imagine how more advanced the future is going to get with WASM + JavaScript. We are already seeing it in apps like Figma, and I expect more awesome stuff like this.