Search within Lanny's blog:


Leave me comments so I know people are actually reading my blogs! Thanks!

Saturday, July 13, 2019

Random Thoughts: Answers to a few Brain Teasers

Quite a while ago, I posted some brain teasers in my blog. When I was randomly looking through my past blog posts, I realized that I never provided answers to those brain teaser questions. So today I'll post the answers in a new blog post. If you have not seen those questions before, you can read the questions here:





Give it a try and see if your brain hurts. 😁



[Spoiler Alert]: Scroll down to find the answers:.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Problem 1: The Missing Dollar
==========================


Image credit: Canvas
Answer: 

The three guests each spent $9 at the end. That makes it $9 x 3 = $27. The hotel owner kept $25 and the bellhop kept $2. That makes it $25 + $2 = $27.

The common mistake people tend to make is that they use $27 + $2 = $29, instead of realizing it is really $27 the 3 guests spend and the $3 the guests got back: $27 + $3 = $30. The $2 here really should be -$2, which makes it $27 - $2 = $25, where $25 is the real cost of the hotel stay for the 3 guests.

The official name of the problem is Missing Dollar Riddle.


Problem 2: Cut the Loss
==========================

Image credit: iStockPhoto

Answer: 

This problem seems very confusing due to the many moving parts and money (real or counterfeit) exchanging hands. The easiest way to think through this is from the perspective of each person involved and just check the difference at the end.

If we treat the counterfeit bill as worth $0.

Customer: $0 out and $20 worth of merchandize plus $30 cash in. Total gain: $50

Tom: $20 worth of merchandize, $30 cash to customer out. Nothing in ($50 from Charlie was returned to Charlie at the end, so just a wash). Total loss: $50

Charlie: $50 out to Tom and then $50 in from Tom at the end. Total loss: $0

Everything balances out. So the answer is $50 total loss for Tom. There are many variations of this Counterfeit Money Problem out there you can read about.


Problem 3: Green Onion Vendor
==========================


Image credit: The Virginian Pilot
Answer: 

The original price of the green onions is $1/lb. So you spend $1 you get 1lb. of green onions. Once separating into stems and leaves, the prices become $0.70/lb. for stems and $0.30/lb. for leaves. So spending $1 now you can get 1lb. of stems and 1lb. of leaves. That is actually a total of 2lb. of green onions. That's why the customer was able to spend $50 and get 100lb. of green onions.


Problem 4: Find the Odd Ping Pong Ball
==========================
Image credit: 123RF.com

Answer: 


The key challenge in this problem is that we don't know if this odd ball is lighter or heavier.
There are many solutions to this problem. Here's one:

If you divide 12 balls to 3 groups of 4 each. You can compare two groups with the first weighting. Let's name them group 1, 2, and 3. If group 1 and 2 are identical (case 1), then the odd ball has to be in group 3. If group 1 and 2 are not equal (case 2), then group 3 must have all normal balls.

For case 1, take 3 balls out of group 3 and compare to 3 normal balls (just pick them from group 1 and 2). 

Case 1.1: if the weights are identical, the 3 balls from group 3 must be normal. The remaining ball from group 3 is the odd ball. We just have to compare it against a normal ball in the third weighting to see if it is lighter or heavier.

Case 1.2: if the 3 balls from group 3 are heavier, now we know the odd ball is heavier. Pick 2 out of these 3 and compare them. If the weights are identical, then the remaining ball is the odd ball. If the weights are not equal, then the heavier one is the odd ball.

Case 1.3: if the 3 balls from group 3 are lighter, now we know the odd ball is lighter. Then perform same steps as above, but looking for lighter ball instead.

For case 2, let's just say group 1 is the heavier side (we can swap group names if not),  remove 3 balls from group 1, take 3 balls from group 2 and add to group 1, and take 3 balls from group 3 (normal balls) and add to group 2. Remember the balls originally in group 1 and 2.

Case 2.1: If group 1 is still heavier, that means either that original ball in group 1 is the odd ball and is a heavier ball, or the original ball in group 2 is the odd ball and is a lighter ball. Just compare one of them to a normal ball, we would know which one out of the two original balls is the odd ball and if it is lighter or heavier.

Case 2.2: If group 1 is now lighter after the swap, that means one of the three balls moved from group 2 to to group 1 is the odd ball and it is lighter. Now you just have to find the light odd ball out of the 3 by comparing 2 of them similar to case 1.2.

