What was the cruelest thing a school teacher did to you or someone else?

At Quora, there was a someone asking for What was the cruelest thing a school teacher did to you or someone else?

I have decided to share my story from my 1st (and 3rd) year of the school. It was very strange years…

My first year in my elementary was cruel all year round due to crazy home room teacher. (This was in Japan.) I got picked on every little thing, I forgot to bring a single pencil? I got written up for it. Ate school lunch slow? I got written up for that too, and literally made me sit through reminder of a school day with my unfinished lunch on my desk and sometimes well into after school hours. (Keep in mind this was my first year in school, at 6 years old.) A slight deviation from what he considered standard would have resulted in write up, and had to face this guy for up to 4 hours a day at time, 6 days a week. (Back then, Saturdays were not off.) I later found out noone else in the class were subjected to this, so certainly I was being bullied by this teacher.

I was stressed and had a meltdown to the point that I refused to do any homework for a month — it could have lasted longer, but eventually my parents found out about it and did get chewed me out for it, although that didn’t make any different as I have been written up for it for other things anyways. (I don’t remember how I managed to hide the fact I didn’t turn in my homework for this long, however.)

Irregularities caused by this teacher was fairly apparent considering this never happened for a year with different teacher, until he was my home room teacher again in my third year at school, which basically threw me into same hell, but longer, for another year. (1st year student dismissed around noon, but 3rd grader had 1 or 2 extra hours, which basically means I’ve had to deal with this for up to 6 hours a day!) Fortunately teachers for latter three years of my elementary school after this were very decent.

Probably, these days, this type of actions by teacher would cause question in teacher’s competencies, but back then, teachers were bit more respected, at least to the extent they didn’t get scrutiny of what happening despite complaints. (and due to overall naivete of my end, I was very young after all.) While I generally did okay in school but I can only remember horrible things in my first and third years of school.

The point of this story… teachers, please don’t bully your student. It’s awful.

On Characteristics of Machine Learning

My previous article, Do Neural Networks Dream of Pokémon? I have inferred it is not very effective use of the machine learning technology, and I wanted to do some follow up on that aspect.

First of all, the definition of machine learning is that technology that allows machine to determine outcome without explicitly programming covering all the cases. Generally, when the program is written, in context of normal application programs, programmers have already programmed what to do when certain things happens. For instance, if you write in URL to your web browser, it displays the page under that URL. It is because programmers who have programmed your web browser program to do that.

Therefore, with elements on Pokémon where all the combination of elements are already known, it is more reliable to program all the case for it. (And Pokémon is programmed to do so.)

Unlike the case above, machine learning is effective in the cases like below:

  • Cases where input parameters and their combinations are large, and is not practical to program for all.
  • There are unknowns and ambiguities in expected input.
  • Rate of change and characteristics in input is very subtle. (For it would require a lot more data to determine certain outcome, it is related to the characteristics on input parameters.)

For example, self-driving car is very difficult problem, because it is not possible to explicitly program virtually infinite cases that it has to deal with. (For instance, let’s say the self-driving car has to determine if someone’s standing on the road, it is not realistic to program for all the situations, for example, it can be varying weather, lighting condition, place where the person is standing, and their motion.)

However, there are way such ambiguities can be reduced, for example by the traffic infrastructure, such as traffic signals, and communications between cars, and while current self-driving car technologies focuses on co-existence between current cars and environment, but opposite approach of revising traffic infrastructure should be also taking place.

Before, Google CEO said “It’s a bug that cars were invented before computers” and if he meant that by having computer prior, traffic infrastructure would have been designed that way, I think he was right on.

Back to Pokémon, with Pokémon, it’s 18 elements that each can have up to 2 overlaps, and it is not a large information to process, and can be programmed so without too much of effort. However, if this becomes hundreds, and thousands, with varying overlaps, it becomes very difficult problem to program. (It is however, to program for their patterns, thus, it’s not something that has to be programmed one-by-one.)

Pokémon neural network I’ve experienced other day is a very simple case of neural network, but image recognition and other advanced recognitions are just mere extension of it.

Democratization of machine learning is certainly a big topic in near future, and my intent is to continue experimenting for it.

Do Neural Networks Dream of Pokémon?

