<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Dmitry Kudryavtsev</title><description>Articles in Software</description><link>https://kudmitry.com/</link><item><title>Feature unrequest</title><link>https://kudmitry.com/articles/feature-unrequest/</link><guid isPermaLink="true">https://kudmitry.com/articles/feature-unrequest/</guid><pubDate>Wed, 11 Mar 2026 19:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, &lt;a href=&quot;https://ghostty.org/&quot;&gt;Ghostty&lt;/a&gt; updated itself.
I switched to Ghostty some time ago, as I like to try new stuff and find better tools for my workflow.
With this new update, I noticed something changed in Ghostty.
There are now 3 dots at the top of the window, in the center.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img alt=&quot;New Ghostty &amp;quot;feature&amp;quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;  width=&quot;388&quot; height=&quot;64&quot; src=&quot;/_astro/ghostty.CLZQ6JBB_XcLsV.webp&quot; &gt;&lt;figcaption&gt;New Ghostty &quot;feature&quot;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I bet most people would not event notice it, but I have been blessed with being a pedantic person, and these 3 dots hurt in my eyes.
I live in my terminal: I use NeoVim for coding, I write this blog from the terminal, I manage servers from the terminal, and I install applications from the terminal.
80% of my time at my computer is spent in the terminal (the other ~19% in Firefox).&lt;/p&gt;
&lt;p&gt;And so I asked Claude what’s up with the 3 dots, and Claude found this &lt;a href=&quot;https://github.com/ghostty-org/ghostty/pull/10090&quot;&gt;pull request&lt;/a&gt; which introduced split drag and drop.
Scrolling through GitHub, I tried to find a way to disable it.
I don’t use terminal tabs, drag and drop, or mouse interaction; I live in NeoVim + &lt;code&gt;tmux&lt;/code&gt;.
And I didn’t find any way to disable it.
I ended up commenting on &lt;a href=&quot;https://github.com/ghostty-org/ghostty/discussions/10108&quot;&gt;this issue&lt;/a&gt; where another user said:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;agreed. this should not even exist&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;to which one of the contributors replied:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Bold claim, as there’s no other way to move splits. A feature that was far more requested.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I never requested this.
I never wanted splits or a way to drag and drop them.
Now, sure, this is &lt;em&gt;someone else’s&lt;/em&gt; project, and they can develop it the way they see right.
But for a very long time I had this idea of “complete and usable software”.&lt;/p&gt;
&lt;p&gt;A complete and usable software, is a software that has reached its maturity and now is in maintenance mode, i.e. bug fixing and keeping up with updates to the host machine / OS / etc.
&lt;code&gt;tmux&lt;/code&gt;, for example, is a complete and usable software.
A terminal emulator, is a complete and usable software once it reaches a state where it can, well, &lt;em&gt;emulate&lt;/em&gt; video terminal, like Alacritty.&lt;/p&gt;
&lt;p&gt;But there is a fine line with complete and usable software, that if you keep pushing features, you enter the enshittification era — an era where your software goes into the rabbit hole of being too feature-rich to a point it is no longer usable by anyone.
You keep justifying it with “but users requested this feature”, yea well, the problem is that there is no “unrequest feature” option.
I liked Ghostty because it was a minimal terminal emulator that you would install and it worked out of the box.&lt;/p&gt;
&lt;p&gt;I don’t want to sound overdramatic, but I switched back to Alacritty.
Yes, these 3 dots killed my enthusiasm for this software.
A good software is a software that does its work and gets out of the way of the user.
Updates should be essentially invisible.&lt;/p&gt;
&lt;p&gt;Take iOS.
The iOS on my iPhone was good.
I got used to it, I got used to the layout, the design, and the controls.
But then, I got a new iPhone, and it came with Liquid Glass, and now I want to throw my iPhone away.
Despite the fact that I have upgraded from a 6-year-old iPhone, to a “better, more powerful, the best iPhone we have ever made”(c) (as of September 2023), the experience &lt;strong&gt;just sucks&lt;/strong&gt;.
The liquid ass design that I never wanted, with the slow and clunky interface.
I never wanted it.
So I would like to “feature unrequest” it.&lt;/p&gt;
&lt;p&gt;And I could keep going on and on about software that was feature complete, but had to invent features in order to justify future development, or simply because software engineers don’t like the term “maintenance”.
So everyone chases “feature requests”, but I’d argue that “features unrequests” should be as important as feature requests.&lt;/p&gt;</content:encoded></item><item><title>xz backdoor</title><link>https://kudmitry.com/articles/xz-backdoor/</link><guid isPermaLink="true">https://kudmitry.com/articles/xz-backdoor/</guid><pubDate>Thu, 04 Apr 2024 08:45:00 GMT</pubDate><content:encoded>&lt;p&gt;A malicious backdoor was discovered in &lt;code&gt;xz&lt;/code&gt; library that implements LZMA compression.
&lt;code&gt;xz&lt;/code&gt;, among many other places, is used, indirectly, in &lt;code&gt;sshd&lt;/code&gt;.
My attempt to explain what happened.&lt;/p&gt;
&lt;div class=&quot;callout&quot; data-callout=&quot;warning&quot; data-collapsible=&quot;false&quot;&gt;&lt;div class=&quot;callout-title&quot;&gt;&lt;div class=&quot;callout-title-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div class=&quot;callout-title-text&quot;&gt;WARNING&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;callout-content&quot;&gt;&lt;p&gt;I’m not a security researcher.
I did not analyze the backdoor, and this post is my attempt to make sense of what happened in simple words.&lt;/p&gt;&lt;p&gt;I’ll link to as much content as possible from people who are more competent than me.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;timeline&quot;&gt;Timeline&lt;/h2&gt;
&lt;p&gt;Around the year of 2005, Lasse Collin together with other people, creates the &lt;code&gt;xz&lt;/code&gt; library that implements the &lt;a href=&quot;https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Markov_chain_algorithm&quot;&gt;LZMA&lt;/a&gt; compression algorithm.
LZMA is a lossless compression algorithm.
Over the time, &lt;code&gt;xz&lt;/code&gt; becomes widely adopted in compressing data, and you’ve probably had to download at least one file that has the extension of &lt;code&gt;.tar.xz&lt;/code&gt;.
Most of the work on &lt;code&gt;xz&lt;/code&gt; was done by Lasse Collin, who, as we learn now, had personal struggle and not a lot of time to maintain the project.
This setup was perfect for some social engineering.&lt;/p&gt;
&lt;p&gt;At the end of 2021, we meet another person named Jia Tan.
Jia Tan starts to create little patches to &lt;code&gt;xz&lt;/code&gt;, but they are not merged.&lt;/p&gt;
&lt;p&gt;Forward to mid 2022, another person, named Jigar Kumar, complains that the development on &lt;code&gt;xz&lt;/code&gt; has stalled, and that the original maintainer should give the project to someone else.
An exchange of accusations from Jigar Kumar, and explanations from Lasse Collin, take place in the following months from April till early July 2022.
Eventually, Jia Tan becomes a maintainer of &lt;code&gt;xz&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It’s important to note few things.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;First&lt;/strong&gt;, Lasse Collin is a one person that maintains a free open source library.
A lot has been said on the state of open source and how maintainers treated unfairly.
Companies build a billion dollar products on top of free and open source software, while rarely giving anything back.
While the accusations from Jigar Kumar were probably part of social engineering, it’s not uncommon that maintainers of OSS are being harassed and demanded to patch their projects or keep developing them.
There are no indications that Lasse Collin was part of the execution, and everything points out to the fact that he is just a guy who maintained a fairly popular open source library, and had personal health issues and lack of time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secondly&lt;/strong&gt;, there are no proofs that both Jia Tan and Jigar Kumar are real individuals (rather than state actors); not the same person; didn’t know each other; none of this was planned.
Jigar Kumar does not appear anywhere else on the internet apart from a few mailing list exchanges where he pushes Lasse Collin to give up the project to another person.
Jia Tan does not appear anywhere else on the internet apart from small commits to &lt;code&gt;xz&lt;/code&gt; about 2 years ago in order to build credibility and gain trust.&lt;/p&gt;
&lt;p&gt;I’ll skip some other technical milestones in the timeline.
You can read a detailed explanation by &lt;a href=&quot;https://research.swtch.com/xz-timeline&quot;&gt;Russ Cox&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;the-backdoor&quot;&gt;The Backdoor&lt;/h2&gt;
&lt;p&gt;The TL;DR; version is that Jia Tan goes on to create a very sophisticated backdoor that hides inside compressed &lt;code&gt;xz&lt;/code&gt; (irony?) files that are, presumably, used for testing.
This is smart, because nobody would suspect a compressed file inside &lt;code&gt;tests/&lt;/code&gt; folder to be malicious.
In fact, it’s common practice to have mock data for tests, and these things are rarely checked during PRs, as we assume they are just test data.&lt;/p&gt;
&lt;p&gt;The backdoor, which is hidden in multiple compressed files, taps into the build process of the &lt;code&gt;xz&lt;/code&gt; library—essentially replaces the &lt;code&gt;RSA_public_decrypt&lt;/code&gt; function symbol with a malicious function that gives an attacker, who possess a particular private key, &lt;strong&gt;remote execution capabilities&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This means that when SSH server is launching, it tries to load a dynamic library and looks for &lt;code&gt;RSA_public_descrypt&lt;/code&gt; function, which is a legit function.
However, if the distributed &lt;code&gt;xz&lt;/code&gt; library is malicious, then it modifies the way the dynamic library resolves &lt;code&gt;RSA_public_descrypt&lt;/code&gt; function, and instead it loads a malicious code.
This code listens to a particular payload that is encrypted by a private key, that apparently only Jia Tan have, and using the embedded public key inside the code, it validates the payload (by checking that it was signed by Jia Tan’s private key)—and if so, it executes whatever is in the payload.&lt;/p&gt;
&lt;p&gt;SSH runs as root.
It has to, because it needs to de-escalate your privileges down to the particular user account that you log in with.
This means that using remote code execution backdoor, one could bypass the entire account management and gain root access to a Linux machine that runs SSH.
In case if you are not aware, this means millions, if not more, of machines all around the world.
From web servers, to networking equipment, industrial equipment management systems (manufacturing, power plants, military and civilian objects), personal and home appliances, etc.
Everything that runs SSH using &lt;code&gt;systemd&lt;/code&gt;, on a rolling release Linux distribution, is vulnerable.&lt;/p&gt;
&lt;p&gt;The backdoor was assigned the &lt;code&gt;CVE-2024-3094&lt;/code&gt; identifier, and has the base score of &lt;strong&gt;10.0 CRITICAL&lt;/strong&gt;, the highest possible severity.&lt;/p&gt;
&lt;h2 id=&quot;discovery&quot;&gt;Discovery&lt;/h2&gt;
&lt;p&gt;The backdoor was, accidentally, discovered by Microsoft employee and PostgerSQL contributor Andres Freund, when he was benchmarking PostgreSQL and noticed that his SSH connection took a hundred milliseconds longer and used more CPU cycles.
He first thought that it has to do with a compromised Debian package, but later found out that the entire upstream xz repository has been compromised.
If he hadn’t discovered it, there is a good chance that this vulnerability could have been reached major Linux distributions, and even production servers and systems.&lt;/p&gt;
&lt;p&gt;There are discoveries now that Jia Tan was in talks with major Linux distributions to push his malicious version of &lt;code&gt;xz&lt;/code&gt;.
One such example, is &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/xz-utils/+bug/2059417&quot;&gt;this bug request for Ubuntu&lt;/a&gt; to update to &lt;code&gt;xz&lt;/code&gt; to 5.6.1.&lt;/p&gt;
&lt;p&gt;Andres shared his finding in an &lt;a href=&quot;https://www.openwall.com/lists/oss-security/2024/03/29/4&quot;&gt;Openwall mailing list&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;who-is-behind-the-backdoor&quot;&gt;Who is behind the backdoor?&lt;/h2&gt;
&lt;p&gt;As of the time of publishing this article, there are no evidence that Jia Tan/Jigar Kumar are real individuals, and the consensus in the security community, is that a state actor is behind this attack.
It seems like this backdoor was at least 2 years in the making, carefully planned and executed.
Neither Jia Tan nor Jigar Kumar exist outside the few posts on mailing list of &lt;code&gt;xz&lt;/code&gt;.
Jia Tan’s role was to write the backdoor, while Jigar Kumar’s role was to pressure Lasse Collin to pass &lt;code&gt;xz&lt;/code&gt; to another maintainer.&lt;/p&gt;
&lt;p&gt;While this attack could have been carried out by an individual, or two, the fact that it was almost three years in the making, and the level of sophistication, points out to either an organized group, or a state actor.
I could name at least 6 state actors who have the ability and the desire to plan and execute such attack, given the geopolitical situation in the past 3 years.
I will, however, refrain from doing so, as the situation is still unfolding.&lt;/p&gt;
&lt;h2 id=&quot;whats-next&quot;&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;I want to come back to &lt;a href=&quot;https://xkcd.com/2347/&quot;&gt;XKCD #2347&lt;/a&gt;.
It clearly illustrates the modern digital infrastructure and the role that OSS plays in it.&lt;/p&gt;
&lt;p&gt;We tend to forget that, but most of the modern digital infrastructure is run on the backs of hobby projects that few people maintain in their free time.
These people are prone to losing interest, burn out, and other personal problems.
And they are, like everyone else, prone to social engineering.&lt;/p&gt;
&lt;p&gt;It’s unfortunate that Lasse Collin found himself in that situation.
At one point, his GitHub account was even suspended (but it seems like it was reinstated few days ago).
I don’t think he had any malicious intents, and he was just a guy maintaining a fairly popular open source library.&lt;/p&gt;
&lt;p&gt;But we also need to remember that while the world became a safer place, there are still malicious actors in it.
It is impossible to audit every single line of code out there.&lt;/p&gt;
&lt;p&gt;Time will tell how we will move forward with OSS and our digital infrastructure, but as of today, we are thanking Andres who cares about CPU cycles, even in a world where everyone seems to solve their performance problems with “just buy more RAM”, and “let’s spin another EC2 instance”.&lt;/p&gt;
&lt;h2 id=&quot;further-reading&quot;&gt;Further reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2024-3094&quot;&gt;CVE-2024-3094&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/XZ_Utils_backdoor&quot;&gt;XZ Utils Backdoor Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.schneier.com/blog/archives/2024/04/xz-utils-backdoor.html&quot;&gt;XZ Utils Backdoor - Schneier on Security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.openwall.com/lists/oss-security/2024/03/29/4&quot;&gt;Andreas Freund - backdoor in upstream xz/liblzma leading to ssh server compromise - Openwall&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tukaani.org/xz-backdoor/&quot;&gt;XZ Utils backdoor - Lasse Collin | Tukaani&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27&quot;&gt;FAQ on the xz-utils backdoor (CVE-2024-3094) - Github Gists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://research.swtch.com/xz-timeline&quot;&gt;Timeline of the xz open source attack - Russ Cox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.redhat.com/en/blog/urgent-security-alert-fedora-41-and-rawhide-users&quot;&gt;Urgent security alert for Fedora Linux 40 and Fedora Rawhide users - RedHat Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>Own your content</title><link>https://kudmitry.com/articles/own-your-content/</link><guid isPermaLink="true">https://kudmitry.com/articles/own-your-content/</guid><pubDate>Wed, 30 Aug 2023 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For the past years, we’ve witnessed a rise of new type of social media platforms.
Platforms that compete for the ownership of your content.
And the attention of your consumers.&lt;/p&gt;
&lt;h2 id=&quot;from-owning-to-renting&quot;&gt;From owning to renting&lt;/h2&gt;
&lt;p&gt;Before I’ll talk about why, and how you should own your content—let me briefly cover the transition we’ve made from owning stuff, to renting stuff.
Feel free to skip to &lt;a href=&quot;#why-you-should-own-your-content&quot;&gt;#Why you should own your content&lt;/a&gt; if you are not interested in a bit of history.&lt;/p&gt;
&lt;p&gt;As consumers, we used to own the things we paid for.
If I bought a DVD with The Matrix movie—it’s mine forever.
I can re-watch it as many times as I want.
I can create copies from it, convert it to different formats, and watch it on different computers &lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.
The only way someone can take it from me—is by stealing, which is punishable by law.&lt;/p&gt;
&lt;p&gt;I remember the days when we used to buy new music albums of our favorite bands.
These days are over, because everything is now for rent.
I was very surprised when I learned that even the Kindle books I buy—are rented to me.
Yes, I knew that Kindle books are protected by DRM, and it’s hard (not impossible) to read them on a non kindle device.
It’s not perfect, but I’m okay with such arrangement.&lt;/p&gt;
&lt;p&gt;However, when I checked the terms and conditions of Kindle books, I found out that the content is not sold, but rather licensed to us.
I tweeted about it back in December.&lt;/p&gt;
&lt;div class=&quot;flex justify-center&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-dnt=&quot;true&quot; data-theme=&quot;dark&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I kind of swallowed the pill that I no longer own music or video content. I don&apos;t watch that much TV shows or movies, and anyway I rarely rewatch them. And so losing video content due to platform&apos;s removal - is sad, I won&apos;t cry over it. But I discovered something interesting.👇🧵&lt;/p&gt;— Dmitry Kudryavtsev (@skwee357) &lt;a href=&quot;https://twitter.com/skwee357/status/1605896638974795776?ref_src=twsrc%5Etfw&quot;&gt;December 22, 2022&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;And in case you are not aware: your Netflix shows, Spotify playlists, etc—are all rented to you.
There are cases when content that was available in your geographic region, or even content &lt;strong&gt;you bought&lt;/strong&gt;—was removed from the platform.&lt;/p&gt;
&lt;p&gt;But I don’t want to ramble too much about content ownership from a consumer perspective.
It is important, don’t get me wrong.
But I’m here to talk about content ownership as a producer, which also participated in the “rental revolution”.&lt;/p&gt;
&lt;h2 id=&quot;why-you-should-own-your-content&quot;&gt;Why you should own your content&lt;/h2&gt;
&lt;p&gt;Content was, and still is, one of the biggest assets you can create.
This blog is visited by hundreds of people daily—because it has the knowledge that I possess, presented in textual format.
Content is the reason we have the Internet in the form we have it today.
And it’s incredible.&lt;/p&gt;
&lt;p&gt;I’ve learned so much from other people’s blogs and posts.
And I’m doing my best to spread my knowledge further, to more people.
And while I want to do it on my terms, there are companies that want to monopolize this market.
They create tools for easy content creation, and distribution—but in return they gather most of the rewards.&lt;/p&gt;
&lt;p&gt;These companies will lock content behind a pay-wall.
They will create their services is such way to make sure their users—the content consumers—will stay on their platform.&lt;/p&gt;
&lt;h3 id=&quot;&quot;&gt;$$$&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Gee, Dmitry!! You are so anti-capitalism!&lt;/em&gt;
No I’m not.
I believe that people who produce content—should be able to get paid for their content, if they choose to do so.
I don’t mind pay-walls.
I just don’t want to pay to big corporations that will cut their chunk of the profit.
Supporting creators directly would be my preferred way.&lt;/p&gt;
&lt;p&gt;We already have a model where big corp gets the payment.
The music industry is a good example.
Small creators rarely see any real profits from their work, because labels take most of the money.
Do we really want to create yet another model like this?&lt;/p&gt;
&lt;h3 id=&quot;the-real-cost-of-outsourcing-your-content&quot;&gt;The real cost of outsourcing your content&lt;/h3&gt;
&lt;p&gt;Paying for the content, however, is not the biggest problem with these platforms.
The real cost comes in a simple fact—you no longer own your content.
It’s left to the mercy of the platform.&lt;/p&gt;
&lt;p&gt;I saw a LinkedIn post from &lt;a href=&quot;https://www.linkedin.com/in/gergelyorosz/&quot;&gt;Gergely Orosz&lt;/a&gt; recently.
In this post, Gergely said that his Google Document was blocked due to “&lt;em&gt;violations of the ToS&lt;/em&gt;”.
Gergely is a paying customer.
And even though he pays Google, Google didn’t bother to contact or notify Gergely that his document &lt;strong&gt;might&lt;/strong&gt; violate their ToS.
Here is the &lt;a href=&quot;https://www.linkedin.com/posts/gergelyorosz_googleworkspace-activity-7099737294235947008-W5Kb?utm_source=share&amp;#x26;utm_medium=member_desktop&quot;&gt;LinkedIn post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The internet is filled with examples of people who were blocked from their accounts, or whose work was removed from the platform.
YouTube, Medium, Spotify, Google—you can find examples of all of them.&lt;/p&gt;
&lt;p&gt;And what happens when a platform goes down?
Do you remember Revue?
It was a newsletter platform, which was owned by Twitter.
Shortly after Elon purchased Twitter, Revue stopped existing.
Luckily for me, who used this platform, and many others—Revue offered an option to take out the data.
Do they all offer such option?
Don’t know.&lt;/p&gt;
&lt;h3 id=&quot;you-are-your-brand&quot;&gt;You are your brand&lt;/h3&gt;
&lt;p&gt;It’s hard to talk, or in my case write, about branding without sounding like a wanna-be-twitter-influencer.
But in reality branding, and especially personal branding—existed for many years, decades even, if not centuries.
And for many content producers, their content becomes their brand.
I know of technical bloggers who are getting jobs because of their blogs.&lt;/p&gt;
&lt;p&gt;In his book, &lt;a href=&quot;https://www.amazon.com/Developer-Hegemony-Erik-Dietrich/dp/0692866809&quot;&gt;Developer Hegemony: The Future or Labor&lt;/a&gt; (not an affiliate link), Erik Dietrich talks a bit about branding.
One of the traits of the “opportunist developer”, as Erik calls them, is that they market themselves.
Here is what Erik writes about marketing and branding:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Everyone I interviewed markets themselves, with varying degrees of deliberateness. But all of them have made names for themselves. Blogging is, perhaps, the most common vehicle and was frequently mentioned. But podcast appearances, user group participation, video creation, and speaking at conferences all factor heavily into the equation for the developer opportunists. They have made themselves known by marketing themselves.&lt;/p&gt;&lt;p&gt;— Erik Dietrich, Developer Hegemony&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;But guess what happens to your brand when you let someone else own your content?
You are essentially creating a brand for the hosting platform.
When I land on a Medium article, I don’t care who wrote it.
I just learn that a lot of people write on Medium.&lt;/p&gt;
&lt;p&gt;But when I land on a personal blog, I explore a bit.
I check who is the author.
Where does he work?
What else did he write?
I subscribe to his newsletter; favorite his blog.&lt;/p&gt;
&lt;h2 id=&quot;how-to-own-your-content&quot;&gt;How to own your content&lt;/h2&gt;
&lt;p&gt;I hope I was able to convince you that owning your content, rather than renting it to a third-party platform, is the better alternative.
The next question you might ask is &lt;strong&gt;How&lt;/strong&gt;.
I can’t give you a definitive answer for every use-case.
But I can provide some guidelines, mainly for written content.&lt;/p&gt;
&lt;h3 id=&quot;host-it-yourself&quot;&gt;Host it yourself&lt;/h3&gt;
&lt;p&gt;The reason people resort to big name platforms—is because they might lack the technical know-how of hosting their own blog.
But since I posted this in my technical blog, rather than the &lt;a href=&quot;https://www.jikokaizen.blog/&quot;&gt;second one&lt;/a&gt;, I assume you are a technical person.
Hosting your own blog is not complicated.
Writing your own platform—takes a couple of evenings, and there are existing platforms like &lt;a href=&quot;https://gohugo.io/&quot;&gt;hugo&lt;/a&gt; or &lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt;.
And if you are really lazy, you can self-host WordPress.&lt;/p&gt;
&lt;p&gt;And it’s cheap.
Like $0 cheap.
You can host it on Netlify (not affiliated).
And if Netlify takes down your site, or it becomes expensive, you can move to any other place, &lt;strong&gt;because you own your content&lt;/strong&gt;.
By having your own domain, pointing to your own content, you will never lose SEO or branding due to movement from one hosting provider to another.
I honestly don’t understand why people choose existing platforms—that lock your readers in their ecosystem, and end up owning your content—rather than self-hosting.&lt;/p&gt;
&lt;h3 id=&quot;posse&quot;&gt;POSSE&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;POSSE?&lt;/em&gt;
&lt;em&gt;Yew, sounds gross!&lt;/em&gt;
But stay with me for a moment.
&lt;em&gt;&lt;a href=&quot;https://indieweb.org/POSSE&quot;&gt;POSSE&lt;/a&gt;&lt;/em&gt; is an abbreviation for &lt;strong&gt;Publish (on your) Own Site, Syndicate Elsewhere&lt;/strong&gt;.
It’s a common term in the IndieWeb movement with a simple mission: because you self-host your content, you shouldn’t deprive consumers from your knowledge.&lt;/p&gt;
&lt;p&gt;Our content is worth as long as it’s useable for our readers.
And, as the Stoics believe, I can only control my actions.
I can’t force everyone to go to my blog.
Some people do like the ease-of-use of existing platforms.
And they deserve to enjoy your knowledge as well.&lt;/p&gt;
&lt;p&gt;So the premise behind POSSE is to always publish on your own website—for the benefits of owning your content, and building your brand.
But syndicate this content to other platforms.
And remember to always use the correct &lt;code&gt;canonical&lt;/code&gt; URL, so search engines will prefer your self-hosted copy, over syndicated one.
And platforms that do not support &lt;code&gt;canonical&lt;/code&gt; URL—should cease from existing.&lt;/p&gt;
&lt;h2 id=&quot;final-words&quot;&gt;Final words&lt;/h2&gt;
&lt;p&gt;Owning your content concept extends way beyond blogs posts.
But this post is already at ~1700 words, and I want to make it short and to the point.
If you are interested in other forms of content ownership, and my approach to them—feel free to reach out to me via LinkedIn, Twitter, Mastodon, or Email.&lt;/p&gt;
&lt;h3 id=&quot;you-are-a-lair&quot;&gt;&lt;em&gt;”You are a lair!”&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Yes I am.
While I do believe in owning my content, I’m not without sins myself.
My &lt;a href=&quot;https://yieldnews.substack.com/&quot;&gt;newsletter&lt;/a&gt; is still powered by Substack.
However, I’m in the process of moving away from Substack.&lt;/p&gt;
&lt;p&gt;I’ll use those last words as shameless self-promotion.
I’m building a newsletter platform for the privacy centered people.
People who care about owning their content, rather than participating in the creation of yet another big-tech social-network.&lt;/p&gt;
&lt;p&gt;It’s currently under heavy development, and I share a lot of the process in my Twitter and Mastodon.
I encourage you to follow me there.
And if you don’t have any of them, then subscribe to my newsletter in order to be the first to know when it launches.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Own your content&lt;/em&gt;.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;That might not always be true. Some countries might forbid you from re-encoding the files &lt;strong&gt;you own&lt;/strong&gt;. Crazy, I know. IMNAL. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>The need for a more semantic web</title><link>https://kudmitry.com/articles/the-need-for-a-more-semantic-web/</link><guid isPermaLink="true">https://kudmitry.com/articles/the-need-for-a-more-semantic-web/</guid><pubDate>Fri, 17 Feb 2023 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The web has come a long way. From the early static pages, through the evolution of reactivity, and towards the biggest knowledge pool for all of humanity.&lt;/p&gt;
&lt;h2 id=&quot;a-little-history-of-the-web&quot;&gt;A little history of the web&lt;/h2&gt;
&lt;p&gt;The World Wide Web (WWW), which is commonly known as the Web, was invented by Tim Berners-Lee at CERN in 1989. It’s an information system that enabled documents and other web resources such as—images, videos, music, etc—to be accessed over the internet.&lt;/p&gt;
&lt;p&gt;I, myself, being an early user of the web, saw it transform through different generations and paradigms. I like to call them Web 1.0, Web 2.0 and Web 3.0. Let’s explore the unique characteristics of each of those eras.&lt;/p&gt;
&lt;h3 id=&quot;web-10&quot;&gt;Web 1.0&lt;/h3&gt;
&lt;p&gt;When I talk about Web 1.0, I refer to the early state of the Web. The state where there was practically no standard and no interactivity. Web pages, back then, used to be completely static and written entirely in HTML (which was poorly defined as a standard back then). CSS was non-existent (it was created later, in 1996). JavaScript, which appeared in 1995, was also unheard of.&lt;/p&gt;
&lt;p&gt;This was the era of the static, generic looking, web. This is how the &lt;a href=&quot;http://info.cern.ch/hypertext/WWW/TheProject.html&quot;&gt;first ever website&lt;/a&gt; looked like.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img src=&quot;/images/first-ever-website_dqzx4n.webp&quot; alt=&quot;First ever website#1424x546&quot;&gt;&lt;figcaption&gt;First ever website#1424x546&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Go on, check the source of it.&lt;/p&gt;
&lt;h3 id=&quot;web-20&quot;&gt;Web 2.0&lt;/h3&gt;
&lt;p&gt;With the birth of CSS and JavaScript, the world entered a new era of the Web. The Web 2.0. This web provided more colors. This web provided interactivity.&lt;/p&gt;
&lt;p&gt;Suddenly, people started to care about separation between structure (the HTML side) and appearance (the CSS side). HTML elements such as &lt;code&gt;&amp;#x3C;font&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;marquee&gt;&lt;/code&gt;, and &lt;code&gt;&amp;#x3C;strong&gt;&lt;/code&gt;—became deprecated, and were replaced with their CSS and JS counterparts.&lt;/p&gt;
&lt;p&gt;The Web 2.0 also saw the birth of the famous &lt;code&gt;XMLHttpRequest&lt;/code&gt; and the &lt;code&gt;Ajax&lt;/code&gt; technology. You could replace an entire webpage, or parts of it, without navigating away from the page—which created a feeling of what today is known as SPA—Single page application.&lt;/p&gt;
&lt;p&gt;On the HTML side, we saw the appearance of some semantic attributes such as &lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;section&gt;&lt;/code&gt;, &lt;code&gt;&amp;#x3C;aside&gt;&lt;/code&gt;, and others. Finally, in 2008, HTML5 was released, which among many things, added a support for &lt;strong&gt;Microdata&lt;/strong&gt;. Remember this, as we will talk about Microdata later.&lt;/p&gt;
&lt;p&gt;With the rise of the Web 2.0, came the rise in content published in the World Wide Web. Suddenly it became easier, cheaper, and more accessible to have a web page. People, and companies, started to care about web presence. And more over—the Web became a place of knowledge. This era gave birth to concepts such as blogging and forums. In 2001—Wikipedia was born. And as the amount of content grew, the need to find content became a necessity. In 1998 Google was created, and later became the dominant search engine till this day.&lt;/p&gt;
&lt;p&gt;Web 2.0 was a great era. An era of revolution in the way we present our webpages, as well as revolution in the way the Web is being used. But something happened, which ended the Web 2.0 era, and Web 3.0 became the new kid in the town.&lt;/p&gt;
&lt;h3 id=&quot;web-30&quot;&gt;Web 3.0&lt;/h3&gt;
&lt;p&gt;When we hear the term Web 3.0, most of us think about decentralized web, Bitcoin, NFTs, and blockchain. But in my opinion those technologies are unrelated to the Web. The Web was, and still is, a decentralized system. Yes, it is controlled by few major corporations. But nothing forbids me to buy a server, put it in a rack at my home, and plug in into the internet in order to serve my blog from it.&lt;/p&gt;
&lt;p&gt;For me, Web 3.0 means the birth of the &lt;strong&gt;semantic web&lt;/strong&gt;. Somewhere around the peak popularity of Facebook, the Web stopped being about webpages, and started to become more about &lt;strong&gt;things&lt;/strong&gt;. When I search for &lt;code&gt;@skwee357&lt;/code&gt;, I don’t want to find webpages that contain this obscure phrase/word. I want to find a person behind this handle (which is me). When I search for “Fight club”, I want to find the movie by David Fincher. The search term, “how to make pancakes”, should ideally yield a set of recipe results for pancakes.&lt;/p&gt;
&lt;p&gt;Web 3.0 is about things. It’s no longer about webpages and content. It’s about people, movies, recipes, tutorials, places, events, books. And the current state of things with Web 3.0—has one drawback.&lt;/p&gt;
&lt;h2 id=&quot;the-birth-of-the-semantic-web&quot;&gt;The birth of the semantic web&lt;/h2&gt;
&lt;p&gt;As I’ve noted earlier, during the Web 2.0 era, HTML got some new elements that aimed to make it more semantic. &lt;a href=&quot;http://www.tutorialspoint.com/html5/html5_new_tags.htm&quot;&gt;Here is a list of some of them&lt;/a&gt;. But have you ever wondered what’s the different between a &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; element and an &lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt; element? &lt;code&gt;&amp;#x3C;span&gt;&lt;/code&gt; vs &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; is a simple answer. The first does not create a new block, and can be incorporated inside a sentence without breaking it. But most of the other elements, such as &lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt; or &lt;code&gt;&amp;#x3C;header&gt;&lt;/code&gt;, do not have different behavior than say a &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;They do serve one major role—to help make the web more semantic. With the increased usage of the Web, came increased production of web content. And the latter created a demand for increased searching and indexing capabilities. And these semantic HTML elements—help search engines to classify your content. When a crawler sees an &lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt; element—it knows that the text, inside of it, is indeed an &lt;strong&gt;article&lt;/strong&gt;. Compare that to a generic &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; which does not provide any information about the nature of it’s content. It could be an article, but also could be a table of contents.&lt;/p&gt;
&lt;p&gt;Have you noticed how Google sometimes provide a snippet from Wikipedia, or recommend you a video from YouTube or Vimeo? How does Google, or any other search engine, knows to classify between a general section on your web page, and the content of the blog post? Probably by looking at the &lt;code&gt;&amp;#x3C;article&gt;&lt;/code&gt; HTML element. But there is more. How does a search engine know that “Brad Pitt” is an actor, “Fight Club” is a movie, and “1984” is a novel?&lt;/p&gt;
&lt;h3 id=&quot;semantic-semi-standards&quot;&gt;Semantic semi standards&lt;/h3&gt;
&lt;p&gt;Like with any new and established standard, someone first created a semi-standard. And this is what happening to Web 3.0 now. I believe that Facebook was the first to create the &lt;code&gt;og&lt;/code&gt; meta attributes to classify content. A webpage with correct &lt;code&gt;&amp;#x3C;meta&gt;&lt;/code&gt; tags with &lt;code&gt;og&lt;/code&gt; attributes—will provide semantic information to those who parse the &lt;code&gt;og&lt;/code&gt; meta attributes. One could provide information such as site name, description, associated image, etc. The &lt;code&gt;og&lt;/code&gt; attributes are responsible for content sharing. When you post a link to Facebook or LinkedIn, those platforms query the &lt;code&gt;og&lt;/code&gt; attributes in order to extract the title of the webpage, description, as well as cover image.&lt;/p&gt;
&lt;p&gt;But &lt;code&gt;meta&lt;/code&gt; attributes are limiting. And so other formats were created. I believe the first among them was &lt;a href=&quot;https://en.wikipedia.org/wiki/Resource_Description_Framework&quot;&gt;RDF&lt;/a&gt;—Resource Description Framework. RDF never gain much popularity, and was served as a foundation to newer semi-standards such as JSON-LD and Microdata, which I mentioned earlier when I wrote about HTML5. Those two formats took a different approach.&lt;/p&gt;
&lt;h4 id=&quot;microdata&quot;&gt;Microdata&lt;/h4&gt;
&lt;p&gt;Microdata was targeting to enhance existing HTML elements. By using Microdata, one can provide a set of special attribute to any HTML element. Combining with a set of predefined schemas, such as &lt;a href=&quot;https://schema.org/Event&quot;&gt;event&lt;/a&gt;, &lt;a href=&quot;https://schema.org/Product&quot;&gt;product&lt;/a&gt;, and &lt;a href=&quot;https://schema.org/Review&quot;&gt;review&lt;/a&gt;—one can provide additional context to crawlers about the nature of the content on a webpage. A geolocation with Microdata will look like this:&lt;/p&gt;
&lt;pre class=&quot;astro-code one-dark-pro&quot; style=&quot;background-color:#282c34;color:#abb2bf; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#D19A66&quot;&gt; itemprop&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#98C379&quot;&gt;&quot;geo&quot;&lt;/span&gt;&lt;span style=&quot;color:#D19A66&quot;&gt; itemscope&lt;/span&gt;&lt;span style=&quot;color:#D19A66&quot;&gt; itemtype&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#98C379&quot;&gt;&quot;https://schema.org/GeoCoordinates&quot;&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#D19A66&quot;&gt; itemprop&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#98C379&quot;&gt;&quot;latitude&quot;&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;52.48&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#D19A66&quot;&gt; itemprop&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#98C379&quot;&gt;&quot;longitude&quot;&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;-1.89&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Interestingly enough, according to &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Microdata&quot;&gt;MDN&lt;/a&gt;, Microdata support was removed from Firefox 49. According to &lt;a href=&quot;https://en.wikipedia.org/wiki/Microdata_(HTML)&quot;&gt;Wikipedia&lt;/a&gt;—no major browser support the Microdata DOM API. &lt;a href=&quot;https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data?visit_id=638120872435583159-706353772&amp;#x26;rd=1&quot;&gt;Google developers&lt;/a&gt; portal tells us that Google, still, does care, and parse, Microdata.&lt;/p&gt;
&lt;h4 id=&quot;microformats&quot;&gt;Microformats&lt;/h4&gt;
&lt;p&gt;Somewhere around the time Microdata became a thing, another semi-standard, that’s called Microformats—was created. Microformats took a similar approach to Microdata, but instead of relying on a good set of schemas to classify things (like the above event, product, or review I’ve mentioned), it went on to define custom CSS classes. So a geolocation would be marked as:&lt;/p&gt;
&lt;pre class=&quot;astro-code one-dark-pro&quot; style=&quot;background-color:#282c34;color:#abb2bf; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#D19A66&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#98C379&quot;&gt;&quot;h-geo&quot;&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#D19A66&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#98C379&quot;&gt;&quot;p-latitude&quot;&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;52.48&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#D19A66&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#98C379&quot;&gt;&quot;p-longitude&quot;&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;-1.89&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This approach created some problems. For starters, there was no schema definition for &lt;em&gt;thing&lt;/em&gt;. A crawler would have to implement all the &lt;code&gt;h-*&lt;/code&gt; and corresponding &lt;code&gt;p-*&lt;/code&gt; classes. Extending Microformats was practically impossible. In addition to that, the usage of CSS classes to classify content semantically—feels wrong.&lt;/p&gt;
&lt;h4 id=&quot;json-ld&quot;&gt;JSON-LD&lt;/h4&gt;
&lt;p&gt;Lastly, we need to talk about JSON-LD. JSON-LD is also a semantic web format. But instead of trying to build upon existing convention—like HTML element attributes, or CSS classes—JSON-LD relies on encoding your entire semantic information, in a &lt;code&gt;script&lt;/code&gt; tag. Here’s how it looks for the &lt;a href=&quot;/&quot;&gt;homepage&lt;/a&gt; of my blog:&lt;/p&gt;
&lt;pre class=&quot;astro-code one-dark-pro&quot; style=&quot;background-color:#282c34;color:#abb2bf; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:#D19A66&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#98C379&quot;&gt;&quot;application/ld+json&quot;&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;    &quot;@context&quot;: &quot;https://schema.org&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;    &quot;@type&quot;: &quot;Blog&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;    &quot;@id&quot;: &quot;https://www.yieldcode.blog&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;    &quot;name&quot;: &quot;yield code();&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;    &quot;description&quot;: &quot;Thoughts and stories on programming, the industry, and technology written by a software engineer&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;    &quot;author&quot;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;@type&quot;: &quot;Person&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;@id&quot;: &quot;https://www.kudmitry.com/&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;name&quot;: &quot;Dmitry Kudryavtsev&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;sameAs&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;        &quot;https://www.kudmitry.com/&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;        &quot;https://linkedin.com/in/kudmitry&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;        &quot;http://github.com/skwee357&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;        &quot;http://twitter.com/skwee357&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;image&quot;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;        &quot;@type&quot;: &quot;ImageObject&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;        &quot;url&quot;: &quot;https://res.cloudinary.com/dvp7olno1/image/upload/v1673035861/yieldcode/cover_eacuil.jpg&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;        &quot;height&quot;: &quot;150&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;        &quot;width&quot;: &quot;150&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;    &quot;keywords&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;programming&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;software industry&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;software engineering&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;tutorials&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;programming consulting&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;tech lead&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;      &quot;architect&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#E06C75&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:#ABB2BF&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;JSON-LD is one of the most popular semantic web formats, and it is the one recommended by Google. RDF and Microdata never became popular. Microformats has a small community among &lt;a href=&quot;https://indieweb.org/&quot;&gt;IndieWeb&lt;/a&gt; people, but it’s hardly a specification. It’s a gross hijack of CSS classes—that were created to style the HTML elements—not provide semantic information.&lt;/p&gt;
&lt;h2 id=&quot;making-web-30-great&quot;&gt;Making Web 3.0 great&lt;/h2&gt;
&lt;p&gt;HTML is an established format and specification. By looking at this webpage, you already have most of the semantic information you need. It makes no sense to duplicate the same semantic information inside a JSON in the HTML &lt;code&gt;&amp;#x3C;header&gt;&lt;/code&gt; tag, for the sake of crawlers. This creates unnecessary duplication, which in turn makes the webpage heavier.&lt;/p&gt;
&lt;p&gt;However, with the rise of Web 3.0 and the content era, we have to help crawlers understand our content better. The web needs to become cleaner for machines, so it will become cleaner for humans. If we introduce HTML elements such as &lt;code&gt;tag&lt;/code&gt;, &lt;code&gt;author&lt;/code&gt;, &lt;code&gt;recipe&lt;/code&gt;, and others—we can create a better web for machines, which will help to create a better web for us—humans.&lt;/p&gt;
&lt;h2 id=&quot;call-to-action&quot;&gt;Call to action&lt;/h2&gt;
&lt;p&gt;Web Hypertext Application Technology Working Group, also known as WHATWG, is a community of people interested in evolving the HTML. About a month ago, I’ve created a proposal at WHATWG Github: &lt;a href=&quot;https://github.com/whatwg/html/issues/8693&quot;&gt;Elements for a more semantic web&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The web is built on open formats. The evolution of HTML is needed in order to keep up with the changing nature of the Web. I hope I was able to convince you that we need to move HTML forward, and adapt it to the new reality of the Web 3.0—the semantic web. Failing to do so, will force us to use formats that were created, and controlled, by corporations—better built to serve their needs, rather than ours. In addition to that, by failing to provide semantic information to crawlers, we will either have to place our hope in the hands of AI classification tools (which are &lt;a class=&quot;internal new&quot; href=&quot;/articles/chatgpt-ai-and-the-future-of-tech/&quot;&gt;far from optimal&lt;/a&gt;), or worse—drown in a sea of search results that make no sense.&lt;/p&gt;
&lt;p&gt;If I did convince you, then please go to &lt;a href=&quot;https://github.com/whatwg/html/issues/8693&quot;&gt;my proposal&lt;/a&gt; and show your support. Together we will move HTML to its next level.&lt;/p&gt;</content:encoded></item></channel></rss>