This page lists all the site updates. These are short posts that describe the events in my life. These posts are frequently added here, but have less content than the blog post or the article pages. I like to post one everyday so that I can go back and check what series of changes for an extended period of time. These site updates also track the progress of various projects. Some of them might contain funny stuff, anything that can entertain the readers of these sites. Hope you enjoy them.
There is not much going on. I spent a lot of time on the new house. Order some new window screens, and a shower door. There are a lot of repair work. The old fridge is busted. The lawn is huge. Every time, it took a long time to clean all up, and so exhausting. Air conditioner is leaking water, and had someone to check and there is no problem. But wasted some money. The car had a leaking issue with the air conditioner line. Very expensive to fix it correct. I have done nothing but paying money. And the only joy was to go to the store buying some parts to make the house a little better.
The code project tutorial is done and online for a while. I am currently taking a break and doing my next site. What I am doing is copying old code from this site, then repackage it with new knowledge and making a better site for the next one. This will take a long time. I am planning the next code project tutorial. The next one will be the move-able popup modal with bootstrap, and JQuery UI. This will put my tutorial to total 39. And I will try to get the tutorial to 40 this year. After this tutorial, the next one will be the Electron.JS tutorial. This will put my tutorial count to 40. I am running out of ideas to make tutorial.
Linux Mint is great. I had numerous updates installed. The update install is quick and easy. Occasionally, I had to restart. But the reboot is also quick. This has been a pretty good experience, unlike the same experience with Windows. I also work out how to use IP Web Cam with my old phone, and it can transfer the video stream to Linux and capture as video file. I guess Life is not as boring as I thought.
Take a Break And Think About What Next
I clean the gutter of the new house. That was fun. I bought a pretty awesome ladder that can extend to 18 ft. Then use it to get to the roof. The roof was very steep. Moving around took a lot of energy. I used a long snow remover to dusting the dirt of the gutter. There is a gutter shield installed, so the removal is pretty easy. It took two hours, but it was well worth the time. The gutters looked like haven't been cleaned for at least 18 months. I am glad that a right tool (the ladder) was there for me to do what I have to do.
The new tutorial is almost ready. It took me at least a month to plan and do this. Dragon Quest XI certainly delayed this process considerably. Then I realized my assumptions and conclusions are wrong. So I spent a couple nights to redo the sample application, which I think is well worth the time spent. If I continued with the wrong assumption and conclusion for the tutorial, it might damage my reputation. It is best to do something right. But if occasion slip up and cause some minor damage. I am OK with it.
I gotta talk about how I got the internet service working at the new house. Sign up the service was pretty easy to do via an online form. Then I can link the new account to my existing account. I bought a new modem (so that I don't have to pay rent fee). With an existing WIFI router, I was able to hook up the service within minutes. The trouble come when I tried to activate the service. And it has to be done via the mobile app. And I was not able to get the new account on the mobile application. Turned out that I have to switch the new account as the default account, then it would finally show up on the mobile app. And I was able to activate it. Took two days because I have to commune to the new place and I don't do it every day.
New Tutorial for Code Project is Almost Ready
I am almost finished with the tutorial on how to handle the unexpected session expiration and getting login page instead of meaningful JSON object. Then I realized that my assumption and design is all wrong. The tutorial will probably be published here as a blog post. It will not be published to codeproject.com. It will probably tarnish my reputation.
Now I have to go back to the drawing board, and redo the tutorial with the new design. It will be better than what it was. Anyways, I will finish the existing tutorial, and get started with this new one. All these are pretty much research and knowledge accumulation. So the work done is not waste.
The house renovation is going as expected, there are unexpected bumps. Went on for a vacation. The air conditioning on the big car seems to be an issue. I think I can fix it with a new air filter. And I had no idea how close the Atlantic ocean front is so close, 2 hours of drive and it is there. I saw a lot of sand fleas and dead horse shoe crabs. And even saw Dolphin swimming near the coast. It was nice, but tired after two days of vacation. I had several sun burn, the worst one was on the top of my feet. So itchy. I don't like vacation. No personal time.
Has Been A While Without Much Update
The vacation is over. I am going to write another tutorial. This time it will be somewhat practical. It will solve two problems related to session and login in an AngularJS application. I spent a few days on the design of the application. Hit a road block. Before I fell sleep on that night, I found a solution, and it worked. I am going write the tutorial.
After Dragon Quest XI, I started the game Death Stranding. It was a great looking game. I think I liked it better than Days Gone. Oh Days Gone, I am looking at a new update of 35 GB. I have not completed the download of this update yet. After it is done, I will try again with it. Last time I played, I was able to do the motorcycle run and catch the bad guy. It is a tough game. Death Stranding is different, It looks exotic. And I was thinking of going back to Final Fantasy XV. It looks like interesting after Dragon Quest XV. I just don't know if I have the spare time for it.
Well. I better start with the new tutorial. All these tutorials, I am slowing building all the knowledge for the next cool thing. And it is going really great.
New Tutorial on Session Expire and Login Page
Dragon Quest XI, I finally finished it on 4/19/2021. Turned out that the final Boss is easy to beat once I used a trick to lower its attack and defense. And I spent so much time crafting all the perfect gears, weapons, and getting the right aid stuff. In the end, I didn't have to get the best of the best gears (like the supreme sword of light, or the spears, etc). All the party members' health never dropped below 200, and A couple omni health fixed right up. This game is so additive and I spent so much time on it. Now I can hang it up. I will not touch that console for a while.
I picked up another bad habit, reading books. Recently, I have discovered the joy of reading Stephen King's books. First I finished the book "Later". Then I finished "Everything's Eventual". Now I am reading "Hearts in Atlantis". Before all that, I was reading his "On Writing". If you want to understand his writing, this book is a must-read. Once you get through this, then you can get some new perspectives when reading his stories. I admit that it was very joyful reading his work. This fever (of enjoying books) is going to be for a while before it would go away.
I mow the lawn at the new house twice. It was tough the first time. But the second time, it was tedious, but fairly easy. The tough part is the slope side of lawn. On the second time, when I did the slopes, the engine oil got into the fuel line and white smoke came out. Afterwards, it had some leaking. Now it is fine. I won't use the mower on the slope, I will use the trimmer to do the lawn. That was a good lessen learned. I enjoyed the lawn mowing.
Dragon Quest XI, Reading Books, Relax and Recreation
Dragon Quest XI is a good game. The problem is that it would take so much time to get to the end. I have to not only finish the main quest, but also have to finish the side quests. There were three that I was not able to finish, the last trial of Wheels of Harma; the side quest with Legate's Blade, and the Horse Race. There is also the casino. I was lucky enough to get the Jack Pot and get the Elfin Elixirs. I heard I need a lot to finish the final boss. That takes at least 2-4 hours. There is also the need to collect all the equipment. And gather all the mini medals. That would be another 8-10 hours. See how crazy this is? This game really pushed me to the verge. Once it is done, I will stop playing games for a while. It is too time consuming.
Dragon Quest XI Took Too Much Time
Last night, I was working on the next tutorial. It is about how to handle session timeout. The design I had so far is that I have a login page; the user will first log in. Then in the back ground, there is a little process that runs and check the back end server and get am I alive messages. When timeout occurred, some type of HTTP interceptor will catch the 403 error, then it will force the browser to redirect to the login page. Sounds easy, right?
It didn't work out. The first thing I did was setting the session time out to 2 minutes instead of the default 30 minutes. Theoretically, the heartbeat check is every 10 seconds, and it would timed out by the 12th check. But it never timed out. I can't figure out why. The first thing I did was try to figure out if the timeout configuration is correct. So I reconfigured the previous tutorial sample with 2 minute time out. And it didn't work because with JDBC session access, the application properties configuration of session timeout value didn't work. So I assume that the session time with the new application is not working either. But they were two problems.
The first problem is that with JDBC session access, you cannot use the application properties file to set session timeout value. It has to be hard coded to the annotation
@EnableJdbcHttpSession. And this has nothing to do with the never-timeout issue with the current application. The current application uses the heartbeat check and every check would set the last access time to the current time, then expiry time would be 2 minutes of the up-to-date last access time. So with the recurring heartbeat check, the session will never timeout. Interesting eh?
Once I changed the heartbeat to every 3 minutes, and in 2 minutes the session times out, so the session timeout finally happen, and the 403 error didn't occur. Instead, a server redirect happened. That is a 302. I have not yet added the HTTP interceptor, and I can see that what I am imagining is not happening. At this point in my life, what i can imagine in my head, I can write the code to make it happen. When my expectations are not met, I need to find an alternative.
The Tutorial on Session Timeout
After finishing the tutorial on how to use MySQL Db as the session storage, we bought a house. And I decided I will take a week off not doing any tech stuff. I went on a binge of game playing. Tonight I will continue with it. This game Dragon Quest XI, there were so much things in it that one cannot feel finished until most of all are finished. It is very time consuming. At least I was having fun. It is being 140 hours. I hope I don't have to spend 200 hours to finish this game.
What I have been doing with research is very fruitful. Instead of blindly starting another project, I spent the time research on how to do thing right. I have discovered quite a few things that I have missed when I was busy with a project. Now that I am collecting all the ideas and bits and pieces I can use in my projects, I believe I can be more successfully in the future.
The next tutorial is going to be research on how to detect the end of authentication session for an AngularJS application and redirect it to the login page. This is an unsolved security issue and I have a solution, just need to test it out.
On a Break
Another code project tutorial is about to finish. I slowed down so that I don't feel stressed. Right now I feel more of the urge to complete the game Dragon Quest XI. I am in Act III and am going through all the places that I have visited to redo all the boss fight, then I will take the fight to the Lantern. It feels like I need to spend total 200 hours on that game and only completed just half of it.
For the session management tutorial, who would imagine the configuration is so simple, just create the table in the database first, then add the new database as a dedicated data source for the session and that is it. If I knew is this easy, I would have used on this site. Eh, this site works, I am the only user so probably no need to update it. I am thinking about it because since it is so simple.
There is a bug in the current Admin site, I need to fix it. It was the center align row. The word "class" was spelled wrong. I will fix it in a few days. No rush. Next, after the tutorial, I will write my experience of fixing the MySQL server for this site as a blog post. A lot of good stuff is coming. I feel very productive.
Another Tutorial is About to Be Done
I have done it, Dragon Quest XI, all characters are raised to Level 99. It was so easy. Before I raced to the end of Act II, I was grinding for levels and spent a good 8 hours on Hotto Steppe. The main character was set to Level 82, and every one else's level is at at least 70, some are at Level 77. When I got to Act III, surprise, the rest of the characters were brought back to the level at the end of Act II. Then the combined Pip-Up of Hallelujah and Electro Light, two hours every one got to Level 99.
This game is quite ridiculous in terms of the time you can waste. With the hunt of treasure boxes, mini-medals, side quests, and all the Boss battles, I hd a lot of fun, and it is too much. I feel like once I am done with this, I can rest for a while, not playing games. It was really fun, but it is over the top. I can put the console away for a while and do something constructive and not so time-consuming. But it is not done yet, for Act III, I have to go though all the boss battle all the way again. It is still a long way to go. I did have a lot of fun fighting the Metal Slimes.
I started another tutorial. This one is fun, I wanted to learn how to use MySQL database as the storage for Session management. As I researched the ways, the one that was available, is not what I needed. And I found a different way to do it. That will be the tutorial. The sample application is done. I am about to write the tutorial.
Dragon Quest XI - All Characters Level 99
Years ago, I recycled an old MacBook. Before I have done that, I removed the hard drive. It has been sitting there in the tool box. I sometimes worried that if it leave out there for too long and it will go bad. The hard drive is a 2.5 HDD SATA 5400 RPM, 80 GB capacity. It was really old (over 10 years). A week ago, I decided to but a hard disk case so that it can become a portable external hard drive. The case would provide some protection to it.
On the two long sides, there are four TORX screws. You know, those star shaped screws which only special screw driver can screw in/screw out of them. I don't have such screw driver, and when the HDD case arrived, I cannot put the hard drive in. The screws were in the way. The case however, is good fit if I can get the screws out. It was frustrating that I am so close. The first thought I had was, I need to buy some new screw drivers, wait for them arrive, then I can unscrew these damn screws and I can fit the drive in to the case.
That would take a few more days. And this realization just make me upset. I don't need a new set of screw drivers, they come and I use them once and never again. It is a waste. The screws were sticking out. The next thought I had is that I have some pliers, why don't I try use the pliers to hold the screws and twist them out. It was a brilliant idea out of such frustration. I twisted the screws out. Then I fit the drive into the case. This is another example of how a person can think outside of the box and win. And in the end, I won.
Unscrew the TORX Screws with a Pliers
Last night, I have finished the 2nd Act of Dragon Quest XI. It was very long. In order to get to the final battle, I have to go floors up, and there are a lot of monsters. I tried to get around these since I don't need the experience any more, the Luminary is at level 82, and all the companions are at level 70s.
Did my best to get around these monsters, and there were places I need to get to. The monsters would block, and I had to fight them to get through. The point is that, I have to go all 4 floors to clear the path from the 1st floor to the top. Finally I got to Jasper Unbound and it was an easy fight when I used all the tricks that was described online. Then I have to save the game, which goes all the way to the bottom of the fortress. From there I can fly all the way up to the 4th floor and meet the final boss.
And Mordegon is easy. The first round, it took like 6 turns forme to win. Then the 2nd round, it took about 8 to 9 rounds, and all my guys were in full health when Mordegon got dropped to the floor. And I got the ugly sword. It was expected since I spent so many hours to grind to the high level so that I can get the bad guy easily. This is the single most addictive part of this game, Everything is predictable and if you do the work, you get the reward. I am looking forward for the next 100 hours for the 3rd Act. Stay tuned.
CodeProject tutorial is almost complete. I also went to the Cherry Garden today and took some nice photos.
Dragon Quest XI Mordegon Beaten
Almost a week has passed, I just started writing the tutorial on the web application supporting UTF8. Writing the sample application is like being in the breeze, cool and comfy. But writing the tutorial is just hard. I had to organize my thoughts and put it on paper. And I have to make it good enough to read. It is not always easy to do.
There was one problem with work, and recently was resolved, Apparently, the Web Accessibility in Chrome can really screw up the rendering of a page. I had to help the BU users to disable Web Accessibility. Anyways, I consider the issue resolved. It was unbelievable three weeks of going no where.
The new car is great. Tax 2020 is completed. I think I have two weeks I can get some work done. I plan to get the tutorial completed. That is the most important. I also need to publish the previous tutorial here at this site. I got time.
Dragon Quest XI has been unbelievable. I got all the crew back in Act II. And got everyone all the right skills, Then I started farming metal slimes. I got the Luminary to level up to Level 80. Now, the crew is in the Fortress of Fear. It is quite addictive because it is predictable and easy to get the high of accomplishments of doing the quests. I can see the great appeal of such game. Anyways, I will play some when I have the time, but I will be focused on getting this tutorial done.
The New CodeProject Tutorial is In Progress
The past few days has been a roller coaster ride. One luxury car is completely destroyed. It is replace by another. The Justice League movie was simply awesome. And I watched it multiple times. This is why there is lack of updates here. I was not just playing and not working, I did finish the enhancement for setting category and keywords. And I deployed the change.
But, what I had to do before the deployment did cause a huge scare for me. I started the night with update of the software packages for the web server. It was easy and took a few minutes. Then I rebooted the server. Everything works. Then I saw the info that I need to upgrade the OS from Ubuntu 18 to Ubuntu 20.04. I have done one before and it was a breeze. So I thought this would be quick and easy. No. The upgrade took like 20 minutes because software packages are needed to be downloaded and installed. During the long installation. There were errors. MySql server was not able to start. I figured it is something a reboot will fix. It didn't. Then I tried to manually start it, and it was not there. I had to Google to find out it had to be unmasked. And I was still not able to start it.
At first, there was no log output. Seriously no log output. Someone online suggested that run "mysqld --help" and see what type error would be output, that actually helped. So it was my "my.cnf" had some bad configuration. I tried correct it, and it was no help. Then a light bulb lit up. I have did configure my Linux laptop with the same configuration. I could just copy the same change to the configuration files on the server and it would work. So that was what I did. I deleted the bad line from the "my.cnf" and added the good line to the "mysqld.cnf". The copy didn't work as expected, and I corrected one more time and the MySql server was finally up. And the site was back online. Then I was able to deploy the enhancements. Yay!
This taught me an important lesson. I need to backup the data when I have time and restore the site if needed. I will do the first back when I have time. It took a few steps, and it is not very easy, but it is do-able. It would save me from losing the important site data.
What a Scare - Server Upgrade and Site Down
Yes, I saw the Snyder Cut. It was awesome.
The connection was not very good, so the HBO Max disconnected a few times, Still the movie was really good. It is way better than the one that was released earlier. Just having the privilege to see such creation was unbelievable. I always liked the superhero movies from Zack Snyder. I liked "Watchmen", "Man of Steel" and director's cut of "Batman v. Superman" (although I didn't like the monster Doomsday). This new Justice League just tops all that were before.
One central theme I am looking at is the effort that was put into making such a movie, an additional $70 million on top of the $300 millions that was before. The master craftsmanship that was put into making this movie, with much better fight scenes, better dialogues, and better of everything. One thing it is clear, to produce world class product, one must put great effort into the production of it. This is something I strive to do, and do better.
I took the nights off to watch the movie. Before, I was making some good progress on the site, the keywords and category popup is already integrated with the page content editing, and the resource upload page. Just a little more time, I can get them into the other pages. Once this is done, I will go back to the tutorials.
I just completed the third Code Project tutorial a few days ago. It is for the ES6 script and AngularJS. I wrote the sample app during the holidays, and the tutorial just two weeks ago. Everything was smooth. After this is completed. I took some break. Right now I am adding some new feature to this site. There was no functionality to show the existing keywords, and categories from past postings. I am writing two different popups that will be used to choose category and keywords from existing categories and keywords pool. This also gives me an opportunity to see what existing categories and keywords are.
During the weekend, I started on the sample application for using Google's OpenID for authentication. I got to the point where the OpenID is setup. Then I decided I don't want to start another tutorial. At that point, I went back to Dragon Quest, I am almost 100 hours into that game, with a lot of hours logged. I am at the point where I defeated the sea monster Alizarin. And I am at the northern town with the Gold Fever. It was very nice. Anyways. I am thinking of getting the functionality of this site done. Then I will go back to the tutorial. And I am going to enjoy the video game for a while. What a great life.
Third Code Project Tutorial Published