<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Amber&apos;s Blog</title><description>Hello I write stuff here hi ^-^</description><link>https://blog.lx862.com/</link><language>en-us</language><item><title>School computers</title><link>https://blog.lx862.com/blog/2022-12-26-school-computers</link><guid isPermaLink="true">https://blog.lx862.com/blog/2022-12-26-school-computers</guid><description>I love (messing with) school computers!</description><pubDate>Mon, 26 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;nav class=&quot;toc&quot;&gt;&lt;p class=&quot;toc-text&quot;&gt;Table of Content&lt;/p&gt;&lt;ol class=&quot;toc-level toc-level-1&quot;&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#primary--elementary-school&quot;&gt;Primary / Elementary School&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#secondary--high-school&quot;&gt;Secondary / High School&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#a-fresh-start&quot;&gt;A fresh start&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/nav&gt;&lt;p&gt;If you are a computer nerd like me, chances are you have messed around with school’s computer and see what you can do with it.&lt;/p&gt;
&lt;p&gt;This is just going to be a blog talking about things I’ve done with school computers during my time studying.&lt;/p&gt;
&lt;h2 id=&quot;primary--elementary-school&quot;&gt;Primary / Elementary School&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#primary--elementary-school&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I started falling in love with computers back in year 4, especially the Windows side of things, all simply because of a &lt;a href=&quot;https://www.youtube.com/watch?v=D3-vBBQKOYU&quot;&gt;Windows error remix&lt;/a&gt;.
Back then I don’t have my own computer, then I found something called a Virtual Machine that allows you to emulate different system. My parents was kind enough to let me setup my own Windows XP VM, and I’ve learnt alot during the process.&lt;/p&gt;
&lt;p&gt;In the computer lab, I would just set the theme from the ugly classic theme my school set to Windows XP’s Luna theme and think like I am dealing drugs or something lol. Occasionally I would grab other people’s attention, but nothing more than that.&lt;/p&gt;
&lt;h2 id=&quot;secondary--high-school&quot;&gt;Secondary / High School&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#secondary--high-school&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;year-1&quot;&gt;Year 1&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#year-1&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;At this point I was basically very obsessed with operating system.&lt;/p&gt;
&lt;p&gt;The computer lab runs on like first-gen i7 or something along with Win10, and I was initially very excited.&lt;/p&gt;
&lt;p&gt;…until I realized they did not enable administrator. (Which is the proper thing to do)&lt;/p&gt;
&lt;p&gt;I can’t really do anything about it, but on the library there are ~5 computers running Windows XP. A brief look of the specs reveals that it’s a pentium 4 machine with 2GB of RAM.&lt;/p&gt;
&lt;p&gt;These thing are slow, very slow, so I thought that destroying them would be a better use than just leaving it alone!&lt;/p&gt;
&lt;p&gt;So one by one I used different method to render the OS unbootable, whether that’s by deleting registries, bootloader or System32.&lt;/p&gt;
&lt;p&gt;Like what are the odds they could catch us anyway, the computer will remain normal until they reboot, and by then I am already out of the library!&lt;/p&gt;
&lt;p&gt;Turns out a device called CCTV exist.&lt;/p&gt;
&lt;p&gt;Also, there are 1 instances where I was deleting registries and the computer suddenly hard reset, and it no longer boots.&lt;/p&gt;
&lt;p&gt;Behind me is a student who is queuing up for using this PC because I’ve literally destroyed the other 4 computer, and now I destroyed the remaining one infront of him.&lt;/p&gt;
&lt;p&gt;So I just uh &lt;i&gt;casually talk to my friend about this and left the library&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;One day later my parents said that the IT department called him, stating that I destroyed the library computer and they have to restore the image. My parent didn’t really believe that I would do that, and I obviously did not admit that I destroyed it, and things just ends there. My class teacher are a bit pissed off, but I didn’t really receive any punishment for that.&lt;/p&gt;
&lt;h3 id=&quot;year-2&quot;&gt;Year 2&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#year-2&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I started taking advantages of breaks between lessons and started doing dumb things like forkbomb on the classroom’s computer. (These classroom computers are still running the good old trusty Windows XP, so forkbomb is rather easy to stop)&lt;/p&gt;
&lt;p&gt;Funny enough they actually do not have CCTV installed on the classroom, so I didn’t really get caught or anything, and I did not do anything permanent to the PC. It’s a rather uneventful year.&lt;/p&gt;
&lt;h3 id=&quot;year-3&quot;&gt;Year 3&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#year-3&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;At this point I am more in the programming side of stuff and lost interest in just “bricking computers”.&lt;/p&gt;
&lt;p&gt;The class teacher of the 3rd year decided to replace the old XP classroom computer to his own computer which is a 16GB win10 machines, even as to claiming that “&lt;i&gt;The amount of RAM this PC has is 8 classroom computer combined together!&lt;/i&gt;”. But at this point I already have my own 16GB machine at my home. He’s not wrong, but it’s really nothing impressive about it.&lt;/p&gt;
&lt;p&gt;It’s also worth noting that the class teacher himself setup the machine, so the default account is not locked down and I can do whatever I want.&lt;/p&gt;
&lt;p&gt;One thing I did notice is that the command prompt for mapping network drive appears on log-in (Where as in other PC does not, although the drive still end up getting mapped anyway), I was intrigued by it, and I started looking deeper to the drive. It’s a collection of folders stored by different teacher, some of them even have homework answers in it. I quickly uploaded to my Google Drive account during the breaks. Slowly but surely I’ve got into the habit of uploading literally anything on that network drive to my school’s Google Drive account. (Which has unlimited storage, well at least before Google started killing it off).&lt;/p&gt;
&lt;p&gt;Another thing I noticed is that the class teacher treat this as more of his personal computer than anything else, even as to connecting his OneDrive account to the computer. I took a peak at his OneDrive and noticed that there is a network drive batch file that connects to several other hidden network location, which contains even more homework answers.&lt;/p&gt;
&lt;p&gt;Besides since I now have admin power, I created another Windows user account to upload all the data on that drive in the background during lessons. This is a massive time-save and at one point I racked up around 4TB of data. (Obviously with some duplicated as I upload periodically)&lt;/p&gt;
&lt;p&gt;It’s pretty nice but I was hoping one day at least 1 teacher would upload the exam paper answer to the network drive, then I could have a peak at it.&lt;/p&gt;
&lt;p&gt;Fast-forwarding to just days before the last exam of the year, that moment finally arrived. An English teacher uploaded the exam answer for G.E paper and I immediately uploaded it to google drive and shared with my friends.&lt;/p&gt;
&lt;p&gt;My friends are a little bit skeptical, thinking this is too good to be true and didn’t bother (And their result are better than me anyway so it doesn’t matter). However I still memorized the answer of at least the first page. On the day of the exam, that effort pays off as it is exact same paper. I got the highest mark of the entire class (Although still pretty low, only around ~70/100), and I was happy and guilty at the same time.&lt;/p&gt;
&lt;p&gt;^ So if you’re a school IT Admin, or just a teacher reading this for whatever reason, please just use a USB.&lt;/p&gt;
&lt;p&gt;Anyways after that I am still bored. I then have an idea to downloaded &lt;a href=&quot;https://www.intel.com/content/www/us/en/download/17881/intel-extreme-tuning-utility-intel-xtu.html&quot;&gt;Intel Extreme Tuning Utility (XTU)&lt;/a&gt; and dragged the clock speed of the classroom PC all the way down to 800Mhz.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/XTU_800.Bl72qz5g_Z1q3I84.webp&quot; alt=&quot;Intel Extreme Tuning Utility UI&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1400&quot; height=&quot;837&quot;&gt;&lt;figcaption&gt;Intel Extreme Tuning Utility UI&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I did this right before the History lesson starts, which is the lesson I probably hate the most. The History teacher ended up waiting 3 and a half minute just to open a photo with the Photo app, it was almost the most powerful and disruptive thing I could’ve done on every lesson. But I know I can’t keep that rolling forever, someone will eventually find out so I just raised the clock speed back to normal. (In-fact it took me around 30 minute just to set it back to the normal speed)&lt;/p&gt;
&lt;p&gt;Anyways at that point I am still thinking what to do in the next year, but I don’t reakky have to worry as the last moment I just switched to a vocational education school. (That obviously expertise in Information Technology, given how much of a nerd I am)&lt;/p&gt;
&lt;h2 id=&quot;a-fresh-start&quot;&gt;A fresh start&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#a-fresh-start&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Arriving at the “new” school, I was finally greeted with reasonable computer specs and software. These computers are connected to a domain controller, and the system would be restored everytime the computer boots. Again the user account do have access to administrator privilege, however due to the large amount of professional software installed on the machine that often updates itself, it’s not unreasonable to grant it administrator privilege.&lt;/p&gt;
&lt;p&gt;But obviously nothing is bullet proof. For one, there is a hosts files that prevents student from watching youtube or stuff like that, but with admin privilege it has became more easier than ever to just delete it, and now you can watch youtube.&lt;/p&gt;
&lt;p&gt;The task manager is disabled by a classroom management program called “&lt;strong&gt;Lanschool&lt;/strong&gt;”. When the teacher client starts, it automatically locks the student’s access to the task manager and several other stuff. However we often power our computer on before the teacher arrives, and Lanschool will not kill the task manager that is already opened. So we can use that and terminate the Lanschool program, now we have total control.&lt;/p&gt;
&lt;p&gt;Another method is discovered later to just run &lt;code&gt;taskkill /F /IM student.exe&lt;/code&gt; to terminate Lanschool even with it being turned on, then editing group policy to re-enable task manager.&lt;/p&gt;
&lt;p&gt;However I didn’t really do this for long. For one it’s just annoying? Surely I have better stuff to do than terminating this everytime the lesson starts.&lt;/p&gt;
&lt;p&gt;Second I don’t really see the benefit of killing it. I no longer have the interest to do stuff that is against the teacher’s/school’s rules. And the things they are teaching is rather essential, I usually just pay attention whenever I can.&lt;/p&gt;
&lt;h3 id=&quot;year-2-1&quot;&gt;Year 2&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#year-2-1&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now that I know these computers are all “connected”, I found out I can command a remote shutdown/restart to anyone, And I can also use msg/psexec to remotely run programs.&lt;/p&gt;
&lt;p&gt;I only did some msgbox for testing, nothing harmful. There’s also not alot of free time I could mess around, and I have no reason to not pay attention to the lesson as they all seems to interest me.&lt;/p&gt;
&lt;h3 id=&quot;year-3-1&quot;&gt;Year 3&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#year-3-1&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is the final year. And there is an computer lessons that just teaches you basic office work and stuff. It’s very boring, but at the same time that leaves me with alot of free time.&lt;/p&gt;
&lt;p&gt;I am still intrigued by the ability to remotely execute programs, but the IT Department probably knows about this and they finally turned off Remote Desktop this year.&lt;/p&gt;
&lt;p&gt;I can still shutdown remotely, but nothing more than that. However I soon discovered that you can use the default Windows Task Scheduler to remotely schedule commands, but I couldn’t get it to work no matter what.&lt;/p&gt;
&lt;p&gt;Until ~2 weeks ago as of writing this, I was watching through a &lt;a href=&quot;https://www.youtube.com/watch?v=K4WkdvZ2948&quot;&gt;YouTube video&lt;/a&gt; sharing his tech stories at school (Great video btw).&lt;/p&gt;
&lt;p&gt;I saw &lt;a href=&quot;https://www.youtube.com/watch?v=K4WkdvZ2948&amp;#x26;lc=Ugy_iINUwWM-Op733pZ4AaABAg&quot;&gt;this comments (In the highlighted comments section)&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Someone apparently downloaded the very same classroom software that their school uses, so they have the teacher client and are able to take control of others computer.
I thought you can only bypass it in some really ancient and badly maintained classroom software and I didn’t thought much about it at the time.&lt;/p&gt;
&lt;p&gt;Eventually it got me wondering can I do the same. But I can’t download the classroom software (Lanschool) my school uses. My school is 1 major version behind, and I am very uncertain whether that will work.&lt;/p&gt;
&lt;p&gt;In addition I am just against trialware, and given Lanschool is maintained by Lenovo, surely they won’t just give you access because you’re on the same network right?&lt;/p&gt;
&lt;p&gt;But what if I can copy the client from the teacher’s PC? I know I have to find a way to remotely execute some command on their end so I can obtain the file. I quickly realized the whole time I was scheduling the task with the wrong log-in credentials and that’s why it did not run the task.&lt;/p&gt;
&lt;p&gt;So I switched to use an local account called &lt;code&gt;kfstud&lt;/code&gt; which is setup by the school, presumably in the case where it can’t connect to the domain, and now I can finally remotely schedule tasks!&lt;/p&gt;
&lt;p&gt;I still think that it won’t be as simple as copying the binaries. There is only 2 lessons left, and I want to at least get something out of it.&lt;/p&gt;
&lt;p&gt;As a compromise I decided to not push my luck, but going to the safer and less impressive approach of viewing and taking control the teacher’s PC. That means I would remotely download TightVNC Server to the teacher’s PC, install it, then I can connect without raising suspicion.&lt;/p&gt;
&lt;p&gt;This ought to be a faster and more reliable approach that would guarentee success, but well this failed hard probably due to some powershell security policy Microsoft implemented, as such I can’t even download anything on their end, I’ve spent the entire lesson trying to get this work but nope.&lt;/p&gt;
&lt;p&gt;At last I decided to just take a gamble and hope the teacher client will work on my student PC. It’s the last lesson anyway, what could I possibily lose?&lt;/p&gt;
&lt;p&gt;Now I need to somehow get it transferred to my computer. My first thought is to copy the Lanschool Program to the network drive (Which is used to hand in homework remotely), then I can obtain it.&lt;/p&gt;
&lt;p&gt;But the account I uses to schedule (kfstud) does not have the network drive mapped, so I can’t do that. I soon figured out that you can share a folder in Windows and it will create a network share that anyone can access.&lt;/p&gt;
&lt;p&gt;So I created a new folder and started sharing it. Then I schedule the copy command on teacher’s PC and copied the Lanschool folder (&lt;code&gt;C:\Program Files(x86)\LanSchool&lt;/code&gt;) to my shared folder.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/lsk.C3fdWxeG_ZzQ800.webp&quot; alt=&quot;Lanschool Teacher Client, captured at that day&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1920&quot; height=&quot;1080&quot;&gt;&lt;figcaption&gt;Lanschool Teacher Client, captured at that day&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;And it actually worked! There’s no password or anything either, I can even archive the teacher binaries and it will still work.&lt;/p&gt;
&lt;p&gt;This is probably my biggest discovery (At least at this school). Sure it’s not like I have to do any hacking 101 or any network sniffing to get it working, and there are almost no barriers preventing me apart from some Windows knowledge. But in the end I am still quite happy about it, just having the teacher client running infront of you feels different.&lt;/p&gt;
&lt;p&gt;Unfortunately it is the last lesson. Looking over my remaining course I can only find 1 computer related course, and it’s not even held in any computer lab.&lt;/p&gt;
&lt;p&gt;So that is how it has to end.&lt;/p&gt;
&lt;p&gt;Looking over this again, I can’t help but notice that I often do bad stuff with bad intentions on the old school, although it probably make sense given how I gives 0 sh*t to almost any lessons.&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>So NVIDIA, F*** you</title><link>https://blog.lx862.com/blog/2023-02-26-Fu-NVIDIA</link><guid isPermaLink="true">https://blog.lx862.com/blog/2023-02-26-Fu-NVIDIA</guid><description>I got a new GPU, and NVIDIA does not make me happy.</description><pubDate>Sun, 26 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Update 2025-01-09: NVIDIA has fixed most of the issues since and I have moved on to Arch. It’s still not the best experience on Linux, but at least you can use your computer properly. Consider this a relic of the past.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ever since I kinda have “my own PC”, my hardware is always several generations behind, whether it’s CPU or GPU.
However last Friday I got an NVIDIA GTX 1660 SUPER, which is going to replace my GTX 650 Ti BOOST 1GB (Coincidentally it is released almost exactly 1 decade ago).&lt;/p&gt;
&lt;p&gt;This card was actually a mining card by &amp;#x3C;undisclosed member somewhere in my family tree&gt;, and it still seems to be in good condition.
This upgrade is also a massive upgrade and it marks the first time I am using a so called “mainstream” GPU card that is still well within the support period.&lt;/p&gt;
&lt;p&gt;Now the NVIDIA GTX 650 Ti BOOST has served me rather well, but the main issue is that my variants only has 1GB of VRAM. Open up a browser on Windows and you’re using almost 800MB/1GB, open up any game and you’re doomed to swap with the System RAM which heavily tanks the performance and are not even using the GPU to the full potential. But I’ve been doing less gaming lately so that is still “workable”.&lt;/p&gt;
&lt;p&gt;Anyways the first thing I did is just boot into Windows, as I know there (usually) won’t be any problem setting up the driver there, and it did work out as planned. Within a minute the driver gets installed automatically and I am now rocking with an 1660 Super with no issues.&lt;/p&gt;
&lt;p&gt;Now it’s time to reboot into Linux. I know for a fact that NVIDIA driver on Linux is a pain, but considering my old GPU haven’t really gave me “too” much issue I thought that the worst scanario is just purging my old NVIDIA legacy driver then reinstall it with the new one.&lt;/p&gt;
&lt;p&gt;I waited, and waited, hoping I would at least see the KDE Plasma Splash Screen… wait did the screen freeze?
This is still within my expectations (Even if annoying), so I tried switching to another tty and remove all the NVIDIA stuff there, except that it seems my entire system just locked up and nothing works.&lt;/p&gt;
&lt;p&gt;Okay well let’s reboot into recovery mode and hope it works there, but then I realized I’ve set my GRUB timeout to be 0s. I know that you can press “Shift” or “Esc” to force GRUB to appear, however I know this doesn’t work at least under my configuration for whatever reason. Resetting the GRUB Timeout is somewhere on my todo list for a long time so I can actually boot into recovery mode when needed, but everytime I just dismiss it and finds something better to do. Well now it came back to haunt me.&lt;/p&gt;
&lt;p&gt;Well alright, at least I still have my Ventoy USB. I am going to boot into Ubuntu Live then modify the grub config there… what in the world is this?&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/ub-glitch.tKaaIM0M_1B9pqK.webp&quot; alt=&quot;Ubuntu Live Session, with a heavy green tint&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1920&quot; height=&quot;1080&quot;&gt;&lt;figcaption&gt;Ubuntu Live Session, with a heavy green tint&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Yes it is still perfectly usable apart from the green tint, but this is already a big downgrade as none of this happens with my previous (also NVIDIA) GPU and it’s just a terrible experience. Anyways I did finally get the GRUB menu to show up and entered recovery mode, and now I can finally uninstall the old NVIDIA Driver.
After rebooting I am back on Plasma desktop with nouveau, which sucks in performance but are still better than the whatever NVIDIA nonsense I just had.&lt;/p&gt;
&lt;p&gt;So let’s re-install the latest NVIDIA driver and it should work right? I rebooted and well I was greeted with the exact same issue. Black screen, nothing responds.
I don’t know what to do, does this card just don’t work on Linux at all? That is until I remembered I saw a post on the fediverse that says he can’t get NVIDIA KMS to work and he can’t use Wayland because of that.
This probably have nothing to do with my situation, but my session is set to auto-login to Wayland, maybe newer NVIDIA GPU just don’t work with Wayland?
So I modified the sddm config so that it would login to the X11 session instead, and yup that worked! (Which basically means I can no longer use the Wayland Session, which have massive performance improvements over X especially after the 5.27 update).&lt;/p&gt;
&lt;p&gt;Also, because NVIDIA is now my main GPU, all my xrandr script no longer works and I have to rely on NVIDIA’s decade old “X Server Settings” (That’s probably at least around 2008 or something) to tweak it. That settings panel would resize the window itself on some specific tab because apparently scrolling no longer exist. Clicking “Save to X Configuration File” doesn’t account for PRIME monitor, and apparently you must launch nvidia-settings on startup just for your color profile to get applied???&lt;/p&gt;
&lt;p&gt;All my existing QEMU VM that utilize virtio gpu also no longer works under UEFI, so I either have to reinstall all of them with Legacy BIOS or just use QXL which is rather slow and not suitable for when I actually need to get stuff done.&lt;/p&gt;
&lt;p&gt;It’s just sucks that NVIDIA makes the most advanced and popular GPU, yet they are just uncooperative at everything, making using NVIDIA GPU on Linux second class and devs and user spending more time dealing with NVIDIA specific quirks. This is an inferior product especially in contrast to Red and Blue Team where they both would work out of the box under Linux with absolute 0 configuration, everyone is happy.&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>I tried KDE Plasma</title><link>https://blog.lx862.com/blog/2023-03-01-I-tried-KDE-Plasma</link><guid isPermaLink="true">https://blog.lx862.com/blog/2023-03-01-I-tried-KDE-Plasma</guid><description>It&apos;s not what I think it would be</description><pubDate>Wed, 01 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;nav class=&quot;toc&quot;&gt;&lt;p class=&quot;toc-text&quot;&gt;Table of Content&lt;/p&gt;&lt;ol class=&quot;toc-level toc-level-1&quot;&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#the-good&quot;&gt;The good&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#ah-bugs&quot;&gt;Ah, bugs…&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#ux&quot;&gt;UX&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#overall&quot;&gt;Overall&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/nav&gt;&lt;p&gt;KDE Plasma is often regarded as one of the most customizable and powerful Desktop Environment and there’s no doubt about it.
So in around January, I switched my main desktop to Debian Testing along with KDE Plasma just to get a taste of how it actually feels like.&lt;/p&gt;
&lt;p&gt;Took me a while to get this thing actually running and understand everything but well at least I’ve learnt a lot of stuff along the way and now we’re here.&lt;/p&gt;
&lt;h2 id=&quot;the-good&quot;&gt;The good&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#the-good&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It is pretty much as “advertised”, just an extremely customizable and adaptable (And with that also comes with a cost of well, slightly more bugs) desktop environment.
As a more traditional desktop user, KDE’s default workflow works well and I don’t have to tinker too much to get it right, at the same time offering some comfort features hidden in piles of options. I also love KDE’s Widget as they all are deeply customizable and flexible. This means I can make use of my smallish empty space on my second monitor to display informations that are relevant to me.&lt;/p&gt;
&lt;p&gt;And of course I have to mention KRunner, sometimes you just want to just run some quick terminal command, calculations, currency conversion, dictionary and spelling lookup, KRunner can do it all out of the box.&lt;br&gt;
You can also &lt;a href=&quot;https://store.kde.org/browse?cat=628&quot;&gt;browse more KRunner Plugins/Runners&lt;/a&gt; and see what goodies are on the shelf.
If you know a bit about python scripting/C++, you can also just make your own plugin to suits your need. (Although there’s not alot of documentation).&lt;/p&gt;
&lt;h2 id=&quot;ah-bugs&quot;&gt;Ah, bugs…&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#ah-bugs&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Right after the initial installation I was hit with a devastating multi-monitor bug.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/plasma-broken.DzN07kbh_dN3OF.webp&quot; alt=&quot;KDE Plasma 5.26.5 with no icon, no window title&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3833&quot; height=&quot;894&quot;&gt;&lt;figcaption&gt;KDE Plasma 5.26.5 with no icon, no window title&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Introduced in Plasma 5.26, if you start the plasma session with 2 monitor under X11, all icons across the entire shell will disappear, window title will disappear and the context menu is oversized.&lt;br&gt;
The worst part is probably the oversized context menu and it pretty much just means I can’t right click anywhere.&lt;/p&gt;
&lt;p&gt;For a long time I was pretty much stuck with single monitor as Wayland works rather “terribly” on my machine.&lt;br&gt;
However when Plasma 5.27 came around Wayland seems to be much smoother, along with the new multi-monitor refactor I can now comfortably switch to Wayland and finally use my second monitor. (Also my current monitor only works well with limited RGB Range, props to KDE devs for making this easy to switch under Display Settings).&lt;/p&gt;
&lt;p&gt;However Wayland also has its own set of issues (Window thumbnail on the panel may not always show, clipboard is a bit wonky etc), and for many Wayland may still not be a viable option, and this rather odd multi-monitor bug might just throws alot of new potential user away from Plasma or even Linux in general.&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;Note: The bug mentioned above has been fixed on Plasma 5.27.2&lt;/ins&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately there are still more bugs waiting for me, mostly relating to random crashes (Even more so in Wayland, there’s rarely a single day where I don’t have to restart plasmashell), and it doesn’t help that Dr Konqi keeps saying that the crash report is not useful, or doesn’t even pop up at all.&lt;/p&gt;
&lt;p&gt;Some of them are packaging issues and are not caused by Plasma itself (&lt;em&gt;Ahem Apper&lt;/em&gt;), but nevertheless still hinders the desktop experience.&lt;/p&gt;
&lt;p&gt;Sure some will say “Plasma works flawless here” but my experience unfortunately tells me otherwise, and it can get very painful especially if you’re still relatively new to Linux having everything fall down on you.&lt;/p&gt;
&lt;p&gt;Now don’t get me wrong, I am not trying to bash against the developer or question the direction plasma is heading. Plasma is complex software and I appreciate those who voluntarily contributes to KDE.
I am just here documenting my experience and how one might be easily discouraged from using Plasma/Linux in general, and I sincerely hope most of them will be fixed in Plasma 6.&lt;/p&gt;
&lt;h2 id=&quot;ux&quot;&gt;UX&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#ux&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Another issue with Plasma is that the UX can get well… a bit questionable. (UI however is absolutely fine and consistent, even if the borders are subjective).&lt;/p&gt;
&lt;p&gt;For example if you want to add an application to the Application Launcher (Start menu), the most average computer users would just drag the app from the panel to the Application Launcher.&lt;/p&gt;
&lt;p&gt;Nope that doesn’t work. So I tried right clicking the empty space in the launcher, expecting that there will be a context menu that I can add/remove items, but nothing pops up either.&lt;/p&gt;
&lt;p&gt;Okay I see a “settings” icon on the top left, given how obviously placed it is surely I can add it from there right?&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/plasma-start.DPqr5yQd_1v8NU8.webp&quot; alt=&quot;KDE Application Launcher, with mouse hovered over the settings icon on top right&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;668&quot; height=&quot;527&quot;&gt;&lt;figcaption&gt;KDE Application Launcher, with mouse hovered over the settings icon on top right&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Nope, it just configures the behavior of the Application Launcher, not the menu itself.&lt;/p&gt;
&lt;p&gt;I am really puzzled, so I gave a google search and turns out you need to right click the Application Launcher from the Panel (Taskbar), then you can click “Edit Applications”.&lt;/p&gt;
&lt;p&gt;That is just “kinda” hidden? Ideally it should be as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Drag and Drop&lt;/li&gt;
&lt;li&gt;If drag and drop can’t be implemented due to technicial reasons, right clicking should bring up a way to Add/Edit applications.&lt;/li&gt;
&lt;li&gt;If neither of these are feasible, instead of putting the Settings button (Where the user will most likely only configure this 1 or few times), it’s probably more sensible to just replace it with an Edit Application button instead?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I think Adding and Removing application from the application launcher should be treated differently than “configuring” the application launcher, but rather just a part of the Application Launcher’s functionality that a normal user would encounter at some point.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/kmenuedit.DQTUCvLW_Z1sFTti.webp&quot; alt=&quot;KMenuEdit, an application for editing Application Launcher&apos;s item&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1164&quot; height=&quot;503&quot;&gt;&lt;figcaption&gt;KMenuEdit, an application for editing Application Launcher&apos;s item&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;It also requires the user to save the configuration manually (Good on paper, but in practice it’s not that good with something as simple as editing a start menu).&lt;/p&gt;
&lt;p&gt;There’s also no indication on whether the current configuration is *modified or not, so the user would have expected it to be saved automatically, but it doesn’t and you would risk losing the new configuration when the editor crashes, which has happended to me at least 3 times now.&lt;/p&gt;
&lt;p&gt;Another thing that I wished Plasma does is the handling hidden files on GUIs. (Very specific I know)
In most cases Plasma just ignores hidden files on the GUI. This can lead to confusion especially with dot-files where, for example, the user are trying to add a &lt;code&gt;.startup.sh&lt;/code&gt; as an &lt;strong&gt;Autostart&lt;/strong&gt; item. This would not be shown in the Autostart System Settings at all even if the item is added already, leading to confusions where “I am unable to add my script to startup, it does nothing”.&lt;/p&gt;
&lt;p&gt;This also goes for other aspects of KDE apps in general.
For example when adding an account in KMail &lt;span class=&quot;sub&quot;&gt;(Yes it’s not actively worked on, but given how they are shipped with the standard KDE Installation you would expect it to have better integration with Plasma and work better than other 3rd party applications)&lt;/span&gt;, you are greeted with this screen.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/kmail.Q2nS-pDE_ZUYoYQ.webp&quot; alt=&quot;KMail Add Account Wizard, with all info entered correctly. The &amp;#34;Next&amp;#34; button is highlighted&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;509&quot; height=&quot;637&quot;&gt;&lt;figcaption&gt;KMail Add Account Wizard, with all info entered correctly. The &quot;Next&quot; button is highlighted&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Clicking the “Next” option will bring you into a loading screen for a split second, then bring you back to this screen with absolutely no indication on what to do, and it turns out you need to click “Add Accounts”.&lt;/p&gt;
&lt;p&gt;Ideally, the “Add Account” button should be highlighted, and the Next button should be disabled when it can’t actually do anything. Better yet, get rid of the Add Account all together and do that automatically when clicking Next.&lt;/p&gt;
&lt;p&gt;Some options are also just hard to discover, for example the “Show Desktop” widget, to toggle between “Minimize all window” and “Peek at Desktop” you have to switch to an alternative widgets.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/alt-widget-desktop.CzgcAOCz_1yaAoG.webp&quot; alt=&quot;Plasma&apos;s Alternative Widget, with 2 options (Minimize all Windows/Show Desktop&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;371&quot; height=&quot;279&quot;&gt;&lt;figcaption&gt;Plasma&apos;s Alternative Widget, with 2 options (Minimize all Windows/Show Desktop&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;These 2 widgets have the exact same apperance but only differs minorly in behavior. A user would try to configure this by right clicking and “Configure Peek at Desktop” only to find that there’s no configuration available other than shortcuts. But given how other widgets also use the Configure Window to configure the behavior it should be the same in this widget as well.&lt;/p&gt;
&lt;p&gt;To be clear these UX issues isn’t really a problem for existing Plasma users as they usually know the way around, and in all fairness most of them aren’t located in 50 submenu so it’s very straightforward once you know it, but it sort of creates a barrier for new users who are just trying Plasma out.
Sure you can Google it but the user should be able to discover these options by themselves.&lt;/p&gt;
&lt;p&gt;With that being said it seems that these UX issues are slowly being tackled on, and newly developed KDE apps are usually pretty good, along with the &lt;a href=&quot;https://pointieststick.com/2022/12/09/this-week-in-kde-new-spectacle/&quot;&gt;redesign of Spectacle&lt;/a&gt;, moving items to a more sensible group in System Settings it is heading towards a good direction, but there are just many of these issues across different areas, and especially with the amount of apps KDE has, it will probably take a good while for most of it to be resolved.&lt;/p&gt;
&lt;h2 id=&quot;overall&quot;&gt;Overall&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#overall&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Plasma will remain as my primary DE on my main Desktop, it’s a DE where “It works very well… when it does”.&lt;br&gt;
For me there’s a decent amount of crashes and quirks &lt;sub&gt;(Yes I will try to report bugs whenever I can)&lt;/sub&gt; but it’s still a powerful and customizable DE, with the right configuration it can appeal to lots of people.&lt;/p&gt;
&lt;p&gt;Obviously if you are new to Linux then Plasma probably won’t be my choice. You’re pretty much always better off with Linux Mint + Cinnamon.
Yes they don’t have Wayland, looks dated by default (But theme exists), not as customizable as KDE Plasma, but it’s rock stable and are generally very good just to get your feet wet before going any further.&lt;/p&gt;
&lt;p&gt;Or maybe you could also stick with an older version of Plasma and hope these nasty issues don’t chase after you, although they will go out of support soon and that’s not really a viable choice.&lt;/p&gt;
&lt;p&gt;I apologize if this post sounds just like me nitpicking KDE Plasma’s weakness, but I really wanted to share on what a normal user may find fustrating, and what could be improved for a more pleasent experience. I do respect all KDE contributors and to get us to where we are today.&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>My English Teacher retired</title><link>https://blog.lx862.com/blog/2023-03-29-English-Teacher-Retirement</link><guid isPermaLink="true">https://blog.lx862.com/blog/2023-03-29-English-Teacher-Retirement</guid><description>...it shouldn&apos;t have hit as hard as it did</description><pubDate>Wed, 29 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s year-3 and we just had a new English teacher.&lt;/p&gt;
&lt;p&gt;He’s sort of the more “close-minded” teacher, have a rather strict set of rules and are not always received by everyone.&lt;br&gt;
But in terms of actually teaching I think he does a pretty good job, often providing his own materials and pass on his experiences to ensure we can pass the subject.&lt;br&gt;
As long as you do actually listen to what’s he saying then there’s usually no problem.&lt;/p&gt;
&lt;p&gt;He’s also one of the more senior teachers and have a strong sense of responsibility, so he generally have more says on stuff and you can pretty much take his word for it.&lt;/p&gt;
&lt;p&gt;So around a month ago he took a short break for maybe like 2 weeks, and leaves the task to the substitude teachers.&lt;br&gt;
But damn that substitude teacher rarely actually teaches stuff, having strict rules, only keep saying stuff on our book word by word then ask us what is the answer like what even is the point??? And that just left me pretty pissed off.&lt;/p&gt;
&lt;p&gt;Anyways the English teacher did return later and I was more relieved, but around 2 weeks ago he said he’s “taking a long break” and will once again leave the rest of the task another substitude teacher for the time being.&lt;/p&gt;
&lt;p&gt;Now I should’ve been alerted at this point as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;He just had a break not long ago&lt;/li&gt;
&lt;li&gt;He didn’t specify the time when he returns, which is very unusual as he usually has a strong sense of responsibility&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But he just says it in a “casual” way, and if anything I am clearly more worried of what will be the next substitude teacher than him taking a break.&lt;/p&gt;
&lt;p&gt;As expected another substitude teacher came (Not a bad one btw) shortly after, but almost the first thing she said is “Yea so you know your English teacher is retired right”, and we’re just like ?????.&lt;br&gt;
Well… I guess he’s not wrong about it being a “long break”, but I don’t quite understand why would he not just straight up tell us.&lt;br&gt;
Maybe he just want us to keep focusing on the subject rather than him retiring? I don’t know but it just keeps bugging me over and over.&lt;/p&gt;
&lt;p&gt;You might think I am crazy for being such emotionally attached to a teacher, but he’s really one of the few teacher that can actually teach stuff in a very good way that most student can understand properly. Either way it’s also just weird to see him just leave in mid-semster on the final year, there’s something incomplete about it.&lt;/p&gt;
&lt;p&gt;He did however return yesterday (Presumably to pack up the rest of his stuff at school) and I get to see him (probably one last time) when changing lessons.&lt;br&gt;
He did said some encouragement words to me, I can only wonder does he knew what the teacher told us…&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>I rebuilt this blog</title><link>https://blog.lx862.com/blog/2023-04-02-I-rebuilt-the-blog</link><guid isPermaLink="true">https://blog.lx862.com/blog/2023-04-02-I-rebuilt-the-blog</guid><pubDate>Sun, 02 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yes this is my new blog.
If it doesn’t make you clear that I am not a designer then I don’t know what does.&lt;/p&gt;
&lt;p&gt;You might have also noticed a few new post, as I pretty much abandoned my old blog’s repo and I was writing posts on this new blog instead.&lt;br&gt;
Unfortunately I was struggling to get this site to look decent (Eventually gave up) and at last it took me way longer to roll this out than I’d like to.&lt;/p&gt;
&lt;p&gt;Why rebuild? The previous site is based on Beautiful Jekyll, a blogging template that uses GitHub pages to host the blog.
For starters I think it’s great and it makes blogging more accessible than ever. You get all your RSS feed, a proper looking blog page, comment section etc by only tweaking a few keys in the yaml file.
However overtime as I “attempt” to add my own stuff this has became an inconsistent mess serving dozens of files that I don’t even know what’s it’s doing. (Especially when I am not that familiar with jekyll in the first place)&lt;/p&gt;
&lt;p&gt;To put it simply, I want slightly more control over my blog and I certainly have better knowledge of JS than anything else (Yes javascript rules the world)&lt;/p&gt;
&lt;p&gt;Another reason is that I am just the sort of person who wants to plan everything ahead, be very conservative and not wanting to correct anything afterwards. My previous blog that is built with Beautiful Jekyll doesn’t allow me to preview locally (Or rather you can, but it’s just annoying to do), which is a very big dealbreaker.&lt;/p&gt;
&lt;p&gt;So whether you like it or not, this “new blog” is here to stay :)&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>High memory usage on Minecraft 1.18+</title><link>https://blog.lx862.com/blog/2023-07-28-mc-1.19-memory</link><guid isPermaLink="true">https://blog.lx862.com/blog/2023-07-28-mc-1.19-memory</guid><pubDate>Fri, 28 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve recently updated a Minecraft Fabric server from 1.17.1 to 1.19.2, and it’s shocking to see the memory shooting up all the way from 1.6GB to 4.8GB on start up, and that is in a 6GB server!&lt;br&gt;
It could only ever last for a few hours before running out of memory.&lt;/p&gt;
&lt;p&gt;I should have rolled back to 1.17 at this point, but my stupidity still thinks that this is just a temporary side effect and 1.19 gets much better mod support than 1.17 so it shouldn’t be a big problem in the long run, and I was proven wrong once again. I’ve tried everything I could and the server still keeps running out of memory, and now I desparately need to find a solution.&lt;/p&gt;
&lt;p&gt;So later I found &lt;a href=&quot;https://modrinth.com/mod/slumber&quot;&gt;Slumber&lt;/a&gt; which stops the world from ticking when no one is online.&lt;br&gt;
This is usually more for self hosted environment as it can save resources, but it actually does slightly improves memory when no one is online.&lt;br&gt;
However it still does not solve the core issue that 1.19 is just using so much more memory than before.&lt;/p&gt;
&lt;p&gt;That is until I was browsing through modrinth one day and found &lt;a href=&quot;https://modrinth.com/mod/modernfix&quot;&gt;ModernFix&lt;/a&gt;, included in it is a patch that fixes chunkloading requiring a huge amount of memory.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/patch.wZTi17_P_Z1aIUDt.webp&quot; alt=&quot;ModernFix&apos;s paper chunk patches, which lowers memory&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;921&quot; height=&quot;143&quot;&gt;&lt;figcaption&gt;ModernFix&apos;s paper chunk patches, which lowers memory&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I’ve actually heard of ModernFix before, but I’ve always thought it’s only for Forge or something like that so I didn’t look too deep (Perhaps I’ve mixed up with another mod), until I noticed it’s also available for Fabric, so I gave it a shot and that nailed it, the memory are now back to normal (~2GB) :D&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>I made a class schedule widget</title><link>https://blog.lx862.com/blog/2023-10-02-class-schedule-widget</link><guid isPermaLink="true">https://blog.lx862.com/blog/2023-10-02-class-schedule-widget</guid><pubDate>Mon, 02 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;nav class=&quot;toc&quot;&gt;&lt;p class=&quot;toc-text&quot;&gt;Table of Content&lt;/p&gt;&lt;ol class=&quot;toc-level toc-level-1&quot;&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#figuring-out-the-api&quot;&gt;Figuring out the API&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#what-the--is-this-thing&quot;&gt;What the &amp;#x26;#@\ is this thing&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/nav&gt;&lt;p&gt;A while back I vented a bit over on twitter (Now X):&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/twt.BzsXirt2_SRCKo.webp&quot; alt=&quot;Unpopular opinion, but school&apos;s mobile app should have a static notification of what lesson is currently happening, what room to go, and how much time is left. Giving me a timetable of today&apos;s lesson is no different than sending a jpeg.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;732&quot; height=&quot;184&quot;&gt;&lt;figcaption&gt;Unpopular opinion, but school&apos;s mobile app should have a static notification of what lesson is currently happening, what room to go, and how much time is left. Giving me a timetable of today&apos;s lesson is no different than sending a jpeg.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;As with my other venting tweets at the time, I have briefly thought about doing something with it, but ended up being too lazy to care and moves on.&lt;/p&gt;
&lt;p&gt;That is until the next day, one of my friend sent me a picture of their home screen with a widget showing the current and the upcoming class information, the location and the time period of their school.&lt;/p&gt;
&lt;p&gt;Yes it isn’t a static notification I was initially expecting, but nevertheless it does the job, and it does it quite well, so I started looking for a way to achieve the same with my school.&lt;/p&gt;
&lt;p&gt;I obviously don’t want to manually enter each course, otherwise it would be a PITA on every new semester (And also as it turns out, occasionally the classroom would shift depending on different weeks), so I have to figure out a way to get the real-time class schedule from the school.&lt;/p&gt;
&lt;h2 id=&quot;figuring-out-the-api&quot;&gt;Figuring out the API&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#figuring-out-the-api&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;My first instinct would be to get the timetable from our school’s portal website, which looks like it’s something made in 2004.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/portal1.sE2g8znQ_Z1IhDhz.webp&quot; alt=&quot;Our school&apos;s portal website, displaying the timetable view.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1034&quot; height=&quot;928&quot;&gt;&lt;figcaption&gt;Our school&apos;s portal website, displaying the timetable view.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;In the portal, you can request a week (Or multiple week, but it doesn’t work on student account as far as I am aware) of timetable, it then sends an AJAX call and the server returns back the timetable page in HTML.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/portal2.CGH8e9Et_16It0H.webp&quot; alt=&quot;Chromium&apos;s DevTool, showing the response of the timetable page in HTML&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;606&quot; height=&quot;479&quot;&gt;&lt;figcaption&gt;Chromium&apos;s DevTool, showing the response of the timetable page in HTML&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Thanks I hated it! Sure if I really want to reverse engineer this thing I probably could have figured it out somehow, but why go the hard way when there’s an easy way, so I started digging through the school’s mobile app (Which is what my original tweet is targetting anyway).&lt;/p&gt;
&lt;p&gt;With the help of old insecure android version in an emulator &amp;#x26; mitmproxy I did get the endpoint, got it to authenticate (Just some basic username password authentication) and obtained the timetable data, now in JSON!&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/ttjson.D8OXsg-U_ZzQHY7.webp&quot; alt=&quot;A JSON Timetable response from the school&apos;s API&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;624&quot; height=&quot;700&quot;&gt;&lt;figcaption&gt;A JSON Timetable response from the school&apos;s API&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Good, now let’s actually build the app.&lt;/p&gt;
&lt;h2 id=&quot;what-the--is-this-thing&quot;&gt;What the &amp;#x26;#@\ is this thing&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#what-the--is-this-thing&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When I first started this, I have absolutely no android app developing experience. I haven’t tried Kotlin before, I have no idea what is an Activity, Fragment, Intent, the only time I ever touched Android Studio is for their Android Virtual Device.&lt;/p&gt;
&lt;p&gt;I am not going to go through how I learned them as that isn’t the main point (And if anything I shouldn’t be the one qualified to document them), but overall my impression of native Android Development is that you need to be willing to learn a lot of concept rather than expecting things to work after maybe copying a few lines of example code then using it. (Especially Intent/Broadcasts), and that now all of a sudden React Native doesn’t seems that crazy after all.&lt;/p&gt;
&lt;p&gt;Anyways a few weeks in, the app is now in a functional state, I can log in to a school account, it will display the course appropriately, everything works.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/oldwidget.CUy6lDdx_vqzJp.webp&quot; alt=&quot;My initial android app showing class schedules of today, in a card list&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;391&quot; height=&quot;864&quot;&gt;&lt;figcaption&gt;My initial android app showing class schedules of today, in a card list&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Except for the static notification, which is the whole point of the app.&lt;br&gt;
Either the notification doesn’t get updated, the timer is wrong, etc.&lt;br&gt;
I’ve spent weeks tinkering with it with no success, so I left the entire app in the dust and moved on with my life.&lt;/p&gt;
&lt;p&gt;That is until around a year later when a new school year began, that means I have to completely re-adjust my schedules, and that also means having to pull up the timetable image/mobile app on every lesson change to know where am I suppose to go, and start memorizing it all over again.&lt;/p&gt;
&lt;p&gt;Eventually I am fed up, so I decided to make the class schedule app again, this time in the form of android widget (Which I should have been in the beginning).&lt;br&gt;
Note that I have since graduated and was no longer in the school I was previously in, but it is still under the same organization and they use the same system, so all the knowledge I’ve discovered a year ago still applies!&lt;/p&gt;
&lt;p&gt;And after a week of bashing my head against the computer, it has finally been done.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/widget.8mnEKeXJ_1Mweb8.webp&quot; alt=&quot;My initial android app showing class schedules of today, in a card list&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;768&quot; height=&quot;692&quot;&gt;&lt;figcaption&gt;My self-made class schedule widget.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;It’s not fancy nor polished at the moment, it doesn’t properly display across months, it likely doesn’t support having multiple widget at once, nor does it handle holiday and exam schedule (Which the official school mobile app does).&lt;/p&gt;
&lt;p&gt;But I am very happy with the end result, using and solving my own daily life problems/annoyances are always the best, this is one of the few projects that I get to do so, and I very much enjoy it :D&lt;/p&gt;
&lt;p&gt;For now I don’t think I will continue devote a lot of time to this widget, primarily I am not sure how happy my school would be if I distribute this thing, and tbh it’s enough for my usage, although I hope it will reach a production-ready state one day.&lt;/p&gt;
&lt;p&gt;That’s about it, see you in the future :^)&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>Reverse Engineering an USB mouse</title><link>https://blog.lx862.com/blog/2024-05-13-reverse-engineering-a-mouse</link><guid isPermaLink="true">https://blog.lx862.com/blog/2024-05-13-reverse-engineering-a-mouse</guid><description>Clueless, a bit pointless, but fun!</description><pubDate>Mon, 13 May 2024 00:00:00 GMT</pubDate><author>AmberFrost</author></item><item><title>I rebuilt the blog again</title><link>https://blog.lx862.com/blog/2024-10-16-I-rebuilt-the-blog-again</link><guid isPermaLink="true">https://blog.lx862.com/blog/2024-10-16-I-rebuilt-the-blog-again</guid><description>This time in Astro!</description><pubDate>Wed, 16 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;nav class=&quot;toc&quot;&gt;&lt;p class=&quot;toc-text&quot;&gt;Table of Content&lt;/p&gt;&lt;ol class=&quot;toc-level toc-level-1&quot;&gt;&lt;li class=&quot;toc-item toc-item-h1&quot;&gt;&lt;a class=&quot;toc-link toc-link-h1&quot; href=&quot;#current-blog-setup&quot;&gt;Current Blog Setup&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/nav&gt;&lt;p&gt;&lt;a href=&quot;/blog/2023-04-02-I-rebuilt-the-blog&quot;&gt;Last time I rewrote this blog in 11ty&lt;/a&gt;. Unfortunately it slowly ended up being a tech debt, which I think can mostly be attributed to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using a template instead of setting up from scratch&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;Lack of understanding on how 11ty actually works, hitting my head for the 800th time&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mozilla.github.io/nunjucks/&quot;&gt;The Nunjucks Templating Language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;No good code editor support.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;Relatively niche language outside of 11ty.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;The syntax is a bit verbose to my likings.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.11ty.dev/docs&quot;&gt;11ty’s documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;The documentation part is fine, but as a newcomer it feels really overwhelming having all the information sholved at you all at once.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;11ty is just a Do-It-Yourself site generator&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;Many things (Down to even bundling css/js) are simply left up-on you to add&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;Good for very fine-grained control, but otherwise feels tedious to setup.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s not to say 11ty is a bad static-site generator, it just doesn’t cater towards my need/goal, which is &lt;em&gt;completely fine&lt;/em&gt;. At the end of the day, the best tools are the tools that you find the best for your use-case.&lt;br&gt;
Now I just gotta find mine…&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recently I’ve came across &lt;a href=&quot;https://garnix.dev/posts/blog_using_astro/&quot;&gt;this blog post&lt;/a&gt; documenting their experience with building their blog in &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt;. This peaked my interest as for a while now I am looking to rewrite my absolute mess of a blog to something else.&lt;/p&gt;
&lt;p&gt;When I first heard of Astro, I didn’t even pay attention to it and I just put it in the long list of “yet another overcomplicated JS Frameworks I’ll never use”, but honestly after seeing some sample code I am quite sold. Here’s one example:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color:#005CC5;--shiki-dark:#79B8FF&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;LX86&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Server-side JS, executed on build-time&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D;--shiki-dark:#6A737D&quot;&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Hi, I am {name}, I think... &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#6F42C1;--shiki-dark:#B392F0&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wa&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt; &lt;/span&gt;&lt;span style=&quot;color:#6A737D;--shiki-dark:#6A737D&quot;&gt;// Client-side JS, executed by browser when page loads&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;color:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#wa&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).textContent &lt;/span&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&gt;.&amp;#x3C;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Which gets transpiled to:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;astro&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;Hi, I am LX86, I think... &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#6F42C1;--shiki-dark:#B392F0&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;wa&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;color:#6F42C1;--shiki-dark:#B392F0&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt;&quot;#wa&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;).textContent &lt;/span&gt;&lt;span style=&quot;color:#D73A49;--shiki-dark:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt; &quot;&gt;.&amp;#x3C;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;sub&gt;&lt;strong&gt;Output: Hi, I am LX86, I think… &gt;.&amp;#x3C;&lt;/strong&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p&gt;I like this approach as it clearly seperates server-side JS and the rest of the page/client-side JS, while keeping them all in one place. But more importantly as you may have noticed, it does not ships any JS that I don’t explicitly write.&lt;/p&gt;
&lt;h3 id=&quot;0-client-javascript-out-of-the-box&quot;&gt;0 (Client) Javascript out of the box&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#0-client-javascript-out-of-the-box&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;While JS are very commonly used across the web, I still don’t believe in a world where JS is mandatory to view &lt;em&gt;static&lt;/em&gt; informations.&lt;br&gt;
This is something that Astro has promised, and I like that promise.&lt;br&gt;
Just because most of the visitors &lt;em&gt;can&lt;/em&gt; run Javascript doesn’t give you the justification to do so. Access to static information &lt;em&gt;should never&lt;/em&gt; require Javascript&lt;/p&gt;
&lt;p&gt;I am not exactly sure whether other framework (Like Next) does this, but at least Astro does give me that guarentee of not shipping JS that I don’t write. (But have the ability to easily write them shall I need to)&lt;/p&gt;
&lt;h3 id=&quot;image-optimization-by-default&quot;&gt;Image Optimization by default&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#image-optimization-by-default&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I don’t really care nor have an interest to care about image optimizations. I am not a performance geek and I am not here to squeeze out every bit I can save.&lt;br&gt;
&lt;em&gt;That said&lt;/em&gt; it’s always nice to reduce the bandwidth whenever possible. Fortunately Astro processes assets by default with the &amp;#x3C;Image&gt; tag, or automatically done if using the markdown image syntax.&lt;/p&gt;
&lt;p&gt;That’s neat! Sometimes I just want a platform that automatically takes care of the “blogging stuff”, while leaving up to me on how I want my page to look.&lt;/p&gt;
&lt;h1 id=&quot;current-blog-setup&quot;&gt;Current Blog Setup&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#current-blog-setup&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Right now the blog is written in Astro:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;With either markdown or mdx via &lt;a href=&quot;https://docs.astro.build/en/guides/integrations-guide/mdx/&quot;&gt;@astrojs/mdx&lt;/a&gt; for blog post.&lt;/li&gt;
&lt;li&gt;RSS is powered by &lt;a href=&quot;https://docs.astro.build/en/guides/rss/&quot;&gt;@astrojs/rss&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anchor link heading is powered by &lt;a href=&quot;https://github.com/rehypejs/rehype-autolink-headings&quot;&gt;rehype-autolink-headings&lt;/a&gt; + &lt;a href=&quot;https://github.com/rehypejs/rehype-slug&quot;&gt;rehype-slug&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Image caption is powered by &lt;a href=&quot;https://github.com/Microflash/rehype-figure&quot;&gt;rehype-figure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Table of Content is powered by &lt;a href=&quot;https://github.com/JS-DevTools/rehype-toc&quot;&gt;rehype-doc&lt;/a&gt;, with a bit of JS added to highlight the current heading and CSS to make it float on desktop.&lt;/li&gt;
&lt;li&gt;Deployed to GitHub Pages via GitHub action&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a bonus, I redesigned the look of the blog so it looks less 2009, and replicated the link format from my old blog so existing link doesn’t rot~&lt;/p&gt;
&lt;p&gt;That’s about it! I think I am quick happy with the switch overall, you can view the source code &lt;a href=&quot;https://github.com/Kenny-Hui/blog&quot;&gt;here&lt;/a&gt;.&lt;br&gt;
Unfortunately I don’t think there is a cure for the absolute disaster of the Javascript Ecosystem that is, so that will have to live :&amp;#x3C;&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>The end of the year (2024)</title><link>https://blog.lx862.com/blog/2024-12-31-end-of-year</link><guid isPermaLink="true">https://blog.lx862.com/blog/2024-12-31-end-of-year</guid><description>A recap of stuff that I&apos;ve done</description><pubDate>Tue, 31 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;nav class=&quot;toc&quot;&gt;&lt;p class=&quot;toc-text&quot;&gt;Table of Content&lt;/p&gt;&lt;ol class=&quot;toc-level toc-level-1&quot;&gt;&lt;li class=&quot;toc-item toc-item-h1&quot;&gt;&lt;a class=&quot;toc-link toc-link-h1&quot; href=&quot;#the-2024-recap&quot;&gt;The 2024 Recap&lt;/a&gt;&lt;ol class=&quot;toc-level toc-level-2&quot;&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#i-took-more-photos&quot;&gt;I took more photos!&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#i-installed-arch&quot;&gt;I installed Arch!&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#academic&quot;&gt;Academic&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#i-reversed-engineered-a-mouse-for-use-in-linux&quot;&gt;I reversed engineered a mouse for use in Linux!&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#misc&quot;&gt;Misc&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#softwares&quot;&gt;Softwares&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h1&quot;&gt;&lt;a class=&quot;toc-link toc-link-h1&quot; href=&quot;#looking-forward&quot;&gt;Looking forward&lt;/a&gt;&lt;ol class=&quot;toc-level toc-level-2&quot;&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#stop-pushing-myself-to-the-corner&quot;&gt;Stop pushing myself to the corner&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#drink-more-water&quot;&gt;Drink more water&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#never-defer-alarm-clock&quot;&gt;Never defer alarm clock&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#no-is-ok-dont-fool-others-and-yourself&quot;&gt;”No” is ok. Don’t fool others, and yourself.&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/nav&gt;&lt;p&gt;Of course it’s 31st December and of course I never realize time passes that quickly, but as &lt;em&gt;some of you might know&lt;/em&gt;, 2024 is coming to an end. So I’ve decided to do a recap of this year so far:&lt;/p&gt;
&lt;h1 id=&quot;the-2024-recap&quot;&gt;The 2024 Recap&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#the-2024-recap&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;i-took-more-photos&quot;&gt;I took more photos!&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#i-took-more-photos&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;2024 by-far have the most photos I have ever taken:&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/photo_timeline.cB3OXB7N_1Jp5IQ.webp&quot; alt loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;71&quot; height=&quot;268&quot;&gt;&lt;/figure&gt;
&lt;p&gt;To be fair it’s probably inflated due a 7-day trip to Japan this summer, which in of itself contains over 700 photos. But even without accounting for that, it’s still way more than 2023.&lt;br&gt;
Much of that comes from random observations around Hong Kong, and it’s fascinating how much stuff we walk by without noticing.&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/ct1.B6jHrFDN_1SjlmR.webp&quot; alt loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;512&quot; height=&quot;304&quot;&gt;&lt;/figure&gt;
&lt;p&gt;So next time you travel along your routine journey, try be more observant of the things around you, and maybe you’ll discover interesting stuff as well!&lt;/p&gt;
&lt;h2 id=&quot;i-installed-arch&quot;&gt;I installed Arch!&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#i-installed-arch&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I might write a short post on this later when I have time, but the TL;DR is that I switched my main desktop from Debian 12 to using Arch Linux in around June, so now I can officially claim that &lt;em&gt;i use arch btw&lt;/em&gt;.&lt;br&gt;
&lt;small&gt;(And in-case it isn’t obvious, the best OS is the one that gets the job done, I couldn’t care less about the whole arch elitism thing!)&lt;/small&gt;&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/arch.DTGTqgM5_CN2QS.webp&quot; alt=&quot;About this system dialog. Of course with Nyarch logo in place of Arch!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1016&quot; height=&quot;771&quot;&gt;&lt;figcaption&gt;About this system dialog. Of course with Nyarch logo in place of Arch!&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;But seriously for the past 6 months it has served me really well, almost everything works out of the box without me spending time on “why doesn’t this work” and “why this is laggy”.
Will it continue to help me actually get stuff done? Time will tell, but one thing is for sure: I am in dire need of more ssd disk space :)&lt;/p&gt;
&lt;h2 id=&quot;academic&quot;&gt;Academic&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#academic&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This year is really, really busy and stressful academic-wise.&lt;/p&gt;
&lt;p&gt;Most notably, I have to team up with a group of 4 to build a 3D game in Unity as part of a school project. In reality however, 3 of them often don’t come to class and they don’t actually know anything and keeps handing in garbage. This means I am the one who have to write the report documents, testing, design artwork, program all the game logics, user interface, animations, sound effects etc.
Along with a not-so-friendly teacher, this has unfortunately made a negative contribution to my mental health, lowered my self-esteem and had isolated myself from others due to constant stress I have to face irl, which I don’t think I have really recovered since :(&lt;/p&gt;
&lt;p&gt;On the plus side, the final grade I got for that project is not &lt;em&gt;that&lt;/em&gt; bad, and now I get to know how to do literally everything mentioned above. Oh and I also got new groupmate that are friendly and actually do stuff, so let’s see how this time will go~&lt;/p&gt;
&lt;h2 id=&quot;i-reversed-engineered-a-mouse-for-use-in-linux&quot;&gt;I reversed engineered a mouse for use in Linux!&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#i-reversed-engineered-a-mouse-for-use-in-linux&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;And yet somehow despite spending much of my time for school work, I am able to crunch out some time to reverse engineer and build a mouse utility on Linux just so I could have those fancy RGB lights going weeeee~&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blog/2024-05-13-reverse-engineering-a-mouse&quot;&gt;I have written a full blog post on that if you’re interested&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It was fun and certainly new for me, maybe I’ll do it next time, when I swap out my peripheral again that is!&lt;/p&gt;
&lt;h2 id=&quot;misc&quot;&gt;Misc&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#misc&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;i-replaced-my-note-app&quot;&gt;I replaced my Note App!&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#i-replaced-my-note-app&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;As someone who pretty much never take proper notes because it never works on me, I have grown accustomed to the app &lt;a href=&quot;https://play.google.com/store/apps/details?id=note.colornote&quot;&gt;Color Notes&lt;/a&gt;. Essentially it’s a plain text note app that’s so simple it’s pretty much just a detailed reminder for your future self.&lt;br&gt;
It has served me quite well over the years, however 2024 is really not a good year with companies shitting themselves all over the place, so naturally I try to avoid any form of technology lock-in whenever possible. On top of that, I’ve also discovered that the app is made by a gambling company, and the inclusion of ads (Which isn’t a big deal, but is annoying nevertheless when misclick happens) just made me want to move away from it.&lt;/p&gt;
&lt;p&gt;So I wrote my own note app to replace it, both because I was intending to replace it anyway, and I also want to try using Flutter for this app. (Which feels nice, although library and system integration is definitely not the best)&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/noty.xQkAf_ba_Z5hy1O.webp&quot; alt=&quot;New note taking app, with a grid preview of the notes I have written&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;256&quot; height=&quot;511&quot;&gt;&lt;figcaption&gt;New note taking app, with a grid preview of the notes I have written&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Granted there are still features missing from Color Notes, but for now this will do. I’ll see if I can get it to a reasonable enough state to turn this into an actual side project.&lt;/p&gt;
&lt;h3 id=&quot;i-changed-my-profile-picture&quot;&gt;I changed my profile picture&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#i-changed-my-profile-picture&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;That in of itself shouldn’t be worth mentioning, but I really liked the outcome, and also this blog post is about me anyway:&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/pfp_compare.ID6EszfS_Z1lA4zd.webp&quot; alt=&quot;Left (Old), Right (New)&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;367&quot; height=&quot;174&quot;&gt;&lt;figcaption&gt;Left (Old), Right (New)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The new one is somewhat of a representation of space/galaxy with bunch of stars. Of course take that what you will, but I think it looks convincing enough from a far distance/small picture, just my humble opinion :)&lt;/p&gt;
&lt;p&gt;One quirks of the new profile picture is that not every website displays image equally, most notably on websites that scales their image down using nearest neighbors. This would make all the “stars”  plain white dot all over the place and would ruin the pfp.&lt;/p&gt;
&lt;p&gt;I ended up having to make an alternate version with dimmer stars to accomodate for these websites.&lt;/p&gt;
&lt;p&gt;But overall I think I am pretty satisfied. It’s still not as humanizing as, let’s say an anime girl profile picture, but I have no better idea at the moment. Maybe I can get away with spamming more emoticons for the time being? &gt;w&amp;#x3C;&lt;/p&gt;
&lt;h3 id=&quot;i-rebuilt-this-blog&quot;&gt;I rebuilt this blog&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#i-rebuilt-this-blog&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;And finally, the blog you are seeing right now (or not if you are using a RSS reader) has been rebuilt! It also incorporates the design of the new profile picture mentioned above as you might have noticed from the top of the page.&lt;/p&gt;
&lt;p&gt;Check out &lt;a href=&quot;/blog/2024-10-16-I-rebuilt-the-blog-again&quot;&gt;I rebuilt the blog again&lt;/a&gt; to learn more!&lt;/p&gt;
&lt;h2 id=&quot;softwares&quot;&gt;Softwares&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#softwares&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;FOSS and Proprietary software still dominates at their respective category like usual, and for my use case there isn’t a huge shift. However there are a couple of shoutouts:&lt;/p&gt;
&lt;h3 id=&quot;immich&quot;&gt;&lt;a href=&quot;https://immich.app&quot;&gt;Immich&lt;/a&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#immich&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Self-Hosted Google Photos! Recently my Whatsapp backup started counting towards my Google Drive space, and my google account is running out of space quickly.&lt;br&gt;
This became a major headache, at first I used a combination of DS Photos and DigiKam to manage my photos, however it’s also clear the UI is not that friendly, everything is just not as convenient.&lt;/p&gt;
&lt;p&gt;That’s when I first discovered Immich. Apart from being a self-hosted Google Photo alternative with similar UI, it also offers face recognition which as far as I am concerned, works almost 100% of the time, or at the very least haven’t accidentally grouped the wrong people in, even behind a cage that is!&lt;/p&gt;
&lt;p&gt;Another really neat feature is the world map, which shows the places where you have taken photos in (Assuming you have enabled reverse geocoding and enabled location tag in your camera app)&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/immich_map.B-fXDqUm_1M79Sb.webp&quot; alt=&quot;An OpenStreetMap overlay in Immich, with dots showing the number of photos I&apos;ve taken around the world&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1346&quot; height=&quot;668&quot;&gt;&lt;figcaption&gt;An OpenStreetMap overlay in Immich, with dots showing the number of photos I&apos;ve taken around the world&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;So really nice stuff. For now it’s still not going to be useful for the average users who don’t care about selfhosting, but at least it feels like a genuinely competent &lt;em&gt;(albeit still WIP)&lt;/em&gt; project that doesn’t hold my data hostage, and I am really happy to have switched over to it.&lt;/p&gt;
&lt;p&gt;Would definitely pay when I can sustain financially by myself.&lt;br&gt;
&lt;small&gt;(Because surprise surprise, FOSS developers also need to eat!)&lt;/small&gt;&lt;/p&gt;
&lt;h3 id=&quot;thunderbird&quot;&gt;&lt;a href=&quot;https://thunderbird.net&quot;&gt;Thunderbird&lt;/a&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#thunderbird&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An email client! Still far from polished, but made good step forward, most notably the Card View introduced in Thunderbird 115 is a game changer.&lt;br&gt;
Unfortunately I still can’t send any outgoing mails with my school’s Microsoft 365 account, so we will have to see can &lt;a href=&quot;https://wiki.mozilla.org/Thunderbird:Exchange&quot;&gt;Exchange Support&lt;/a&gt; land before my graduation!&lt;/p&gt;
&lt;h3 id=&quot;rustdesk&quot;&gt;&lt;a href=&quot;https://rustdesk.com&quot;&gt;Rustdesk&lt;/a&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#rustdesk&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An open-source remote access/control software. For the most part I don’t really have any complaints and it just works like any other proprietary software like AnyDesk without any hassle configuring this and that.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Overall, academic still dominates the majority of my energy this year. It feels like an unproductive year with not a lot going on, but turns out it’s not always the case, just being overshadowed by negative things which is much, much more memorable.&lt;/p&gt;
&lt;h1 id=&quot;looking-forward&quot;&gt;Looking forward&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#looking-forward&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;When I was still small, I always have a grand envision that each new year is gonna be better, everything is gonna start over and my luck counter is gonna reset.
As I grow up however, that hope and magic feeling just isn’t there anymore.&lt;/p&gt;
&lt;p&gt;Perhaps I saw through the fact that a date is just some arbitrary numbers defined by humans, and the world doesn’t change because a number is bumped by. In any case I’ve decided to finally take things on my own hand again:&lt;/p&gt;
&lt;p&gt;For the first time in &lt;small&gt;(I don’t actually know)&lt;/small&gt; years, I have decided to set out a new a new year resolution, because if nothing else provides the help, I will be the help, to help myself. And so here it is:&lt;/p&gt;
&lt;h2 id=&quot;stop-pushing-myself-to-the-corner&quot;&gt;Stop pushing myself to the corner&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#stop-pushing-myself-to-the-corner&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As mentioned previously, my mental health has declined by a lot. Nowadays I usually only resort to 2 of my friend, and even then the conversations usually never goes this deep. This blog is probably the most personal thoughts that I could have written.&lt;/p&gt;
&lt;p&gt;With the currently very (and I mean very!) low self-esteem, I am not sure how much could be done, but I’ll try to join and engage in communities that I otherwise would have never done so.&lt;/p&gt;
&lt;h2 id=&quot;drink-more-water&quot;&gt;Drink more water&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#drink-more-water&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pretty self explanatory. I’ve always felt like my physical health is in decline over the years, and while I should actually just do physical activities, this is hopefully a good and easy first step towards fixing my health.&lt;/p&gt;
&lt;p&gt;(p.s. No I don’t do soft drinks, I just don’t drink)&lt;/p&gt;
&lt;h2 id=&quot;never-defer-alarm-clock&quot;&gt;Never defer alarm clock&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#never-defer-alarm-clock&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;…I know I know. Being late to school is a recurring pattern that’s becoming more and more common this year.&lt;/p&gt;
&lt;p&gt;While I do have a physical alarm clock placed next to my bed to wake me up, I usually approach things in a very conservative and redundant way. In this case, setting the alarm clock to be 30 minutes before I actually need to wake up.
This is originally intended to give myself some buffer in the event that I am simply way too sleepy. Of course in hindsight this is a stupid decision, because then I just got used to keep deferring the alarm clock everytime it tries to wake me up, …and then I became late…&lt;/p&gt;
&lt;p&gt;So starting from 2025, no buffering anymore, and I have to immediately get up. This is gonna take a while to get used to, but ultimately I hope it’s beneficial in the long term. (You might be late for class, but not in workplace!)&lt;/p&gt;
&lt;h2 id=&quot;no-is-ok-dont-fool-others-and-yourself&quot;&gt;”No” is ok. Don’t fool others, and yourself.&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#no-is-ok-dont-fool-others-and-yourself&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Assigned ID: CVE-1231&lt;br&gt;
Score: 10/10!&lt;/p&gt;
&lt;p&gt;Again, really vulnerable stuff that could be easily abused and taken advantage of, hope to patch that up this year, ideally even ASAP.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;So not a lot of grand envision and goals into 2025, but I just wish to feel better in my everyday life.&lt;br&gt;
Thanks for reading til the end, and I will see your next year, take care &amp;#x3C;3&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>Domain is a long-term commitment</title><link>https://blog.lx862.com/blog/2025-01-09-domain-is-a-long-term-commitment</link><guid isPermaLink="true">https://blog.lx862.com/blog/2025-01-09-domain-is-a-long-term-commitment</guid><description>What should you expect when getting a domain name?</description><pubDate>Thu, 09 Jan 2025 00:00:00 GMT</pubDate><author>AmberFrost</author></item><item><title>When spoon&apos;s job get replaced by fork</title><link>https://blog.lx862.com/blog/2025-02-01-When-spoons-job-replaced-by-fork</link><guid isPermaLink="true">https://blog.lx862.com/blog/2025-02-01-When-spoons-job-replaced-by-fork</guid><description>Fork deserves more love~</description><pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;nav class=&quot;toc&quot;&gt;&lt;p class=&quot;toc-text&quot;&gt;Table of Content&lt;/p&gt;&lt;ol class=&quot;toc-level toc-level-1&quot;&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#footnote-label&quot;&gt;Footnotes&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/nav&gt;&lt;p&gt;Amid the crisis of &lt;a href=&quot;https://en.wikipedia.org/wiki/DeepSeek#Assessment_and_reactions&quot;&gt;ChatGPT’s job getting replaced by AI&lt;/a&gt; where investors freaks out that you can save money by being smart about it, people with me irl have been freaking out about how I only eat exclusively with a fork, and I am here to tell you that a fork really isn’t as bad as you think!&lt;/p&gt;
&lt;p&gt;Most people associate a fork as the utensil to use when eating spaghetti/noodles (Because you can twirl it up), or Steaks (Because you can puncture through the steak).&lt;br&gt;
But also because of its ability to puncture things, most edible stuff can be punctured through (e.g. toast/pie/salad), which makes it immediately more useful and have a way wider application.&lt;/p&gt;
&lt;p&gt;Contrary to public belief however, a fork &lt;em&gt;can&lt;/em&gt; hold a decent amount of stuff, just like a spoon!&lt;br&gt;
Sure it won’t hold liquid, and it may not hold as much as spoon, but it gets around there 75% most of the time. That’s because most stuff we eat simply isn’t miniature enough that the gaps in the fork actually makes a noticeable differences.&lt;/p&gt;
&lt;p&gt;For cooked rice, they usually stick together pretty well, so it’s not like each individual rice are separate from each other and fall through the gaps.&lt;br&gt;
Even for ice-cream, you dug a piece into the ice cream and assuming it’s not melting (And if it is, you have bigger problem!), these piece are just like any other solid food, so you’re pretty much just getting the spoon experience.&lt;/p&gt;
&lt;p&gt;One area where a spoon still have an upper hand is holding liquid, but given that most consumable liquid are stored in a reasonable container, a neat workaround &lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; is to move your container towards your month and drink it, which perhaps is slightly easier than it is trying to eat a steak with a spoon?&lt;/p&gt;
&lt;p&gt;Of course that’s not to say you should only use one utensil, but also fork is a very versatile tool that is more capable than people think, and it also happens to steal half of spoon’s job.&lt;br&gt;
If I am in a restaurant that serves steaks with rice, I would happily choose a fork over using both a fork and a spoon. And if the restaurant ran out of spoon to serve, they should first evaluate why they are still in business in the first place, but a fork is also not the end of the world :)&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Workaround effectiveness varies between physical condition/age! &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><author>AmberFrost</author></item><item><title>The OS switching curvature</title><link>https://blog.lx862.com/blog/2025-03-29-The-OS-switching-curvature</link><guid isPermaLink="true">https://blog.lx862.com/blog/2025-03-29-The-OS-switching-curvature</guid><description>Difficulty in switching Operating Systems for different userbase</description><pubDate>Sat, 29 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;nav class=&quot;toc&quot;&gt;&lt;p class=&quot;toc-text&quot;&gt;Table of Content&lt;/p&gt;&lt;ol class=&quot;toc-level toc-level-1&quot;&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#the-leftmost&quot;&gt;The leftmost&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#the-middle&quot;&gt;The middle&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#the-rightmost&quot;&gt;The rightmost&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/nav&gt;&lt;p&gt;As Windows 10 approaches end-of-life in 2025, people begin to scramble for alternatives. One particular popular options is of course, Linux! After-all it is really the closest and viable options. (Unless you can afford a Mac, in which case good for you!)&lt;/p&gt;
&lt;p&gt;But come on, talk is cheap! How many people would actually end up switching to Linux as their operating system? Well we may never know that for sure, but I do have some rough idea for the distribution of users that would end up succeeding switch to Linux, or heck, even just switching away from their primary operating system.&lt;/p&gt;
&lt;p&gt;It’s not some rocket science, and I’ve seen some people begin to take notice already, but that’s how I like to view the difficulty as:&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/curve.CiMvra9A_Z1kS92z.webp&quot; alt=&quot;A graph depicting the userbase (Least to most technical) in X-axis, Difficulty switching (Easy to Hard) in the Y-axis. The graph peaked in the middle&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;512&quot; height=&quot;308&quot;&gt;&lt;figcaption&gt;A graph depicting the userbase (Least to most technical) in X-axis, Difficulty switching (Easy to Hard) in the Y-axis. The graph peaked in the middle&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;the-leftmost&quot;&gt;The leftmost&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#the-leftmost&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The leftmost portion of users are pretty much your average computer users. They have absolutely no interest into what OS they are running as long as they can get their job done, and chances are that &lt;em&gt;you, the reader&lt;/em&gt; had once been picked as the go-to person to fix any of their “computer problems”.&lt;/p&gt;
&lt;p&gt;But what do they actually need? Surprisingly not much, just checking their email, browsing websites, getting in touch with their friends via social media, and probably some light document processing.&lt;br&gt;
Finding alternative applications for these shouldn’t be hard… or perhaps you don’t even need to since pretty much everything now lives inside your web browser!&lt;/p&gt;
&lt;p&gt;Now whether putting that much responsibility onto the web is a good idea in the first place is certainly discussion-worthy, but for now this is the reality we live in, and based on that reality, you only need a web browser for most tasks, which surprisingly works well across different Operating Systems.&lt;br&gt;
If they do need document processing, LibreOffice (Which is preinstalled on most distros) will do the job in almost all cases.&lt;/p&gt;
&lt;p&gt;For them, it will pretty much function exactly as whatever OS they are using now, albeit with a slightly different user interface. These are the people that’s very trivial to get them to switch.&lt;/p&gt;
&lt;h2 id=&quot;the-middle&quot;&gt;The middle&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#the-middle&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The middle portion consists of mainly power user, as well as more tech people. They usually have a particular vision about how they specifically want to use their computer, and make use of advanced features/programs within their current OS to achieve such means.&lt;br&gt;
This would also mean that they are more likely to have &lt;em&gt;relatively&lt;/em&gt; unconventional hardware setup, such as dual-monitor/dual GPU, further complicating the process.&lt;/p&gt;
&lt;p&gt;But technical challenges is only a part of it! Power users likely spent years upon years of using their system in order to get to the knowledge and expertise they have now. They think that their current system setup is, as far as they are aware, as perfect as it can be. They don’t like getting told that “no you actually can’t make it the way you are used to” because clearly they have &lt;em&gt;already&lt;/em&gt; achieved that with their current setup.&lt;/p&gt;
&lt;p&gt;Moreover they are more likely to use their existing knowledge to try to have an analogy when understanding new concepts in other operating systems given their expertise, when in reality the analogy may be flawed. It’s like finding a dump truck then thinking it’s the closest thing to a car because it’s the only thing that appears to you at first glance.&lt;br&gt;
All of that makes power users more difficult to make the switch, both for technical and psychological reasons.&lt;/p&gt;
&lt;p&gt;When I made the switch back in 2021, I was very precisely in this group, and the initial switch is nothing but painful. However I’ve got pass it with some dedication, and now I lie back somewhere between the left and the middle in the chart.&lt;/p&gt;
&lt;p&gt;I think it’s helpful to be more open-minded when exploring alternative options, and throw all your past experience away and pretend that you don’t actually know anything about the new thing, because chances are that you don’t actually fully understand the new thing.&lt;/p&gt;
&lt;h2 id=&quot;the-rightmost&quot;&gt;The rightmost&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#the-rightmost&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I don’t think I’ve met any of them personally, but these are highly technical/intelligent people who are almost completely unbothered by the switch. Maybe something like the middle, but without the psychological factor at play?&lt;br&gt;
They already accepted that things are just the way it is, they don’t go to comment section and pester people to use X because X is the best. Any software that does the job that matters the most to them is a software they will use.&lt;/p&gt;
&lt;p&gt;Some are pretty &lt;a href=&quot;https://www.youtube.com/@ThePrimeTimeagen&quot;&gt;mild&lt;/a&gt;, some are pretty &lt;a href=&quot;https://www.youtube.com/watch?v=TkkKNfYKJJg&amp;#x26;t=3292s&quot;&gt;wild&lt;/a&gt;, pick your fighter :)&lt;/p&gt;
&lt;p&gt;These people should have little barriers switching their OSes, in the sense that &lt;em&gt;if they want to&lt;/em&gt; they will switch and they &lt;em&gt;will&lt;/em&gt; find a way to live off of it. However I’d imagine it would be pretty difficult to convince them to switch if they don’t see the benefits that’s relevant to them however.&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>I am getting old</title><link>https://blog.lx862.com/blog/2025-04-30-i-am-getting-old</link><guid isPermaLink="true">https://blog.lx862.com/blog/2025-04-30-i-am-getting-old</guid><description>The struggle to understand Gen Z slangs</description><pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve noticed an increase of words that I see everywhere but I don’t actually know what they mean or understand their usage (skibidi, rizz, aura etc.)&lt;/p&gt;
&lt;p&gt;Just a couple of years ago I thought I knew just about every viral trend on the internet, and now for the first time I can feel the same way my parents feels about my messages.&lt;/p&gt;
&lt;p&gt;I can’t tell if it’s due to me getting older, or my recent habit of avoiding social media and therefore not catching up with the trend.&lt;br&gt;
Either way, it’s all a bit scary, I am still considering whether to “learn” and adapt these words, or to give up entirely and admit that my prime time is over?&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Oh as a side note, did you know that the European Union &lt;a href=&quot;https://youth.europa.eu/get-involved/intercultural-understanding/gen-z-slang-words-and-phrases-of-2024_en&quot;&gt;have a page&lt;/a&gt; for a list of Gen Z slangs?&lt;/em&gt;&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>Versioning with Material for Mkdocs</title><link>https://blog.lx862.com/blog/2025-06-10-versioning-with-material-mkdocs</link><guid isPermaLink="true">https://blog.lx862.com/blog/2025-06-10-versioning-with-material-mkdocs</guid><description>An oddly undiscovered piece of land</description><pubDate>Sat, 14 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;nav class=&quot;toc&quot;&gt;&lt;p class=&quot;toc-text&quot;&gt;Table of Content&lt;/p&gt;&lt;ol class=&quot;toc-level toc-level-1&quot;&gt;&lt;li class=&quot;toc-item toc-item-h1&quot;&gt;&lt;a class=&quot;toc-link toc-link-h1&quot; href=&quot;#introduction&quot;&gt;Introduction&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h1&quot;&gt;&lt;a class=&quot;toc-link toc-link-h1&quot; href=&quot;#implementation&quot;&gt;Implementation&lt;/a&gt;&lt;ol class=&quot;toc-level toc-level-2&quot;&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#deploying-with-mike&quot;&gt;Deploying with Mike&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#making-another-version&quot;&gt;Making another version&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h2&quot;&gt;&lt;a class=&quot;toc-link toc-link-h2&quot; href=&quot;#deploying-via-github-actions&quot;&gt;Deploying via GitHub Actions&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h1&quot;&gt;&lt;a class=&quot;toc-link toc-link-h1&quot; href=&quot;#after-thoughts&quot;&gt;After-thoughts&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/nav&gt;&lt;p&gt;Recently I’ve managed to move the documentation for one of my Minecraft mod to &lt;a href=&quot;https://squidfunk.github.io/mkdocs-material/&quot;&gt;Material for Mkdocs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I had a relatively smooth-sailing experience and I am quite satisfied with the outcome. Unfortunately I’ve spent quite a while figuring out how exactly does multi-versioning work in &lt;strong&gt;Material for Mkdocs&lt;/strong&gt; with almost no results from Google Search (Apart from Material for Mkdocs’s own documentation and the README of Mike, both of which focuses a little more on the implementation side), so I thought it’d be neat to at least have a higher level breakdown of how it works and the limitation of it.&lt;/p&gt;
&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#introduction&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Neither &lt;strong&gt;Material for Mkdocs&lt;/strong&gt; nor &lt;strong&gt;Mkdocs&lt;/strong&gt; handles versioning by themselves. Instead, it requires a separate project called &lt;a href=&quot;https://github.com/jimporter/mike&quot;&gt;Mike&lt;/a&gt;, which is a separate CLI utility to deploy multiple version of your docs.&lt;/p&gt;
&lt;p&gt;To understand how Mike works, we need to first understand how a Mkdocs website gets deployed first:&lt;/p&gt;
&lt;p&gt;As Mkdocs is a &lt;strong&gt;Static Site Generator&lt;/strong&gt;, all your markdown will be converted into static html files on build, which can then be served on any webserver.&lt;br&gt;
If you run &lt;code&gt;mkdocs build&lt;/code&gt; on your documentation right now, you will notice that there is a new folder called &lt;code&gt;site&lt;/code&gt; in your documentation’s directory. This contains all the static html files needed to run the page, and you can copy all the contents inside to a webserver and have the documentation up and running.&lt;/p&gt;
&lt;p&gt;However chances are that most smaller project will just use &lt;strong&gt;GitHub Pages&lt;/strong&gt; instead to publish their docs. For that Mkdocs offers a convenient shortcut to do so: &lt;code&gt;mkdocs gh-deploy&lt;/code&gt;. You can think of it as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;mkdocs build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Committing that folder to the root directory of your &lt;code&gt;gh-pages&lt;/code&gt; branch&lt;/li&gt;
&lt;li&gt;Pushing the commit to remote (GitHub in this case).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This command is also the one used in &lt;a href=&quot;https://squidfunk.github.io/mkdocs-material/publishing-your-site/?h=github+action#with-github-actions&quot;&gt;the GitHub workflow file&lt;/a&gt; mentioned in the Material for Mkdocs documentation, and that’s how your docs automagically gets updated whenever you push to github.&lt;/p&gt;
&lt;p&gt;Still following? Good, now onto how &lt;strong&gt;Mike&lt;/strong&gt; works:&lt;br&gt;
Think of it as a slightly different command line application that replaces &lt;code&gt;mkdocs gh-deploy&lt;/code&gt;, and it allows you to configure the subdirectory you want the docs to be deployed.&lt;/p&gt;
&lt;p&gt;As an example you can run &lt;code&gt;mike deploy 0.2&lt;/code&gt;. Mike will then perform a &lt;code&gt;mkdocs build&lt;/code&gt;. After the build is complete, it will put the build content under the subfolder &lt;code&gt;0.2&lt;/code&gt;, and then commit that subfolder to the &lt;code&gt;gh-pages&lt;/code&gt; branch, so your visitors will be able to access that version in &lt;code&gt;https://xxx.github.io/docs/0.2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In other words, &lt;u&gt;it allows multiple copies of your deployed docs to co-exists, but it does not handle versioning&lt;/u&gt;.&lt;/p&gt;
&lt;p&gt;In-fact you can do this manually by literally building the site yourself and manually copy the folder under the subdirectory. Well of course you’re not gonna get the version switcher that &lt;strong&gt;Material for Mkdocs&lt;/strong&gt; offers, but the core concept is still the same (And you can always make it with some HTML/CSS/JS :D)&lt;/p&gt;
&lt;p&gt;So the idea is rather simple, but this may raise some questions:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: How will &lt;code&gt;mkdocs serve&lt;/code&gt; handle multiple versions?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;A:&lt;/strong&gt; Nope it doesn’t! You’ll only see the current version that’s in your working tree, unfortunately this is a limitation of how it currently works.&lt;br&gt;
While &lt;strong&gt;Mike&lt;/strong&gt; also offers its own &lt;code&gt;serve&lt;/code&gt; command (&lt;code&gt;mike serve&lt;/code&gt;) to preview a multi-versioned site, it only serves the deployed version in the &lt;code&gt;gh-pages&lt;/code&gt; branch, so you can’t use this for live updating.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: Why is it &lt;code&gt;gh-pages&lt;/code&gt; branch, what if I don’t use GitHub pages?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;A:&lt;/strong&gt; &lt;strong&gt;Mike&lt;/strong&gt; seems to be primarily targeting docs built with GitHub pages (As evident by the default branch being &lt;code&gt;gh-pages&lt;/code&gt;), however you can specify a different branch by appending a &lt;code&gt;-b&lt;/code&gt; or &lt;code&gt;--branch&lt;/code&gt; flag specifying the branch. There is also other flags as stated in &lt;a href=&quot;https://github.com/jimporter/mike#usage&quot;&gt;Mike’s README&lt;/a&gt; to customize the behaviour further!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: Can I maintain multiple versions of my docs then? It seems to be made for pushing once and forget about it&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;A:&lt;/strong&gt; Yes! As mentioned earlier mike doesn’t handle versioning by itself, fortunately however we already have a pretty solid versioning system that is &lt;strong&gt;Git&lt;/strong&gt;. You can just create a new git branch and maintain multiple versions of your docs. You can then run &lt;code&gt;mike deploy&lt;/code&gt; with the corresponding version number and it will deploy the contents of whatever branch you are in to that subdirectory, without touching other docs.&lt;/p&gt;
&lt;h1 id=&quot;implementation&quot;&gt;Implementation&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#implementation&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Generally you can follow the tutorial over at &lt;a href=&quot;https://squidfunk.github.io/mkdocs-material/setup/setting-up-versioning/&quot;&gt;Material for Mkdocs’ Documentation&lt;/a&gt; by appending the following to &lt;code&gt;mkdocs.yml&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;extra&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;  version&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#032F62;--shiki-dark:#9ECBFF&quot;&gt;mike&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Unlike what their docs says however (Which mentions &lt;strong&gt;This renders a version selector in the header&lt;/strong&gt;), the version selector &lt;em&gt;will not appear&lt;/em&gt; unless you have already deployed a version with mike and are using &lt;code&gt;mike serve&lt;/code&gt;. Therefore we first need to deploy our docs with mike.&lt;/p&gt;
&lt;h2 id=&quot;deploying-with-mike&quot;&gt;Deploying with Mike&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#deploying-with-mike&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;From now on we’ll assume you’re deploying on GitHub pages and therefore will use the &lt;code&gt;gh-pages&lt;/code&gt; branch, please append the appropriate flag if you are deploying to a custom branch.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To get started, first we need to install &lt;strong&gt;Mike&lt;/strong&gt; with &lt;code&gt;pip install mike&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then we need to first make sure that our existing &lt;code&gt;gh-pages&lt;/code&gt; branch is clear.&lt;br&gt;
Remember &lt;code&gt;mkdocs gh-deploy&lt;/code&gt;? If you have executed that before (Directly or indirectly via GitHub Actions) it would already have deployed our docs to the root directory, which is not what we want since we want the docs to be versioned within each subdirectory.&lt;/p&gt;
&lt;p&gt;As such, we need to run &lt;code&gt;mike delete --all&lt;/code&gt; to avoid mixing the unversioned &amp;#x26; versioned docs.&lt;/p&gt;
&lt;p&gt;Now we can finally deploy our first version:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mike deploy --push [version] [alias]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;[version]&lt;/code&gt; is your version name, pretty self explanatory.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[alias]&lt;/code&gt; is a tag name that references your version.&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;For example an alias could be &lt;code&gt;latest&lt;/code&gt; or &lt;code&gt;stable&lt;/code&gt;, then when you make a new version release, you can update the alias to point to that version, so people going to &lt;code&gt;https://example.com/latest&lt;/code&gt; would only see your latest and greatest documentation!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--push&lt;/code&gt; is a flag in mike that additionally does a &lt;code&gt;git push&lt;/code&gt; so you don’t have to. (&lt;code&gt;mkdocs gh-deploy&lt;/code&gt; already does this by default)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And there you go, you now got your first version up on GitHub pages!&lt;/p&gt;
&lt;h3 id=&quot;common-gotchas&quot;&gt;Common Gotchas&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#common-gotchas&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;custom-domain&quot;&gt;Custom Domain&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#custom-domain&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In the &lt;a href=&quot;https://www.mkdocs.org/user-guide/deploying-your-docs/&quot;&gt;documentation for Mkdocs&lt;/a&gt;, it is mentioned that you need to add the &lt;code&gt;CNAME&lt;/code&gt; file in your &lt;code&gt;docs&lt;/code&gt; directory shall you wish to use a custom domain.&lt;/p&gt;
&lt;p&gt;However Mike deploys your entire documentation in a subdirectory, so you would end up with your &lt;code&gt;CNAME&lt;/code&gt; file getting put in the subdirectory, and then GitHub can’t find it, and then it just no worky anymore.&lt;/p&gt;
&lt;p&gt;To solve that, simply manually add a &lt;code&gt;CNAME&lt;/code&gt; file to the root directory of your &lt;code&gt;gh-pages&lt;/code&gt; branch. As mike only ever deploys within the subdirectory for each version, anything else in your &lt;code&gt;gh-pages&lt;/code&gt; won’t be deleted, so it’s safe to just manually commit a file and push it.&lt;/p&gt;
&lt;h4 id=&quot;main-page&quot;&gt;Main page&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#main-page&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Another thing you would’ve likely noticed is that your main page isn’t accessible anymore, because everything is deployed into a subdirectory.&lt;/p&gt;
&lt;p&gt;Mike does not support “having the latest version in the root directory, then alternate versions in a subdirectory”, however you can at the very least redirect users to a particular version by setting a default version:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mike set-default --push [alias]&lt;/code&gt; (Replace &lt;code&gt;[alias]&lt;/code&gt; with the alias you have)&lt;/p&gt;
&lt;p&gt;This would automatically generate an &lt;strong&gt;index.html&lt;/strong&gt; in the &lt;code&gt;gh-pages&lt;/code&gt; branch which redirects users to the corresponding subdirectory.&lt;/p&gt;
&lt;h2 id=&quot;making-another-version&quot;&gt;Making another version&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#making-another-version&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you want to contionously maintain your existing version (Say you want to create &lt;code&gt;3.0&lt;/code&gt; but &lt;code&gt;2.0&lt;/code&gt; is still a maintained version, or you want to go back and create &lt;code&gt;1.0&lt;/code&gt; for reference), then you can just make a new git branch for the version you are about to create, edit the docs just like you would in Mkdocs, and finally do &lt;code&gt;mike deploy --push [version name here]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you want to update an alias (Say you published a new version and want to update the &lt;code&gt;latest&lt;/code&gt; alias to your new version), then you need to do:&lt;br&gt;
&lt;code&gt;mike deploy --push --update-alias [version name here] [alias]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note that without &lt;code&gt;--update-alias&lt;/code&gt;, it would only allow you to publish a new alias and disallows you from updating existing ones.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;deploying-via-github-actions&quot;&gt;Deploying via GitHub Actions&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#deploying-via-github-actions&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The workflow file is mostly the same from a regular non-versioned mkdocs, apart from the fact that you would need to install mike, and replace the &lt;code&gt;mkdocs gh-deploy&lt;/code&gt; command with mike:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;diff&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;jobs:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  deploy:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    runs-on: ubuntu-latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    steps:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - uses: actions/checkout@v4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - name: Configure Git Credentials&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - run: echo &quot;cache_id=$(date --utc &apos;+%V&apos;)&quot; &gt;&gt; $GITHUB_ENV &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - uses: actions/cache@v4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;        with:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;          ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E;--shiki-dark:#E1E4E8&quot;&gt;      - run: pip install mkdocs-material &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;&lt;span style=&quot;user-select: none;&quot;&gt;+&lt;/span&gt;     - run: pip install mike&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B31D28;--shiki-dark:#FDAEB7&quot;&gt;&lt;span style=&quot;user-select: none;&quot;&gt;-&lt;/span&gt;     - run: mkdocs gh-deploy --force&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A;--shiki-dark:#85E89D&quot;&gt;&lt;span style=&quot;user-select: none;&quot;&gt;+&lt;/span&gt;     - run: mike deploy --push [alias]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;after-thoughts&quot;&gt;After-thoughts&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#after-thoughts&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;So here is around 1K words of me yapping Versioning in Material for Mkdocs/Mkdocs. How much will this help anyone? I honestly have no idea.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Material for Mkdocs&lt;/strong&gt; is pretty good at writing something in the config and have it work nicely with almost everything else. Unfortunately versioning is this one part where it &lt;em&gt;appears&lt;/em&gt; as yet another easy toggle judging from the docs, but requires deeper understanding of Mike first before you use it. Even then you still can’t preview multiple versions at the same time, it just doesn’t integrate as well as most other offerings by Material for Mkdocs.&lt;/p&gt;
&lt;p&gt;Curiously I rarely comes across any site built with &lt;strong&gt;Material for Mkdocs&lt;/strong&gt; site with multi-versioning setup. It could just be me not looking hard enough, but I also feel like it may just be a bit too non-trivial to set-up?&lt;br&gt;
That said however, Mike is great for what it tries to do, and &lt;strong&gt;Material for Mkdocs&lt;/strong&gt; also seems to be working on versioning (Which I am looking forward to!). Maybe if I am to write the docs I would’ve named it &lt;code&gt;Mike Integration&lt;/code&gt; or something like that? But either way it’s not important, I’ve figured it out and I hope you would have figured it out as well ^^&lt;/p&gt;</content:encoded><author>AmberFrost</author></item><item><title>On Rebranding...</title><link>https://blog.lx862.com/blog/on-rebranding</link><guid isPermaLink="true">https://blog.lx862.com/blog/on-rebranding</guid><description>Call me amber/amb!</description><pubDate>Fri, 04 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;nav class=&quot;toc&quot;&gt;&lt;p class=&quot;toc-text&quot;&gt;Table of Content&lt;/p&gt;&lt;ol class=&quot;toc-level toc-level-1&quot;&gt;&lt;li class=&quot;toc-item toc-item-h1&quot;&gt;&lt;a class=&quot;toc-link toc-link-h1&quot; href=&quot;#a-little-backstory&quot;&gt;A little backstory&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h1&quot;&gt;&lt;a class=&quot;toc-link toc-link-h1&quot; href=&quot;#welcome-amber&quot;&gt;Welcome, Amber~&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;toc-item toc-item-h1&quot;&gt;&lt;a class=&quot;toc-link toc-link-h1&quot; href=&quot;#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/nav&gt;&lt;p&gt;So there it is, I’ve finally thrown away the &lt;strong&gt;LX86&lt;/strong&gt; name I’ve been known for years.&lt;br&gt;
It’s not something I do often, in-fact it’s not something I’ve &lt;em&gt;ever&lt;/em&gt; done before, not with this magnitute of changes at least.&lt;/p&gt;
&lt;h1 id=&quot;a-little-backstory&quot;&gt;A little backstory&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#a-little-backstory&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The name &lt;strong&gt;LX86&lt;/strong&gt; came to be when I joined a little tech community on Discord when I was small (Talking about 2016-ish~). At the time we aren’t &lt;em&gt;necessarily&lt;/em&gt; the most mature person ever, so we all just have random operating system names, stuff like &lt;strong&gt;Windows 2000&lt;/strong&gt;, &lt;strong&gt;Windows XP&lt;/strong&gt; and the list goes on and on…&lt;br&gt;
Initially I settled on &lt;strong&gt;Windows ME&lt;/strong&gt;, but decided to differentiate myself from others, so I ended up with &lt;strong&gt;Lubuntu&lt;/strong&gt;, a Linux distribution.&lt;/p&gt;
&lt;p&gt;Over-time I started adding little stuff to it, like appending a &lt;strong&gt;x86&lt;/strong&gt; or &lt;strong&gt;x86_64&lt;/strong&gt; at the end. I’ve also settled with other nicknames such as &lt;strong&gt;LXQt&lt;/strong&gt;, but ultimately decided that it’s better to give myself a more unique nickname. This is where LX86 comes from, it’s an abbreviation of &lt;strong&gt;L&lt;/strong&gt;ubuntu &lt;strong&gt;x86&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I was quite ok with it at the time, having a short nickname is pretty cool… until the Twitter buyout happened. With concerns about the future of the platform, many people scrambled to find alternatives, and one of them is &lt;strong&gt;Mastodon&lt;/strong&gt;, and in turn the Fediverse as a whole.&lt;/p&gt;
&lt;p&gt;I didn’t really paid much attention to it, but ultimately this is where most of my friends went at the time, so I have decided to hop on there and see what’s going on.&lt;/p&gt;
&lt;p&gt;There’s a lot of good memories and there’s a lot of bad memories, however it is undeniable that it changed a lot of how i percept about things. It gave me a glimpse to the cruel world and the lies we live by everyday, and it give a glimpse of all the cool, lovely and supportive people that exists around the world, and that’s when i realized that LX86 might not be representative of anything, at all…&lt;/p&gt;
&lt;h1 id=&quot;welcome-amber&quot;&gt;Welcome, Amber~&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#welcome-amber&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;How did I came up with the name? I honestly have no idea at all! I always liked Amber as a name, and one day I was thinking about a what-if situation and came up with &lt;strong&gt;AmberFrost&lt;/strong&gt;, and it kinda stuck to me since…&lt;/p&gt;
&lt;p&gt;Still I didn’t believe it’s the best name I could’ve chose at the time, so I assigned this name to an Alt account of mine, &lt;em&gt;little did i know it was already deeply-rooted to myself.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The final push however is when one of the people I know also went with a new name, that’s when I’ve decided that it’s finally time to do something about it, especially with the summer break coming. (Meaning, free time I could burn!)&lt;/p&gt;
&lt;p&gt;One thing I very explicitly avoided is tying my name with my profile picture, because as it turns out you’ll need to re-design the entire thing even if you just want to be called something else, and that is time consuming!&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/lx86_old.Bq16_Fj7_1Hay0y.webp&quot; alt=&quot;The old profile picture with my name on it&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;64&quot; height=&quot;64&quot;&gt;&lt;figcaption&gt;The old profile picture with my name on it&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Ultimately I’ve resorted to a strategy called &lt;strong&gt;finding profile pictures from the internet&lt;/strong&gt;, wow exciting isn’t it!&lt;br&gt;
Note that I have delibrately not included the profile picture in here (The blog &amp;#x26; blog post) as it may change any time! Though for platforms that do, I should have already included the link to the original profile picture either in my description or in my bio~&lt;/p&gt;
&lt;p&gt;As for what kind of visual branding should I take? I sort of just made it up last minute, but I quite liked it for now!&lt;/p&gt;
&lt;figure class=&quot;rehype-figure&quot;&gt;&lt;img  src=&quot;/_astro/specs.Bocodujr_Txart.webp&quot; alt loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;400&quot; height=&quot;495&quot;&gt;&lt;/figure&gt;
&lt;h3 id=&quot;but-what-about-the-domain&quot;&gt;But what about the domain?&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#but-what-about-the-domain&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This is where I debated a bit with my past post: &lt;a href=&quot;/blog/2025-01-09-domain-is-a-long-term-commitment&quot;&gt;Domain is a long term commitment&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On one hand there’s a huge cost of switching domain, as well as the inconveniences it brings up to potential visitors. On the other hand, I feel like LX86 is never something I really “enjoyed” living by, so I’d like to get rid of it entirely.&lt;/p&gt;
&lt;p&gt;I don’t know where should I sit on this, but for now I’ve decided to keep using the &lt;strong&gt;lx862.com&lt;/strong&gt; domain as it’s the most chaos-free options I have… After-all I still have &lt;em&gt;many, many&lt;/em&gt; things I need to adapt to my new name!&lt;/p&gt;
&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#conclusion&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;I think that’s it! I am not sure how determined I am on sticking with this name (Never try to predict the future!), but for now I am quite happy with it ^^&lt;/p&gt;
&lt;p&gt;As a side note, I have a decent amount of blog posts which are either overdue or just abandoned mid-way. I really wish to finish them but I’ll see if I have the energy to continue with those, for now you get this lil update as a treat~&lt;/p&gt;</content:encoded><author>AmberFrost</author></item></channel></rss>