One thing I wanted to experiment with TensorFlow (and neural network) is a some simple numerical processing. I have decided to put it into test.

I was looking for some subject, and then I noticed something about Pokémon Sun & Moon. There is a Festival Plaza feature in the game where players can play set of minigame. One of those minigame is where player can attempt to match “most effective” elements given a single or a set of element. For example, one of such example with be Bug and Grass — the answer is Fire gives Super Effective, which earns you point. There are four classes of effectiveness, from none to most effective are, No Effect, Not Very Effective, Normal and Super Effective.

There is a truth table on how this is layouted, but I wanted to see if some learning from mistake approach can predict outcome of this minigame.

Using a dozen of festival tickets, I’ve collected around 80 of log. Next quest is to research how these data can be normalized to test — as I am not yet very familiar with the way TensorFlow works in this regard, with a lot of focus on image recognition, it is surprisingly hard to find information about where numeral data is processed, then I stumbled upon existing effort by mtitg, using TensorFlow to see if TensorFlow can predict survivors of Titanic incident based on multiple parameters.

mtitg’s example uses many parameters, 8 to be exact, but in my case, I will be using three. mtitg’s code is very great starting point as it covers topics about how textual data can be prepared to be converted to numeral value for TensorFlow to process.

I have adopted mtitg’s code to work with my test data.

Long story short, with my limited testing on 80, it turns out to be 50% at most I can get leverage out of. I think the reason as follows:

  • Not enough variety of data; since this is obtained through manual process, there are manual process and considering fairly complexity of Pokémon’s elements, data represented is certainly not a exhaustive set of data.
  • Too many “Normal” outcome. Default for most of outcome that are not affected by certain elements, for example, fire element for bug is normal. Thus data tend to revert to normal, which provided more example where outcome is normal than other three classes.
  • Perhaps neural network is not very good approach for this problem. Perhaps simple logistic regression, and/or Bayesian algorithms would work better.

Conclusion

As I wrote earlier, with existence of actual element pairing data, there is no practical reason of this attempt; it’s really for learning and fun, after all.

With further optimization and research, TensorFlow and machine learning method have a great potential in making sense of data as well as to provide added value from dataset that may be already present. Machine visions and self-driving cars are very cool application for the machine learning technologies, but we shouldn’t forget adopting this technology on our personal computers we already have.

Jupyter the Python Based Notebook System

Jupyter the Python based notebook system

Started using fairly recently, there is a tool called Jupyter. Characteristics are:

  • It is based on Python; it was originally called IPython which provided interactive Python environment.
    • It now supports more than Python, thus is now developed under Project Jupyter. IPython, however, is still in development for providing interactive Python environment, which Jupyter uses for its Python execution.
  • For the format options, it is possible to use Markdown (and LaTeX!) for documentation.
  • Code can be executed within the notebook.

and more. (I really use this with Python only, and I cannot tell much about other part where some other languages are used.) I personally like:

  • It can use many features in Python. For instance, libraries such as Tensorflow can be used. Depending on the purpose, libraries like SciPy, NumPy to perform advanced calculation and plotting, SymPy to use it as a CAS (Computer Algebra System) to do symbolic math, and use Pandas and Python internal libraries to interact with databases.
  • Notes can be saved to share. There is nbviewer that enable people to view notebooks right on the browser. Services like GitHub uses it on Gist which can display the notebook.
  • Codes can be saved as Python, which makes it a development environment that can execute Python expressions interactively. Written notes are exported as a comment.

I have done installation on Linux and Windows, and I found Anaconda to be easy to install. (Anaconda uses it as a based on its commercial platform, and additional features are available for purchase thus making it scalable platform where these modules and supports are needed and have enough budget to do so. It is however, is bit too expensive for personal use.) For Linux, you can just use pip to install Jupyter on pre-existing installation. I will write more some details as I feel like it.

Clannad English (Physical) Release Unboxing

This article contains an update regarding the soundtrack.