Case 2.3: If group 1 and 2 have same weights now, that means the one of the three balls we removed from group 1 is the odd ball and it is heavier than a normal ball. Now just find the heavier ball out of those 3 using methods similar to case 1.2.

The official name of this problem is the Balance Puzzle. You can read the Wiki page if you want to lean more.


Problem 5: Silver Utensils Problem
==========================


Image credit: Shutterstock

Answer: 

The key of solving this problem is to realize that there are many possible combinations of how much the fork, spoon and knife each cost. But there is only one answer on how much money Bill has once the prices for the fork, spoon and knife are set.

The easiest way to solve this problem is to just pick some easy numbers for the prices of the utensils that meet the requirements, and then figure out how many sets Bill can buy.

For example, let's just say a fork is $1 and a spoon is also $1. That means 21 forks and 21 spoons would cost $42 and that's how much money Bill has. If $42 can buy 28 knives, each knife must cost $1.50, and a set of fork, spoon and knife would cost $3.50. Now divide $42 by $3.50, we get 12. So Bill can buy 12 sets of utensils with all his money.

If we double the prices of each utensils, so fork is $2, spoon is $2 and knife is $3, the only thing changes is how much money Bill has. He now has $84, and he can still buy 12 sets of utensils.

What if the fork is $1, spoon is $2, and knife ends up been $2.25, and with the $63 Bill has, he can still buy 12 sets of utensils. You just have to make sure each utensil ends up in whole cents.

You can of course solve this problem using system of linear equations. You will end up with 12 set and you also don't need to know what price each utensil has.

Hope you enjoyed the reading. Do you feel smarter now?

BTW: The easiest way to remember my blog address is http://lanny.lannyland.com


Friday, July 12, 2019

Daily Battles: Finder on Mac Not Refreshing

With macOS Mojave, sometimes you might find that the file list in your Finder window stops refreshing. This happens more often if you have many Finder windows open (which I do all the time) and you start to manipulate files (delete, move, rename, etc.) from a terminal window.



The fix for this problem is quite simple. All you have to do is to hold the Option key and then right lick the Finder icon in your launcher. Once the menu pops up, just select Relaunch.


Image credit iDwonladBlog.com

The nice part is that the relaunched Finder will open all your previous Finder windows in their respective virtual desktops/spaces, so you won't lose anything.

Happy fighting your daily battles!!


BTW: The easiest way to remember my blog address is http://lanny.lannyland.com

Thursday, July 11, 2019

Daily Battles: TeamSnap Delayed Calendar Updates


TeamSnap is a popular mobile (and web) app used by many community sports teams/clubs (non-professional) to manage games and practice schedules. Both my kids play competitive soccer with local clubs, and both clubs use TeamSnap heavily for all the communication needs. I, myself, also use TeamSnap with my soccer buddies for weekly pickup games.




One feature provided by TeamSnap is that all the schedules can easily be integrated into Google Calendar. All you have to do is to import the calendar in the form of a URL (ICS feed) or an ICS file. Many other popular apps also provide such Internet Calendars (iCal), such as Facebook, Microsoft Outlook, Apple Calendar, and Trello.



My family rely on Google Calendar heavily for our scheduling needs, especially when it comes to coordinating parents-sponsored chauffeur service for the kids' transportation needs for their many activities (e.g., Ping Pong, Piano, Dance, Drawing, Tutoring Classes, Parties, Summer Camps, etc.). So it is certainly a convenience to be able to import calendars from TeamSnap, and then copy events to various family member's individual calendars. Copied together with the events are also addresses, which can be easily retrieved from mobile phones by the respective parent when it comes to driving time.

Practices and games get canceled, rescheduled, moved to different locations frequently. I do get email notifications when these happen. However, when I try to copy events from these imported calendars, many times I would realize that events on these imported calendars in Google Calendar are not updated, or out of sync with the TeamSnap calendar.

To be fair, TeamSnap is not the problem, and Google is really the problem!

