Hi, welcome to Han-Sulu.com. The web site has been completely renovated. When this site was first launched, I've never found a focus on what I should be writing. As a result, it was soon abandoned. The abandonment was also partially caused by the fact that I was re-designing this site. To re-design this web site from ground up again, I was putting 2-3 hours a day for almost another 18 months. I hardly had the time to think about what I want to write for my blog. Eventually, I stopped updating it. Now, the new site is up, I am determined to make this blog site better than before.
What is/would be available for this blog? At this point, there is not much. The previous version of this blog is a disappointment. There is not much of a focus. Two years ago, I thought without a focus was probably the best idea I had for this blog. Now I realize it isn't. This time, my focus will be something which I can do best. The focus of this site will be technology, software engineering, and solving problem with practical solutions. To prevent losing my focus, I will use a new approach. I will be documenting the projects I am doing. When doing projects, problems will naturally occur. Solving the problems, and document the solutions, this will be the focus of this blog. I have diverse interests, it would be interesting to see what will be covered here.
Aside from the "boring" stuff, I will spent some of the blog posts to show the fun stuff I do. These posts will also be related to problem solving. Other than problem solving, there will be reviews of video games, photos I have taken (photography as amusement), posts on photography (on concepts and techniques I have learned). I know, I am probably going off track here. This time, I will remain focused. This blog site is about solving problems. Anything related to a technical problem, there is a solution, and I like to document it here. So if you the readers saw a post that is somewhat not related to IT technology, you might think I am off the track a bit, I won't go far. If I publish a post here, it will be somewhat related to problem solving, and it will be interesting, hence worthy to be shared here.
If you like to know more about me, please go here. You can find all the information regarding this site. If you need to contact me directly, you can either post comments on the blog posts or articles. Or you can go to this page, and send a private message to me. I like to get feedback on what posts are good, and what not; or ideas and request of future posts. If you like, you can also subscribe to the site mailing list to get regular updates. Thank you for visiting.
I post updates for this site regularly. Here are some of the most recent ones I have posted...
It has been a while since the last update. There is not much going on. I have been playing FFXV on XBox One, and had made 15+ hours of recording. The capture device split the recordings by 4GB per file. And there were quite a few files. And last time I checked my sd disk, there were 88GB of files. I am busy processing them and upload them. My goal is to capture the entire game playing, of all the good and bad and upload all of them. It will be a daunting and enduring task. I believe persistence will prevail. Right now, I plan to complete the processing of all existing files. then resume game play capture. I am also thinking of capturing the end of the game play for FFXV on PS4 and make a video for upload. For the holidays, I purchased three more games, now my library has expanded with eight more games.
While I am not playing games, I was working on the last tutorial. I was not familiar with jwt token, and how it was used. So the sample application took a lot of time. And the tutorial will not be as complete. There were some unforeseen technical issues. Resolving them would take a lot more code and explanation, which I think a second tutorial can expand on. In the middle of this year, I thought I would do a tutorial with OpenID. It didn't happen. This JWT token tutorial would be the alternative. The follow ups can expand one or two more tutorials. It would be good for next year.
Besides playing games, and doing tutorial, I have not make any progress with the rewrite of this blog site. Since the old site is working, there is no rush getting the new one to work. I will probably get back to working on this once the tutorial is done. My personal computer is working as expected. I have not restarted since last update. And since then I have done a lot of video processing, which are memory intensive. When I am not using it, I can just lock it, then put it hibernate/sleep mode. Then close the lid. When I need to use it, I can open the lip, and log back in and use it. It is fantastic. I couldn't be more happier with my Linux OS. Some time earlier this year, I had serious thought of replacing this OS with another OS. Now I don't see the need to do that.
Updates Since the Last Post
They finally fixed it. After at least a week of testing, I was very happy that the problem related to sleep mode or hibernation of my laptop seems fixed. I think what fixed it is Linux Kernel 5.13.0-21 I have recently installed, which might have a better firmware. For the past week or so (maybe longer), I was able to lock screen, then set laptop on Sleep, close the screen. Then a few hours later comes back, open the screen, and unlock the desktop. Even doing this for many times for the whole week, it was still able to awake and function normally. I have not seen slowing down, huge CPU usage spike, or signs of huge memory leaking. Although, lock it then put it to sleep is still too many steps, I am still very happy with it.
AverMedia's video capturing device is working perfectly. I was able to hook up to my Xbox One S and capture several hours of re-play of Final Fantasy XV. It splits the video files into several 3.7 GB chunks, now I have a lot of file to edit and post.
I have posted two more articles to this site. They are the earlier work of this year. I am working on one more tutorial for this year - JWT token for authorization in Sprint Boot Web application. I met with some minor obstacles with initial testing, and was somewhat inspired by the solutions. This will be a fun tutorial, for the end of the year.
They Finally Fixed it
I finally completed FFXV. It has been a long time. I was addicted to Shadow of Mordor when I first bought FFXV for XBox One. At that time, I had a love-hate relationship with Shadow of Mordor. It was a pretty hard game for me. And the adrenaline rush is quite addicting. I eventually got good at it. But at that time, I figured if I can get another game that can kick my addiction from Shadow of Mordor. That was FFXV. I browsed shelf of GameStop trying to find something similar to Shadow of Mordor. FFXV was the one caught my eyes. I bought it for $10 and played 10 hours then stopped. Not until recent few months I picked it up again. I bought the PS4 version ($14.95) after I completed Dragon Quest XI and started playing it.
The game's story plot was incomplete and oversimplified. The game was over emphasize on side quests, hunting monsters and daemons, along with some other fun activities. Half of the game was left unfinished (the ride to the evil empire's capital, should have more locations to explore). The final two bosses were fairly easy to beat. Although I had to spend some hi-potions and elixirs. Overall, it was fun and addicting. This is the third FF game I have played and first to complete the story plot. I also played FFVII and got to the final boss then I gave up. The final fight seemed endless.
I was contemplating of buying the FFVII remake, and a new PS4 Pro for it. But I am undecided. I did sign up for the waiting queue on Play Station Store to get a PS5. I guess I will wait. Meanwhile I will put $200 per pay check to a saving account for that expense. Meanwhile, I started replay FFXV on my XBox One S and recording the game play, and will be post to youtube, just for fun.
I found a tutorial on how to use JWT token as the authentication cookie for the Spring Boot web application. I will be replicating this for my own use and do one last CodeProject tutorial. The way this works is to have the auth token as a bear token, then use the an http interceptor to get this token and verify user's access rights. This idea can expand with possibly multiple tutorials. I am very excited. This will be a great and fun tutorial to do.
FFXV Complete and New Tutorial is Getting Started
I know it's been a while, without much update. Actually, there were a lot of things happened. I bought a video capture hardware so that I can record game playing. And it was great. The hardware has the ability to capture video without a laptop. And it was just awesome. One click and I can record video of any length then stop with the same click. And I also tested recording with laptop using the same hardware, with OBS studio, I was able to record the same. It was very flexible. I am glad I bought this even though it cost a bit more than other video capture devices. With that, I captured 10 or so videos, did the editing and uploaded to youtube. The editing took a little time. There were some problems with OpenShot Video Editor. I found a way aroun the problem and was able to edit all the videos. They were some fun side project. And it gave me ideas of what next blog post would be.
I got a hand saw, some planks, and started the small project fixing the unfinished closet in the basement. The plank was not wide enough. I cut enough pieces and covered the floor. They where exact fit. The problem I was not able to solve effectively is the unevenness of the floor, so it is still a bit uneven. I am getting a bit ambitious. I am thinking of covering wall with large fit wood planks as well. It is another fun project.
I finished another tutorial and uploaded to CodeProject. That was fun. And I did get distracted by FFXV. For the past three days, I played two dungeons. I got pretty un happy about these two. One is that I went through the whole place and couldn't find the exact destination. That one gave me about two new levels. The other one is much worse. For two hours, I was going through the maze trying to find a way into this locked room, and I had to fight very tough monsters. In the end I was not able to get in. It is a side quest which I don't have to finish. So I quit before it wasted all my Elixirs. I used about 50 of them. It was crazy. But the whole quest gave me 300,000 some experience points and five new levels. I was still angry. The whole dungeon crawling is a waste of time and resources. For now, I stopped playing games, until it is the weekend. For now, I will concentrate on work.
Playing Game, Recording Game Plays, and Some Other Side Work
It has been a while without updates. I was busy playing FFXV and doing a new tutorial for code project. The game is quite addictive. It was easy to play and easy to level up. So player can get a lot of endorphins, and not much of adrenaline. It is ideal to me. So I play like 3 nights a week. Hence, the no update for 8 or 9 days in a row.
I am happy to report that I have successfully installed MySQL (actually MariaDB) on my EndeavourOS. Again, the process is tedious. Installing the application took no time at all. But starting it up took a lot of time. The problem was that the default Db instance was not part of the application installation. I have to explicitly create the instance via command line. And figuring out what the command line for this took a long while. But once it is done, I was able to start the instance. I have not done the secure installation yet (for tighten the security for the database). But the hardest part is completed. In case any one wondering how the install works, here is the link.
In case you wonder what the new tutorial is. It would be a tutorial on two way communication between an AngularJS directive and its parent controller. This is something I have always wanted to document. It is valuable information to me and I can reference back whenever I needed. It will be ready soon.
One last update. I wanted a video capture box so I can record game playing. Finally got one today. I don't know how easy/hard this would be. It is $135 so it should be all right. Because of lack of hardware, I can't use the laptop to record. This piece of hardware should be able to self record. I will try it out when it arrives. I will give a status update when I get it to work. Stay tuned.
Working on a New Tutorial for Code Project
First thing first, I installed slide-able drape for the skylight window for the attic room. It was scary because it was big and looks fairly complicated. And it wasn't fit. I had to use a garden clipper to trim the frame a bit. Turned out, the installation was pretty quick. First I had to remove the old one, which is busted, dirty. And apparently pretty easy to do. Two screw on the side gotta get them out, then there are the 4 clippers on all sides. Screwed them out then the frame for the windows would be clean. Then I had to get the 4 sides of the new drape put together. And push the who frame up. And first screw the two on one side, then the next two on the other side, finally the two in the middle. And it is all done. The scroll of the drape is bit hard in the middle. But it is up there and looks good. I was happy it worked out.
The other thing I did, I thought it would be funny if I change the Linux boot menu to display "Gundam Linux", with an icon that looks like Gundam. Turned out, it was pretty easy to do. I was able to change the config file for the Grub menu using grub-customizer. Then I decided to see if I can change the icon as well. The thing is the OS is called Gundam Linux, But there is the icon of "LM" displaying next to it. It looked like a buzz kill. The first thing I tried was edit the config file to display the Gundam icon. I found out that the config changes would not be permanent. And every time I open the config file and the change would be reverted back. I tried to change the 30_os-prober script. It was fairly complex and not something I can mess with. I reverted the changes. And found a better idea. It would be permanent. I renamed the default icon to a different name. Then I took the Gundam icon and name it as the default icon file name. And it was permanent, always displays. Here is a screenshot I have taken with my cellphone:
Word of Caution: I am sure what I do is not legal (a copy right/trade mark infringement). It was a joke. So please do not name of your OS "Gundam Linux".
Have Been Busy with Some Minor Fun
Recently I deleted my Manjaro Linux install and replace it with Endeavour OS, which is another Arch Linux fork. Afterwards, I proceeded installing Java 17 on it. At first, when I ran Java, it gave me error that the exec binary format was invalid. I checked and found out that Install the ARM version instead of the x64-x86 version. That was pretty funny. After correcting that mistake, I tried to set the system wide environment variable JAVA_HOME and PATH to the Java binary exec. I made the mistake of using SET to set the variables. When I rebooted the machine, I can't log in, the login process will cause desktop to crash and return back to the login screen.
So I learned how to boot to console, which happens after choosing the boot option on the Grub menu. Then click CTRL + ALT + F2 before the login screen comes up. Then I can login as root, and update the changes I made in /etc/profile. Then reboot again and I was able to login. Afterwards, I can run Java 17 at the command line. That was a lot of hassle.
After Java, I tried to install fcitx for Chinese input. I used pacman to install it. Then I tried to configure it and the configuration app was not there. I have to use pacman to install it which is:
pacman -S fcitx-configuration
After I checked the configuration and added the PinYin input to fcitx, I tried with CTRL + Space to switch between input languages and nothing showed up. After some more research, I found that there is a fcitx-diagnose application which spits out all the errors about the configuration. Turned out I need to add some more configuration to .xprofile for my user account. After I add those changes. Then I restart the desktop again, then the fcitx input window would appear. This is exactly what I have faced 12 years ago when I was working with older version Linux (don't remember which one, probably RedHat). But this exercise shows it is pretty hard to configure such a bare bone system for user for average user. For me, it is fun. The practical goal is that if this OS works OK with the laptop screen flip, then I will switch from Linux Mint to one of these Arch Linux flavors, and use it as my day to day work laptop.
Install Endeavour OS (for Fun)
Just want to put out a quick update. While I was doing my Desktop customization, I made a mistake and my shut down/log off options dialog disappeared. Instead, the power off button logs me out without allowing me to select an option on what to do. There is a way to re-enable this. I will write a quick tutorial on it. There is another thing I want to throw in for the same quick tutorial,
at this point I can't remember what it is. It is probably how to change your name and icon for your profile. I just remembered (edited on 09/21/2021), I will also include the tip on how to remove the annoying popup asking for the password to the system KeyRing that Chrome always asks. And I will also explain why this happens and why it is OK to disable it.
For my personal project, I have created the site links list for the admin page. And again, the paged items directive is working as expected. Although there is a duplicated code for the page flipping functionality. I need to thing of a way to resolve it so that I can eliminate the code duplication for this once for all. But so far, the effect is fantastic. It is combines re-usability and flexibility into one, which is great.
For fun time, I was play FFXV. The reason I put it off initially is that it is very time consuming, and a lot of the side quests were silly. But now, it feels like something rather enjoyable, and it does not spike up the excitement making me unable to sleep at night. And the achievement of completing the quests feels very good. And the leveling system feels all right, it is rather quick. I am now at Level 42. It is quite amazing how fast a few finished quests can quickly level you up. Making gil (money) is very quick and convenient as well. Hopefully, this will last.
Preparing Another Tutorial on Linux Mint
Two days of hard work, I finally completed the tutorial for Linux Mint 20.2 Uma XFCE desktop customization. It is quite hard. The writing is easy. Writing technical stuff is getting easier and easier because I write so much recently. That is progress for ya. The challenge with this one is that I have to take all the screenshots, upload all the screenshots, then associate the images with the post at the right location. It is quite crazy. After posting the tutorial. I realized two issues, one is that I forgot to mention adding the DockBarX to the "Session and Startup". The other is that I forgot to mask my name on the start up menu. Both were fixed. And took much of the time to do. It took a while. But it was done. Here is the link to it.
I just want to add one more paragraph here. I was playing FFXV. This is another crazy thing I found. I actually liked this game. I do not care much about FFVII (the original or the remake), this FFXV is something I like to finish. I especially like the way that one can go around and explore, taking and finishing quests. It is also different from the other JRPG, the playable character gets jump around and do actual fighting. I just hope the controller can hold up with all the finger hitting. I have broken one XBox One wired controller from playing too much of Shadow of Mordor (which I played really well). The nice thing about playing games is that once play enough, I can get good at it. It could be addictive, but I was able to plan the whole thing around my life and still get things done.
Finally Finished the Tutorial on Linux Desktop Customization
Sorry about the lack of updates recently. For the site work, I have completed the site user management. The home page of this functionality is using the new paged items list directive, and it was awesome and working as expected. I am currently working on the site links management pages to test the localized re-usability of this directive function. It is going to be awesome.
Another cool thing I did is that I created my own Ubuntu setup ISO. It is based on the tutorial from this site. It took an hour, and in the end, the newly generated ISO really works. That was exciting. The only problem is that once it is installed, it sets the GNOME desktop as the default session. And I packaged the XFCE, but I have to use the drop down on the login page to specify the XFCE desktop. Other than that I didn't install the xfce terminal so I can't install or uninstall anything. But the steps do works. My goal is to package a minimal set of software for an OS and then I can install anything on top of this minimal stage. This is something that seems to be impossible 10 years ago. Now, with all the available info. It is almost achievable.
Not Much Going On Recently
I am making this quick update so that I won't wait for another 9 days to post something here. Just trying to keep writing for this site a good habit. First, let me just tell you this, if you search "Han Sulu" in google, and this site will not appear on the list. not the first page, not the first 100 page. This is expected. The Admin site of this blog uses self generated SSL cert which will be invalid for Google. They have a good security measure and marks this site as unsafe. Hence it lows the rank for this Blog site. If you search "Han Sulu" in Bing, Yahoo and Duck Duck Go, they all display this blog site as the top result on the first page. I don't play according to Google's rules, so I don't really care about the ranking on Google. Using a self signed SSL saves $100 a year, which is nice for me. Note that, if you search han-sulu.com, it will be displayed in Google search results. So it is still visible in Google.
I did a lot of customization of my Linux desktop. I will write a blog post about it. It will feature some detailed steps how to change the looks of the desktop with lots of screenshots. I just have not found the time to do it, especially with screenshots. It will be available in the next 5 days or so. No plan to create another codeproject tutorial yet. The Desktop customization would be a lot of fun. So please stay tuned.
No Google Search Results on this Blog Site
I was trying to write a good update. But there is not much to say. I was distracted with Linux. One thing that was super awesome with, is the ability for user to customize the looks of the desktop. So I did that for a couple days. I didn't spend all the time doing it. But I did for fair amount of time. I spent the other free time with the rewrite of this blog engine.
Customize the desktop. Here is what I did: First, I got the source code for PolyBar. And I got the application compiled and installed. Then came the configuration. I got a few things added to the bar. But, I cannot add the wireless status, and alsa audio. They were not supported in XFCE. It was a dead end. The application is very cool. I just can't use it. I gave up on that.
Then I started customize the XFCE panel. It took a while to get it transparent as I liked. The problem is with the confusing configuration. After changing it, I had to log out then log back in to see the panel is transparent. Then I changed the wall paper for the login screen. It was very easy to do. There is a login window application in the system category that can easily do it. I got a good wallpaper for the login screen, then another one for the main desktop.
Another cool thing I have discovered is the power up and power off screen/animation. I didn't like the default one, so I installed a spinning circle for it. Apparently I can download the file then customize the boot up and boot down process with the new one. Finally, the docking bar. Plank is not working as I expected, so I did my research, and I found XFCE DockBarX. It was better than Plank. And allow many customization for me to pick a look I like. Functionality wise it was better. I can popup more than one instance of the same process and pick the window to bring it to the front. I like this the most.
For windows decoration, I have downloaded many application icons sets, and many themes. And switching them is pretty easy. But it can be very confusing. There is the Appearance application and the Window Manager. In order to get consistent looks, in both applications the same theme has to be selected. Or one will see inconsistent windows decorations. Such configuration process is confusing. Now I know how to do it, customizing the desktop will be doable.
I have made huge progress with my Blog Engine project. For my previous version, which is this application you can see now, there is a big problem with the paged items list. For the new version, I have designed a reusable page list that can be rendered with different list (list view or table view). I know there is the UI-Grid. That thing is cool. Yet I believe my design is more flexible. Yay!
Distracted, A Long Time Without Updates, Sorry...
I love taking photos, and creating drawings. In this section, you will find all the photos and pictures I have created recently. Please enjoy.
Here are the articles which I have recently made public. Please enjoy.
In this tutorial, I will discuss how to handle secured session timeout in an AngularJS application.
This tutorial will discuss three different ways of communication between parent controller and AngularJS directive. It will discuss the three strategies for communication between parent controller to child directive controllers.
This tutorial is originally published on April 29th 2021. This is another one of those things I didn't quite get it, and I wanted to learn. The online sources are not great, so I had to figure out what better alternative I have. And I was able to figure out. This tutorial will offer readers an alternative way of designing secure applications with DB as session storage.
This tutorial was published this year on April 14th. It is about how to design the MySQL database to hold UTF-8 encoded data, and how to implement the back end REST API and MVC application code to handle UTF-8 encoded string. It also discuss how this can be tested. This tutorial finish my wish of learning how to design a multi-language supported web application.
A tutorial on how to setup an application Spring Security and Spring MVC, and use ThymeLeaf for secured page rendering.
In this article, I will discuss how to implement a warning bar (div with class alert alert-danger) as a reusable directive. It also show how the directive can have two-way data exchange between the directive and the host component. Hope you will enjoy it.
Here are the blog posts which I have posted recently. Please enjoy.
In this tutorial, I will explain in details on how I have setup my video capturing when I play my PS4 console, as well as the work flow which I used to process the captured video for YouTube upload, so that the videos on YouTube is 1080HD. This is a great tutorial for beginners, don't miss it.
In this blog post, I like to discuss the resolutions for two Linux desktop related issues, one for the constant popup for unlocking system key ring when launching Chrome browser. The other is the disappearance of the session log out options.
This is a blog post on how to customize XFCE desktop for Linux Mint 20.2 Uma. I will describe how to customize for transparent panel, customized icon for the start menu, install and configure DockBarX, install and utilize customized icon set and application window themes.
In this quick tutorial, I will discuss the steps I took to set up my environment for application development using QT5 and Eclipse for C/C++. It will be different from other tutorials.
This is a very simple tutorial on how to enable CSRF token as an added security measure for Spring Boot application integrating with AngularJS.
In this short blog post, I will discuss how to hack the Spring Session code so that I can load the configuration values from the configuration file then pass it to the Session Repository creation. This should surpass the limitation of specify constants via annotation.
I accidentally broke the MySQL database server on my server box, via OS upgrade. This tutorial goes in details on how to trouble shoot the issue and how to resolve it. Hope this is useful for any reader who faces the same issue. Thanks for reading.
Recently I switched my development PC to to Linux Mint from Windows 7. This post is to show you the reader how I made the switch, including the preparation work I have done, the buying laptop process, the process of installing the new OS, and the add-on software I have installed. I also described the simplicity of upgrade the OS to a new version. And the testing I have done to make sure everything works.