Compare commits

...

3 Commits

Author SHA1 Message Date
478ded0e17 Fixed broken fetch 2024-10-13 22:16:37 +08:00
2bdda9ecc2 Test Pandoc markdown 2024-10-13 22:14:58 +08:00
a58258034a Fix some small stuff 2024-01-23 23:16:27 +08:00
15 changed files with 1287 additions and 2 deletions

View File

@ -4,6 +4,7 @@
</header>
<ul>
<li><a href="blog-020.html">2024-01-14 &nbsp;&nbsp;Pushing New Boundaries</a></li>
<li><a href="blog-019.html">2023-12-01 &nbsp;&nbsp;Seeking New Paths</a></li>
<li><a href="blog-018.html">2023-10-31 &nbsp;&nbsp;We Need More Motivation</a></li>
<li><a href="blog-017.html">2023-03-29 &nbsp;&nbsp;New Year New Beginnings</a></li>

View File

@ -7,10 +7,11 @@ cd ../blog
POSTNUM=$( ls -l content-* | wc -l )
QUOTENUM=$( ls -l quote-* | wc -l )
if [[ $POSTNUM -gt $QUOTENUM ]];then
CURRNUM=$POSTNUM
NUM=$POSTNUM
else
CURRNUM=$QUOTENUM
NUM=$QUOTENUM
fi
CURRNUM=$(( $NUM -2 ))
# Create post and quote from template
NEWPOSTNAME="content-$(printf %03d "$CURRNUM")"

97
test-markdown/10.md Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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