So this huge box just showed up. It’s not a monolith, but a box from Sekai Project. I’ve backed Clannad English version, and this is their shipment. (1 of 2, I believe, as they are still working on one for extra side-stories, anthology comic, and such.)
Sekai Project Box Arrival
Here’s my version of unboxing.
Sekai Project Box Comparison with Yuno
The box is big — see how it compares with Yuno.
Opening the box
As expected, mostly packing materials.
Clannad Box Contents
Here are things in the box. I actually used their digital/physical tier as a base, and then added extra things, as they had a number of add-ons. (Honestly, I needed to create an spreadsheet to figure this out!) This is not entire set, as there are some elements still in development.

  • Clannad English version
  • 3 Mini-shikishi’s
  • Original Sound Track
  • A tapestry

They’ve used one from the box art, another one from the artbook which I happened to own. The third one I don’t recognize, maybe this is new.
Clannad English Box
The game itself is in a special box,
Clannad English Box Back
And the back of it.
Kickstarter Serial Number
My backer number is 1424, so I guess, and my serial number of the box is 920, about 65% of people opted for boxed set? (One could argue, at 1400th being relatively early in the campaign, perhaps they are more people who are opting to physical rewards, in any case, I don’t even know if they have any significance, so it is a pure speculation.) More on the box later.
Clannad OST
The soundtrack is identical to the Japanese release, in fact, they are KSLA-0012~14 denoting it’s same soundtrack released in 2014 in Japan. This actually makes it “what you get on the CD is not what in the game” as according to Shinji Orito, the one of the composers for Clannad, said that music for the English version is improved.

Update: 2016-10-08: They have provided digital download to physical backers, too.

Update: 2016-09-29: And then, Sekai Project is saying that they are releasing an updated version of the Soundtrack only if you have purchased a digital version, but nothing for those opted for a physical version. That’s pretty deceptive, considering such “bonus” would be applicable only to a digital version when making backing decision. Hope they will correct this problem instead of blaming Visual Art’s for it. To align with their claim, I have reached out Visual Art’s for clarification on 2016-09-27, but I have never received a response from them as of 2016-09-29.

Clannad Official Guidebook
Opening the box, the first thing I see is a guidebook, with many arts and is printed on glossy paper. The only problem I have is that it took me good 20 minutes to find my name on the Kickstarter backer list. (They are not in alphabetical order — seems very random.) But here it is, I found me…
Clannad English Disc
And here’s the game disc itself. DRM-free, I think.
Clannad MABINOGI Disc
Under the disc, there is a arrange soundtrack Mabinogi, which is a music arrange of the original. (This one has never released outside of the inclusion with the first batch of Japanese version of the game, so this is actually fairly rare to find it now.)
Clannad Tapestry
Finally, a tapestry. This same art as the box.
So this concludes my unboxing. Though I already have a digital version installed on my machine. Time to fire up WINE again to play some more…

Why I like Gmail better than Inbox

I’ve tried to use Inbox for a while, and after few about a half year of usage, I determined Gmail interface is more of what I find more useful than Inbox in daily E-mail usage.

What I like about Inbox

Inbox has its own charm, it’s somewhat easier to navigate, and offers wide variety of snippets. If there  are attachments, they are highlighted, and I’d say, it’s more fun to use.

What Inbox is trying to do is very ambitious and is a very interesting attempt to improve E-mail as we interact today.

What I don’t like about Inbox

Then there are bit of complaints I have with Inbox, it’s mostly features available on Gmail, but not on Inbox.

No alternative signatures for alternative address

I have some alternative addresses I have set up, for example for the convention E-mail and such. What really bothers me is that I can’t set up an alternative E-mail signatures for them.

Send style defaults to HTML and there’s no way to change this

I don’t usually send HTML mails, because, they may hide invisible changes I don’t mean to send. Gmail allows me to switch between HTML and text, but Inbox doesn’t.

No “view source” option

OK. I admit, this is not something 99% of the population would seek for. I like to be able to view E-mail source to inspect headers. Why do I want check an E-mail header anyways? Well, it is one of the best ways to detect phishing E-mail.

Language specific reply header and I can’t change it

When you hit reply to E-mail with Gmail, I see something like this as a reply header:

2016-02-17 13:26 GMT-08:00 John Doe <johndoe@example.com>:

If I do the same on Inbox, I see this: (I set my UI default to Japanese)

2016年2月17日(水) 13:26 John Doe <johndoe@example.com>:

