Obscure differences between Kanji and Chinese characters

People who already know Chinese characters are often said to have the advantage of being able to pick up Japanese quickly. However, to learn it properly, in addition to the  difference between infix (English, Chinese) and reverse polish (Japanese) notations, it also comes with quite a bit of baggage. It’s the differences that requires work to observe, such as:

  • some made up ‘Chinese’ characters (和製漢語),
  • some are written slightly differently, including artistic variations
  • some has a completely different meaning,
  • some has opposite preferences for using which character in the pair when simplifying
  • and some has drastically different overtones despite they technically mean the same thing
  • the mixture of simplified and traditional characters, occasionally a character written like simplified Chinese means something totally different from traditional Chinese, such as 机(つくえ)which means desk vs 機(キ)which means machines or chances depending on the context.
  • the roles of historical and modern writings are randomly reversed

How we use 学習 is a good example. Modern Chinese considers 学 to be more colloquial and 習 to be more formal. Japanese is the other way round for 学ぶ and 習う。学ぶ has a more serious tone.

Because of a bunch of traps, if somebody who already knows Chinese first tries to make an educated guess, there’s a good chance that they might get it right, but the mistakes they make are almost very predictable.

I came across a document called 常用漢字表 released by the Agency for Cultural Affairs (文化庁) that explains all the quirks of Kanji that was carefully collecting on my own while taking the classes. Wish I had it back in the days. Here’s the link, but I also saved a local copy of 常用漢字表 just in case if their website moves around in the future.

11 total views, no views today

Aging problem just from storage Working 6632B stored for 10 years has a failed tantalum cap

I fired up one of my 6632B stored for almost 10 years and smelled burned electronics, despite everything is functioning. I tested the unit immediately when I bought them a decade ago and it was working fine, so it’s an example where electronics can deteriorate by storing (even in temperature controlled, dry environment).

Since I see smoke, I turned everything off immediately and investigated. Turns out one of the tantalum capacitors in the processor/controller board gave in:

51 total views, 1 views today

Wobbling rotary encoder in Agilent/HP/Keysight 6630B series 6631B, 6632B, 6633B, 6634B, 6634A, 6635A, 66332A*

6630 series system power supply is sturdy as a rock, but has a rotary encoder sticking out that it’s almost guaranteed to wobble if you buy it used.

I thought they would have known better to secure the rotary encoder with a nut so it won’t wobble (HP usually does a perfect job making their designs reliable. This one is a rare miss), so I opened it up to see what I can do about it.

My initial guess was that the solder joints were weakened as it was used to mechanically support external forces for users of the dial. But I was wrong. Here’s what I’ve found:

The weak metal strip retainers gave in and the whole rotary encoder is about to break loose! The encoder was actually still functioning before I opened the case up. So HP assumed their vendor for the mechanical rotary encoder did a good job withstanding frequent wiggling. Apparently their vendor completely failed them: the metal retainer design was hopelessly flimsy that I wouldn’t even consider using it even in light-usage applications! FAIL!

There’s a huge number of these high quality power supplies on the market because Motorola/Nokia closed down their massive operations, flooding the market with 6632Bs for years to come.

I’ll now strengthen (I came up with a solid technique to make sure the dial will never fall apart again) the 6632Bs I have for sale to businesses that needs a perfect unit (which I sell for $699/ea). If you are a hobbyist, feel free to send me a message and I’ll tell you how to do it, provided that you do not share it with anybody else (I’ll trust you). If you are a business, I can restore 6630B series to a professionally salable state starting at $499.


* Note that I included 66332A despite it’s a mobile communication DC source (66300 series) here because the guts of it is actually 6630 series. Every other 66300 series (3 Amps max) or less has a different form factor (that’s more like a 33120A) and the only odd one out of the series is 6632A (5 Amps max).

29 total views, no views today

Explain XOR tricks succinctly with two properties Change detector, toggler

Most teaching materials on XOR starts from its straight definition then a bunch of recipes for exploiting XOR. It is not convenient to remember and not intuitive to come up with new tricks on our own. Instead, I’d like to describe XOR as two intuitive operations:

  1. Change detector (The logic definition itself)
  2. Toggling light switches (Flipping twice undoes it)

The second interpretation (toggling) is actually way more powerful and easy to remember than the first interpretation (definition).


