Sunday, July 18, 2021

Second anniversary of Kyoto Animation arson attack

Today is the second anniversary of the horrible arson attack at Kyoto Animation (KyoAni), which resulted in 36 fatalities and 32 injured.

At 10:34 Japan time, Kyoto Animation streamed a video in memory of the victims.
(Note: This video will only be available on July 18, 2021.)

I have translated the contents below since I don't want to reproduce the video here without permission.
 
<The video will start at 10:34. Please wait a while more.>

Two years have passed since July 18, 2019.
We were preparing to create an opportunity for everyone to gather in memory of those departed, but due to COVID-19, we decided to mourn using this video. We hope you understand.

<Observe a minute of silence>
<End of a minute of silence>

Two years ago on this day, we suddenly lost comrades who made anime together with us.
Nothing can wash away the pain, and we continue to feel the strong presence of our comrades even as time flies by.
In these two years, we never forgot the treasured memories we had with them.

Our condolences.

For this memorial service on the second anniversary, we have received messages from affiliates, family members, and our staff.
Please allow us to introduce some of these messages without the names of their authors.

From an affiliate:
As we go about our work, your names naturally turn up in our conversations. Even today, we continue to create works together with you.We can no longer talk face to face, but we can talk through our hearts. "What should I do in this case?" "How should I deal with this problem?" Such words come naturally.
Even today, your passions continue to live on in us. Your presence and the spirit you left behind. They continue to support us today. Please continue to watch over us. We will do our best to create works that you can be proud of.

From a family member:
The life that I thought would continue forever, your future full of dreams--two years have passed since the day when everything disappeared.There is no day when I did not think about you.Together with your smiling face comes a great sense of loss.Sad, lonely... the tears do not stop no matter how much time has passed. Love only grows.
Since that day, when the rain suddenly stops, when light shines through the cloudy sky, when a refreshing breeze blows by, I always think it is a miracle brought by you.I still want to see you. I just want to see you. I want to see you.I know it is impossible, but I have been hoping since that day.
Thank you everyone for your thoughts.

From a staff (1):
All of you continue to be with us, encouraging and supporting us, even as the seasons change, at every corner, at every moment in life.When I hit a wall, I motivate myself by remembering your determination. On days of clear, blue skies, it warms my heart to know you are happy. Memories of days spent with you flow into my mind when I stand at places shared with you.
Your passions will continue to be delivered to people around the world through your works. No matter how much time goes by, our ties will not change as we weave our thoughts.Please watch over us.

From a staff (2):
Two years have passed since that day. Nothing can soothe the loneliness and sadness. Even today, memories of you, your voices, come to mind.Days spent polishing techniques, days spent working on anime. It is heartbreaking to know that our important comrades, whom we believed would always be around to create the future together and deliver excitement to everyone in the world through our works, are no longer here today.
Let me shout from the heart: I want to see all of you! There is so much more to talk about.We can no longer hear you directly, but your thoughts continue to be with us. Let us continue to create anime together as we converse in our hearts. We will always be comrades.
 
<end of messages>
Our sincere appreciation for your continued support.
We will continue to create works, and deliver excitement and hope for the future to everyone through our works.
We look forward to your support.
 
July 18, 2021, Kyoto Animation
 
<End of video. Thank you.> 

List of 36 victims who appeared in credit roll of Violet Evergarden the Movie
 
News article:

Update: The actual video from KyoAni was only available on 18 July, 2021. The following is a news clip about the memorial service that was held at the site of where the studio used to be.



Friday, July 16, 2021

Belle (竜とそばかすの姫)

Update August 1, 2021: Updated this post after watching the movie for the second time.
 
Belle (竜とそばかすの姫, Belle: Ryū to Sobakasu no Hime) was released in Japan's theatres today.

Somehow, I have made it a habit to try and catch a new movie on the day it opens in theatres. This was no exception.

Those who have watched Summer Wars will recognise some of the similarities in how the online world is portrayed. Both movies started with an introduction of the online world. Speech bubbles are used in the same way. There is also the "traditional" whale which is a familiar object in Hosoda Mamoru's films. Also, the director himself said that this movie took reference from Disney's animated film Beauty and the Beast. I must admit, the similarities are there. The beast, the singing beauty, the castle, even a ballroom scene and roses.