Why I like Gmail version better? Because it doesn’t matter whether I am sending my E-mail to someone in Japan, US, or any other countries I’m sending my E-mail to and make sense to everybody. Reply header that Inbox use only makes sense to Japanese people. At least I expect the option to change this.

Conclusion

From what I observe above, Inbox seems to be designed for more of casual E-mail users, perhaps consuming more E-mail than writing one. What I really want to see is either Inbox with more of Gmail features implemented, or vice-versa. Come on Google, you should be able to do that!

 

Why 28-backspace Vulnerability is not so Serious?

There have been news being circulated around regarding 28-backspace vulnerability of a Linux bootloader, Grub2.

Why this is not a serious problem? Because relying your security on bootloader is utterly stupid to begin with. If someone has a physical access to your machine, that means, they can easily bypass limitations set by a boot loader. It is a very simple feat to create a thumbdrive with a bootloader without such authentication in place, whether this vulnerability exists or not. Therefore, the existence of this vulnerability does not provide any difference from a security standpoint.

To protect a system with this type of issues, you’ll have to take steps like:

  • Limit physical access to the device.
  • Encrypt root partition

If only thing this protection on this Grub2 feature provides, that’s an illusion of security, maybe we are better off without this feature. (If someone’s so concerned about giving access to rescue shell so easily, in casual operation, then remove a rescue shell from Grub2 installation. If system administrator ever needs one, just boot from external media with rescue shell access.)

T-mobile Roaming in Japan

I was traveling Japan earlier, from March 23rd, to March 30th. This was my first time traveling with my phone set to roam. The last travel before that was precisely 7 years 1 month 24 days before this trip, and I did not roam for two reasons back then; one it was cost prohibitive, and secondly, back around that time, I did not have a phone capable of roaming; back in time, I was using T-mobile MDA, essentially a renamed version of the HTC Wizard, which was an EDGE capable, which basically meant there’s no roaming available in Japan. (Japan is one of the few countries out there never had seen GSM deployment.)

Forwarding the clock for 7 years 1 month, 24 days, now I have a Nexus 5, which supports LTE and UTMS. This meant finally I am capable of trying out roaming in Japan. Coincidentally, as a part of T-mobile’s Un-Carrier initiative, they have made available free roaming (albeit with some limitations) available to simple plan subscribers, which basically gave me a chance to try it out.
The premise is that, I get data and text roaming free of charge (data locked to 128Kbps) and calling at $0.20/minutes. Latter pricing is not actually too bad, as some of their domestic plan can come very close or even exceed that at high margins. (For example, Softbank would charge 20 yen — roughly 17 cents per 30 seconds in their White Plan, and DOCOMO would also charge up to 20 yen, but generally more like 11 to 15 yen, that’s 9 to 12 cents. Although in Japan, receiving the call is free as a caller actually picks up that bill, but in case of roaming, both making and receiving a call incurs charges, just like they would in domestic calls in the US.)

Getting off the plane, I have waited for a while, until the phone receives signal. Actually the phone force restarted, but it probably has nothing to do with the roaming; perhaps it’s something to do with the Android 5.1 issue, but once that’s over, it was a fairly smooth ride. The phone received a signal, showing JP DOCOMO as a carrier. Then I received the following two messages from 156 number:

Free T-Mobile Msg: Welcome to Japan. Unlimited text incl with your global coverage. Talk $0.20/min. More info http://t-mo.co/tc

Free T-Mobile Msg: Unlimited web included as part of your global coverage. To purchase high speed data please visit: http://t-mo.co/4G-Data

After a while, I have also received the following from 889 number:

Free T-mobile Msg: For faster web browsing, you can purchase a high speed data pass at: http://t-mo.co/4G-Data

The data pass, which I did not purchase, comes in three increments: 100MB for $15.00 (expires in a day), 200MB for $25.00 (expires in a week) and 500MB for $50.00 (expires in two weeks) — again, I did not purchase these so I can’t speak of experiences using those add-ons. These are still bargains, considering non-simple choice plan would incur $15.00 per MB. While connected to Japanese network, it was locked to UTMS. I am not sure if it’ll be the case with these optional packages or whether purchasing one of these options would unlock access to LTE network.

