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.
Yes! I just finished the fifth tutorial and sent it to codeproject.com. It was for the warning stripe directive I have designed. It took a while. I was taking it slow, so that I would have fewer typos in the writing. Taking it slow also allow me to think what I should say, making the sentence clear. I am trying to improve my writing, still a long way to go. I still feel like I am aimlessly writing.
I bought a lawn mower and FedEx lost it in the warehouse about 8 miles from my house. Heh! I finally was able to get to Lowe's and get one today, plus some more supplies. When living in a crappy place, lots of repair is needed. The door knob under the kitchen sink needed a new screw. Got one and fixed it. Two light bulb gone out in the kitchen, replaced with two led light bulbs. The front door closer was damaged, got a new one too. Tomorrow I will install this and get the mower going. I am planning to write a blog post on how awesome my two hundred dollar phone is.
Completed Another CodeProject Submission
When I create a blog post, or an article, or an update, I choose an image to be part of the editing, and the image display would be a broken link. This is caused by the fact that I never found a way to use the same sub link to display the image in Admin Site as well as the public blog site. The image display in the posts, articles or updates for the public site is working correctly. This discrepancy is annoying to me, but before yesterday, I didn't think it is a problem.
It is a big bug of this web site. I don't know why I didn't think it was a problem. I guess I was numb after this issue was ignore for so long. Anyways, I found a brilliant way to fix it. I did it and worked OK on my local windows system. When I deployed, it failed to work. The Spring Boot firewall configuration throw an exception. First I tried reconfigure the firewall configuration to get around this. I was not happy about this. Then I tried another fix. That actually worked out perfectly, I didn't have to lower the firewall configuration to get around the issue. And this took the whole night to fix. Time well spent.
Fixed Image Download (Preview) Issue for Admin Site -
I went to the Philadelphia Zoo yesterday. And took the photo of the flamingos. The light was just right and the photo looks good. Anyways, I posted here as a souvenir.
It's been 4 days since my last update. I was busy working on the fifth codeproject submission. I need about 3 more days. This one is pretty complicated. In terms of writing, it was not the best. It is passable. Sometimes, it is very hard for me to find the words to explain certain operations, especially after a day of hard work. It was a good day for me with professional work. I fixed one bug and discovered another, it will be pretty easy to fix. Another day, successfully bring home the bacon.
Uploaded the First Photo Today. Looks Good
I decided to write another tutorial for CodeProject.com. Then re-post it here. This time I will write up the re-usable component I have done using AngularJS. Remember I mentioned the little tech-debt I have done. When I finished this Blog Site, I didn't like the way warning, error, and success messages are displayed. It was duplicated many places. I decided to make this warning display a reusable component. And I wanted learn more on how directive works. I have done it. The next step would be share it with the world.
I just started the writing. I hope the more I write, I can be better at it. Today is a stressful day. The emergency deployment took half a day. It was an app I have never done. And I had to learn it inside out within a short time, I was not very good at doing things under pressure. It turned into a nightmare scenario. I was able to get it done. I still don't like it. I spent the afternoon fixing issues with an legacy application. Another scenario I don't like (I didn't create the mess, I had to fix it). It was more exhausting because I skipped lunch. I finally recovered after dinner.
Last night, it was nice. I played a little game, a couple hours of "Shadow of Mordor" (my favorite action game). And I didn't have to think of any troubles.
Writing another CodeProject tutorial - Reusable Warning Bar
I just finished another codeproject tutorial. And I din't want to start a new one just yet. The new one would be the final one for the year. Any new tutorial after it would be bonus tutorials of this year. The write up is not that interesting. It is dry and boring. So I decided to fix one issue that was on my list for a while.
The download resource and download thumbnail functionality for the Admin Mgmt site was only half implemented. It assume the matadata file of the resource exists, and only return the resource to the browser, If the metadata file does not exist, then 404 will be returned. This is only half the whole story. When metadata file does not exist, the service should try fetch the file info from the database. That is what I have fixed. The whole process took about 2 hours. What is amazing is that since the blog site and admin site released last month, I am still spending time fixing issue with these.
Fixed another issue with Admin Site Here
It took about 4 days. I finally finished the write up for tutorial of the Hierarchical Comments display. When I finished and sent the article to codeproject.com, I realized I have misspelled the word "prominent". I am going to leave it as it is. Then I went back to work. I wanted to add a new resource filter to the Admin Site. This was quick, it took me just one night to do the implementation. And another night to test it. The power of some copy and paste.
I also fixed one little problem. In the source list page for Admin Site, I displayed the file name with sub folder names as well. And when I did the filter, the file name was displayed without the sub folder names. That is because the new functionality have the sub folder stripped from file name. Th old functionality never had it fixed. So I add the fix in and now the display of file names are consistent.
Hierarchical Comments Display Tutorial is Completed
I am working on the CodeProject tutorial on Hierarchical Comments. It is almost completed. I am at the most difficult part of the tutorial -- explaining the algorithm. Once that is done, it will lead to the end of it. I am getting pretty good at this.
For this article, I was just trying to discuss the tech debt that I have left off for so long. It should be a joyous moment. Yet, I wondered, should I incorporate this functionality to this site? Or just leave the existing functionality as it is. I will think about it.
The more urgent issue for this site is adding a filter functionality to the resource section (for the admin functionality only) so that I can display the resource files by type. This is a relatively easy operation to complete. Once the article is done, I will probably work on it.
Writing the tutorial on Hierarchical Comments
Today is a very productive day. I started working on the bug found two days ago. I wasn't able to get the issue right away. Somehow the log is not spitting the error. That didn't stop me from fix the issue. Turned out, the problem was with the empty category. After fixing this issue, I did some thorough testing, I found two more issues, They were quick fixes.
All three fixes were deployed into the public site. I tested, everything works. It feels great that these issues were quickly resolved and could be deployed very quickly. This is what I love about this whole project. It was designed in such way that 1) it is fairly easy to use (with some obvious issues); 2) any issues found can be fixed pretty easily. I am going to use this application for a long time.
I also posted the published article last month as an article here. It was pretty easy to do. Copy and paste, plus the images to posted to the articles. All these are fairly easy to manage.
Fixed three issues today
We left MI on 7/7/2020 in the morning. The drive took 11 hours. When we got to PA half way, it started raining. Instead of going to camping, we decided to drive all the way to the new home. The next few days were mostly sleeping.
It was petty sad that I had to leave the old place. It was a good home. I feel really bad leaving it. It is being renovated for sale. Hopefully, it will be sold soon. The electricity and water are all connected to the new place. I need to go get new driver's license and registration of the cars. These are the things I hate about moving. The internet connection took a whole morning. Afterwards, I had to do a activation to get the internet working. Luckily all the wireless routers were connecting successfully with the original configurations.
Before I left MI, I found a bug in the updates section. I will fix it.
Settled in PA
After the status display component for AngularJS, I picked another technical challenge. The reason that I didn't spent the time to write the design of the status display component is that I am a bit sick of writing technical design. And this next challenge has been there forever. I owe to myself that I have to solve it before I can move on.
So what is this new technical challenge? In the early 2000s, there were a lot of forums popped up. They are also called bulletin board, The messages can be displayed in a upside down tree. Where the root message is the first, underneath it, its children. Underneath every one of its children, more children, and so on. I never figure out how to do it. In fact for this web application, I didn't even add the similar functionality for comments display. I just didn't have time and energy to implement such a complicated operation. And it bothers me. This is 2020, technology advanced way beyond the early 2000s. This should be easy.
And it was. I have solved the issue at this time of writing this site update. I have to add some more finishing touch (much needed clean up). Then I can do another tech design write up. Better check back later for more info on this.
Another Technical Crack - Forum Messages Display
The toilet holder in guest bathroom is broken. So I went to Home Depot to pickup a new one. I was able to find the aisle. But the first one I saw was priced at $30. At first I thought it was the virus scare that pushed the item to this ridiculous price. I stood there and said to myself "So expensive for such a piece of shit." And remembered I had bought one many years ago and it was priced no more than $10.
So I decided to explore some more, by going to the deeper end of the aisle, I saw another one priced at $27. Then another one at about $20. Further in, I saw something about $17, Then at the very end, their were two different ones, One is priced at $5, and another at $10. The one of $10 looks like the one I had bought a long time ago. I bought it.
This is the same experience when I first got to Michigan. I was trying to a plastic water bottle at the grocery store. The ones that was obvious are priced more than $10. Only when I explored the aisle and found one (A big Rubbermaid) priced at $9. The lesson I got is that you can't trust what you see first in these stores. The overpriced ones are always most obvious, giving people the impression that they are the only choice. I should always explore some more to find the one priced at the amount I was expecting. Another lesson is that I should have some knowledge of what reasonable price would be. Sometimes, it is not very obvious.
Buying a Toilet Paper Holder
This is thrilling. After the spare time of three days, I was able to complete the little reusable component in AngularJS. Here is the spec of this little component:
Anyways, I saw a need of such component, so I set out and made it. As I was writing this, I realized I can update the design a little more, getting rid of the $watch() methods, making it less complex. So I spent 10 more minutes and cleaned it up. This is pretty much done, I will write a little manual for it. The only hope I have is that this little component will not be shelved into a code repository and be forgotten. I might be able to use it later.
As I am designing this, I was thinking, may be my next goal should be a designer, and t design something simpler, not as complex as this site, but more in the forms of reusable components. These can be assembled together into more complicated web applications. It would be something I will enjoy.
AngularJS Reusable Component - Warning Display (2)
I am working on a reusable component with AngularJS. It is used for display the error message or warning messages. This idea came to me when I was working on this blog application. On every page, there will be a number of operation which is either success or failure. For these two types of status, we want to display a status message. This should be a reusable component.
This project, although small, gave me some peace of mind. Allowing me to focus on solving a small problem at hand. I have finished half of the design. Now I am writing a simple AngularJS application to test it out. After this, I will write an article to describe how this can be used. Please check back the updates page and see the progress on this little project.
AngularJS Reusable Component - Warning Display
I have completed the first blog post. Now, I have felt a little lost. The site is working. I don't have the strength to start another IT project in my spare time. I remember those days, when I have to start my project work at 9PM and work till 11:35PM. Then go to bed. Now after this kind of work, I can't fall into sleep. If I start a new project, there will be not much time spent on this blog site. This blog site would be abandoned. I will use this time wisely,
From now to the end of the year, I am on break. I will be exploring the new version of Java (version 11 to 14), and learn the new features of this language, I will continue working with Spring framework. Specifically with Spring Boot. Also I will be fortifying my knowledge on AngularJS, explore ways of designing better components. These exploits will be documented here. There are a lot of things to write, I think it is going to be fun.
After The First Blog Post, What is Next
I am still writing the very first blog post. Today, I stopped and decided to do some clean up. The first thing I did is update the Spring Boot version from 2.1.1.RELEASE (almost 2 years ago) to 2.3.1.RELEASE (June 2020). I have been trying to do this upgrade for a while. But never got time. Yesterday, I finally decided to do this. And today, I clean up some more. Everything seems to be working.
The reason I need to fix this is that, there were a number of warnings, one of them is illegal access from the class xstreamer. It is one of the ThoughtWorks classes which Maven uses for packaging. I know it was an old jar (Maven WAR Plugin with version 2.2) that was causing the issue. So I upgraded to 3.2.3. Solved the warning issue. Turned out, there is a warning about a deprecated attribute property in one of the RestController I had. Fixed it as well. Now the Maven build for the entire Blog Site application has no warning and no error. A clean pipe. This is what I like!
Minor Build Updates to Blog Application Projects.
Next, I will complete the blog post on how this site is designed and implemented. The blog post will be an overview, then more detailed posts will be added to explain certain parts in details. The posts will be problem-solution format. Hope they will be interesting not just to me, but to everyone else.
Stapes JS Tutorial Completed and Submitted to codeproject