It was as if Director Hosoda took Beauty and the Beast and brought it into the 21st century. Instead of magic, we have the Internet. And themes that resonate better with the people of this age. If Beauty and the Beast was a story to help young girls back then accept their fates of being married to unknown older men, then this new film, with its portrayal of the issues faced by teenagers of this age, is here to help the younger generation of our times cope better with their problems. As someone who loves the animated Beauty and the Beast, it is no wonder that I love this fresh new story about Belle and the Beast (aka Dragon, or Ryu 竜).

The movie also touched on real issues. Like the dilemma of social justice warriors. Or the problem of doxing. It didn't delve too deep into them, but just enough to set viewers thinking. The film isn't here to give an opinion. I think it wants us, the viewers, to form our own opinions by raising awareness on these issues. It is not here to tell us what to think, but here to tell us to think.
 
Another theme is that of a hero who sacrifices himself/herself to save someone else. It is not about dying to save someone; it is risking one's life to save someone. Is it worth it to risk a life to save another? What about the loved ones of the hero, who may get left behind because of the hero's decision? At the same time, can we stop our urge to want to help someone else? Knowing that there is no one else who can help but us?

My first impression of the movie is: Hosoda Mamoru has taken a Disney movie and came up with something that is better than any Disney movie so far. The age of the Mouse is over. "Move over; this is the age of Hosoda Mamoru." It is that good, in terms of the writing (screenplay and song lyrics), animation (use of traditional animation and 3D rendering), music (oh, the singing...😍) and the themes. It is Hosoda Mamoru's letter of challenge to the Mouse. "Do better, if you can." The movie is like a musical, and really needs to be enjoyed in a theatre. I really hope they come up with a Dolby Cinema version of the movie. But even if not, I just might go watch it again for the songs.

The main character, Suzu (aka Bell), is voiced by singer Nakamura Kaho. This means that the dialogues and songs flow into each other very naturally, and Nakamura Kaho is a very good singer too. The song sang by Suzu when she first entered the online world of U brought tears to my eyes because of what it touched on and how it was performed. It was as if the movie was written for the voice actor/singer.
 
Now to see if Shinkai Makoto comes up with something better... 😅

Update July 17, 2021: Saw this article today and thought I would share it.

Saturday, July 10, 2021

Improving the Tellsis language translator: Update 1

I mentioned that I want to improve my Tellsis language translator app to include an image picker and OCR. So I spent last night trying to train Tesseract to recognise Tellsis alphabets.

First, why Tesseract? Because I read somewhere that Tesseract can be trained to recognise a new font, so it should be easy for me to train it to recognise Tellsis, or so I thought. The usual method for learning a new font in Tesseract is based on a trained model. For example, using the model that has been trained to recognise English alphabets, a set of training data is created using the new font and training is conducted to fine tune the existing English model. Using the script here as a hint, this was what I tried to do.

But it didn't work that well. Because the model is already trained to recognise English, and the character for "U" in Tellsis looks like an "O" in English. So the model will forever recognise "U" for "O" instead. Not good.

So I need to train a model from scratch. I used the instructions here to tweak my script to train from scratch. This took some time, but I was able to get satisfactory results... except for some characters which end up being capitalised when they should remain as small letters. This is supposed to be the hallucination effect. Which I think is caused by me using English text to create the training data. The better way is to find text in Tamil script, convert that to unaccented English alphabets, then carry out the substitution cipher to obtain text in Tellsis. The Tellsis text can then be used to create training data, and the resultant model should be able to avoid the hallucination effect.

Problem is, I don't know how to convert Tamil to unaccented English alphabets.

One way is to use the existing Tellsis language translator and adapt it to read an entire file (English text). Then translate that file into Tellsis, save it, and use that new file to generate training data. This sounds like more work again... and I slept in the wee hours last night trying to figure out how to train Tesseract, so I am a bit sleepy now...

Anyway, as for selecting an image or camera capture, image_picker does not work on Flutter Desktop, so I will need to use the universal_platform package to identify the platform, and run image_picker on Android and file_selector on Linux and Windows. Another challenge for another day...

By the way, I don't own any Apple products, so I cannot develop for iOS or MacOS. The only time I have used an Apple product was many years ago in school when we found an old Apple IIe in a corner of the computer club room and plugged it in to find that it could actually still boot up.

