Compare commits
21 Commits
36d325a6b5
...
test-markd
Author | SHA1 | Date | |
---|---|---|---|
478ded0e17 | |||
2bdda9ecc2 | |||
a58258034a | |||
090211fd46 | |||
c41dc77d77 | |||
28f8cd3c77 | |||
19271a179c | |||
d0b96cab18 | |||
010201b7b7 | |||
991e629125 | |||
c285e1ed73 | |||
ba196c9e91 | |||
50e6f61c9e | |||
8b33eddbef | |||
f156878888 | |||
560c19dfe9 | |||
71ef8b0769 | |||
5f2a2fc60c | |||
770b363846 | |||
f99092ba08 | |||
852a7f99d0 |
@ -2,86 +2,86 @@
|
||||
{
|
||||
"title":"The First Entry",
|
||||
"published_date":"Thu, 20 Jun 2019 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-000"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-000.html"
|
||||
},
|
||||
{
|
||||
"title":"The Migration",
|
||||
"published_date":"Wed, 07 Aug 2019 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-001"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-001.html"
|
||||
},
|
||||
{
|
||||
"title":"Configuring Dynamic DNS Records",
|
||||
"published_date":"Thu, 29 Aug 2019 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-002"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-002.html"
|
||||
},
|
||||
{
|
||||
"title":"? Matched Expression Does Not Match in Perl",
|
||||
"published_date":"Wed, 18 Sep 2019 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-003"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-003.html"
|
||||
},
|
||||
{
|
||||
"title":"The SBC Change",
|
||||
"published_date":"Mon, 02 Mar 2020 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-004"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-004.html"
|
||||
},
|
||||
{
|
||||
"title":"A Hit of Kubernetes",
|
||||
"published_date":"Thu, 21 May 2020 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-005"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-005.html"
|
||||
},
|
||||
{
|
||||
"title":"Optimizing Web Pages and File Sizes",
|
||||
"published_date":"Fri, 22 May 2020 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-006"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-006.html"
|
||||
},
|
||||
{
|
||||
"title":"Some Website Design and CSS",
|
||||
"published_date":"Mon, 08 Jun 2020 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-007"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-007.html"
|
||||
},
|
||||
{
|
||||
"title":"Git and Bash The Site",
|
||||
"published_date":"Thu, 02 Jul 2020 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-008"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-008.html"
|
||||
},
|
||||
{
|
||||
"title":"A Birth In The Family",
|
||||
"published_date":"Sun, 26 Jul 2020 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-009"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-009.html"
|
||||
},
|
||||
{
|
||||
"title":"Programming Anxiety",
|
||||
"published_date":"Thu, 13 Aug 2020 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-010"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-010.html"
|
||||
},
|
||||
{
|
||||
"title":"LXC and Friends",
|
||||
"published_date":"Thu, 20 Aug 2020 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-011"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-011.html"
|
||||
},
|
||||
{
|
||||
"title":"Migrating Everything to Proxmox - Part 1",
|
||||
"published_date":"Mon, 30 Nov 2020 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-012"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-012.html"
|
||||
},
|
||||
{
|
||||
"title":"A Brief Goodbye to CentOS",
|
||||
"published_date":"Wed, 09 Dec 2020 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-013"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-013.html"
|
||||
},
|
||||
{
|
||||
"title":"A Walk Along The Side",
|
||||
"published_date":"Tue, 27 Jul 2021 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-014"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-014.html"
|
||||
},
|
||||
{
|
||||
"title":"A Taste of Progress",
|
||||
"published_date":"Sat, 23 Oct 2021 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-015"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-015.html"
|
||||
},
|
||||
{
|
||||
"title":"Fighting With The Past",
|
||||
"published_date":"Sat, 29 Mar 2022 00:00:00 +0800",
|
||||
"guid":"https://www.clementchiew.me/blog/blog-016"
|
||||
"guid":"https://www.clementchiew.me/blog/blog-016.html"
|
||||
}
|
||||
]}
|
||||
|
4
blog/.quote.template
Normal file
4
blog/.quote.template
Normal file
@ -0,0 +1,4 @@
|
||||
<blockquote>
|
||||
<br>
|
||||
-
|
||||
</blockquote>
|
@ -4,22 +4,26 @@
|
||||
</header>
|
||||
|
||||
<ul>
|
||||
<li><a href="blog-016">2022-03-29 Fighting With The Past</a></li>
|
||||
<li><a href="blog-015">2021-10-23 A Taste of Progress</a></li>
|
||||
<li><a href="blog-014">2021-07-27 A Walk Along The Side</a></li>
|
||||
<li><a href="blog-013">2020-12-09 A Brief Goodbye to CentOS</a></li>
|
||||
<li><a href="blog-012">2020-11-30 Migrating Everything to Proxmox - Part 1</a></li>
|
||||
<li><a href="blog-011">2020-08-20 LXC and Friends</a></li>
|
||||
<li><a href="blog-010">2020-08-13 Programming Anxiety</a></li>
|
||||
<li><a href="blog-009">2020-07-26 A Birth In The Family</a></li>
|
||||
<li><a href="blog-008">2020-07-02 Git and Bash The Site</a></li>
|
||||
<li><a href="blog-007">2020-06-08 Some Website Design and CSS</a></li>
|
||||
<li><a href="blog-006">2020-05-22 Optimizing Web Pages and File Sizes</a></li>
|
||||
<li><a href="blog-005">2020-05-21 A Hit of Kubernetes</a></li>
|
||||
<li><a href="blog-004">2020-03-02 The SBC Change</a></li>
|
||||
<li><a href="blog-003">2019-09-18 ? Matched Expression Does Not Print in Perl</a></li>
|
||||
<li><a href="blog-002">2019-08-29 Configuring Dynamic DNS Records</a></li>
|
||||
<li><a href="blog-001">2019-08-07 The Migration</a></li>
|
||||
<li><a href="blog-000">2019-06-20 The First Entry</a></li>
|
||||
<li><a href="blog-020.html">2024-01-14 Pushing New Boundaries</a></li>
|
||||
<li><a href="blog-019.html">2023-12-01 Seeking New Paths</a></li>
|
||||
<li><a href="blog-018.html">2023-10-31 We Need More Motivation</a></li>
|
||||
<li><a href="blog-017.html">2023-03-29 New Year New Beginnings</a></li>
|
||||
<li><a href="blog-016.html">2022-03-29 Fighting With The Past</a></li>
|
||||
<li><a href="blog-015.html">2021-10-23 A Taste of Progress</a></li>
|
||||
<li><a href="blog-014.html">2021-07-27 A Walk Along The Side</a></li>
|
||||
<li><a href="blog-013.html">2020-12-09 A Brief Goodbye to CentOS</a></li>
|
||||
<li><a href="blog-012.html">2020-11-30 Migrating Everything to Proxmox - Part 1</a></li>
|
||||
<li><a href="blog-011.html">2020-08-20 LXC and Friends</a></li>
|
||||
<li><a href="blog-010.html">2020-08-13 Programming Anxiety</a></li>
|
||||
<li><a href="blog-009.html">2020-07-26 A Birth In The Family</a></li>
|
||||
<li><a href="blog-008.html">2020-07-02 Git and Bash The Site</a></li>
|
||||
<li><a href="blog-007.html">2020-06-08 Some Website Design and CSS</a></li>
|
||||
<li><a href="blog-006.html">2020-05-22 Optimizing Web Pages and File Sizes</a></li>
|
||||
<li><a href="blog-005.html">2020-05-21 A Hit of Kubernetes</a></li>
|
||||
<li><a href="blog-004.html">2020-03-02 The SBC Change</a></li>
|
||||
<li><a href="blog-003.html">2019-09-18 ? Matched Expression Does Not Print in Perl</a></li>
|
||||
<li><a href="blog-002.html">2019-08-29 Configuring Dynamic DNS Records</a></li>
|
||||
<li><a href="blog-001.html">2019-08-07 The Migration</a></li>
|
||||
<li><a href="blog-000.html">2019-06-20 The First Entry</a></li>
|
||||
</ul>
|
||||
<hr>
|
||||
|
27
blog/content-017
Normal file
27
blog/content-017
Normal file
@ -0,0 +1,27 @@
|
||||
<header>
|
||||
<h1>New Year New Beginnings</h1>
|
||||
</header>
|
||||
|
||||
<h2>Long Break</h2>
|
||||
<p>Whew, it has been a long time since this website was up. Talk about downtime. Long story short, I got a new job as a Cloud Engineer. I moved to a new rental that did not have a router that supported port forwarding. I was not about to replace the shared WiFi and work got busy and yeah you get the idea. The website went down. My server is sleeping in the storage bin. Well that did not take long. Anyway, new year new me.</p>
|
||||
|
||||
<h2>Hosting Problems</h2>
|
||||
<p>What do I do when self-hosting is now an issue? Time to turn to the "cloud". Turns out the cloud just means that your data is now hosted by another organization's computers. We are all familiar with the wry jokes about cloud platform by now. Anyway, I looked into what are the available free tier options that we have now. Thanks to past me, this site is just a bunch of static files ready to go, so hosting this site is not hard.</p>
|
||||
|
||||
<p>Since I am already going with a cloud provider, I have higher requirements than just "Nginx/Apache in a VM". I looked into solutions that provides high availability worldwide and can remove maintenance headaches from self-hosting; or as the cool kids say, serverless solutions. If I am going to sacrifice my own privacy by not owning my own hosting, I am not letting the sacrifice go in vain. Here are my impressions of the options that I have explored. </p>
|
||||
|
||||
<ul>
|
||||
<li>Microso - No.</li>
|
||||
<li>Google Cloud Load Balancer + Google Cloud Storage Bucket backend : Load Balancer not included in free tier.</li>
|
||||
<li>Oracle Cloud Free Tier : Generous VM sizes but no serverless solution.</li>
|
||||
<li>AWS CloudFront + S3 Storage : Generous free tier but configuration is quite complex.</li>
|
||||
<li>Cloudflare R2 + Page Rules : Generous free tier but confusing dashboard. </li>
|
||||
<li>Hetzner Cloud : Need a certain level of consumption to take advantage of the cheap VMs, and no serverless solution.</li>
|
||||
</ul>
|
||||
|
||||
<p>There are a couple of smaller or niche cloud providers, but most of them do not have worldwide presence or do not have a good free tier. For those that do, it is not a serverless solution, so this was enough research for me.</p>
|
||||
|
||||
<p>Ultimately I went with Cloudflare. It took me less than an hour to set up my Cloudflare account and billing, upload my files into R2, and then configure the one page rule I need to redirect www.clementchiew.me to the index.html file. It was pretty delightful to be able to hand over management of SSL certificates and have QUIC support right out of the gate. I do have my hestitations with Cloudflare, but being able to take advantage of Cloudflare's free R2 egress and free up my cognitive load of web server management is quite valuable to me.</p>
|
||||
|
||||
<h2>What's Next</h2>
|
||||
<p>There have been so many changes in the past year, both worldwide and in my personal life. I have so much to write about and so many ideas that I want to note down. See me here again soon.</p>
|
23
blog/content-018
Normal file
23
blog/content-018
Normal file
@ -0,0 +1,23 @@
|
||||
<header>
|
||||
<h1>We Need More Motivation</h1>
|
||||
</header>
|
||||
|
||||
<p>You know, like "We need more pylons", but with motivation, get it? Never mind. Like a running joke with my friend goes:"The workshop is dead". You know, the joke workshop. Tough crowd huh, never mind.</p>
|
||||
|
||||
<p>Today would be about motivation, specifically the motivation to learn tech. I have been in "tech" for about 5 years now, what am I now? Or rather, what have I grown to be? If you're here something technical, probably time to click away. This sentence is added after I typed the rest, so warning that the article goes off the rails quite a bit.</p>
|
||||
|
||||
<h2>Learning Everything, Yet Learning Nothing</h2>
|
||||
<p>As I reach a certain number in my age, I guess the responsibilities and realities of an adult starts to, as the increasingly distant "young" generation goes, "gets real". Without divulging a large part of what makes "adulting" in my personal life increasingly difficult, a larger part has been trying to continue to nurture and encourage myself to continue to learn tech. What does it even mean to "learn"?</p>
|
||||
|
||||
<p>At this beautiful year of 2023, there never has been a more abundant year for technology in IT. The scourge of blockchain nonsense is dead, AI models are slowly growing to be more competent, and IT development methodologies are slowly breaking the ouroboros cycle of tooling madness. I still spend a bit of time every day reading about technologies, but I find myself increasingly distant from the what consitutes as "learning". At work, the responsibilities revolve about reading a ton of material, but none of them really let you get into the "nitty gritty" parts; the parts that truly explain what are you going to do, the parts that makes you actually grow. You learn everything, but yet you learn nothing. </p>
|
||||
|
||||
<h2>An Overview From Orbit</h2>
|
||||
<p>The market is slowly disconnecting from each other. Companies are falling out of love with open source, and we the slaves to these technologies are facing an increasingly uphill battle to be relevant. As companies continue to consolidate their products and solutions, unless you're the lucky few to work at companies that are large enough to be included in acronyms, we no longer "know" the products we use. When you spin up a virtual machine on your cloud provider, are you still using a KVM hypervisor, or are you using a proprietary product that is compatible with KVM? When you use a S3 API to upload your blob files, what is going on in the sausage machine so that your files can now be seamlessly accessed from every part of the world? A "Unix-compatible" interface on a blob storage, how are these filesystem calls translated? We are increasingly led to learn about things that kind of makes sense, but also kind of don't. Your CI/CD needs workflows, pipelines, zones, frameworks, etc. Companies are increasingly saying, "Shhh. Stop learning more, start understanding less. Trust the process and slip us some money while at that".<p>
|
||||
|
||||
<p>When all you learn is to be locked in to a company's product, how meaningful are your skills? A pianist can continue to play pianos from another brand, a shoemaker can just buy his tools from a generic company in China, a hammer-ist can just buy another hammer. Sure, you could just "learn a new language", you could just adapt to a new file syntax like yaml or HCL, but I'd wager this is a situation unique to IT. Spending hundreds of hours finding the right kind of glue to bring products together, but spending zero time making sense because this terrible combination of products was decided by some C-suite who wants to "turn things around" in the company.</p>
|
||||
|
||||
<p>Perhaps at this point you might be thinking, "You are not not working for the right company", "You need a difference perspective", "You're terribly young and this is nothing new" and I would be glad to be convinced so, but the water is starting to boil and I'm not the only frog. I don't know what's the takeaway from this article other than a doomer-ist perspective. Perhaps it's a reflection on my dimming outlook of the world and global trends. Wars, famine, climate change, and more are here and in full force, but we are here in hour long meetings explaining how authentication tokens work to a senior engineer from the customer that has muted his mic and walked away from the laptop. Fun times ahead.</p>
|
||||
|
||||
<h2>Tailscale Is Cool</h2>
|
||||
<p>It's cool, go check it out. It's like Hamachi from years past but way more useful. Now I can just use a Docker compose file to spin up my Gitea containers and expose the service with HTTPS already included with a Funnel. Tailscale, if you're reading this, please let me redirect my CNAME record to my funnel thanks.</p>
|
||||
|
16
blog/content-019
Normal file
16
blog/content-019
Normal file
@ -0,0 +1,16 @@
|
||||
<header>
|
||||
<h1>Seeking New Paths</h1>
|
||||
</header>
|
||||
|
||||
<h2>It's Golang</h2>
|
||||
<p>Oh wow, this is going to be a short one. I decided to pick up Golang on a whim and I am pleasantly surprised. I have picked up Golang a few times before, but it never clicked until this time, and oh boy did it click this time. I love the strongly-typed nature of the language, and how ergonomic everything is. Sure, there are some things that I would miss from Python like list comprehensions, but when Golang is blazing fast compiled, do I still miss them? I surely do not miss the pre-optimization going on in my head whenever I write Python.</p>
|
||||
|
||||
<h2>It's The Little Things</h2>
|
||||
<p>Coming from the shithole called the Python packaging ecosystem, Golang set me free. No longer do I have to suffer from pip refusing to install packages, Poetry trying to do weird shit, using virtualenv to create "safe" spaces; Golang allows me to do the most important part of coding itself: the code. Dockerfiles with Python almost always devolve into some unholy incantation of pip and some demonic workaround to "get it right".</p>
|
||||
|
||||
<p>No longer do I have to start thinking about how Python would shank me sideways for "poor" coding decisions; Golang coding styles are simple but straightforward. Golang tests all function calls to make sure that they match the type signatures. The development cycle is tight and fast.</p>
|
||||
|
||||
<p>I just spend an hour yesterday reading about how Flask only has one event loop and one worker, how multiple requests are shared by one worker, oh-my-what-a-terrible-decision-please-use-ASGIS, worrying about having to move to a "production" quality server set up, and all that noise. If I have to read one more "comprehensive" guide on asyncio, threading, subprocesses, and how I need to do some convoluted set up just to get concurrency, I'd rather just git init a new Golang project. On Golang, concurrency is already built into net/http.</p>
|
||||
|
||||
<h2>It's Coming I Swear</h2>
|
||||
<p>After countless of dead projects that my hard drive only knows of, I feel like Golang has truly pushed my determination to places I've never been before. It's exhilarating and exciting. Experienced Golang devs, let me have thismoment, before I crawl back into the depths of Python.</p>
|
19
blog/content-020
Normal file
19
blog/content-020
Normal file
@ -0,0 +1,19 @@
|
||||
<header>
|
||||
<h1>Pushing New Boundaries</h1>
|
||||
</header>
|
||||
|
||||
<h2>Hell Yeah It Is About Golang</h2>
|
||||
<p>I've always wanted to start project and properly finish it. Thanks to Golang and a heck ton of conversations with ChatGPT, I managed to make it happen. No more dead projects in the water, no more stranded code without an end in sight. </p>
|
||||
|
||||
<p>So what is it? What have my grubby little fingers created by hammering these poor blue switches for over 3 months in my spare time? <a href="https://tarot.dingo-bramble.ts.net/index.html">A tarot reader that is</a>. Just a boring tarot reader. Yes, yes, it is done with "AI". Yes, it is done with GPT-3.5. Yes, yes, it is probably worse than those chatbot wrappers you get off Play Store that scams with a hefty annual subscription if you forget to cancel the free trial. You go the site, you "talk" via a text form to an entity that tells you ambiguous futures and whatnots about what's on your mind.</p>
|
||||
|
||||
<h2>How It Works</h2>
|
||||
<p>It is pretty much a Golang chatbot that is prompted to talk like a tarot reader. I generated the tarot card set with Dall-E. Link it up with some basic Postgres tables to store conversation, put it behind Caddy+Tailscale Funnel to serve HTTPS traffic and that is pretty much all. Unimpressive, I know.</p>
|
||||
|
||||
<h2>But Why</h2>
|
||||
<p>Because I can. But really, it is because I never "knew" front end development. In this age of Bootstrap, AngularJS, Tailwind, and whatever is going on with front end development, it has always felt that I am served the same thing but on different plates. This project has allowed me to go in depth on how many things came together. CSS styles, the Javascript DOM model, HTML divs, etc. Never had I spent so much time reading MDN and realized the wealth of knowledge that is available on it.</p>
|
||||
|
||||
<h2>Conclusion And Some More</h2>
|
||||
<p>This project is not "creative". If you are against OpenAI, then this project is "useless" too. But it was not useless to me. The "democratization" of LLMs gave me the push forward to places I have not been before. LLMs was the teacher that I never had, and the assistant that could do "that one thing" that you never really understand.</p>
|
||||
|
||||
<p>What about the poor artists I have ripped off? What about the treasure trove of knowledge that these LLMs were trained on that contains a ton of copyrights and IPs? Should I have stopped to wonder to wonder whether I should, before wondering whether I could? Is this code legitimately "mine"? I do not have the answers. But without the push from LLMs, the barrier of entry to the ever-changing landscape of tech has never been so accessible.</p>
|
@ -6,7 +6,7 @@
|
||||
</head><body>
|
||||
<p><div class="navbar">
|
||||
<div><a href="../index.html">Home</a></div>
|
||||
<div><a href="blog--01">Blog</a></div>
|
||||
<div><a href="https://gitea.clementchiew.me/explore/repos">Git</a></div>
|
||||
<div><a href="blog--01.html">Blog</a></div>
|
||||
<div><a href="https://renraku.dingo-bramble.ts.net/clement">Git</a></div>
|
||||
<div><a href="../files/CV.pdf">CV</a></div>
|
||||
</div></p><hr>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<hr><p><div class="navbar">
|
||||
<div><a href="blog-PREVPADINT">Prev</a></div>
|
||||
<div><a href="blog-NEXTPADINT">Next</a></div>
|
||||
<div><a href="blog-PREVPADINT.html">Prev</a></div>
|
||||
<div><a href="blog-NEXTPADINT.html">Next</a></div>
|
||||
</div></p>
|
||||
|
5
blog/quote-017
Normal file
5
blog/quote-017
Normal file
@ -0,0 +1,5 @@
|
||||
<blockquote>
|
||||
Home isn't where you're from, it's where you find light when all grows dark.
|
||||
<br>
|
||||
- Pierce Brown, Golden Son
|
||||
</blockquote>
|
5
blog/quote-018
Normal file
5
blog/quote-018
Normal file
@ -0,0 +1,5 @@
|
||||
<blockquote>
|
||||
"Life in this world," he said, "is, as it were, a sojourn in a cave. What can we know of reality? For all we see of the true nature of existence is, shall we say, no more than bewildering and amusing shadows cast upon the inner wall of the cave by the unseen blinding light of absolute truth, from which we may or may not deduce some glimmer of veracity, and we as troglodyte seekers of wisdom can only lift our voices to the unseen and say humbly,'Go on, do Deformed Rabbit... it's my favourite.'"
|
||||
<br>
|
||||
- Didactylos, Small Gods
|
||||
</blockquote>
|
21
blog/quote-019
Normal file
21
blog/quote-019
Normal file
@ -0,0 +1,21 @@
|
||||
<blockquote>
|
||||
Woo-wee! Evil Morty! That was quite a scheme. Makes me wonder if there's an evil me out there. But I guess, sometimes I look at my life, and I may not even need ‘im. Cuz, well, guess I made a pretty big mess of things myself. Ooo eee.
|
||||
|
||||
I never got my job at the university back. Remember that? Rick made me do karate. It was kinda funny, but I guess things went downhill from there.
|
||||
|
||||
Started isolating myself from Amy. Used to tell her everything I was feeling.
|
||||
|
||||
But then I guess I stopped.
|
||||
|
||||
Cuz I wanted her to love who she thought I was, not who I felt myself becoming.
|
||||
|
||||
Ever think about how horrified the people we love would be if they found out who we truly are? So we just dig ourselves deeper, into our lies every day, ultimately only hurting the people who were brave enough to love us.
|
||||
|
||||
Wish I didn't do that.
|
||||
|
||||
Wish I was brave enough to love them back. I don't know. Maybe you should try it.
|
||||
|
||||
We don't have as much time as we think. Ooo eee.
|
||||
<br>
|
||||
- Mr. Poopybutthole
|
||||
</blockquote>
|
5
blog/quote-020
Normal file
5
blog/quote-020
Normal file
@ -0,0 +1,5 @@
|
||||
<blockquote>
|
||||
“but what should we do when the highborn and wealthy take to crime? Indeed, if a poor man will spend a year in prison for stealing out of hunger, how high would the gallows need to be to hang the rich man who breaks the law out of greed?”
|
||||
<br>
|
||||
- Terry Pratchett, Snuff
|
||||
</blockquote>
|
72
blog/test1.xml
Normal file
72
blog/test1.xml
Normal file
@ -0,0 +1,72 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.7.45"/><title/></head><body><header><h1>A Walk Along The Side</h1></header><p>This year has been tumultuous so far. Combine equal parts cabin
|
||||
fever, poor mental health, and escapism, and you get a person who
|
||||
has difficulties putting words into a creative composition. Instead
|
||||
of posting a success story later about how I have overcome my
|
||||
obstacles in life, I felt it was equally important to document my
|
||||
lower moments as well. This post would be a feeble attempt to keep
|
||||
this website alive.</p><h2>Proxmox VE 7.0</h2><p>Kudos to Proxmox and their team for the latest release of
|
||||
Proxmox VE. The upgrade process was smooth and well documented. The
|
||||
inclusion of the upgrade checks was amazing to say the least.</p><h2>New Work, New Schedule</h2><p>No longer a support engineer, I now have a regular work and
|
||||
sleep routine. This routine frees me from the debilitating schedule
|
||||
that once held me prisoner from social activities or engaging in
|
||||
self-improvement. Ironically, this has only enabled my escapism
|
||||
habits.</p><p>I spent several months grinding away Witcher 3 and its DLCs.
|
||||
It's an amazing RPG for a game of its time. Between killing
|
||||
monsters for coin and saving Ciri, there were plenty of side quests
|
||||
to keep the player going. The only downside was how the devs
|
||||
decided to handle the post-game content. What a shame. I also
|
||||
dropped a few weeks into Rimworld and its expansive world of war
|
||||
crimes and extensive modding. I ultimately stopped playing because
|
||||
of the soul-crushing loss of a moderately successful colony. It was
|
||||
fun making money by harvesting organs from prisoners and skinning
|
||||
their bodies for leather. Mood debuffs begone.</p><p>During these days of gaming, I lost track of my work on myself.
|
||||
The game sessions were fun, but not nourishing. Like tending liquor
|
||||
to a wounded soul, this escapism does not heal, it only numbs it
|
||||
for another day. I find nothing but more guilt at the bottom of the
|
||||
metaphorical bottle.</p><h2>Lockdowns</h2><p>As the Covid situation worsens in Malaysia, hope is bleak and no
|
||||
end is in sight. Cases in our nation rise to record highs but its
|
||||
people are furious. Furious to be held prisoner in their own homes
|
||||
but not furious enough to discipline themselves for a safer future.
|
||||
Citizens have never been more divided ; An increasing number of the
|
||||
lesser minded are pushing for the release of the lockdowns; The
|
||||
infected be damned, my momentary freedom worth their sacrifice,
|
||||
until the time comes for my lungs to be on the chopping block. As
|
||||
much as I'm privileged to be safe from the horrors of the pandemic,
|
||||
cabin fever is catching up to me. I feel myself losing grip of my
|
||||
identity and my flow of time. My moods grew from restlessness to
|
||||
agitation, then to apathy. I can only hope for the better.</p><h2>Unexpected EOF</h2><p>I shall stop here. Thanks for reading so far. For you dear
|
||||
reader, stay strong and stay safe. Like the euphoric sight of your
|
||||
first double rainbow or the arduous toils of your younger days,
|
||||
times like these, too, shall pass.</p><blockquote>The works of the roots of the vines, of the trees, must
|
||||
be destroyed to keep up the price, and this is the saddest,
|
||||
bitterest thing of all. Carloads of oranges dumped on the ground.
|
||||
The people came for miles to take the fruit, but this could not be.
|
||||
How would they buy oranges at twenty cents a dozen if they could
|
||||
drive out and pick them up? And men with hoses squirt kerosene on
|
||||
the oranges, and they are angry at the crime, angry at the people
|
||||
who have come to take the fruit. A million people hungry, needing
|
||||
the fruit- and kerosene sprayed over the golden mountains. And the
|
||||
smell of rot fills the country. Burn coffee for fuel in the ships.
|
||||
Burn corn to keep warm, it makes a hot fire. Dump potatoes in the
|
||||
rivers and place guards along the banks to keep the hungry people
|
||||
from fishing them out. Slaughter the pigs and bury them, and let
|
||||
the putrescence drip down into the earth. There is a crime here
|
||||
that goes beyond denunciation. There is a sorrow here that weeping
|
||||
cannot symbolize. There is a failure here that topples all our
|
||||
success. The fertile earth, the straight tree rows, the sturdy
|
||||
trunks, and the ripe fruit. And children dying of pellagra must die
|
||||
because a profit cannot be taken from an orange. And coroners must
|
||||
fill in the certificate- died of malnutrition- because the food
|
||||
must rot, must be forced to rot. The people come with nets to fish
|
||||
for potatoes in the river, and the guards hold them back; they come
|
||||
in rattling cars to get the dumped oranges, but the kerosene is
|
||||
sprayed. And they stand still and watch the potatoes float by,
|
||||
listen to the screaming pigs being killed in a ditch and covered
|
||||
with quick-lime, watch the mountains of oranges slop down to a
|
||||
putrefying ooze; and in the eyes of the people there is the
|
||||
failure; and in the eyes of the hungry there is a growing wrath. In
|
||||
the souls of the people the grapes of wrath are filling and growing
|
||||
heavy, growing heavy for the vintage.<br/>
|
||||
- John Steinbeck</blockquote></body></html>
|
4
blog/test2.xml
Normal file
4
blog/test2.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0"?>
|
||||
<rss version="2.0"><channel><title>My Little Spot</title><link>https://www.clementchiew.me.</link><description> </description><language>en-us</language><pubDate>$pubdate</pubDate><lastBuildDate>$pubdate</lastBuildDate><docs>https://www.clement.chiew/blog/rss</docs><generator>Some random bash scripts</generator><managingEditor>clementchiew@disroot.org</managingEditor><webMaster>clementchiew@disroot.org</webMaster>
|
||||
$itemlist
|
||||
</channel></rss>
|
82
blog/test3.xml
Normal file
82
blog/test3.xml
Normal file
@ -0,0 +1,82 @@
|
||||
<item>
|
||||
<title>Star City</title>
|
||||
<link>
|
||||
http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp
|
||||
</link>
|
||||
<description>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.7.45"/><title/></head><body><header><h1>A Walk Along The Side</h1></header><p>This year has been tumultuous so far. Combine equal parts cabin
|
||||
fever, poor mental health, and escapism, and you get a person who
|
||||
has difficulties putting words into a creative composition. Instead
|
||||
of posting a success story later about how I have overcome my
|
||||
obstacles in life, I felt it was equally important to document my
|
||||
lower moments as well. This post would be a feeble attempt to keep
|
||||
this website alive.</p><h2>Proxmox VE 7.0</h2><p>Kudos to Proxmox and their team for the latest release of
|
||||
Proxmox VE. The upgrade process was smooth and well documented. The
|
||||
inclusion of the upgrade checks was amazing to say the least.</p><h2>New Work, New Schedule</h2><p>No longer a support engineer, I now have a regular work and
|
||||
sleep routine. This routine frees me from the debilitating schedule
|
||||
that once held me prisoner from social activities or engaging in
|
||||
self-improvement. Ironically, this has only enabled my escapism
|
||||
habits.</p><p>I spent several months grinding away Witcher 3 and its DLCs.
|
||||
It's an amazing RPG for a game of its time. Between killing
|
||||
monsters for coin and saving Ciri, there were plenty of side quests
|
||||
to keep the player going. The only downside was how the devs
|
||||
decided to handle the post-game content. What a shame. I also
|
||||
dropped a few weeks into Rimworld and its expansive world of war
|
||||
crimes and extensive modding. I ultimately stopped playing because
|
||||
of the soul-crushing loss of a moderately successful colony. It was
|
||||
fun making money by harvesting organs from prisoners and skinning
|
||||
their bodies for leather. Mood debuffs begone.</p><p>During these days of gaming, I lost track of my work on myself.
|
||||
The game sessions were fun, but not nourishing. Like tending liquor
|
||||
to a wounded soul, this escapism does not heal, it only numbs it
|
||||
for another day. I find nothing but more guilt at the bottom of the
|
||||
metaphorical bottle.</p><h2>Lockdowns</h2><p>As the Covid situation worsens in Malaysia, hope is bleak and no
|
||||
end is in sight. Cases in our nation rise to record highs but its
|
||||
people are furious. Furious to be held prisoner in their own homes
|
||||
but not furious enough to discipline themselves for a safer future.
|
||||
Citizens have never been more divided ; An increasing number of the
|
||||
lesser minded are pushing for the release of the lockdowns; The
|
||||
infected be damned, my momentary freedom worth their sacrifice,
|
||||
until the time comes for my lungs to be on the chopping block. As
|
||||
much as I'm privileged to be safe from the horrors of the pandemic,
|
||||
cabin fever is catching up to me. I feel myself losing grip of my
|
||||
identity and my flow of time. My moods grew from restlessness to
|
||||
agitation, then to apathy. I can only hope for the better.</p><h2>Unexpected EOF</h2><p>I shall stop here. Thanks for reading so far. For you dear
|
||||
reader, stay strong and stay safe. Like the euphoric sight of your
|
||||
first double rainbow or the arduous toils of your younger days,
|
||||
times like these, too, shall pass.</p><blockquote>The works of the roots of the vines, of the trees, must
|
||||
be destroyed to keep up the price, and this is the saddest,
|
||||
bitterest thing of all. Carloads of oranges dumped on the ground.
|
||||
The people came for miles to take the fruit, but this could not be.
|
||||
How would they buy oranges at twenty cents a dozen if they could
|
||||
drive out and pick them up? And men with hoses squirt kerosene on
|
||||
the oranges, and they are angry at the crime, angry at the people
|
||||
who have come to take the fruit. A million people hungry, needing
|
||||
the fruit- and kerosene sprayed over the golden mountains. And the
|
||||
smell of rot fills the country. Burn coffee for fuel in the ships.
|
||||
Burn corn to keep warm, it makes a hot fire. Dump potatoes in the
|
||||
rivers and place guards along the banks to keep the hungry people
|
||||
from fishing them out. Slaughter the pigs and bury them, and let
|
||||
the putrescence drip down into the earth. There is a crime here
|
||||
that goes beyond denunciation. There is a sorrow here that weeping
|
||||
cannot symbolize. There is a failure here that topples all our
|
||||
success. The fertile earth, the straight tree rows, the sturdy
|
||||
trunks, and the ripe fruit. And children dying of pellagra must die
|
||||
because a profit cannot be taken from an orange. And coroners must
|
||||
fill in the certificate- died of malnutrition- because the food
|
||||
must rot, must be forced to rot. The people come with nets to fish
|
||||
for potatoes in the river, and the guards hold them back; they come
|
||||
in rattling cars to get the dumped oranges, but the kerosene is
|
||||
sprayed. And they stand still and watch the potatoes float by,
|
||||
listen to the screaming pigs being killed in a ditch and covered
|
||||
with quick-lime, watch the mountains of oranges slop down to a
|
||||
putrefying ooze; and in the eyes of the people there is the
|
||||
failure; and in the eyes of the hungry there is a growing wrath. In
|
||||
the souls of the people the grapes of wrath are filling and growing
|
||||
heavy, growing heavy for the vintage.<br/>
|
||||
- John Steinbeck</blockquote></body></html>
|
||||
</description>
|
||||
<pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>
|
||||
<guid>
|
||||
http://liftoff.msfc.nasa.gov/2003/06/03.html#item573
|
||||
</guid>
|
||||
</item>
|
58
blog/test4.html
Normal file
58
blog/test4.html
Normal file
@ -0,0 +1,58 @@
|
||||
<![CDATA[<body><header><h1>A Brief Goodbye to CentOS</h1></header><p>The traditional CentOS Linux distribution as we know it is dead.
|
||||
Here is another drop in the ocean of opinion pieces that follow the
|
||||
news of its death. After cooling down from the initial rush of
|
||||
blood to my head, here is my take on this event.</p><h2>Why Did This Probably Happen</h2><p>With the advent of DevOps and SRE, businesses and startups are
|
||||
moving away from the old-school concept of traditional server
|
||||
clusters to running their applications on disposable containers.
|
||||
The trend is clear and true. Developers are increasingly less
|
||||
reliant on a tried-and-true Linux distribution that lasts for a
|
||||
decade. With containers, developers can develop, test, deploy, and
|
||||
rollback with blazing fast velocity.</p><h2>How It Will Affect All of Us</h2><p>Without a doubt one of the most popular Linux distributions to
|
||||
ever exist, CentOS was prevalent among all kinds of computing
|
||||
systems ranging from simple database servers to billion-dollar
|
||||
computer clusters. There are countless organizations have made the
|
||||
business decision to keep using the traditional model, or
|
||||
organizations that do not require microservices at all. With CentOS
|
||||
drawn from below their feet, a lot of organizations will be forced
|
||||
to migrate to another option, or fork out a pretty penny for RHEL.
|
||||
Besides, on-prem deployment of any container orchestration tool
|
||||
still requires a stable Linux distribution.</p><p>The second ripple effect it will have is towards the skilled
|
||||
professionals who have spend decades on CentOS. Not every company
|
||||
is willing to pay up for RHEL or risk using CentOS Stream. For
|
||||
those who migrate to Debian or OpenSUSE, they will have to retrain
|
||||
and adapt with different tools.</p><h2>Questioning IBM/Red Hat Decisions</h2><p>The most obvious of them all was, was it necessary for CentOS to
|
||||
die? With CentOS Stream to track ahead of RHEL, it is still
|
||||
possible for CentOS to remain functional and serve its purpose.
|
||||
This is clearly a business decision to increase profits. It used to
|
||||
be that developers wanted to write for RHEL but did not want pay
|
||||
for it; CentOS filled that need. What also happened was that some
|
||||
companies decided that they wanted the free experience all the way.
|
||||
Red Hat now provides free use of the Red Hat Universal Base Image
|
||||
for developers. With this, companies no longer have an excuse.</p><p>Secondly, why the PR disaster? In hindsight, there is no way to
|
||||
deliver this news gently to the public. However, I felt that Red
|
||||
Hat gave the bird to the open source community, especially those
|
||||
who contributed to CentOS, by pulling the plug on Centos 8 towards
|
||||
the end of 2021. There wasn't even a courtesy to end it later then
|
||||
CentOS 7's EOL date, June 30th 2024. A raw-dogged "Pay up, now" to
|
||||
everyone.</p><p>Last of all, what is the next move from Red Hat/IBM? With CentOS
|
||||
gone, there is a huge vacuum for another to take its place. RHEL
|
||||
sources are still available and can still be repackaged. While Red
|
||||
Hat currently has massive influence over Linux in general, is this
|
||||
a arrogant statement proclaiming "Hey, you can't live without me"?
|
||||
Another ominuous take with conspiratorial undertones would be that
|
||||
Red Hat plans to eventually scrap the FOSS model, but I would have
|
||||
to wear my tin hat for this one.</p><h2>So, What Happens Now?</h2><p>Almost immediately after the release, all the attention is now
|
||||
directed to towards filling the space that CentOS will leave
|
||||
behind. Undoubtedly, Ubuntu and SUSE would try to assert their
|
||||
presence with their open source alternatives. Debian, the largest
|
||||
behemoth of them all, hopefully will receive funding and
|
||||
participation like never before. A silver lining of this event
|
||||
would perhaps be the buzzing excitement of what will be and can be.
|
||||
It is time to be excited about Linux again. I, for one, have to
|
||||
begin migrating my CentOS containers and virtual machines to
|
||||
Debian.</p><p>CentOS's founder, Gregory Kurtzer, is working with the community
|
||||
to establish Rocky Linux. Join them at
|
||||
https://webchat.freenode.net/#rockylinux .</p><blockquote>I doubt that the imagination can be suppressed. If you
|
||||
truly eradicated it in a child, he would grow up to be an
|
||||
eggplant.<br/>
|
||||
- Ursula K. Le Guin</blockquote></body>]]>
|
Binary file not shown.
@ -1 +0,0 @@
|
||||
20211012-CV.pdf
|
BIN
files/CV.pdf
Normal file
BIN
files/CV.pdf
Normal file
Binary file not shown.
BIN
images/whynotinvert.webp
Normal file
BIN
images/whynotinvert.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.6 KiB |
@ -5,8 +5,8 @@ name="viewport" content="width=device-width, initial-scale=1"><title>Clement Chi
|
||||
|
||||
<p><div class="navbar">
|
||||
<div><a href="index.html">Home</a></div>
|
||||
<div><a href="blog/blog--01">Blog</a></div>
|
||||
<div><a href="https://gitea.clementchiew.me/clement">Git</a></div>
|
||||
<div><a href="blog/blog--01.html">Blog</a></div>
|
||||
<div><a href="https://renraku.dingo-bramble.ts.net/clement">Git</a></div>
|
||||
<div><a href="files/CV.pdf">CV</a></div>
|
||||
</div></p>
|
||||
<hr>
|
||||
|
@ -12,7 +12,7 @@ do
|
||||
contentname="content-$padint"
|
||||
quotename="quote-$padint"
|
||||
tailname="tail-$padint"
|
||||
blogname="blog-$padint"
|
||||
blogname="blog-$padint.html"
|
||||
|
||||
# interactive tail
|
||||
if (( i >= 0 )) ;then
|
||||
|
24
scripts/new-post.sh
Executable file
24
scripts/new-post.sh
Executable file
@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Change to blog folder
|
||||
cd ../blog
|
||||
|
||||
# Get number of posts
|
||||
POSTNUM=$( ls -l content-* | wc -l )
|
||||
QUOTENUM=$( ls -l quote-* | wc -l )
|
||||
if [[ $POSTNUM -gt $QUOTENUM ]];then
|
||||
NUM=$POSTNUM
|
||||
else
|
||||
NUM=$QUOTENUM
|
||||
fi
|
||||
CURRNUM=$(( $NUM -2 ))
|
||||
|
||||
# Create post and quote from template
|
||||
NEWPOSTNAME="content-$(printf %03d "$CURRNUM")"
|
||||
NEWQUOTENAME="quote-$(printf %03d "$CURRNUM")"
|
||||
cp .blog.template "$NEWPOSTNAME"
|
||||
cp .quote.template "$NEWQUOTENAME"
|
||||
|
||||
# Show new file names
|
||||
echo "$(readlink -e "$NEWPOSTNAME")"
|
||||
echo "$(readlink -e "$NEWQUOTENAME")"
|
97
test-markdown/10.md
Normal file
97
test-markdown/10.md
Normal file
@ -0,0 +1,97 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# Programming Anxiety
|
||||
|
||||
</div>
|
||||
|
||||
Programming is one of the cornerstones of modern information technology.
|
||||
It is what enables the entire Internet to deliver a myriad of services
|
||||
and information to everyone at any instant. We live in an era where all
|
||||
sorts of amazing programming projects exists, especially the Linux
|
||||
kernel and the GCC compiler. These amazing programs are the product of
|
||||
tens of thousands of hours devoted by legendary experts. I admire how
|
||||
programs has helped humanity as a whole. So while most of my previous
|
||||
posts have been about the progression of what I have learnt, this post
|
||||
is not one of them.
|
||||
|
||||
I started learning about programming in the earlier part of this decade;
|
||||
I don\'t really remember the specific date anymore. Learning programming
|
||||
was fun. Reading blogs, articles, and disseminations about programming
|
||||
was fun too. But what comes after those? The culmination of all that
|
||||
knowledge and skills is to write your own program. To set your fingers
|
||||
free and ultimately find their way to a creative product of your own.
|
||||
|
||||
Would it be self-sabotage for a noob programmer to have read
|
||||
well-written articles discussing the pros and cons of incorporating open
|
||||
source libraries in your project? Or the fastest/most-concise
|
||||
implementation to sort and filter data structures? Or how should a
|
||||
programmer write a program so that he can easily write unit tests for?
|
||||
GCC or LLVM? Imperative or functional? The latest netsec update about
|
||||
exploiting common bugs in poorly-written programs? These questions and
|
||||
information weigh on me before I even write my first function. Would I
|
||||
have done this better? Did I make the right choice using tuples instead
|
||||
of arrays? Is it time to refactor this tiny functionality?
|
||||
|
||||
Most of the advice for beginning programmers have always boiled down to
|
||||
\"Start small, start well\". But even with my best intentions, I would
|
||||
not have known where does one draw the line at well. The fear of
|
||||
finishing a program only to realize that it was never going to be
|
||||
functional, and I have wasted hours of my time only to backspace my way
|
||||
to Line 1. The disappointment after writing a program that I think is
|
||||
somewhat decent, only to find that a similar open source library already
|
||||
implements this with impeccable style and documentation. As a result,
|
||||
even if they would have never taken off, dozens of my programming
|
||||
projects have never left the drawing board.
|
||||
|
||||
What would have been the lesson of this post? I don\'t know. Perhaps I
|
||||
should just learn to embrace the idea that the programming process
|
||||
inherently requires a lot of rewriting and will inevitably be filled
|
||||
with security issues. Thank you for reading.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-009.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog-011.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> "What is better: to be born good or to overcome your evil nature
|
||||
> through great effort?"\
|
||||
> - Paarthurnax
|
97
test-markdown/11.md
Normal file
97
test-markdown/11.md
Normal file
@ -0,0 +1,97 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# LXC and Friends
|
||||
|
||||
</div>
|
||||
|
||||
With Proxmox in place, I started work on LXC containers. They really are
|
||||
wonderful. Fast to start up, way lower memory footprint, and much easier
|
||||
configuration in general. Without the long wait for VMs to fully
|
||||
install, I have a lot more motivation to set up some stuff I\'ve been
|
||||
planning.
|
||||
|
||||
First up is Wireguard. Wireguard required some fiddling because
|
||||
Proxmox\'s Linux kernel has not integrated the kernel module. While I
|
||||
could\'ve achieved this on a virtual machine without altering my
|
||||
hypervisor, I felt Wireguard was worth it. Wireguard is so easy to set
|
||||
up and comes with an extremely low latency cost. Now that my Android
|
||||
device is always routed through Wireguard, I have a lot more options to
|
||||
secure and experiment with its networking.
|
||||
|
||||
Next up is a popular favourite, Pi-Hole. I\'ve always been hesitant
|
||||
about installing Pi-Hole on a physical device like a RPi or a VM because
|
||||
it felt like overkill for such a simple application. A containerized
|
||||
environment is just perfect. I\'ve also wired devices connected to my
|
||||
Wireguard instance to use Pi-Hole as the DNS server. It was enlightening
|
||||
knowing what my devices are doing. Side note: Firefox\'s telemetry
|
||||
service is pretty aggressive if you leave it on.
|
||||
|
||||
The last application is Apache Guacamole. This is a rather \"heavy\"
|
||||
application because it runs on Java Tomcat, but Guac is seriously
|
||||
amazing. If you\'ve always been worried about securing entry to your
|
||||
devices, fear no more. With Guac, you can use your browser as the remote
|
||||
gateway to your internal network. I\'ve never wanted to expose my SSH
|
||||
jumper to the ravages of the Internet, so Guac allows me to have
|
||||
2-factor authentication and easy access to my internal network while
|
||||
I\'m not at home. Why not connect to my Wireguard instance you say?
|
||||
Mainly because I have not automated adding devices to my Wireguard
|
||||
instance, so the manual work is still slightly cumbersome. Also, Guac
|
||||
does not require any specialized remote tools such as OpenSSH or PuTTY;
|
||||
It only requires a browser that supports SSL.
|
||||
|
||||
## The Drawbacks
|
||||
|
||||
Perhaps the largest drawbacks of LXC containers when compared to Docker,
|
||||
is the \"full Linux stack\" available in each container. While some
|
||||
container templates (Alpine) are slimmer than others, most of my
|
||||
containers run on Debian. There is work needed to keep them up-to-date,
|
||||
so this perfectly sets up the environment for me to pick up more
|
||||
advanced config management. Ansible Level 2, here I come.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-010.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog-012.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> Do not pity the dead, Harry, pity the living. And above all, those who
|
||||
> live without love.\
|
||||
> - Albus Dumbledore
|
114
test-markdown/12.md
Normal file
114
test-markdown/12.md
Normal file
@ -0,0 +1,114 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# Migrating Everything to Proxmox - Part 1
|
||||
|
||||
</div>
|
||||
|
||||
It was almost inevitable that this would happen. After getting more
|
||||
comfortable with Proxmox, I realized that I needed more reliability for
|
||||
the applications running on my RPis. Things are running fine on my RPi,
|
||||
but it was a matter of time before disaster struck. So begin my efforts
|
||||
to move everything over to Proxmox.
|
||||
|
||||
## A Dance with Docker
|
||||
|
||||
While almost everything could run on or built for Docker one way or
|
||||
another these days, running complicated applications on Docker will
|
||||
eventually uncover some really esoteric behaviours. So I stuck to using
|
||||
LXC containers for most of my applications. I used Docker for the
|
||||
applications that I can deploy and leave them alone, hence Redis,
|
||||
WikiJS, and WatchTower. WatchTower ensures that the containers stay
|
||||
healthy and updated.
|
||||
|
||||
## Preparing The Base
|
||||
|
||||
With the easiest stuff out of the way, I started preparing the LXC
|
||||
container templates. I opted for two templates: CentOS 7 and Debian 10.
|
||||
I updated them, added my SSH public keys, installed the basic tools, and
|
||||
it was good to go.
|
||||
|
||||
## Taking Apart Services on RPi
|
||||
|
||||
As a result of my messy installations on RPi, I had to scrounge around
|
||||
for the configs and data for Gitea and Apache httpd. After that, it was
|
||||
a quick tarball to be transferred over to their respective containers.
|
||||
This time, I\'ve created a separate container dedicated for PostgreSQL
|
||||
and MySQL. Doing so was somewhat liberating; I now know where I can
|
||||
access and isolate my databases.
|
||||
|
||||
## The Disaster
|
||||
|
||||
What is a migration without a major data loss disaster? So, I lied
|
||||
previously about the \'simple\' applications I run on Docker. I tried
|
||||
migrating my Nextcloud instance to Docker. Sound simple right? Mount the
|
||||
NFS directory on the Docker host, spin up the Nextcloud Docker image
|
||||
with the directories and the already-migrated PostgreSQL user and tables
|
||||
ready, and magic would take place. Turns out a new Nextcloud instance
|
||||
would immediately nuke /data to set up a \'clean slate\'. My NFS
|
||||
directory was clean enough, I\'ll say. To make things worse, I was
|
||||
putting off scripting for my Btrfs snapshots and backups. With them, I
|
||||
could\'ve easily rolled back my changes.
|
||||
|
||||
The silver lining was that I did not keep any important information on
|
||||
the instance. As the old adage goes, backup before doing stupid things.
|
||||
This cowboy move was a hard lesson for me.
|
||||
|
||||
## Conclusion
|
||||
|
||||
This concludes Part 1. Most of my time was spent untangling all the
|
||||
services that I was experimenting on my RPi and deciding what gets to
|
||||
live or not. So far, I\'ve learned a hard lesson and had to plan out my
|
||||
migration before doing so. I only look forward for the rest to come.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-011.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog-013.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> For we each of us deserve everything, every luxury that was ever piled
|
||||
> in the tombs of the dead kings, and we each of us deserve nothing, not
|
||||
> a mouthful of bread in hunger. Have we not eaten while another
|
||||
> starved? Will you punish us for that? Will you reward us for the
|
||||
> virtue of starving while others ate? No man earns punishment, no man
|
||||
> earns reward. Free your mind of the idea of deserving, the idea of
|
||||
> earning, and you will begin to be able to think.\
|
||||
> - Odo
|
128
test-markdown/13.md
Normal file
128
test-markdown/13.md
Normal file
@ -0,0 +1,128 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# A Brief Goodbye to CentOS
|
||||
|
||||
</div>
|
||||
|
||||
The traditional CentOS Linux distribution as we know it is dead. Here is
|
||||
another drop in the ocean of opinion pieces that follow the news of its
|
||||
death. After cooling down from the initial rush of blood to my head,
|
||||
here is my take on this event.
|
||||
|
||||
## Why Did This Probably Happen
|
||||
|
||||
With the advent of DevOps and SRE, businesses and startups are moving
|
||||
away from the old-school concept of traditional server clusters to
|
||||
running their applications on disposable containers. The trend is clear
|
||||
and true. Developers are increasingly less reliant on a tried-and-true
|
||||
Linux distribution that lasts for a decade. With containers, developers
|
||||
can develop, test, deploy, and rollback with blazing fast velocity.
|
||||
|
||||
## How It Will Affect All of Us
|
||||
|
||||
Without a doubt one of the most popular Linux distributions to ever
|
||||
exist, CentOS was prevalent among all kinds of computing systems ranging
|
||||
from simple database servers to billion-dollar computer clusters. There
|
||||
are countless organizations have made the business decision to keep
|
||||
using the traditional model, or organizations that do not require
|
||||
microservices at all. With CentOS drawn from below their feet, a lot of
|
||||
organizations will be forced to migrate to another option, or fork out a
|
||||
pretty penny for RHEL. Besides, on-prem deployment of any container
|
||||
orchestration tool still requires a stable Linux distribution.
|
||||
|
||||
The second ripple effect it will have is towards the skilled
|
||||
professionals who have spend decades on CentOS. Not every company is
|
||||
willing to pay up for RHEL or risk using CentOS Stream. For those who
|
||||
migrate to Debian or OpenSUSE, they will have to retrain and adapt with
|
||||
different tools.
|
||||
|
||||
## Questioning IBM/Red Hat Decisions
|
||||
|
||||
The most obvious of them all was, was it necessary for CentOS to die?
|
||||
With CentOS Stream to track ahead of RHEL, it is still possible for
|
||||
CentOS to remain functional and serve its purpose. This is clearly a
|
||||
business decision to increase profits. It used to be that developers
|
||||
wanted to write for RHEL but did not want pay for it; CentOS filled that
|
||||
need. What also happened was that some companies decided that they
|
||||
wanted the free experience all the way. Red Hat now provides free use of
|
||||
the Red Hat Universal Base Image for developers. With this, companies no
|
||||
longer have an excuse.
|
||||
|
||||
Secondly, why the PR disaster? In hindsight, there is no way to deliver
|
||||
this news gently to the public. However, I felt that Red Hat gave the
|
||||
bird to the open source community, especially those who contributed to
|
||||
CentOS, by pulling the plug on Centos 8 towards the end of 2021. There
|
||||
wasn\'t even a courtesy to end it later then CentOS 7\'s EOL date, June
|
||||
30th 2024. A raw-dogged \"Pay up, now\" to everyone.
|
||||
|
||||
Last of all, what is the next move from Red Hat/IBM? With CentOS gone,
|
||||
there is a huge vacuum for another to take its place. RHEL sources are
|
||||
still available and can still be repackaged. While Red Hat currently has
|
||||
massive influence over Linux in general, is this a arrogant statement
|
||||
proclaiming \"Hey, you can\'t live without me\"? Another ominuous take
|
||||
with conspiratorial undertones would be that Red Hat plans to eventually
|
||||
scrap the FOSS model, but I would have to wear my tin hat for this one.
|
||||
|
||||
## So, What Happens Now?
|
||||
|
||||
Almost immediately after the release, all the attention is now directed
|
||||
to towards filling the space that CentOS will leave behind. Undoubtedly,
|
||||
Ubuntu and SUSE would try to assert their presence with their open
|
||||
source alternatives. Debian, the largest behemoth of them all, hopefully
|
||||
will receive funding and participation like never before. A silver
|
||||
lining of this event would perhaps be the buzzing excitement of what
|
||||
will be and can be. It is time to be excited about Linux again. I, for
|
||||
one, have to begin migrating my CentOS containers and virtual machines
|
||||
to Debian.
|
||||
|
||||
CentOS\'s founder, Gregory Kurtzer, is working with the community to
|
||||
establish Rocky Linux. Join them at
|
||||
https://webchat.freenode.net/#rockylinux .
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-012.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog-014.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> I doubt that the imagination can be suppressed. If you truly
|
||||
> eradicated it in a child, he would grow up to be an eggplant.\
|
||||
> - Ursula K. Le Guin
|
137
test-markdown/14.md
Normal file
137
test-markdown/14.md
Normal file
@ -0,0 +1,137 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# A Walk Along The Side
|
||||
|
||||
</div>
|
||||
|
||||
This year has been tumultuous so far. Combine equal parts cabin fever,
|
||||
poor mental health, and escapism, and you get a person who has
|
||||
difficulties putting words into a creative composition. Instead of
|
||||
posting a success story later about how I have overcome my obstacles in
|
||||
life, I felt it was equally important to document my lower moments as
|
||||
well. This post would be a feeble attempt to keep this website alive.
|
||||
|
||||
## Proxmox VE 7.0
|
||||
|
||||
Kudos to Proxmox and their team for the latest release of Proxmox VE.
|
||||
The upgrade process was smooth and well documented. The inclusion of the
|
||||
upgrade checks was amazing to say the least.
|
||||
|
||||
## New Work, New Schedule
|
||||
|
||||
No longer a support engineer, I now have a regular work and sleep
|
||||
routine. This routine frees me from the debilitating schedule that once
|
||||
held me prisoner from social activities or engaging in self-improvement.
|
||||
Ironically, this has only enabled my escapism habits.
|
||||
|
||||
I spent several months grinding away Witcher 3 and its DLCs. It\'s an
|
||||
amazing RPG for a game of its time. Between killing monsters for coin
|
||||
and saving Ciri, there were plenty of side quests to keep the player
|
||||
going. The only downside was how the devs decided to handle the
|
||||
post-game content. What a shame. I also dropped a few weeks into
|
||||
Rimworld and its expansive world of war crimes and extensive modding. I
|
||||
ultimately stopped playing because of the soul-crushing loss of a
|
||||
moderately successful colony. It was fun making money by harvesting
|
||||
organs from prisoners and skinning their bodies for leather. Mood
|
||||
debuffs begone.
|
||||
|
||||
During these days of gaming, I lost track of my work on myself. The game
|
||||
sessions were fun, but not nourishing. Like tending liquor to a wounded
|
||||
soul, this escapism does not heal, it only numbs it for another day. I
|
||||
find nothing but more guilt at the bottom of the metaphorical bottle.
|
||||
|
||||
## Lockdowns
|
||||
|
||||
As the Covid situation worsens in Malaysia, hope is bleak and no end is
|
||||
in sight. Cases in our nation rise to record highs but its people are
|
||||
furious. Furious to be held prisoner in their own homes but not furious
|
||||
enough to discipline themselves for a safer future. Citizens have never
|
||||
been more divided ; An increasing number of the lesser minded are
|
||||
pushing for the release of the lockdowns; The infected be damned, my
|
||||
momentary freedom worth their sacrifice, until the time comes for my
|
||||
lungs to be on the chopping block. As much as I\'m privileged to be safe
|
||||
from the horrors of the pandemic, cabin fever is catching up to me. I
|
||||
feel myself losing grip of my identity and my flow of time. My moods
|
||||
grew from restlessness to agitation, then to apathy. I can only hope for
|
||||
the better.
|
||||
|
||||
## Unexpected EOF
|
||||
|
||||
I shall stop here. Thanks for reading so far. For you dear reader, stay
|
||||
strong and stay safe. Like the euphoric sight of your first double
|
||||
rainbow or the arduous toils of your younger days, times like these,
|
||||
too, shall pass.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-013.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog-015.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> The works of the roots of the vines, of the trees, must be destroyed
|
||||
> to keep up the price, and this is the saddest, bitterest thing of all.
|
||||
> Carloads of oranges dumped on the ground. The people came for miles to
|
||||
> take the fruit, but this could not be. How would they buy oranges at
|
||||
> twenty cents a dozen if they could drive out and pick them up? And men
|
||||
> with hoses squirt kerosene on the oranges, and they are angry at the
|
||||
> crime, angry at the people who have come to take the fruit. A million
|
||||
> people hungry, needing the fruit- and kerosene sprayed over the golden
|
||||
> mountains. And the smell of rot fills the country. Burn coffee for
|
||||
> fuel in the ships. Burn corn to keep warm, it makes a hot fire. Dump
|
||||
> potatoes in the rivers and place guards along the banks to keep the
|
||||
> hungry people from fishing them out. Slaughter the pigs and bury them,
|
||||
> and let the putrescence drip down into the earth. There is a crime
|
||||
> here that goes beyond denunciation. There is a sorrow here that
|
||||
> weeping cannot symbolize. There is a failure here that topples all our
|
||||
> success. The fertile earth, the straight tree rows, the sturdy trunks,
|
||||
> and the ripe fruit. And children dying of pellagra must die because a
|
||||
> profit cannot be taken from an orange. And coroners must fill in the
|
||||
> certificate- died of malnutrition- because the food must rot, must be
|
||||
> forced to rot. The people come with nets to fish for potatoes in the
|
||||
> river, and the guards hold them back; they come in rattling cars to
|
||||
> get the dumped oranges, but the kerosene is sprayed. And they stand
|
||||
> still and watch the potatoes float by, listen to the screaming pigs
|
||||
> being killed in a ditch and covered with quick-lime, watch the
|
||||
> mountains of oranges slop down to a putrefying ooze; and in the eyes
|
||||
> of the people there is the failure; and in the eyes of the hungry
|
||||
> there is a growing wrath. In the souls of the people the grapes of
|
||||
> wrath are filling and growing heavy, growing heavy for the vintage.\
|
||||
> - John Steinbeck
|
137
test-markdown/15.md
Normal file
137
test-markdown/15.md
Normal file
@ -0,0 +1,137 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# A Taste of Progress
|
||||
|
||||
</div>
|
||||
|
||||
TLDR : I passed the CKA test. The test was not hard, but neither was it
|
||||
a walk in the park.
|
||||
|
||||
Several months ago, I was in a slump, weighed down by the pandemic
|
||||
situation. Figuring that there is not much I can do about my mental
|
||||
wellbeing, perhaps it was time to face the fact I had two soon-to-expire
|
||||
exam vouchers at hand. One of them was for the CKA test. After two
|
||||
months of grind, I took the exam and passed it.
|
||||
|
||||
## KodeKloud
|
||||
|
||||
Realizing LF\'s course on Kubernetes was hot trash, I decided to
|
||||
subscribe to KodeKloud and took Mumshad Mannambeth\'s course to assist
|
||||
my learning process. This post can also be my personal review of the
|
||||
course. The course content was pretty comprehensive. It had a gentle
|
||||
learning curve to guide its students towards the course content, going
|
||||
so far as to provide primers for topics that are pretty tough for
|
||||
newbies. (Networking, openssl, etc) There were also plenty of lab
|
||||
exercises for each topic that challenges the student to think harder.
|
||||
Some tips are also provided to navigate the test quickly. Without the
|
||||
course, I would have skimmed through a lot of details that were pretty
|
||||
important. I was pretty satisfied with the value of the content in this
|
||||
course.
|
||||
|
||||
Reviewing the site experience and design however, is where the shining
|
||||
image of KodeKloud starts to show its rough edges. The quality of the
|
||||
closed captions were atrocious. You see, I have the habit of watching at
|
||||
1.5x speed assisted by closed captions; This is the learning mode where
|
||||
I absorb material best. Any slower and I would start yawning. The closed
|
||||
captions make me cringe every time I read it. Spelling errors are all
|
||||
over the place, poor timings, and sometimes the captions are just
|
||||
straight up missing. The video does not consider that the captions would
|
||||
obscure its content, nor does the player provide a way to configure
|
||||
transparency for the captions background, so I had to frequently pause
|
||||
and unpause just to see what is under the captions. You took a 15 min
|
||||
break to get some coffee? The video player would crash without saving
|
||||
where you left off, so be prepared to refresh and rewatch the first few
|
||||
minutes. Labs also frequently disconnect or fail to deploy, which can be
|
||||
quite frustrating since I have waited several minutes for it to deploy.
|
||||
These are only some of the issues that are present on KodeKloud.
|
||||
|
||||
If you are going to take the test, would I recommend this course?
|
||||
Absolutely. It can be completed within a month. I do hope that KodeKloud
|
||||
puts in more effort to polish their site however; This product is not
|
||||
free after all.
|
||||
|
||||
## Practice, Practice, and What Else? Oh Yes, More Practice
|
||||
|
||||
Perhaps the toughest part of the CKA test was the time limit provided.
|
||||
To prepare for the test, I reviewed the exam objectives multiple times.
|
||||
Even though the syntax for kubectl commands are mostly consistent, I
|
||||
practiced it to make sure I could rely on autocomplete reliably to
|
||||
finish my commands. kubectl explain was essential to quickly fill in
|
||||
memory gaps when filling out an especially long yaml file. (Looking at
|
||||
you, deployments) During the test, there is not a lot of time to
|
||||
\"figure things out\" and experiment a little. It was also important to
|
||||
know where the yaml templates are for each API resource in the
|
||||
Kubernetes documentation so that I did not have to retype everything.
|
||||
|
||||
## Some Thoughts
|
||||
|
||||
Kubernetes is a tool that divides the DevOps populace. Just visit your
|
||||
nearest HN thread to learn all about the fierce debates surrounding it
|
||||
and the latest startup trying to revolutionize container orchestration.
|
||||
It is flexible, complex yet straightforward, and sufficiently large that
|
||||
some find a beast that needs too much effort to tame. All in all, it is
|
||||
a powerful tool to introduces as many complexities as many issues that
|
||||
is solves. The everything-is-an-API-resource approach makes it
|
||||
convenient to integrate with workflows, and the API resources that are
|
||||
versioned and modular really helps with the mental model when
|
||||
understanding k8s itself.
|
||||
|
||||
## One Step Forward
|
||||
|
||||
This certification may not be much, but it was a good and hearty dose of
|
||||
happiness for myself; I am still the riding the high until this day. It
|
||||
is proof of my efforts, the days and nights spent hammering away at the
|
||||
keyboard, and that I have bettered myself. I can be more that I was
|
||||
yesterday, and I will continue to do so. To you dear reader: if you are
|
||||
taking the CKA test, I wish you the best of luck.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-014.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog-016.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> The trouble is that we have a bad habit, encouraged by pedants and
|
||||
> sophisticates, of considering happiness as something rather stupid.
|
||||
> Only pain is intellectual, only evil interesting. This is the treason
|
||||
> of the artist; a refusal to admit the banality of evil and the
|
||||
> terrible boredom of pain.\
|
||||
> - Ursula K. LeGuin, The Ones Who Walk Away from Omelas
|
104
test-markdown/16.md
Normal file
104
test-markdown/16.md
Normal file
@ -0,0 +1,104 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# Fighting With The Past
|
||||
|
||||
</div>
|
||||
|
||||
I am an avid user of RSS and I love my RSS app to death. It brings me a
|
||||
steady stream of news and information every day from the sources that I
|
||||
personally curate; a stream uncorrupted by the ad-funded Internet we
|
||||
have now. It is my breath of fresh air every morning before I suit up
|
||||
with adblockers and venture into the cancer-ridden wasteland of ads and
|
||||
content filler. The premise was simple: no-BS news fully in text with
|
||||
some images sprinkled in. Every article does not waste your time or
|
||||
attention. If need be, click the link at the bottom to read the full
|
||||
article. So a few months ago, an idea lit up in my mind and I thought
|
||||
\"Gee, wouldn\'t it be neat if my website was readable via RSS?\" and I
|
||||
got to work.
|
||||
|
||||
## Browsing RSS Specs
|
||||
|
||||
As with most endeavours, everything seemed simple on the surface.
|
||||
Browsing through the [RSS
|
||||
specifications](https://www.rssboard.org/rss-specification), everything
|
||||
looked fine and dandy. A RSS feed is just an itemized list of your
|
||||
latest posts alongside some metadata about your site. Just generate a
|
||||
new XML file after every new post and serve it, and you\'re set for the
|
||||
day, right? Oh, how wrong I was.
|
||||
|
||||
## Static Pages And XML
|
||||
|
||||
To put it simply, my posts are handwritten in HTML and are not
|
||||
dynamically generated with some CMS. This means that I have to find a
|
||||
way to convert HTML to a XML-kosher format somehow. Thus the hunt begun.
|
||||
In the end, I found [Tidy](https://www.html-tidy.org/), a tool that can
|
||||
clean up my messy HTML documents to XHTML. XHTML is XML-friendly, but it
|
||||
wasn\'t the end-all. I only needed the body, not the metadata. This was
|
||||
easily achievable with xmllint and XPATH. With the body prepped and
|
||||
ready, the tricky part is that while syntactically-comformant, HTML tags
|
||||
do not work. I wrapped the body as a CDATA section and went by my way.
|
||||
|
||||
## I Will Not Regret This, Will I?
|
||||
|
||||
The last piece of the puzzle was the metadata for the posts. I went with
|
||||
a JSON file as a temporary databases for the posts, but this is a
|
||||
solution that is bound to bite me back in the future, but who cares
|
||||
about future me right? It works. The duct tape will do for now.
|
||||
|
||||
## Conclusion
|
||||
|
||||
These 3 paragraphs took me weeks to read up about XML and RSS and
|
||||
thinking about the solution. While it works, this is less than ideal. I
|
||||
will be wrangling 3 data formats with a Bash script that is becoming
|
||||
increasingly unwieldy. Reading up XML has also enlightened, if not
|
||||
misguided, me that I need write with XML documents moving forward. If
|
||||
not redesigned, this issue is a ticking bomb waiting to blow up in my
|
||||
face. Time to think really hard. Thanks for reading.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-015.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog-017.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> No man ever steps in the same river twice, for it\'s not the same
|
||||
> river and he\'s not the same man.\
|
||||
> - Heraclitus
|
113
test-markdown/17.md
Normal file
113
test-markdown/17.md
Normal file
@ -0,0 +1,113 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# New Year New Beginnings
|
||||
|
||||
</div>
|
||||
|
||||
## Long Break
|
||||
|
||||
Whew, it has been a long time since this website was up. Talk about
|
||||
downtime. Long story short, I got a new job as a Cloud Engineer. I moved
|
||||
to a new rental that did not have a router that supported port
|
||||
forwarding. I was not about to replace the shared WiFi and work got busy
|
||||
and yeah you get the idea. The website went down. My server is sleeping
|
||||
in the storage bin. Well that did not take long. Anyway, new year new
|
||||
me.
|
||||
|
||||
## Hosting Problems
|
||||
|
||||
What do I do when self-hosting is now an issue? Time to turn to the
|
||||
\"cloud\". Turns out the cloud just means that your data is now hosted
|
||||
by another organization\'s computers. We are all familiar with the wry
|
||||
jokes about cloud platform by now. Anyway, I looked into what are the
|
||||
available free tier options that we have now. Thanks to past me, this
|
||||
site is just a bunch of static files ready to go, so hosting this site
|
||||
is not hard.
|
||||
|
||||
Since I am already going with a cloud provider, I have higher
|
||||
requirements than just \"Nginx/Apache in a VM\". I looked into solutions
|
||||
that provides high availability worldwide and can remove maintenance
|
||||
headaches from self-hosting; or as the cool kids say, serverless
|
||||
solutions. If I am going to sacrifice my own privacy by not owning my
|
||||
own hosting, I am not letting the sacrifice go in vain. Here are my
|
||||
impressions of the options that I have explored.
|
||||
|
||||
- Microso - No.
|
||||
- Google Cloud Load Balancer + Google Cloud Storage Bucket backend :
|
||||
Load Balancer not included in free tier.
|
||||
- Oracle Cloud Free Tier : Generous VM sizes but no serverless
|
||||
solution.
|
||||
- AWS CloudFront + S3 Storage : Generous free tier but configuration
|
||||
is quite complex.
|
||||
- Cloudflare R2 + Page Rules : Generous free tier but confusing
|
||||
dashboard.
|
||||
- Hetzner Cloud : Need a certain level of consumption to take
|
||||
advantage of the cheap VMs, and no serverless solution.
|
||||
|
||||
There are a couple of smaller or niche cloud providers, but most of them
|
||||
do not have worldwide presence or do not have a good free tier. For
|
||||
those that do, it is not a serverless solution, so this was enough
|
||||
research for me.
|
||||
|
||||
Ultimately I went with Cloudflare. It took me less than an hour to set
|
||||
up my Cloudflare account and billing, upload my files into R2, and then
|
||||
configure the one page rule I need to redirect www.clementchiew.me to
|
||||
the index.html file. It was pretty delightful to be able to hand over
|
||||
management of SSL certificates and have QUIC support right out of the
|
||||
gate. I do have my hestitations with Cloudflare, but being able to take
|
||||
advantage of Cloudflare\'s free R2 egress and free up my cognitive load
|
||||
of web server management is quite valuable to me.
|
||||
|
||||
## What\'s Next
|
||||
|
||||
There have been so many changes in the past year, both worldwide and in
|
||||
my personal life. I have so much to write about and so many ideas that I
|
||||
want to note down. See me here again soon.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-016.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog-018.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> Home isn\'t where you\'re from, it\'s where you find light when all
|
||||
> grows dark.\
|
||||
> - Pierce Brown, Golden Son
|
141
test-markdown/18.md
Normal file
141
test-markdown/18.md
Normal file
@ -0,0 +1,141 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# We Need More Motivation
|
||||
|
||||
</div>
|
||||
|
||||
You know, like \"We need more pylons\", but with motivation, get it?
|
||||
Never mind. Like a running joke with my friend goes:\"The workshop is
|
||||
dead\". You know, the joke workshop. Tough crowd huh, never mind.
|
||||
|
||||
Today would be about motivation, specifically the motivation to learn
|
||||
tech. I have been in \"tech\" for about 5 years now, what am I now? Or
|
||||
rather, what have I grown to be? If you\'re here something technical,
|
||||
probably time to click away. This sentence is added after I typed the
|
||||
rest, so warning that the article goes off the rails quite a bit.
|
||||
|
||||
## Learning Everything, Yet Learning Nothing
|
||||
|
||||
As I reach a certain number in my age, I guess the responsibilities and
|
||||
realities of an adult starts to, as the increasingly distant \"young\"
|
||||
generation goes, \"gets real\". Without divulging a large part of what
|
||||
makes \"adulting\" in my personal life increasingly difficult, a larger
|
||||
part has been trying to continue to nurture and encourage myself to
|
||||
continue to learn tech. What does it even mean to \"learn\"?
|
||||
|
||||
At this beautiful year of 2023, there never has been a more abundant
|
||||
year for technology in IT. The scourge of blockchain nonsense is dead,
|
||||
AI models are slowly growing to be more competent, and IT development
|
||||
methodologies are slowly breaking the ouroboros cycle of tooling
|
||||
madness. I still spend a bit of time every day reading about
|
||||
technologies, but I find myself increasingly distant from the what
|
||||
consitutes as \"learning\". At work, the responsibilities revolve about
|
||||
reading a ton of material, but none of them really let you get into the
|
||||
\"nitty gritty\" parts; the parts that truly explain what are you going
|
||||
to do, the parts that makes you actually grow. You learn everything, but
|
||||
yet you learn nothing.
|
||||
|
||||
## An Overview From Orbit
|
||||
|
||||
The market is slowly disconnecting from each other. Companies are
|
||||
falling out of love with open source, and we the slaves to these
|
||||
technologies are facing an increasingly uphill battle to be relevant. As
|
||||
companies continue to consolidate their products and solutions, unless
|
||||
you\'re the lucky few to work at companies that are large enough to be
|
||||
included in acronyms, we no longer \"know\" the products we use. When
|
||||
you spin up a virtual machine on your cloud provider, are you still
|
||||
using a KVM hypervisor, or are you using a proprietary product that is
|
||||
compatible with KVM? When you use a S3 API to upload your blob files,
|
||||
what is going on in the sausage machine so that your files can now be
|
||||
seamlessly accessed from every part of the world? A \"Unix-compatible\"
|
||||
interface on a blob storage, how are these filesystem calls translated?
|
||||
We are increasingly led to learn about things that kind of makes sense,
|
||||
but also kind of don\'t. Your CI/CD needs workflows, pipelines, zones,
|
||||
frameworks, etc. Companies are increasingly saying, \"Shhh. Stop
|
||||
learning more, start understanding less. Trust the process and slip us
|
||||
some money while at that\".
|
||||
|
||||
When all you learn is to be locked in to a company\'s product, how
|
||||
meaningful are your skills? A pianist can continue to play pianos from
|
||||
another brand, a shoemaker can just buy his tools from a generic company
|
||||
in China, a hammer-ist can just buy another hammer. Sure, you could just
|
||||
\"learn a new language\", you could just adapt to a new file syntax like
|
||||
yaml or HCL, but I\'d wager this is a situation unique to IT. Spending
|
||||
hundreds of hours finding the right kind of glue to bring products
|
||||
together, but spending zero time making sense because this terrible
|
||||
combination of products was decided by some C-suite who wants to \"turn
|
||||
things around\" in the company.
|
||||
|
||||
Perhaps at this point you might be thinking, \"You are not not working
|
||||
for the right company\", \"You need a difference perspective\",
|
||||
\"You\'re terribly young and this is nothing new\" and I would be glad
|
||||
to be convinced so, but the water is starting to boil and I\'m not the
|
||||
only frog. I don\'t know what\'s the takeaway from this article other
|
||||
than a doomer-ist perspective. Perhaps it\'s a reflection on my dimming
|
||||
outlook of the world and global trends. Wars, famine, climate change,
|
||||
and more are here and in full force, but we are here in hour long
|
||||
meetings explaining how authentication tokens work to a senior engineer
|
||||
from the customer that has muted his mic and walked away from the
|
||||
laptop. Fun times ahead.
|
||||
|
||||
## Tailscale Is Cool
|
||||
|
||||
It\'s cool, go check it out. It\'s like Hamachi from years past but way
|
||||
more useful. Now I can just use a Docker compose file to spin up my
|
||||
Gitea containers and expose the service with HTTPS already included with
|
||||
a Funnel. Tailscale, if you\'re reading this, please let me redirect my
|
||||
CNAME record to my funnel thanks.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-017.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog-019.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> \"Life in this world,\" he said, \"is, as it were, a sojourn in a
|
||||
> cave. What can we know of reality? For all we see of the true nature
|
||||
> of existence is, shall we say, no more than bewildering and amusing
|
||||
> shadows cast upon the inner wall of the cave by the unseen blinding
|
||||
> light of absolute truth, from which we may or may not deduce some
|
||||
> glimmer of veracity, and we as troglodyte seekers of wisdom can only
|
||||
> lift our voices to the unseen and say humbly,\'Go on, do Deformed
|
||||
> Rabbit\... it\'s my favourite.\'\"\
|
||||
> - Didactylos, Small Gods
|
107
test-markdown/19.md
Normal file
107
test-markdown/19.md
Normal file
@ -0,0 +1,107 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# Seeking New Paths
|
||||
|
||||
</div>
|
||||
|
||||
## It\'s Golang
|
||||
|
||||
Oh wow, this is going to be a short one. I decided to pick up Golang on
|
||||
a whim and I am pleasantly surprised. I have picked up Golang a few
|
||||
times before, but it never clicked until this time, and oh boy did it
|
||||
click this time. I love the strongly-typed nature of the language, and
|
||||
how ergonomic everything is. Sure, there are some things that I would
|
||||
miss from Python like list comprehensions, but when Golang is blazing
|
||||
fast compiled, do I still miss them? I surely do not miss the
|
||||
pre-optimization going on in my head whenever I write Python.
|
||||
|
||||
## It\'s The Little Things
|
||||
|
||||
Coming from the shithole called the Python packaging ecosystem, Golang
|
||||
set me free. No longer do I have to suffer from pip refusing to install
|
||||
packages, Poetry trying to do weird shit, using virtualenv to create
|
||||
\"safe\" spaces; Golang allows me to do the most important part of
|
||||
coding itself: the code. Dockerfiles with Python almost always devolve
|
||||
into some unholy incantation of pip and some demonic workaround to \"get
|
||||
it right\".
|
||||
|
||||
No longer do I have to start thinking about how Python would shank me
|
||||
sideways for \"poor\" coding decisions; Golang coding styles are simple
|
||||
but straightforward. Golang tests all function calls to make sure that
|
||||
they match the type signatures. The development cycle is tight and fast.
|
||||
|
||||
I just spend an hour yesterday reading about how Flask only has one
|
||||
event loop and one worker, how multiple requests are shared by one
|
||||
worker, oh-my-what-a-terrible-decision-please-use-ASGIS, worrying about
|
||||
having to move to a \"production\" quality server set up, and all that
|
||||
noise. If I have to read one more \"comprehensive\" guide on asyncio,
|
||||
threading, subprocesses, and how I need to do some convoluted set up
|
||||
just to get concurrency, I\'d rather just git init a new Golang project.
|
||||
On Golang, concurrency is already built into net/http.
|
||||
|
||||
## It\'s Coming I Swear
|
||||
|
||||
After countless of dead projects that my hard drive only knows of, I
|
||||
feel like Golang has truly pushed my determination to places I\'ve never
|
||||
been before. It\'s exhilarating and exciting. Experienced Golang devs,
|
||||
let me have thismoment, before I crawl back into the depths of Python.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-018.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog-020.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> Woo-wee! Evil Morty! That was quite a scheme. Makes me wonder if
|
||||
> there\'s an evil me out there. But I guess, sometimes I look at my
|
||||
> life, and I may not even need 'im. Cuz, well, guess I made a pretty
|
||||
> big mess of things myself. Ooo eee. I never got my job at the
|
||||
> university back. Remember that? Rick made me do karate. It was kinda
|
||||
> funny, but I guess things went downhill from there. Started isolating
|
||||
> myself from Amy. Used to tell her everything I was feeling. But then I
|
||||
> guess I stopped. Cuz I wanted her to love who she thought I was, not
|
||||
> who I felt myself becoming. Ever think about how horrified the people
|
||||
> we love would be if they found out who we truly are? So we just dig
|
||||
> ourselves deeper, into our lies every day, ultimately only hurting the
|
||||
> people who were brave enough to love us. Wish I didn\'t do that. Wish
|
||||
> I was brave enough to love them back. I don\'t know. Maybe you should
|
||||
> try it. We don\'t have as much time as we think. Ooo eee.\
|
||||
> - Mr. Poopybutthole
|
108
test-markdown/20.md
Normal file
108
test-markdown/20.md
Normal file
@ -0,0 +1,108 @@
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Home](../index.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Blog](blog--01.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Git](https://renraku.dingo-bramble.ts.net/clement)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[CV](../files/CV.pdf)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
<div>
|
||||
|
||||
# Pushing New Boundaries
|
||||
|
||||
</div>
|
||||
|
||||
## Hell Yeah It Is About Golang
|
||||
|
||||
I\'ve always wanted to start project and properly finish it. Thanks to
|
||||
Golang and a heck ton of conversations with ChatGPT, I managed to make
|
||||
it happen. No more dead projects in the water, no more stranded code
|
||||
without an end in sight.
|
||||
|
||||
So what is it? What have my grubby little fingers created by hammering
|
||||
these poor blue switches for over 3 months in my spare time? [A tarot
|
||||
reader that is](https://tarot.dingo-bramble.ts.net/index.html). Just a
|
||||
boring tarot reader. Yes, yes, it is done with \"AI\". Yes, it is done
|
||||
with GPT-3.5. Yes, yes, it is probably worse than those chatbot wrappers
|
||||
you get off Play Store that scams with a hefty annual subscription if
|
||||
you forget to cancel the free trial. You go the site, you \"talk\" via a
|
||||
text form to an entity that tells you ambiguous futures and whatnots
|
||||
about what\'s on your mind.
|
||||
|
||||
## How It Works
|
||||
|
||||
It is pretty much a Golang chatbot that is prompted to talk like a tarot
|
||||
reader. I generated the tarot card set with Dall-E. Link it up with some
|
||||
basic Postgres tables to store conversation, put it behind
|
||||
Caddy+Tailscale Funnel to serve HTTPS traffic and that is pretty much
|
||||
all. Unimpressive, I know.
|
||||
|
||||
## But Why
|
||||
|
||||
Because I can. But really, it is because I never \"knew\" front end
|
||||
development. In this age of Bootstrap, AngularJS, Tailwind, and whatever
|
||||
is going on with front end development, it has always felt that I am
|
||||
served the same thing but on different plates. This project has allowed
|
||||
me to go in depth on how many things came together. CSS styles, the
|
||||
Javascript DOM model, HTML divs, etc. Never had I spent so much time
|
||||
reading MDN and realized the wealth of knowledge that is available on
|
||||
it.
|
||||
|
||||
## Conclusion And Some More
|
||||
|
||||
This project is not \"creative\". If you are against OpenAI, then this
|
||||
project is \"useless\" too. But it was not useless to me. The
|
||||
\"democratization\" of LLMs gave me the push forward to places I have
|
||||
not been before. LLMs was the teacher that I never had, and the
|
||||
assistant that could do \"that one thing\" that you never really
|
||||
understand.
|
||||
|
||||
What about the poor artists I have ripped off? What about the treasure
|
||||
trove of knowledge that these LLMs were trained on that contains a ton
|
||||
of copyrights and IPs? Should I have stopped to wonder to wonder whether
|
||||
I should, before wondering whether I could? Is this code legitimately
|
||||
\"mine\"? I do not have the answers. But without the push from LLMs, the
|
||||
barrier of entry to the ever-changing landscape of tech has never been
|
||||
so accessible.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
::: navbar
|
||||
<div>
|
||||
|
||||
[Prev](blog-019.html)
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
[Next](blog--01.html)
|
||||
|
||||
</div>
|
||||
:::
|
||||
|
||||
> "but what should we do when the highborn and wealthy take to crime?
|
||||
> Indeed, if a poor man will spend a year in prison for stealing out of
|
||||
> hunger, how high would the gallows need to be to hang the rich man who
|
||||
> breaks the law out of greed?"\
|
||||
> - Terry Pratchett, Snuff
|
Reference in New Issue
Block a user