With the toggling interpretation, you don’t have to think hard to come up with the four algebraic properties:

  1. Associativity and commutativity: we only care about whether the individual light switches (bits) are flipped odd (flipped) or even (not-flipped) number of times at the end of the day. When it happens in what order does not matter.
  2. Identity: flipping NONE of the switches (a mask of all 0) leaves it alone
  3. Inverse: pick only the switches that are already turned on (using itself as mask) and flip them (xor) guarantees to turn everything off (0)

The XOR swap trick can be constructed by exploiting the fact that flipping the same switch twice (at any point) reverts it back to where it started:

x y
Start x_0 y_0
Mix y_0 with x_0 x_1 = x_0 \oplus y_0 No info is lost, still have y_0 somewhere to undo if we wish.
The incumbent y_0 is used to cancel the y_0 inside x_1 to recover x_0 \begin{array}{rcl} y_2 & = & y_0 \oplus x_1 \\ & = & y_0 \oplus (x_0 \oplus y_0)\\ & = & x_0 \end{array} Since y_0 is already saved (mixed with) x_1, we don’t have to worry about losing it as long as we get to our main goal of putting x_0 in y, which will be used as a recovery key later.
Now use the x_0 stored in y_2 to unmix x_1 to recover y_0 \begin{array}{rcl} x_3 & = & x_1 \oplus y_2 \\ & = & (x_0 \oplus y_0) \oplus x_0\\ & = & y_0 \end{array}

Note that this trick is obsolete for modern computer architecture because

  • it enforces strict dependence that kills any predictive pipeline (speedup) in modern computer architecture, and
  • will yield zero all the time if you try to swap with itself in-place (same memory location), which is wrong because you expect the swap to do nothing.

Adding a check for the degenerate case (self-swap) slows the program down even further, making it worse than using a temporary storage for swapping. Therefore there’s no good reason to use it unless you have an exotic use case.

This is mainly used as a teaching device (or homework problem) to teach that XOR-ing even instances of the same variable in the chain cancels it.


 

39 total views, no views today

Malware deleting TrustedInstaller.exe, therefore crippling Windows

My sister’s computer is was infected with a bunch of stubborn malware. Even after cleaning the offending files, a lot of things won’t wouldn’t work.

Windows Update, run sfc /scannow, or DISM /Online /Cleanup-Image fails with unknown reasons, which I found it somehow related to “Windows Module Installer” service not running.

I saw something weird in services.msc: “Windows Module Installer” doesn’t exist, but I know the underlying name is “TrustedIntaller” and noticed a service named as such is there, but it cannot be started, nor there are any descriptive information.

So I searched registry for “TrustedInstaller” and got to its entry. I noticed these two:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TrustedInstaller]
"DisplayName"="@%SystemRoot%\\servicing\\TrustedInstaller.exe,-100"
"Description"="@%SystemRoot%\\servicing\\TrustedInstaller.exe,-101"

It means the meaningful names and descriptions I saw on services.msc are generated by calling the underlying  service executable file with switches. I checked my “C:\Windows\servicing” and found that “TrustedInstaller.exe” is not there at all! Of course you cannot start a service where the file does not exist at the promised path (ImagePath).

I searched the hard drive and found only one instance of the file stored somewhere (like C:\Windows\winsxs\x86_microsoft-windows-trustedinstaller_31bf3856ad364e35_6.1.7600.16385_none_90e389a7ae7a4b6c) and I tried to move the file to “C:\Windows\servicing”. However the ownership and permissions to write to “C:\Windows\servicing” goes to “TrustedInstaller” account, not “Administrator”, so I took the ownership, gave Administrator full rights, then move the file over.

Everything worked after that! Just the mere trick of deleting TrustedInstaller.exe is enough to make the user miserable trying to clean the system up! “sfc /scannow” or the like requires TrustedInstaller/WIM to be working in the first place, so you cannot use it to repair TrustedInstaller/WIM problems.

65 total views, no views today

Floppy Disk Drive Ribbon Cable Orientation

Hooking up a floppy drive after a decade of disuse today, I followed the notch/key on the connector/cable but it turns out to be incorrect! Turns out I should do the opposite, forcing the key to the side without the notch, by force (or trim the key)!

So stick with the conventional wisdom that the ribbon’s pin 1 (marked) should always stay close to the power connector, regardless of whether it’s IDE or FDD (3.5″ or 5.25″), EVEN IF FOOLPROOF MECHANISMS TELLS YOU OTHERWISE!

 

 

 

36 total views, no views today