Pulling IP address of the device showed that it was T-mobile USA’s IP range, which was not surprising considering the packet would still go through their access point, even though it is piped through Japanese network. At 128Kbps, I was worried that my data experience suck, however, it handled fairly well, especially after I turned off most of background backups of photos. It handled things like Facebook post, and Instagram fairly well.

Messaging applications naturally did not have any issues. One thing I noticed is when I jumped from one carrier to another (the network I could roam was on DOCOMO, as well as Softbank) and occasionally, especially when I was emerging out from no-signal area to coverage area, for some reason, it took a while to phone to realize that I have a data connection. This intermittent connection issue was somewhat annoying, but not critical for most of my applications.

Google Maps operated and helped a lot navigating a massive network of Tokyo train systems. Browsing experience was not too bad either; this probably also have helped by the fact that Google Chrome compresses data for me in the background.

Softbank and DOCOMO mobile cell towers -- my device probably roamed both of those towers at some point!
Softbank and DOCOMO mobile cell towers — my device probably roamed both of those towers at some point!

In any case, having some form of connectibility was way better than having nothing, and the first try with T-mobile free roaming was a very pleasant one. Now I can’t wait to go back again! 🙂

Working Around Extreme Lag of Google Chrome

Update (2016-02-22): Developers have implemented changes to address this issue. While you won’t see the benefit of these changes immediately, it is certainly “coming soon” at this point.

I have been experiencing excessive lag on Google Chrome on Linux for a while, and I have been searching for solutions. The issue itself, has been reported in different incarnation of bug reports, including issue #424082 on Chromium bug reporting system.

Recently, it was tracked by one of the Chromium developers that some font configuration is causing an unnecessary call to fontconfig, giving it bit of a performance penalty.

Perhaps this problem wouldn’t have affected so much about western fonts, because of relatively less load involved in the system to parse western font sets (though I’d think increased CPU load would have been observed, albeit in shorter duration.)

If you are affected by this issue, you’d seen a significant lag in UI interaction, including input to the Omnibox, as well as other actions such as menus.

Unfortunately, a good number of Japanese users may have been encountering this issue, as very common fonts (at least on Linux) such as IPA fonts would have been one of fontsets that can cause this issue.

To work around, in case of KDE, you will have to install kde-config-gtk-style and change GTK styling to use fonts other than ones affected by this issue. (On Gnome, it would be gnome-tweak-tool.)

Note that you will have to restart Chrome everytime you change this setting.

The Rhodanthe CA System

Recently, the hosting company I use made it compatible to use Server Name Indication to support SSL/TLS. This has made it possible for me to encrypt many of sites under HidekiSaitoCom domain. Currently, as written in HidekiSaitoCom PKI Information some of my sites utilize certificates issued by StartSSL. The problem of StartSSL is that its limitation calls for a fee for each revocations issued, and this is mandatory for generating a replacement certificate; the problem that can be very critical for low budget sites such as mine. Certificate costs are not negligible for websites with virtually no income. These problems are perhaps one’s aimed to be fixed by Let’s encrypt project, but its implementation is still far, and considering server side implementation seems to be necessary with their model, it is still unknown when this would be available to me.

One way to solve this problem is to use Self-signed Certificate which basically a certificate that attests itself, however, as a promoter of GnuPG I thought of handling this slightly better. Meet Rhodanthe CA.

Rhodanthe CA Diagram
Rhodanthe CA Diagram

The goal of Rhodanthe CA is not to authenticate the site, however, it is mainly used to offer opportunistic encryption scheme, using root certificate that can be externally verified using an OpenPGP key. Feature for the CA includes root certificate, intermediate certificates, and also offers Certification Revocation List. Considering the upcoming Let’s Encrypt feature seems to aim to provide a light-weight basic level of domain matching authentication, other than seeing scary warning when accessed without importing the root certificate, it should offer just as good security. Perhaps, in the future, actual authentication is more bound to Extended Validation Certificates; it’s very important that we provide functional encryption to the site.

As a side story, major corporation such as Google owns its own Certificate Authority. They have this functionality by having root certificate authority to sign their CA key, which effectively makes Google’s CA Intermediate Certificate Authority to the root CA (in their case GeoTrust) in order to issue certificates for Google’s services. The problem of this is the cost and burden such as Certificate Practices Statement; what is beyond for individuals like myself to apply for.