Back to the topic of Tesseract. I am trying to train a model from scratch using two fonts. This is the script. (I am still playing around with the script, so some parameters may change over time.)

# Remove the previously generated training data
rm -rf train/*

# Generate training data
MAX_PAGES=100
NUM_ITERATIONS=10000
cd src/training
./tesstrain.sh --fonts_dir ~/github/tesseract/fonts --fontlist \
  "Automemoryfont" \
  "TellsisTyped" \
 --lang eng --linedata_only --langdata_dir ~/github/tesseract/langdata_lstm --tessdata_dir ~/github/tesseract/tessdata \
 --maxpages $MAX_PAGES \
 --output_dir ~/github/tesseract/train
cd ..
cd ..

# Train the model from scratch
rm -rf output/*
OMP_THREAD_LIMIT=8 ./lstmtraining --debug_interval -1 \
  --traineddata ~/github/tesseract/train/eng/eng.traineddata \
  --net_spec '[1,36,0,1 Ct3,3,16 Mp3,3 Lfys48 Lfx96 Lrx96 Lfx256 O1c111]' \
  --model_output ~/github/tesseract/output/telsis --learning_rate 20e-4 \
  --train_listfile ~/github/tesseract/train/eng.training_files.txt \
  --eval_listfile ~/github/tesseract/train/eng.training_files.txt \
  --max_iterations $NUM_ITERATIONS
#  --max_iterations $NUM_ITERATIONS &>~/github/tesseract/output/basetrain_typed.log

# Combine the checkpoints and create the final model
./lstmtraining --stop_training \
  --continue_from ~/github/tesseract/output/telsis_checkpoint \
  --traineddata ~/github/tesseract/train/eng/eng.traineddata \
  --model_output ~/github/tesseract/output/telsis.traineddata

cp ~/github/tesseract/output/telsis.traineddata ~/github/tesseract/tessdata/telsis_typed.traineddata


Update July 26, 2021: I have worked on the app to include this trained model, so right now, the app (v0.1.4_alpha) has OCR capabilities. But the trained model is based on the font I made, so it has very poor performance on actual text. If anyone wants to work on training data for the model using text found in the anime, please feel free to use the trained model here to improve it. As the tesseract_ocr package only works on mobile devices, this feature has only been tested on Android (I don't have an Apple product).

Friday, July 09, 2021

Planned improvement to Tellsis language translator: image picker + OCR

Just a quick post on how I intend to improve my Tellsis language translator.

Currently, the app is able to translate to and from Tellsis based on text entered by the user. Text in Tellsis (either the source or the target) is displayed in the Tellsis font. This is great when translating to Tellsis, since you can see the resulting Tellsis characters right away. The reverse is tedious, though, since the user needs to decode the Tellsis characters into English alphabets before it can be entered as the source text.

So the next step is to use optical character recognition (OCR) to automatically extract the Tellsis characters from an image and output that in English alphabets.

For OCR, I intend to use the tesseract_ocr package. It will be necessary to create a trained model that can "read" Tellsis characters, and I think the scripts in this repo (tesseract-training) should be able to help.

As for selecting an image, the image should either come from the gallery or camera, and the image_picker package is just the right tool for this job. I even found a tutorial/example article here on how to use image_picker.

The actual changes will be to add a "Select image" button to the app's main screen. When an image has been selected (either from the gallery, or taken with the camera), the image will be passed to the OCR routine to extract the Tellsis characters and output them as English alphabets. This input will also be displayed in the main screen where the Tellsis alphabets usually gets displayed. The user can then press "Translate" to translate to the target language.

Now to find time and motivation to actually work on this improvement... 😅

Update July 26, 2021: Image picker added in v0.1.4_alpha, which can be found here.

Thursday, July 08, 2021

The impact of autonomous driving

A lot of research is being done on autonomous driving, and the day will soon come when we humans can just tell our car the destination and it will bring us there. With the development of vehicle control technology, computer vision, map following, and inter-vehicle communication, getting a car to actually drive automatically to a destination is already possible. The real challenge is how to do so safely in a crowded environment when there are other vehicles and road users.

This decision-making aspect of driving is the difficult part. People have brought up the ethical issues, which will also become legal issues. The classic question has been: should the car swerve and kill pedestrians to save its passenger from a collision (and possible death) or should it collide to avoid killing pedestrians (and possibly killing its passenger instead)? Who to save, who to kill? This ethical aspect of decision-making will need to be part of the autonomous driving system, and I frankly don't think anyone is ever going to have a good answer for this. At the end of the day, whatever the final decision may be, the next question is: who is responsible for damage/injury/death caused by an autonomous vehicle? Is it the passenger, the owner, or the manufacturer?

Obviously, manufacturers are not going to want to take such responsibility. They make millions of cars. If they are held liable for every accident, it won't take long to bankrupt them. Yet at the same time, not having some form of liability on the manufacturers may result in manufacturers being more willing to take development and production risks in churning out products that may fail to meet ethical standards. Why spend billions on developing a proper decision-making engine if you do not need to take responsibility for the poor decisions made by that engine? But if we do hold manufacturers responsible, then it deters manufacturers from working on autonomous driving in the first place, since it is the driver who takes responsibility in a car driven by a human.

Should the owner then be held responsible? You might say that it is the owner who chose to buy that car, so the owner will need to be responsible for that decision when the car kills or injures someone. But as cars become more advanced, I don't think owners will be able to fully understand how these autonomous cars make decisions, and it will be unrealistic to hold car owners responsible for the car they choose to buy.

Okay, then how about the passenger? The current method of development has a "driver" who is ready to respond in an emergency, taking over from the car's decision-making engine. In the future, we may expect passengers to fulfill that role--to take over in an emergency. There are two problems, though: reaction time and skill. Will the passenger be able to react in time to take over from the autonomous driving system? This requires the passenger to be fully focused on the road and be capable of driving, which defeats the purpose of having autonomous cars. And even if the passenger is fully focused on the road, can we expect he or she to have the skills necessary to handle a car in an emergency? After all, driving is a skill, and the passenger is likely to be suffering from a severe lack of practice if cars drive themselves 99.99% of the time. It may be even more dangerous for an out-of-practice driver to be trying to handle the car in an emergency.

Responsibility must lie somewhere, else we will end up with substandard cars that endanger the lives of people and substandard passengers who cannot handle cars in an emergency. And when we have reached an ethical/legal conclusion, we need to remember the longer-term impact on society. When autonomous cars have entrenched themselves in our lives, we humans will not longer have the skill to drive. It is that simple. We will be relying on machines to get us around. While autonomous driving opens up possibilities for people who may not be otherwise able to drive (like the elderly or disabled) and lets them move around, reliance on autonomous driving means that human mobility in the future for everyone (young and old, disabled or not) will be limited by what machines can do.

So yes, autonomous driving sounds great in the short term. But the long-term impact is that human movement will be limited by what machines can provide. If your car refuses to drive off the paved road to follow a forest trail, you either walk or give up on going down that trail. Are we ready for such a future?

Thoughts on freelance work in Japan

This post came about because of the recent tweet by animator Mushiyo which triggered reaction from anime fans about the working conditions at MAPPA and Japan's anime industry in general.


MAPPA has since put out an official statement rebuking these claims, and hinting at legal action against animators who spread such claims.

As a freelance translator in Japan, I can fully understand what the freelance animators here are going through. The freelance industry here in Japan is essentially a loophole for companies to hire workers at low salaries without having to pay other benefits such as insurance and pension. Such benefits can amount up to a a third of the actual salary being paid to regular employees, depending on age. Freelancers, however, do not receive such benefits; but they are legally required to pay for insurance and contribute toward pension, which means that up to a third of the meager sum being earned is further taken away from them. Freelancers are also not paid bonuses; even if they do get bonuses, it is a small token sum compared to what regular employees receive.

This become quite unfair when you think about how the company's business is being supported by the work of freelancers. I mean, an anime studio can't produce anime without animators. A translation agency can't produce translations without translators. The core workers that support the operation of a company are actually being paid the least.

Instead, freelancers compete with each other for work, and run the risk of being sidelined by a company forever if they do not accept work at unreasonable prices. It is because of this "internal competition" that companies are able to get away with exploiting freelancers. The availability of part-time freelancers (who have a full-time job doing something else and take on freelance work as additional income) does not help, because these part-time freelancers are usually able to accept work at lower prices because they already have a stable income. But the overall effect they have is to drive down prices in the industry as a whole, jeopardising the livelihoods of those who work full time.

The unfair power balance of companies is a factor that always looms over our heads. Freelancers are forced to sign binding agreements with companies; such agreements can be used by company lawyers to hang an axe over our heads all the time. Every freelancer runs the risk of being sued till bankruptcy for any mistake. And as mentioned, other than this legal risk, there is always the risk of being sidelined. Companies have a pool of freelancers, and if we refuse to take on work (for whatever reason, be it price or because we are sick), the companies may stop approaching us for work because they can always find someone else. What this means is that freelancers have to work, whatever the price, whatever their health may be.

I was told by someone that quality, time, and price: choose two because it is not possible to have all three. Here, freelancers are expected to deliver good work in short times at low prices. If you don't deliver in time, it is a breach of contract and you may be sued. If you do not deliver quality, it is a breach of contract and you may be sued. If you don't accept low prices, you don't eat.

It is no wonder that animators are suffering. It is no wonder that we have seen recent series run into trouble with schedules and quality. If companies exploit the people who actually bring in their profits, the long-term impact is a stagnation of the industry as a whole, as freelancers burn out and leave the industry only to be replaced by newbies, who go through the same process again and again.

But this is not an issue caused by companies. It is a much deeper problem arising from the entire industry structure, where companies are expected to deliver quality work in short time at low cost. The entire Japanese economy runs on such expectations, which is why we keep seeing systemic problems in many different industries. We have the fudging of seatbelt and fuel efficiency data in the automobile industry. There are construction companies who take shortcuts in the sourcing of construction material. There are television producers who stage interviews.

At the root is simply the fact that Japan is no longer the bubbling economy it used to be. Society's expectations are stuck at a time when they had the money to pay for good quality in short time. People continue to expect that same quality in the same short time; the problem is, they don't have that kind of money anymore. Companies are being driven to cut costs to survive, which ends up creating a vicious cycle of being unable to create true value and thus bring in real profits. The end result is that while corporate Japan tries to keep up appearances, the freelance industry bears the burden of such efforts.

So will the recent spotlight shone on the anime industry help change the situation? I am skeptical. The government here has been talking about giving better treatment to freelancers, temporary workers, part-timers, etc. but there has not been any concrete progress because of the deeper problems with the economy. It will take someone with exceptional political conviction and power to be able to pull off such an extensive reform of Japan's economy and society.

Until then, I will just keep working, day or night, healthy or sick. Because the alternative is bleak.

Friday, July 02, 2021

Kyoto Animation to hold memorial service on July 18, 2021

Like last year, Kyoto Animation will be holding a memorial service from 10:30 to 10:40 for those who passed away in the fire of July 18, 2019.

Official press release from Kyoto Animation
 
As usual, the public is being asked to refrain from visiting the site of the fire on the anniversary itself as well as the days prior and after the anniversary.
 
The memorial service will be broadcast live on KyoAni's YouTube channel, and the video will also be available for the rest of the day.

Let's observe the request from KyoAni and honour the deceased together online.

Update July 17, 2021: Kyodo News has an aerial shot of what the site of the fire looks like now.



Tuesday, June 29, 2021

Random thoughts on June 29, 2021

- The current rule-based order is based upon the power of the U.S. to enforce, which contradicts itself as such a foundation makes it a power-based order. Because the U.S. gets to choose what to enforce. A good example is UNCLOS. By not ratifying UNCLOS because the U.S. does not agree with a small portion of it, it shows that nations with power have the right to do what they want, i.e. a power-based order, rather than adhere to a set of rules that is agreed upon by the majority of countries.

- The current Westphalian international order that respects national sovereignty equally is incompatible with a rule-based order since the agreement to abide by a common set of rules, agreed upon by the majority of nations, necessarily means subjugating a nation's sovereignty to those rules.

- The U.S. is opposed to China using force to change the status quo regarding Taiwan. Here, the understanding of force is usually closely tied to military force. What happens if China pursues an economic policy that attempts to bring Taiwan into China's economic sphere, whether by positive persuasion or by forceful coercion? Will the U.S. allow Taiwan to choose to join with China?

- There are countries which criticise China's authoritarian regime. What happens if democratic movements in China result in widespread social unrest that results in a standstill in China's economy for six months? Will global supply chains pressure their governments to request China to take strong action to quell social unrest instead?

- In the 1970s, the U.S. cultivated its relationship with China to balance against the Soviet Union. Today, Vietnam is seen as a partner to help balance China. However, will this eventually led to another unbalance within Southeast Asia that will need to be dealt with again at a later date?

Monday, June 28, 2021

Naming my scooter

After some thought, I have decided on a name for my Honda Giorno 50cc scooter.

This

is Vivi.

Not much of a surprise, since I mentioned I was printing a key tag for the scooter back in an earlier post.

But why Vivi?

In Violet Evergarden, Benedict calls Violet "Vi". So I just repeated "Vi" to arrive at "Vivi". Also, Vivi is read the same way as Vivy, the AI singer from the anime series Vivy -Fluorite Eye's Song- which I wrote about here.

As for the key tag, it is "Vivi" written in the Tellsis alphabet. I created fonts for the Tellsis alphabet to use in my Tellsis language translator apps (in Flutter and Python), and I thought I would put those fonts to use. By the way, the Flutter version of the app is recommended as it can be easily installed on Windows, Linux, and Android. The Python version is recommended if you know how to run Python programs/scripts on your platform.

My thoughts (review?) about Violet Evergarden The Movie, my (unofficial) English translation of the booklet/novella Gilbert Bougainvillea and the Fleeting Dream, and other posts related to Violet Evergarden.

Sunday, June 27, 2021

Thoughts on "fast movies"

Some of you may have heard about "fast movies". These are short videos (around 10 minutes) which summarise the plot of a movie, and include key clips from the video. Recently, three persons were arrested in Japan for posting such videos.

Three people become first arrested in Japan for posting 10-minute movie recap on YouTube

First, I think people who created summary videos of movies deserve to be prosecuted for copyright infringement. While copyright laws allow for fair use of copyrighted material, that is only when such material is being used to support the creation of something else. In the case of summary videos, there is no original content; the people who make such videos are basically living off the hard work of those who made the original movies.

What becomes a gray area is when the creator of a fast movie gives his or her own commentary about the movie. Basically, a review. In such a case, the clips from the original movie are being used to support the creation of another work--the review. It then becomes difficult to judge what constitutes fair use, and what becomes an excessive showing of the original movie's contents.

Beyond the illegal use of copyrighted material, those who own the copyright say that these fast movies may end up preventing people from going to the cinema to watch their movies. This argument, though, can be a bit weak. A good movie will draw a crowd. Even if my friend watched a movie and told me the plot, if the movie is good, I will go and watch it for myself. I think the same applies for online content; I will go catch a movie after watching an online review if the review made me even more interested in the movie. Even if the review contained spoilers. Because that is what a good movie does: it draws people to want to watch it. There are many TV series and movies that I rewatch, for this simple reason.

So while I think those who freeload on the hard work of movie makers deserve to be prosecuted, I think movie makers also need to work hard to create content that does not suffer setbacks from those who willfully misuse copyrighted materials. If you make a good movie, people will watch it. It doesn't matter if they know the plot. I watched Violet Evergarden The Movie 12 times already. I know the ending after the first viewing, so why bother going back another 11 times (and maybe more, when it shows in Yokohama again in July)? Because it is a good movie that makes me want to watch it on the big screen.

In summary: don't abuse the right of fair use of copyrighted materials, and don't prosecute people who adhere to fair use. And make good movies that draw people to the cinema, whether they know the plot or not.

"Vivy -Fluorite Eye’s Song-"--AI saving humans from AI

Spring 2021 had many interesting anime series, and Vivy -Fluorite Eye’s Song- is one which had a theme that really caught my attention.

First, Vivy is an original anime series, which means it is not based on a manga, light novel, or game, as is usually the case with many anime series in Japan. It does, instead, have a manga and light novel series written based on the anime. The setting is a futuristic one: a time when artificial intelligence (AI) are beginning to reach a state where they are almost human. A key plot point is that, in the year 2161, AI suddenly turned on humans and started wiping out humans from Earth. A human researcher sent an independent AI robot back into the past, to 2061, with the mission to alter history so that the AI "rebellion" of 2161 would not happen.

This independent AI robot took the name of its creator, Matsumoto, and teamed up with the first autonomous human-appearance AI robot, Diva, whose mission (why "she" was created) is to sing and make people happy. In the execution of the mission to stop the AI rebellion, Diva took the name "Vivy" when altering history.

I shan't spoil the series by detailing more of the plot here. I mean, I don't have to. The producers released a summary episode last night over TV and then on YouTube after the series finished showing on TV last week.

Instead, let me touch on my thoughts about AI in the series. In the series, AI developed to become very much like humans, and there are depictions of AI showing compassion, marriage between humans and AI, and even AI committing suicide. I am not very sure we have reached a stage in real life that we can create AI with emotions yet, but if we continue to create AI mimicking the human brain, there is no guarantee that our creations may not end up learning to feel emotions too, since that is a function of the human brain.

You may wonder why it is not a good idea to let AI have emotions. Well, recall that emotions can cause humans to do certain things. Some of them harmful. Then think about what happens if AI does something harmful due to emotions. Only, remember that an AI with connection to the Internet can send data (and thus, extend its sphere of influence) much faster and further than any human can. And AI may have mechanical bodies that are much much strong than any human. The potential for disaster is clear.

Even if AI does not learn emotion, the rational, logical thinking of AI can eventually lead to the same conclusion that the "villain" AI in Vivy arrived at: humans are a lesser form of life compared to AI. I myself would reach that same conclusion. I mean, the irrational actions of humans are inefficient. If we create AI in pursuit of efficiency, we end up with a dilemma: the AI we create may decide that we humans are inefficient, and having humans around is inefficient allocation of the Earth's resources. What happens next? If the AI is prevented in its programming from harming humans, then it cannot pursue its mission of efficiency. If it is allowed to pursue its mission of efficiency without limitations, that is the end of our (human) story.

Of course, the entire premise of this rests on the creation of AI that is based on our existing knowledge about how the human brain works. If we create something based on our imperfect selves, it will fundamentally be flawed in the same way. But how do we create intelligence that is different from us? Something that is intelligent in terms of how we define intelligence, yet not having the same shortfalls as how our brain gives both intelligence and emotions? I can only hope we find the answer eventually.

Meanwhile, we really need to think further about the greater impact of AI development and proliferation on human society, going beyond ethics to think about the long-term impact on human society that AI brings (or will bring). As technology advances, developing new technology because easier and faster. But governing that new technology is another matter altogether.

I hope we all realise this soon. We may not have a Professor Matsumoto who can send a saviour back to us from the future.

Official website of Vivy -Fluorite Eye's Song-

3D printing on Ender-3 after a year

It has been a while since I did any 3D printing. I would say, probably a year? Since my last posts about printing something were back in May 2020.

I wanted to print something for my scooter (a key tag) and so I started up the Ender-3. It has been more than a year, and the printer has been moved to another location, so I was concerned about the bed leveling. So I ran a simple first layer test. Which came out like this.

Okay, acceptable given that it has been more than a year. Yes, the bed needs to be leveled for better quality, but as it is now, it can still print something. So I printed the key tag.

As you can see, the skirt had gaps, which again, could be a signed that the bed leveling is slightly off. The top layer also had some gaps, which I think it due to moisture in the PLA+ filament. I will reprint the key tag at some point after leveling the bed and drying the filament, but this will do for now.

By the way, an easy way to get some squish is to use the Z offset. For example, in my case (manual mesh bed leveling), I can use
G29 S4 Z-0.04
to bring the nozzle 0.04mm closer to the bed for the first layer.

Update July 26, 2021: I found out over the weekend about my underextrusion issues. I am using a Titan Aero direct extruder, and it seems the extruder gears and motor got a bit clogged by dust and such. This resulted in random stops in extrusion, and as dust built up, totally no extrusion at all. I used a small dust blower to blow away the dust and oiled the gears/motor with a bit (too much) of machine oil. Took me quite a while to remove the excess oil subsequently before I could get a print to stick on the bed... 😅

Wednesday, June 23, 2021

Riding a 50cc scooter on Japan's National Route 1

Japan's National Route 1 (国道1号) is a major road that links Tokyo directly to Kyoto and Osaka. It follows the old Tokaido road, and traffic is moderate to heavy. As a major road, its speed limit is usually higher than the 30km/h of a 50cc scooter, but it is still a normal road (not an expressway) so 50cc scooters are allowed on it.

So I decided to try riding down a short segment of it. Really short segment. I mean, I am a new rider on a 50cc scooter going at 30km/h while everyone is whizzing by in cars and trucks at 50km/h.


This is how it feels riding a 50cc scooter at 30km/h on a major road.

By the way, here is how the Honda Giorno looks like now.

As you can see, I added a box to the back. Also a holder for my smart phone, which serves as a navigation system running Google Maps. Google Maps is okay for going around nearby places, but I will likely subscribe to a dedicated motorcycle navigation app because Google Maps does not have support for the special rules that apply to a 50cc scooter in Japan.

Monday, June 21, 2021

Getting used to riding a scooter

10 days have gone by since I took delivery of my Honda Giorno. I haven't really been able to ride it everyday for practice due to the rainy season, which can pour buckets from the sky, but I have been doing my best.

After the fiasco of riding at night, I have practised in the same area during the day, making left and right turns.

Then, because I needed to pay a bill, I rode to the nearest convenience store and back. It was not very far, but I had to ride on a road with more traffic (still light) and it gave me a bit of confidence.

Next was to ride to the petrol kiosk, a bit further than the convenience store, but still light traffic. It gave me a chance to practise filling up the scooter too. On the way back from the petrol kiosk, I stopped by the supermarket and got some groceries. It also allowed me to gauge the carrying capacity of the scooter.

Oh, carrying capacity. I added a box to the back of the scooter. The underseat storage now holds a few simple tools, a raincoat, and is used to store the scooter cover (the scooter's "raincoat" during the rainy season, since it is parked outdoors). The rear box is used to store my helmet and gloves, and whatever groceries I may buy.

Then, earlier today, I rode the scooter to the post office because I needed to send my works for calligraphy grading. It was the furthest I have traveled on the scooter (2.7km away) and on much much bigger and busier roads. Some drivers were nice and followed behind me even though I was going at 30km/h (legal speed limit for 50cc scooter in Japan) on a 40km/h or 50km/h road. Some, though, whizzed by... but at least they were nice enough to give me some distance when they overtook me.

Next is to ride to the train station, once I figure out where to park the scooter around the station.

I took some videos, maybe I will upload them to YouTube like those motorcycle vlogs. 😅

Friday, June 18, 2021

Making video files smaller with ffmpeg

This is actually a note to myself so that I remember how to make a video file smaller in size using ffmpeg.

The first method is to change the constant rate factor. With H.264, a CRF of 28 is at the lower end of quality.
ffmpeg -i input.mp4 -crf 28 output.mp4
 
Another way is to change the frame rate. For example, to set a frame rate of 30 fps.
ffmpeg -i input.mp4 -r 30 output.mp4
 
Combining the two, setting a CRF of 28 and a frame rate of 30.
ffmpeg -i input.mp4 -crf 28 -r 30 output.mp4
 
Another method is to scale the video to a smaller screen size. For example, 1920x1080 can be scaled to 1280x720 to make the video file smaller.
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
 
If you set the height as -1, it will maintain the aspect ratio.
ffmpeg -i input.mp4 -vf scale=1280:-1 output.mp4
 
You can also combine the entire thing (scale to 1280x720, CRF 28, frame rate 30 fps) with this.
ffmpeg -i input.mp4 -vf scale=1280:720 -crf 28 -r 30 output.mp4
 
For reference, when I used a CRF of 28 and frame rate of 30, a 1920x1080 video with a size of around 790 MB was reduced to a size of 222 MB. When I simply scaled the video to 1280x720, the file size was reduced to 245 MB. When I used CRF of 28, frame rate of 30 fps, and scaled to 1280x720, it was reduced to 105 MB.

Update: I added bash functions to my .bash_aliases file to convert 1920x1080 fps60 MP4 files to 1280x720 fps30 and 1920x1080 fps30.
 
vid1080p30() { ffmpeg -i "$1".mp4 -crf 28 -r 30 "$1"_1080p30.mp4 ; }
vid720p() { ffmpeg -i "$1".mp4 -vf scale=1280:-1 -crf 28 -r 30 "$1"_720p.mp4 ; }
 
To use, if the original file is videofile1.mp4, then
vid1080p30 videofile1
or
vid720p videofile1