Many Internet Calendars show latest updates within minutes (up to one hour in TeamSnap's case). However, when importing the calendar into Google Calendar, Google Calendar uses a pull model to get the latest changes. What this means is that it is totally up to Google to decide how soon and how frequently it wants to sync up with these other calendar providers. According to Google Calendar documentation, Google says that Google Calendar can take up to 8 hours to initiate a pull (sync up) from imported calendars. Recently, Google actually updated the documentation and increased the delay time to up to 12 hours.

But don't let that fool you. The truth is that it can actually take up to 48 hours for Google Calendar to initiate the pull and get synced up with imported calendars. And that can be very inconvenient and misleading when you look at your Google Calendar in a hurry and not realizing that the event you are driving to (30+ minutes one way) has been canceled.

TeamSnap team actually acknowledged this as a problem and provided the following tutorial article on how to solve the problem:

Team Schedule is not Updating in Google Calendar

Their solution is to delete the imported calendar and then reimport the calendar with a different query parameter (e.g., add the string "?query=1") at the end of the calendar URL to force Google Calendar to reimport (thus sync up) all the events and not use the cached version (which is outdated). Definitely a hack! Although this hack works, it only works once. Next time an event gets out of sync, you have to change the parameter and delete/reimport the calendar again. Not very convenient at all!!

So why doesn't Google Calendar provide a button or something to let you manually sync an imported calendar? Sounds simple enough for a company as big as Google, right? Turned out many Google Calendar users have been requesting this feature since as early as 2010 (9 years ago):

Feature Request: Manual Refresh of external calendar URL / .ics / iCal feeds

Google Calendar not updating published calendar added by URL

And unsurprisingly, Google chooses to ignore such cry for help, just as usual.

It is typical for Google when it comes to free services they offer, such as Google Tasks, Google Keep, Google Assistant, Google Calendar, and the list goes on and on. They ignore bugs people report, features people request, and questions people ask relating to how to use Google products. The Google Help Forum (support.google.com) is just a joke. It is filled with user seeking help only responded by other users echoing same problems. But hey, aren't these free services? Then why do we puny users expect to get free support? If you don't like it, stop using it!

Ranting aside, so are there any other options we have on solving this problem?

Options 1: Write your own solution if you know how to use Google Calendar API.

In the past when I was so pissed at Google Tasks' lack of repeated tasks, I wrote my own using Google Tasks API. 8 years later, they finally implemented that feature.

Options 2: If you don't know how to code or are too lazy to code it yourself, look for programs by other people who are so pissed at Google's lack of concern/support on core features and decide to write their own hack.

I actually found such a program specifically for this Google Calendar syncing issue:

ical_to_gcal_sync by Andrew Wramsay

This is a code repo (written in python) that will go through events on your iCal and then make sure to sync all these events on your specified Google Calendar. You could then schedule this to run periodically (Such as Task Scheduler for Windows or Cron for Linux). Just make sure to pull changes from the GitHub Repo when new codes are added.

Hope you find this useful!


BTW: The easiest way to remember my blog address is http://lanny.lannyland.com

Wednesday, July 10, 2019

Daily Battles: Airsense CPAP Machine Leaking Water

I just found out recently that my CPAP machine has been slowly leaking water onto my nightstand and ruining the surface of the nightstand.

For those of you who don't know, and don't suffer (good for you), a CPAP machine is a prescription machine that uses constant air pressure to help keep the breathing canal open for people who have sleep apnea, so they can get better sleep and better rest at night. According to sleepapnea.org, 22 million Americans suffer from sleep apnea (moderate to severe), which is 6.7% of the entire US population. Basically, if you snore pretty loudly at night, changes are, you have sleep apnea.

The model of my CPAP machine is AirSense 10 by ResMed.



After some research, again, turned out this leaking problem is actually quite common:
http://www.cpaptalk.com/viewtopic/t107107/My-Airsense-10-Autoset-leaked-water.html

The problem resides in the water chamber for the built in humidifier. Probably due to low quality gluing work, after some usage (Your Miles Might Vary), the part where the metal is glued to the plastic would eventually start leaking. And because most likely the leak is very slow, you won't notice it, since there would still be water left in the tank in the morning, and the leakage is well hidden underneath the CPAP machine. 
Once I found out the exact problem, I gave my CPAP supplier a call to try to order a replacement. Turned out since I didn't order supplies from my supplier once a month, they deactivated my account. And in order to activate my account again, I have to schedule an appointment with my sleep doctor. I can't even just buy parts from this supplier, because it would require a doctor's prescription.

In my case, since I have already hit my high medical deductibles this year, it makes sense to get the prescription from my doctor, so my health insurance can help cover the majority of the cost on the replacement parts (which means I have to wait 5 weeks before I can see my sleep doctor and then order my parts).

If you have the same water leakage problem and just want to take care of it right away, you can visit CPAP.com to order replacement parts directly out of pocket. The web site does charge shipping if you don't order over $99 of products.

It is unfortunate that my nightstand now has visible water damage. But that's life and life has many challenges. So be strong and be ready for your next battle with technology and life in genera!

BTW: The easiest way to remember my blog address is http://lanny.lannyland.com

Tuesday, July 09, 2019

Daily Battles: Quicken Quickbooks Can't Download Credit Card Transactions from American Express

One of my involuntary jobs is to manage bookkeeping and accounting for my wife's small business. Not a fun job, to be honest. That's why I was willing to pay Intuit hundreds of dollars for the software tool called Quickbooks, because it allows me to download bank and credit card transactions directly, saving me all the hassles of entering everything manually myself. In fact, I was just coerced into paying Intuit another hundreds of dollars for an upgrade recently, because they decided to stop supporting transaction import with the 2016 version of Quickbooks Pro.



Then today, when I was going through receipts, I found out that I can't download credit card transactions from American Express website in the QBO format for Quickbooks Pro to import. The only download options are Adobe PDF, MS Excel, and CSV.

After digging around the web site through other means, I finally found this on AMEX website:


QBO and QFX file types are unavailable for download at the moment, but CSV and PDF are available for use.
A bit more research revealed that I am not the only one suffering. Many people actually have already talked with Intuit support and American Express support on this issue:

Suddenly unable to connect to American Express

American Express Not Downloading

Totally American Express's fault, and American Express uses the excuse of website maintenance. But come on, AMEX, given how big you are and how rich you are, why haven't you fixed the problem after at least two weeks?

Well, I guess for now I'll just have to wait for AMEX to put their acts together, because I AM NOT MANUALLY ENTERING ALL THOSE RECEIPTS MYSELF!!

If you are also suffering, I am sorry, tough luck. This is a battle that is simply out of our control. Maybe you can call or chat with AMEX to put on some pressure for the fix. But I seriously doubt how much pressure we puny consumers can give to a Giant Corp like AMEX.

Just another battle with technology. The war goes on....

[Update on August 1st]: Contacted AMEX support they said in less than 7 week, the problem should be resolved.

[Update on August 6th]: Figured out that on AMEX web site, if you switch to the Preview New Web Site, you can now download QBO transaction files. You just have to disable bank feeds for your AMEX accounts and then as you import transactions, select the right AMEX Quickbooks Accounts inside Quickbooks to re-link with AMEX, and things should be back to normal!!

BTW: The easiest way to remember my blog address is http://lanny.lannyland.com

Monday, July 08, 2019

Daily Battles: Mac Stops Playing Sound with macOS Mojave

I was just searching randomly today and then I ran into this page on reddit:


Man, it sure feels really good that my writing on the Internet had made someone's day better. Hopefully my posts of my daily battles with technology can also benefit other people, so they have less frustration and a better day!

I use a MacBook Pro running macOS Mojave. From time to time, my audio would just stop working. This is problematic because I need to listen to my trance music to focus. Turning audio off and on doesn't fix it. Changing output to another device and then back doesn't make any difference. It seems the only way to fix it is to restart your computer. With the amount of apps I have open at any given time, this is a terrible option.


So is there an easy alternative? The answer is yes!! Turned out all your have to do is to open a terminal window, type in the following command and then hit enter.

sudo killall coreaudiod

You will need to enter your admin password if prompted. But this sure beats restarting your computer several times a day!

Another workaround found for another Mojave bug! You Win!

BTW: The easiest way to remember my blog address is http://lanny.lannyland.com

Sunday, July 07, 2019

Daily Battles: Google Map Sending People To Wrong Places

I slowly drove around the neighborhood, trying to find the house where my daughter's friend lived so I can pick up my daughter. I had been wondering around in vain for 15+ minutes, also knocking on doors of multiple houses, getting suspicious looks from various home owners and greeted by loud dog barks. Google Map authoritatively told me that I have arrived at my destination, but my daughter was definitely nowhere to be seen.

I was gradually getting more and more frustrated, because now we were going to be late for our next activity. Then all of a sudden, it struck me. I could just read the street numbers of the houses and try to locate the house matching the address I have. 

Turned out Google sent me to the wrong end of the neighborhood at the lower left corner of the map below instead of the upper corner of the map where the address should be. See that the entire neighborhood all had Bear Hill as part of their addresses.


A few days later, I got a phone call from my boss, uhh, I mean my wife. She was on her way to Denver. 

"Google Map said there was a road closure, and recommended me to take an alternative route. Now I am in the middle of nowhere on a muddy road by myself. I don't think this road goes anywhere."

"If there's a road closure, you should be able to see detour signs. Just follow that." That's the only answer I could give.

Then a day later, I saw a news article titled:


Dozens of drivers were directed down a muddy dirt road in Colorado this weekend, resulting in a backup nearly 100 cars deep. So why did Google Maps point them there in the first place? https://apple.co/31TXbpg 






View image on TwitterView image on Twitter

"Hey, you lucked out. At least you didn't get stuck in the mud with a bunch of cars behind you." That's what I told my wife later. And her reply was, "See, I wasn't making this up!"

It is really interesting to think about this from a human evolution perspective. As technology tools are becoming better and more relied on, we human kind of are losing our navigation capabilities. And then when technology makes mistakes, we found ourselves completely stuck.

Whether Google Map authoritatively told me that I have arrived at my destination (a road closure in my wife's case) or used a more suggestive tone instead, such as, "You are probably at your destination now." We users would still simply believed in Google and then get equally frustrated when we found out that Google was wrong. So would it be better for Google to just say "I don't know how to do that" at the very beginning of our requests?

This is a tough decision for any AI service designers, me included. And I don't know what's the right answer either. Would you rather hear this?

"I am sorry, (insert your name here), I am afraid I can't do that."

It's a wasted 20 minutes for me (2 hours for my wife). What's next?



BTW: The easiest way to remember my blog address is http://lanny.lannyland.com

Saturday, July 06, 2019

Daily Battles: Chrome Resumes Video with Incoming Call to Mac

I was born into a generation without smart phones. Therefore, the preferred method for me to type has always been the full-sized keyboard. That is why I linked my phone to my Mac computer, so whenever I need to send text messages, I can type on my computer.



I also like using my computer for browsing much more than using smart phone. Why stare at a tiny screen that seriously strains your eyes when I can read web pages with bigger font on my three large high quality monitors? Browsing on my computer also allows me to leave many tabs open in the browser for things I have not finished with, or things I will check out later.


However, when putting these two things together these days, it becomes a disaster.

Whenever I get a phone call these days, my Mac will automatically resume YouTube videos that I have either paused in my browser window, or a video that has paused by itself with the "are you still listening" message box.

You see, I don't get a lot of phone calls except ones from my boss, uhh, I mean my wife, who calls me whenever she feels like it. I have used a fire alarm ring tone for calls from her so I know the urgency of the call. So whenever she calls me, both my phone and my Mac would play loud fire alarm ring tones. As I scramble to pick up the call on my phone, my Mac would continue playing the loud fire alarm ring tones for a good five seconds (because of the latency for my Mac to know I have already pick up the call from my phone), and then my paused YouTube video would also start playing in the background, most likely a techno music video with a strong drum roll I listen to while working. What makes the matter worse is that I have to now try to find the tab in my Chrome browser with that video from my ten open Chrome windows and dozens of browser tabs.

Now imagine this happening while I was in a meeting.

After this started to become super annoying, I did my research and found this article on Apple web site:

When receiving phone call, youtube video unpauses

Guess I am not the only one suffering from this, and the culprit is a Chrome bug. Google is aware of this and the bug is being worked on and won't be available in a release soon.

So for now, what do you do if you have this problem? Here are your options:
  1. Unlink your phone from your Mac.
  2. Always plug in (or BT connect) a headphone, and mute the speakers when you unplug (BT disconnect) the headphone, especially when you are in a meeting.
  3. Open a separate Chrome window and put all your YouTube video tabs in that window. This way you can find the auto resumed video relatively quickly.
  4. Don't use Chrome for YouTube videos. Use Safari or Firefox.
Technology is always both a bless and a curse. That's today's dose of my daily tech battles. Let's keep fighting! Now enjoy some Trance while you fight your daily battles!

[UPDATE on 9/28/19] Google finally released a feature in Chrome that allows you to pause a video/music playing no matter which tab that media is on. So at least this can be helpful in our situation. Read the article here.





BTW: The easiest way to remember my blog address is http://lanny.lannyland.com

Friday, July 05, 2019

Daily Battles, a New Category For My Blog

My dear readers, if you haven't noticed, I haven't posted any blog for a long, long time. Sorry for the long wait. The good news is that I have finally overcame myself and a lot of new blogs will soon be coming.

So why haven't I been blogging? One main reason is that life is so busy, and I have to fight many battles on different fronts everyday, which just eat away all my free time. Some of the battles are about being a responsible parent (teaching/fighting the kids), some other ones are about dealing with random life issues that just come up, such as flat tires, auto accidents, fixing various things in the home, taking care of aging parents, etc., etc. However, I have noticed that a great amount of my time are spent fighting technology glitches/failures almost on a daily bases.

On one hand, as someone who "lives in the future", I do have a lot more gadgets/devices/robots than a normal family, which does increase the likelihood that things break more often at my household. But on the other hand, I consider myself a skilled fighter in the tech realm. Even I have to struggle so much with technology today, it would be much more painful for other people who don't have my background and knowledge to deal with such technology failures. That's why I have decided to blog about these daily battles I have to fight, so other people who are fighting the same battles might be able to find something useful to facilitate their daily battles with technology.

Credit: GoComics.com

When looking at social media postings today, you probably have noticed that most people post more about their fun moments/achievements/happy time. That is a very skewed view of the reality, and psychologists have concluded that viewing such posts can increase depression and loneliness. I am going to change that! That's why I'll be posting about my struggles with my daily battles with technology and life in general. So reading my posts should make you happier, knowing that other people struggle too! And most importantly, it gives me a way to vent, so I can stay mentally healthy!

Credit: comicskingdom.com

So why am I blogging again? First of all, I am on vacation! This is a long deserved vacation, the only true vacation in the last five years!! Wife and kids are out of town for a Ping Pong tournament, and after I took care of many things/repairs/battles, I still had time to sit down, relax, and enjoy peace in my own house!!! But also, as I mentioned before, I need a way to vent; people can get info on how to fight similar battles; readers can gain happiness by looking at my sufferings; and it's just a good habit to write everyday!

Medium, as a blog platform, has gained a lot of popularity with its very clean and simple look and lots of people contributing. I actually thought about moving my blog to that platform. Then I realized that:

  1. All contents published on Medium now belongs to Medium, and
  2. After free trial, you have to pay $5/month subscription fee in order to keep reading.
So I am staying with Google Blogger, where my writing belongs to me and you can all read for free. I do like the simple and clean view of Medium though, so I tried to clean up my blog design -- one of my daily battles with technology! Well, I tried the best I could, but since my template is a super old customized one, which required a lot of html/css tweaking/hacking, and I didn't like the new templates, so this is the best I can do and what you get. But for your best viewing experience, I suggest keeping 150% zoom in. If you are using Chrome, that's CTRL+ (Command+ for Mac).

As always, leave me comments so I know people are actually reading this, which is the best encouragement for me! Subscribe if you like, and let me know if it doesn't work, and I'll add that to my daily battles list. LOL!

Oh yeah, I am translating again! Focusing on The Outcast and Smiling Proud Wanderer.

Disclaimer: I will not post about my daily battles with all the Alpha/Beta products/services my employer is currently testing in my house.

BTW: The easiest way to remember my blog address is http://lanny.lannyland.com

Tuesday, October 30, 2018

Rest In Peace, Mr. Jin Yong

My beloved author, Mr. Jin Yong, the author of The Smiling Proud Wanderer, just passed away today at the age of 94. It is a sad day for all his fans around the world.

Thank you Mr. Jin Yong for the wonderful Wuxia worlds you created for us that not only entertained billions but also taught many about gallantry and virtue. Wish you peace in heaven where there's probably no hatred, no revenge, and no heroes.


Pen name Jin Yong (金庸), real name Zha Liangyong (查良镛), English name Louis Cha, 1924-2018.

https://en.wikipedia.org/wiki/Jin_Yong

As a tribute to Mr. Jin Yong, I will be resuming my translation of The Smiling Proud Wanderer today.

http://www.lannyland.com/wanderer/wanderer.shtml




My collection of the complete works of Jin Yong and Gu Long