aboutsummaryrefslogtreecommitdiff
path: root/public/state-of-web-technologies-and-web-development-in-year-2022.html
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2023-10-29 14:41:39 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2023-10-29 14:41:39 +0100
commit2836163e54e3b94342113314e70ee564c456c43e (patch)
tree59b82fc69e83cc6d92846a8e9f510b0bb865cf3b /public/state-of-web-technologies-and-web-development-in-year-2022.html
parentd50ea4053ea04abb3a455606d4591a8283af0677 (diff)
downloadmitjafelicijan.com-2836163e54e3b94342113314e70ee564c456c43e.tar.gz
Added public folder to git so it get get deployed on vercel
Diffstat (limited to 'public/state-of-web-technologies-and-web-development-in-year-2022.html')
-rwxr-xr-xpublic/state-of-web-technologies-and-web-development-in-year-2022.html202
1 files changed, 202 insertions, 0 deletions
diff --git a/public/state-of-web-technologies-and-web-development-in-year-2022.html b/public/state-of-web-technologies-and-web-development-in-year-2022.html
new file mode 100755
index 0000000..7046c77
--- /dev/null
+++ b/public/state-of-web-technologies-and-web-development-in-year-2022.html
@@ -0,0 +1,202 @@
1<!doctype html><html lang=en-us><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL69vf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv76+/8LBwQkAAAAAAAAAAAAAAAC+vb3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+9vf/Bv78JAAAAAAAAAAAAAAAAu7q6/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ubr/vr29CAAAAAAAAAAAy8nJAZ6foP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnqGj/6GipAoAAAAAHLjU/xcXHf/BwsL/I8XY/yPK3v8XGiD/IbjL/yPF2f8XGiD/Fxkf/yLF2f8gnK3/Fxog/62ztv8fwNf/FRcd/x271v8mz93/GRsi/xkXHf8p097/GiIp/xobIv8p0t3/KdPe/xocIv8fYmr/KNPe/xoZH/8aHCL/J87c/xy81/8VFxz/IsPZ/8zS0/8XGiD/Ir/R/yPH2/8XGiD/Fxkf/yPH2/8dd4T/GBog/yPJ3f8jyNr/uru9/xcUGv8cudb/EhITDKi5vRKlvMP/RUpOERwcHRAdOj4QHTk8EBwdHRAdNTgQHTo/EBwcHRAcHB0QSGduEKW4vf+koqQfHzg+EBqz0ewSFRv7EyMr/xq51vsTERb7ExUb+xq41fsau9j7ExUb+xiPp/sZudb7ExUb+xMVG/sZuNX/GKvI/BIUGfMdvdn/IrfL/xcaIP8n1eb/J9Dh/xkcIf8ZGR7/J8/f/xxCSv8ZGyH/J9Dg/ybQ4P8ZHCL/FSQs/yPK3/8UExj/GE1b/ybS5P8ZGB7/Ghwj/ynW5P8p2Ob/Ghwi/yWrtv8p1eH/Ghwi/xocIv8p1uT/J8XT/xkcIv8m1un/Hb7d/xUYH/8hzOr/HtHu/xcaIf8XGB//I8vi/xgxOv8XGSD/I8rg/yPK4P8XGiD/GUFL/yPP6f8SERj/Fhkh/x3A4f8AAAAAJ2f9/ydr//8mZPH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlYu38J2v//ydo/f8AAAAAAAAAAAd8/fkFqf//Iob8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMY39awWr//8FfP3/AAAAAAAAAAAFm/7/SfD//wR+/f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOB/f9B7v//BaX+/wAAAAAAAAAAQ878SAyZ/v9n1v4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADu9v8DDJb+/z3N/XgAAAAA3/sAAN/7AADf+wAA3/sAAAAAAAAAAAAAAAAAAN/7AAAAAAAAAAAAAAAAAAAAAAAAj/EAAI/5AACP8QAA3/sAAA==" rel=icon type=image/x-icon><title>State of Web Technologies and Web development in year 2022</title><meta name=description content="Initial thoughtsThis post is a critique on the current state of web development."><link rel=alternate type=application/rss+xml title="Mitja Felicijan's posts" href=https://mitjafelicijan.com/index.xml><link rel=alternate type=application/rss+xml title="Mitja Felicijan's notes" href=https://mitjafelicijan.com/notes.xml><style>body{padding:1rem;max-width:760px;background:#fff;font-family:sans-serif;line-height:1.35rem;font-size:16px;margin:0 auto}hr{margin-block-start:1.5rem}h1,h2,h3{line-height:initial}h1{font-size:xx-large}footer{margin-block-start:2rem}cap{text-transform:capitalize}table{max-width:100%;width:100%;border-collapse:separate;border-spacing:2px;border:1px solid #000;border-left:1px solid #999;border-top:1px solid #999}blockquote{font-style:italic}table thead{background:#eee}ul.list li{padding:.2em 0}ul{line-height:1.4em}td,th{border:1px solid #000;padding:4px;border-right:1px solid #999;border-bottom:1px solid #999;text-align:left}pre{text-wrap:nowrap;overflow-x:auto;padding:0 1em;border:1px solid #dcdcdc}code{padding:0 3px;font-size:14px;border:0}pre code{line-height:1.3em}pre,code,pre *,code *{font-family:monospace}figure{margin-inline-start:0;margin-inline-end:0}figcaption{text-align:center}figcaption p{margin:.3em 0 0}img,video,audio{max-width:100%}header{display:flex;flex-direction:row;gap:3rem}nav{display:flex;gap:.75rem}nav.main{flex-grow:1}.pstatus-orange{background:gold}.pstatus-green{background:#9acd32}.pstatus-red{background:#cd5c5c}@media only screen and (max-width:600px){body{padding:15px}header{flex-direction:column;gap:1rem}a{word-wrap:break-word}}</style><header><nav class=main itemscope itemtype=http://schema.org/SiteNavigationElement role=toolbar><a href=/>Home</a>
2<a href=https://git.mitjafelicijan.com/ target=_blank>Git</a>
3<a href=https://files.mitjafelicijan.com/ target=_blank>Files</a>
4<a href=/radio.pls target=_blank>Radio</a>
5<a href=/mitjafelicijan.pgp.pub.txt target=_blank>PGP</a>
6<a href=/curriculum-vitae.html>CV</a>
7<a href=/index.xml target=_blank>RSS</a></nav></header><main role=main><article itemtype=http://schema.org/Article><h1 itemtype=headline>State of Web Technologies and Web development in year 2022</h1><p><cap>post</cap>, Oct 6, 2022 on <a href=https://mitjafelicijan.com>Mitja Felicijan's blog</a><div><h2 id=initial-thoughts>Initial thoughts</h2><p><em>This post is a critique on the current state of web development. It is an
8opinionated post! I will learn more about this in the future, and probably
9slightly change my mind about some of the things I criticize.</em><p>I have started working on a hobby project about two weeks ago, and I wanted to
10use that situation as a learning one. Trying new things, new technologies, new
11tools. I always considered myself to be an adventurous person when it comes to
12technology. I never shy away from trying new languages, new operating systems
13etc. Likewise, I find the whole experience satisfying, and it tickles that part
14of my brain that finds discovery the highest of the mountains to climb.<p>What I always wanted to make was a coding game, that you would play in a browser
15(just to eliminate building binaries for each operating system) where you would
16level up your character and go into these scriptable battles. You know, RPG
17elements.<p>So, the natural way to go would be some sort of SPA (single page application)
18with basic routing and some state management. Nothing crazy.<blockquote><p><strong>Before we move on</strong>, I have to be transparent. Take my views on this with
19a grain of salt. I have only scratched the surface with these technologies,
20and my knowledge is full of gaps. This is my experience using some of these
21products for the first time or in a limited capacity.</blockquote><p>Having this out of the way, I got myself a fresh pot of coffee and down the
22rabbit hole I went.<h2 id=giving-react-js-a-spin>Giving React JS a spin</h2><p>I first tried <a href=https://reactjs.org/>React JS</a>. I kind of like it. Furthermore,
23I have worked with libraries like this in the past and also wrote a couple of
24them (nothing compared to that level), but I had the basic understanding of what
25was going on. I rolled up a project quickly and had basic things done in a
26matter of two hours, which was impressive.<p>I prefer using <a href=https://tailwindcss.com/>Tailwind CSS</a> for my styling
27pleasures, and integrating that was also a painless experience. It was actually
28nice to see that some things got better with time. In about 2 minutes I got
29Tailwind working, and I was able to use classes at my disposal. All that
30<code>postcss</code> stuff was taken care of by adding a couple of things in config files
31(all described really well in their documentation).<p>It is not that different from Vue which I have had more encounters with in the
32past People will probably call me a lunatic for saying this. But you know, it is
33the truth. Same same, but different. I still believe that using libraries like
34this is beneficial. I am not a JavaScript purist. They all have their quirks,
35but at the end of the day, I truly believe it’s worth it.<h2 id=bundlers-and-transpilers>Bundlers and Transpilers</h2><p>I still reject calling <a href=https://www.typescriptlang.org/>Typescript</a> to
36<a href=https://www.javascript.com/>JavaScript</a> conversion a "compilation process". I
37call them <a href=https://devopedia.org/transpiler>transpilers</a>, and I don’t care! 😈<p>And if you want to fight this, take a look at this little chart and be mad at
38it!<figure><img src=/posts/state-of-web/compiling-vs-transpiling.png alt="Compiling vs Transpiling"></figure><p>The first one that I ever used was <a href=https://webpack.js.org/>webpack</a>, and it
39was an absolute horrific experience. Saying this, it is an absolutely fantastic
40tool. I felt more like a config editor than actually a programmer. To be fair,
41I am a huge fan of <a href=https://www.gnu.org/software/make/>make</a>, and you can do as
42you wish with this information. I like my build systems simple.<p>Also, isn’t it interesting that we need something like
43<a href=https://babeljs.io/>Babel</a> to make JavaScript code work in a browser that has
44only one client side scripting available, which is by no accident also
45JavaScript. Why? I know why it’s needed, but seriously, why.<p>I haven’t used Babel for years now. Or if I did, it was packaged together by
46some other bundler thingy. Which does not make things better, but at least I
47didn’t need to worry about it.<p>I really don’t like complicated build systems. I really don’t like abstracting
48code and making things appear magical. The older I get, the more I appreciate
49clear and clean, expressive code. No one-liners, if possible.<p>But I have to give props to <a href=https://vitejs.dev/>Vite</a>! This was one of the
50best developer experiences I have ever had. Granted, it still has magical
51properties. And yes, it still is a bundler and abstracts things to the nth
52degree. But at least it didn’t force me to configure 700 lines of JSON. And I
53know that this makes me a hypocrite. You can’t have it all. Nonetheless, my
54reasoning here is, if using bundlers is inevitable, then at least they should
55provide an excellent developer experience.<p>I also noticed that now the catch-all phrase is “blazingly fast” and “lightning
56fast” and “next generation” and stuff like that. I mean, yeah, tools should get
57faster with time. But saying that starting a project now takes 2 seconds instead
58of 20 seconds is something that is a break it or make it kind of a deal is
59ridiculous. I don’t mind waiting a couple of seconds every couple of days. I
60also don’t create 700 projects every day, and also who does? This argument has
61no bite. All I want is a decent reload time (~100ms is more than good enough for
62me) and that is it.<p>You don’t need to sell me benefits if I only get them when I start a fresh
63project, and then try to convince me that this is somehow changing the fate of
64the universe. First of all, it is not. And second, if this is your only argument
65for your tool, I would advise you to maybe re-focus your efforts to something
66else. Vite says that startup times are really fast. And if that would be the
67only thing differentiating it from other tools, I would ignore it. But it has
68some really compelling features like <a href=https://www.geeksforgeeks.org/reactjs-hot-module-replacement/>Hot Module
69Replacement</a> that
70really works well. It was a joy to use.<p>So, I will be definitely using Vite in the future.<h2 id=jam-stack-mach-stack-no-snack>Jam Stack, Mach Stack no snack</h2><p>Let's get a couple of the acronyms out of the way, so we all know what we are
71talking about:<ul><li>Jam Stack - JavaScript, API and Markup<li>Mach Stack - Microservices, API-first, Cloud-Native SaaS, Headless</ul><p>It is so hard to follow all these new trendy things happening around you, that
72it makes you have a massive <strong>FOMO</strong> all the time. But on the other hand, you
73also don’t want to be that old fart that doesn’t move with the times and still
74writes his trusty jQuery code while listening to Blink 182 All the small things
75on full blast. It’s a good song, don’t get me wrong, but there are other songs
76out there.<p>I have to admit. <a href=https://vercel.com/>Vercel</a> is really cool! Love the
77simplicity of the service. You could compare it to
78<a href=https://www.netlify.com/>Netlify</a>. I haven’t tried Netlify extensively, but
79from a couple of experimental deployments I still prefer Vercel. It is much more
80streamlined, but maybe this is bias in me. I really like Vercel’s Analytics,
81which give you a <a href=https://web.dev/vitals/>Core Web Vitals report</a> in their
82admin console. Kind of cool, I’m not going to lie.<p>This whole idea about frontend and backend merging into <a href=https://www.debugbear.com/blog/server-side-rendering>SSR (server-side
83rendering)</a> looks so good
84on paper. It almost doesn’t come with any major flaws.<p>But when it comes to the actual implementation, there is much to be desired.
85I’m going to lump <a href=https://nextjs.org/>Next.js</a> and
86<a href=https://nuxtjs.org/>Nuxt.js</a> together because they are essentially the same
87thing, just a different library.<p>Now comes the reality. Mixing backend and frontend in this manner creates this
88weird mental model where you kind of rely on magical properties of these
89libraries. You relinquish control over to them for better developer experience.
90But is that really true? Initially, I was so stoked about it. However, the more
91I used them, the more I felt uncomfortable. I felt dirty, actually. Maybe this
92is because I come from old ways of doing things where you control every step of
93request, and allowing something to hijack it feels like blasphemy.<p>More than that, some pretty significant technical issues arose from this. How do
94you do JWT token authentication? You put it in <code>api</code> folder and then do some
95fetching and storing into local state management. But doing this also requires
96some tinkering with await/async stuff on the React/Vue side of things. And then
97you need to write middleware for it. And the more I look at it, the more I see
98that this whole thing was not meant to be used like this, and it all feels and
99looks like a huge hack.<p>The issue I have with this is that they over-promise and under-deliver. They
100want to be an all-in-one replacement for everything, and they don’t deliver on
101this promise. And how could they?! We have to be fair. It is an impossible task.<p>They sell you <a href=https://www.geeksforgeeks.org/overview-of-noops/>NoOps</a>, but
102when you need to accomplish something a little bit more out of the scope of
103Hello World, you have to make hacky decisions to make it work. And having a
104deployment strategy that relies on many moving parts is never a good idea.
105Abstracting too much is usually a sign of bad architecture.<p>Lately, this has become a huge trend that will for sure bite us in the future.
106And let’s not get it twisted. By doing this, PaaS providers like
107<a href=https://aws.amazon.com/>AWS</a>, <a href=https://cloud.google.com/>GCS</a>, etc. obscure
108their billing, and you end up paying more than you really should. And even if
109that is not an issue, it comes down to the principle of things. AWS is known for
110having multiple “currencies“ inside their projects like write operations, read
111operations, etc. which add up, and it creates this impossible to track billing
112scheme. It all behaves suspiciously like a pay-to-win game you could find on
113mobile phones that scams you out of your money.<p>And as far as I am concerned, the most important thing was me not coding the
114functionalities for the game I want to make. I was battling libraries and cloud
115providers. How to deploy, what settings are relevant. Bad documentation or
116multiple versions of achieving the same thing. You are getting bombarded by all
117this information, and you don’t really have any control over it.
118Production-ready code becomes a joke, essentially. Especially if you tend to
119work on that project for a prolonged period of time.<p>All of these options end up creating a fatigue. What to choose, what not to
120choose. Unnecessary worrying about if the stack will still be deemed worthy in
121six months. There is elegance in simplicity.<blockquote><p>JavaScript UI frameworks and libraries work in cycles. Every six months or
122so, a new one pops up, claiming that it has revolutionized UI development.
123Thousands of developers adopt it into their new projects, blog posts are
124written, Stack Overflow questions are asked and answered, and then a newer
125(and even more revolutionary) framework pops up to usurp the throne.
126— Ian Allen</blockquote><figure><img src=/posts/state-of-web/2008-vs-2020.png alt="To many options"></figure><p>And this jab at these libraries and cloud providers is not done out of malice.
127It is a real concern that I have about them. In my life, I have seen
128technologies come and go, but the basics always stick around. So surrendering
129all the power you have to a library or a cloud provider is in my opinion a
130stupid move.<h2 id=tailwind-css-still-rocks>Tailwind CSS still rocks!</h2><p>You know, many people say negative things about Tailwind. And after a lot of
131deliberation, I came to the conclusion that Tailwind is good for two types of
132developers. Tailwind is good for a complete noob or a senior developer. A
133complete noob doesn’t really care about inner workings of CSS, and a senior
134developer also doesn’t care about CSS. Well, at least, not anymore. And
135developers in between usually have the biggest issues with it. Not always of
136course, but in a lot of cases.<p>I like the creature comforts of Tailwind. Being utility first would make me
137argue that it is actually more similar to <a href=https://sass-lang.com/>Sass</a> or
138<a href=https://lesscss.org/>Less</a> than something like Bootstrap. Not technically, but
139ideologically. After I started using it, I never looked back. I use it every
140time I need to do something web related.<p>Writing CSS for general things feels like going several steps back. Instead of
141focusing on what you are actually trying to achieve, you focus on notations like
142<a href=https://en.bem.info/methodology/css/>BEM</a>, code structuring, optimizing HTML
143size. Just doing things that make 0.1% difference. You know that saying: Early
144optimization is the root of all evil. Exactly that.<p>I am also not saying that Tailwind is the cure for everything. Sometimes custom
145CSS is necessary. But from what I found out in using it for almost two years in
146a production environment (on a site getting quite a lot of traffic and
147constantly being changed), I can say without any reservations that Tailwind
148saved our asses countless times. We would be rewriting CSS all the time without
149it. And I don’t really think writing CSS is the best way to spend my time.<p>I have also noticed that people who criticize Tailwind the most never actually
150used it in a real project that has a long lifetime with plenty of changes that
151will happen in the future.<p>But you know, whatever floats your boat!<h2 id=code-maintainability>Code maintainability</h2><p>Somehow, people also stopped talking about maintenance. If you constantly try to
152catch the latest and greatest train, you are by that logic always trying new
153things. Which is a good thing if you want to learn about technologies and try
154them. But for the production environment, you have to have a stable stack that
155doesn’t change every 6 months.<p>You can lock dependencies for sure. Nevertheless, the hype train moves along
156anyway. And the mindset this breeds goes against locking the code. This
157bleeding-edge rolling release cycle is not helping. That is why enterprise
158solutions usually look down on these popular stacks and only do bare minimum to
159appear hip and cool.<p>With that said, I still think that progress is good, but should be taken with a
160grain of salt. If your project is something that should be built once and then
161rarely updated, going with the latest stack is a possible way to go. But, if you
162are working on a project that lasts for years, you should probably approach it
163with some level of caution. Web development is often times too volatile.<h2 id=web-development-has-a-marketing-issue>Web development has a marketing issue</h2><p>I noticed that almost every project now has this marketing spin put on it.
164Everything is blazingly fast now. I get it, they are competing for your
165attention, but what happened to just being truthful and not inflating reality.<p>And in order to appeal to mass market, they leave things out of their marketing
166materials. These open-source projects are now behaving more and more like
167companies do. Which is a scary thought on its self.<p>And we are also seeing a rise in a concept of building a company in the open,
168which is a good thing, don't get me wrong. But when it is using open-source to
169lure people and then lock them in their ecosystem, there is where I have issues
170with it.<p>This might be because I have been using GNU/Linux for 20 years now and have been
171so beholden for my success to open-source that I see issues when open-source is
172being used to trick people into a false sense of security that these projects
173are built in the spirit of open-source. Because there is a difference. They are
174NOT! They have a really specific goal in mind. And the open-source is being used
175as a delivery system. Which is in my opinion disgusting!<h2 id=conclusion>Conclusion</h2><p>I will end my post with this. Web development is running now in circles. People
176are discovering <a href=https://www.tutorialspoint.com/remote-procedure-call-rpc>RPC</a>
177now and this is the now the next big thing. <a href=https://graphql.org/>GraphQL</a> is
178so passé. And I am so tired of it all. Of blazingly fast libraries, of all these
179new technologies that are actually just a remake of old ones. Of just the
180general spirit of the web. I will just use what I already know. Which worked 10
181years ago and will work 10 years after this. I will adopt a couple of little
182tools like Vite. But I will not waste my time on this anymore.<p>It was a good exercise to get in touch with what’s new now. Nothing really
183changed that much. FOMO is now cured! Now I have to get my ass back to actually
184code and make the project that I wanted to make in the first place.</div></article></main><section><hr><h2>Posts from blogs I follow around the net</h2><ul><li><a href=https://chotrin.org/writing/2023-10-20.html target=_blank rel=noopener>OpenBSD upgrade and fall things.</a><div>Been AFK for a bit. It's autumn and I upgraded this server to OpenBSD 7.4! — <a href=https://chotrin.org>chötrin's wiki.</a><li><a href=https://mirzapandzo.com/next-image-url-parameter-is-valid-but-upstream-response-is-invalid target=_blank rel=noopener>Next/Image "url" parameter is valid but upstream response is invalid</a><div>Getting "url" parameter is valid but upstream response is invalid error with Next/Image on WSL2 — <a href=https://mirzapandzo.com/>Mirza Pandzo's Blog</a><li><a href=https://drewdevault.com/2023/10/13/Going-off-script.html target=_blank rel=noopener>Going off-script</a><div>There is a phenomenon in society which I find quite bizarre. Upon our entry to
185this mortal coil, we are endowed with self-awareness, agency, and free will.
186Each of th… — <a href=https://drewdevault.com>Drew DeVault's blog</a><li><a href=https://solar.lowtechmagazine.com/2023/10/workshop-in-rotterdam-how-to-build-a-bike-generator/ target=_blank rel=noopener>Workshop in Rotterdam: How to Build a Bike Generator</a><div>Afbeelding: Low-tech Magazine workshop in Rotterdam, the Netherlands. Poster: Marie Verdeil. Image: Sara Vercauteren
187The workshop takes place on behalf of the “Hou… — <a href=https://solar.lowtechmagazine.com/posts/>LOW←TECH MAGAZINE English</a><li><a href="http://offbeatpursuit.com:80/blog/?id=24" target=_blank rel=noopener>Printf debugging</a><div>tags:
188plan9
189There’s no shame in that. Yes, there is documentation, code to be
190read, and debuggers to be used. But sometimes you just need to “see”
191what is happening.
192So… — <a href=http://offbeatpursuit.com:80/blog/>WLOG - blog</a><li><a href=https://neil.computer/notes/chart-of-accounts-for-startups-and-saas-companies/ target=_blank rel=noopener>Chart of Accounts for Startups and SaaS Companies</a><div>Accounting is fundamental to starting a business. You need to have a basic understanding of accounting principles and essential bookkeeping. I had to learn it. Ther… — <a href=https://neil.computer/>Neil Panchal</a><li><a href=https://journal.valeriansaliou.name/deploy-a-nomad-cluster-on-alpine-linux-with-vultr/ target=_blank rel=noopener>Deploy a Nomad Cluster on Alpine Linux with Vultr</a><div>After spending countless hours trying to understand how to deploy my apps on Kubernetes for the first time to host Mirage, an AI API service that I run, I ended up … — <a href=https://journal.valeriansaliou.name/>Valerian Saliou</a><li><a href=https://jcs.org/2023/10/17/wikipedia target=_blank rel=noopener>Wikipedia Reader 1.0 Released</a><div>Wikipedia Reader
1931.0 has been released:
194wikipedia-1.0.sit
195(StuffIt 3 archive, includes
196source code
197and THINK C 5 project file)
198SHA256: 360e12d064f6579695f1e627ce34cb2f0… — <a href=https://jcs.org/>joshua stein</a></ul><p><a href=https://git.sr.ht/~sircmpwn/openring>Generated with openring.</a></section><footer><hr><p><big><strong>Want to comment or have something to add?</strong></big><p>You can write me an email
199at <a href=mailto:m@mitjafelicijan.com>m@mitjafelicijan.com</a> or
200catch up with me <a href=https://telegram.me/mitjafelicijan target=_blank>on Telegram</a>.<hr><p>This website does not track you. Content is made available under
201the <a href=https://creativecommons.org/licenses/by/4.0/ target=_blank rel=noreferrer>CC BY 4.0 license</a> unless specified
202otherwise. Blog is also available as <a href=/index.xml target=_blank>RSS feed</a>.</footer> \ No newline at end of file