My Best Teaching Is One-on-One


Of course, I team teach and do special lessons, etc.


But my best work in the classroom is after the lesson is over --
going one-on-one,
helping individual students with their assignments.


It's kind of like with computer programs, walking the client through hands-on.
The job isn't really done until the customer is using the program.


Monday, May 22, 2017

journal 20170522

So I think I'll start posting parts of my work journal.

I'm still spinning my wheels.

My last contract ended in March.

In complete rejection of logic and reason, I have not been burning myself out to find a new job.

I have a series of novels I want to write.

Nobody but my oldest sister is reading them.

After the contract ended, I've been stuck on a little side-tour.

I needed to calculate the calendar of the world where the first several stories take place.

Then I got really interested in the puzzle of adding double integer divide to the base wordset of the programming language Forth.

Last week, I pretty much proved to myself that there are no easy, fast, deterministic methods for division, the way there are with multiplication.

Not a mathematical proof, just finding a difficult problem that no one else seems to have solved.

We humans intuitively use estimates when we divide large numbers.

We have the multiplication tables memorized, and we use those tables in division.

When doing this in computers, those tables can become larger than the entire memory of the old 8-bit processors.

The Forth that needs the double length divide is an 8-bit CPU implementation.

Fortunately, the size of the table depends on the numeric base you operate in.

The table for one digit of decimal math is not really big, only 100 elements:


But we are not talking about one digit of decimal math.

The smallest table we can do without using bit shifts is a table for one column of base 256 math.

ビットシフト演算なしで一番小さい表はなんと 256 進法の一桁の表です。

That means a table 256 wide and 256 deep. That's 65,536 16-bit integers.
つまり、 256 桁の 256 行の表です。 65,536個の 16 ビットの整数です。

I'm not going to reproduce that here, because I'm pretty sure it would give your browser fits, not to mention what it might do to blogspot's template engine.


(Blogspot might accuse me of trying to DOS them, and you might accuse my of DOSsing you.)

Now the problem is the shifts. Left shifts are just doubling, so they are pretty cheap. It's just an addition.

Unless you have actual bit shifts, shifting to the right is expensive, requiring a division.

It's a relatively cheap single-wide division, so it's not a chicken-and-egg problem, but even single-wide divisions take a long time on old microprocessors.

Addition on old microprocessors takes maybe ten microseconds. Division takes easily 200 times that.

It's possible to use scaling to reduce the amount of math required without the tables, but scaling requires shifting as well.

Binary division is different. This is all there is to the table:


And binary division is just shifting, subtracting, and counting.

It's slow, but it's straightforward.

So, if I have to use shifts anyway, I may as well go down to the machine level and implement the division in assembler anyway.


I have the program running, and it produces monthly calendars for the planet that I think are accurate. The source can be found, complete with the code for dividing double integers, in my Xhilr Calendar workspace at OSDN Japan.
暦作成のプログラムは稼働できます。その惑星の正確性在るとボクが思っている月毎のカレンダーが作成できます。倍幅割り算を含めたソースコードをボクの OSDN Japan 上の Xhilr Calendar 作業部屋に置いています。


This is not the way a sane person spends his time when he needs to be finding a new job, you know.

Last Sunday, I went to the special stake conference in Kõbe and listened to Elder Oaks and other Church leaders.

I'm feeling much less down.

Monday, May 15, 2017

Do Not Pay the Modern Danegeld! -- Ransomware

Yesterday, I read in the paper how ransomware has been spreading.

It would be easy to waste electrons castigating Microsoft for leading the establishment of impossible-to-secure software as industry standards.

(The words "unsafe at any speed" make me wonder why Nader has been mostly silent about the current computer industry.)

It is true that software, including operating systems, is not exempt from the mathematical principle that absolute security is an internally inconsistent concept.

But the habit of the industry has been to rely on lack of education rather than actual prevention.

This combined with excessive competition for the market has led to unsafe practices built on unsafe features built on unsafe practices.

We all know that our information devices are unsafe -- impossible to secure. (Or, if you do not, you have been deliberately closing you eyes. Perhaps you think there is nothing to do about it.)

So, now someone you know is looking at a message on his or her screen:

Pay up or lose your precious data!
You seriously can't be thinking
$300 is cheaper than losing my mail archives and address book!
Let me put the real costs in front of you:

Every dollar you give in ransom is the price of one bomb or landmine, small enough to hide, large enough to kill and maim humans and animals, large enough to destroy or disable cars, trucks, roads, communication lines, etc.

Every bitcoin paid in ransom is 1,700 such bombs.

And if you pay it now, you will be faced with paying it again.

What should we do?

Step back, take a deep breath, let common sense flood back into your brain.

  • Do you have backups?

If not, now is the time to start planning.

  • Can you reconstruct the data?

Re-constructing the data may take time, but if you can't reconstruct your data, it was never yous in the first place.

("Big Data" is a comfortable illusion with some substantial features, but you really should be honest with yourself about that. Money doesn't really grow on data trees, whether binary, b-star or otherwise.)

  • Okay, you have partial backups -- USBs, dropboxes, cloud services, etc. 
  • And you can reconstruct the most important data, if you are willing to take the time. 

So, no, the data that has been locked away from you is not worth continuing to arm the enemy.

  • First step, shut that computer off. 

If you have reason to believe that the ransomware will try to delete data on shutdown or some such stupidity, pull the plug and the batteries.

Your local geek may be worried about data loss on shutdown, but the converse is also a problem. Hiding is easy, but encryption takes time.

Remove all hard disks, SDs, and USB storage devices that were attached when the malware showed up, and collect all external storage that has been attached to the infected device in the past week, at least.

Learn something about security. Do not depend on books with names like "Security for Dummies." Dummies are soon chumps, and that's how you got in this mess.

Yes, I should write a book. Somebody front me the money. Oh, well, that's not happening very soon.

Two of my blogs, free is not free, and defining computers have some useful information, but some of it is old, and both mix rants, daydreams, and parable with practical advice.

So use your own brain. Here's a start:
  1. Think about what secrets are. 
  2. Think about what computer data is.
  3. Think about walls and locks
  4. Think about protocol.
Think about what the limits of the above are without computers. Then convince yourself that computers are not magic. Fast and re-writable, but not magic.

I'll list a few really relevant rants:

Back to practical steps:

  • Re-flash the BIOS of the infected device. 

If you don't do that, you're likely to get re-infected. BIOS attacks are becoming commonplace, and the ransomware attacks are at that level.

(And, yes, there are indeed huge problems in the new BIOSses. Reflash or buy new, but buying new is a problem, too.)

  • Install new boot and other internal media (new hard disk or SD for boot and data) and install a new, safer OS.

I'd recommend a Linux OS such as Debian, Ubuntu, or Red Hat Linux, but, really, the marketplace has been infecting those with unsafe applications, practices, and features for the last fifteen years.

Eventually, I want to recommend installing a Linux or BSD OS and installing MSWindows in a VM on top of that, but that is not yet ready for prime time, and Microsoft and Intel seem to think they have financial incentives in working behind the scenes to make that not happen.

If you have to use a Microsoft OS, just don't keep important data on it, especially not without backup.

  • Make a plan about where to store your data.

As much as it galls me to say so, yes, I'm suggesting NAS and cloud if you have any really valuable data.

At bare minimum, keep copies on USB drives that you properly unmount before removing. (Click the "remove" button and wait until the OS says it's okay.) And do not keep the USB drive inserted in the computer while you work.

Do not keep any valuable data on your workstation. (I say, but I can't afford to do otherwise right now. I'll have to take my own advice and collect my data onto an external device, as soon as I get some résumés sent out. But I'm using an OS I'm fairly confident I can still trust.)

  • Take a little time to review what you think you know about computers on a regular basis. Learn an alternative OS.
  • Take time to understand your data, what you have, and what it's worth.
Now that we have that out of the way, now is the time to think about recovering that locked-up data.

  • First, mount the media device (hard disk, SD, USB) on a known-safe machine. 
  • Then look around and see what was actually encrypted and what was just moved somewhere.
  • Then go look for tools for un-erasing data. The attackers may not have encrypted the partitions, and probably has not tried to find deleted files to encrypt. So you will likely be able to recover up until the last save, even if the encryption really is unbreakable.
  • Finally, if you still have data that is highly valuable and not recovered, now you know how much you will be willing to pay a legitimate professional to try to get it back by brute-forcing the encryption keys.
That last list is the one you wanted me to tell you first. But that would not be helping you to be secure the next time, and the next time is already waiting for you.

Thursday, May 11, 2017

Visions and Pioneering and Responsibility to Family

I was talking with some members of the Forth community on comp.lang.forth about using floating point numbers in a Forth language, and thinking about how I really don't much care for floating point math in programming languages.

Arbitrary precision is much more what most people want. It's a little slower than floating point, but it has fewer surprises. (There are still some surprises induced by the fact that computers do not easily extend precision, where we on the other hand are quite happy to grab another piece of paper and keep going until our wrists get sore or we fall asleep -- or get bored.)

Fixed precision is much faster and much lighter on computer resources. With 64 bit math on modern computers, we can easily do math to 18 decimal places. That would cover most peoples yearly budgets, easily.

But, for all that fixed precision would cover most daily calculation needs, it requires us to keep track of precision ourselves. That's why arbitrary precision and floating point are useful.

Floating point would be a bit easier if it weren't for all the bit fields that have to be extracted from memory that don't fall on easily addressed boundaries.

Then I had this idea about having the exponent be in one integer and the fractional part be in another. That would give ridiculous range for 16-bit CPUs (like 10 followed by more than 16,000 zeros). The fraction part would give us one part in 65536, or a bit more than four digits on the right of the decimal point, which isn't enough for some things, but is plenty for others.

On 32 bit CPUs, the range would be even more ridiculous, but we would have about nine digits on the right of the decimal. Which is why floating point fields don't fall on even boundaries.

On 64 bit CPUs, the range would be beyond ridiculous. Billions of zeros. But the fractional part would be more than 18 digits, which is pretty decent.

The discussion on comp.lang.forth focused on the problem of knowing just how wide a floating point number on the top of the stack of recently used numbers is. When working on the stack, you need to know the size of the numbers that are on the stack so you can get them off the stack and get around them to other numbers, and so forth.

It occurred to me that a floating point number that could tell the programmer how wide it is would be rather useful.

And this first-blush byte format came to mind, just before I went to bed:

8888 8888
length = 0
(8 bits)
exponent (24 bits)fraction (32 bits)

And, in fact, it kept me up a bit, re-thinking things:

8888 8888
(high bit),
length = 0
(7 bits)
exponent (24 bits) fraction (32 bits)

And then it was

8888 8888
(high bit),
length = 0
(7 bits)
(8 bits)
(16 bits)
(high bit),
length = 1
(7 bits)
exponent (24 bits) fraction (32 bits)

Where length of 0 would be a special case, with the whole floating point number contained in a single 4 byte (32 bit) unit.

From length 1 on, the length would be the count of 32 bit units containing the fractional part (or mantissa, I have to figure out details later), and the three bytes after the length byte would be the exponent.

Checking the IEEE floating point specs on Wikipedia, none of the most common formats have more than 15 bits of exponent. The standard 32-bit format has only 7 bits of exponent, and the standard 64-bit format has only 11 bits of exponent. So 24 bits of exponent is plenty.

Maybe I can scrape the top two bits of the exponent off for flags of some sort. 22 bits of exponent still gives an exponent range of 10 followed by two million zeros.

Speaking of zeros, being able to specify up to 127 times 32 bits of mantissa means ( 127 × 4 == 508 bytes, or 1016 nibbles) better than 1100 decimal digits worth of accuracy in decimal terms.

That's going to be enough to satisfy most mathematical needs for primary grades through college, except for certain engineering purposes.

Mathematically, it's a loose fit, but, with everything falling on nice byte boundaries, it's going to be a lot less work up front.

A similar approach could be used for decimal or other base digits, which is something to think about later.

It will be a little slow, since it will be implemented in software, but you can extend the numbers, mid calculation, to avoid losing precision.

And, randomly associating, a similar approach could be taken with text strings, if we had a better way of representing numbers in the middle of text (a topic which I really want to rant on sometime).

You can probably get a sense of what this has to do with pioneering (ergo, new or less-explored computer/data techniques), but what does this have to do with visions and responsibility to families?

I really should not be typing this.

I really should be running around like a chicken with its head cut off trying to scrounge up work for when my savings runs out in another month.

I am being irresponsible.

I woke up this morning at three thirty, still thinking about this stuff.

And I was thinking about Nephi, in the Book of Mormon, 1 Nephi 17: 9, asking God where to go to get ore to make tools to build the ship with.

Now we have to understand the story. Nephi had been helping his father get their families moved across the desert towards the sea. He had done his part in making sure that the women and children had enough to eat. They had found a nice place on the sea shore to settle down and maybe be safe from the Babylonians and others whom the prophets had been foretelling would be coming to take Jerusalem down for real this time.

Now, he was getting inspired to take the whole group on a long adventure into the unknown, across the sea to a land he and his father had seen in dreams.

His older brothers were upset, and we can understand why.

I am being inspired to take my family on a long adventure into uncharted territory with my writings and other dreams, visions, fantasies, and delusions such as the above. My family is understandably upset.

(Delusions. Ask pretty much anyone, and they will tell you that someone like me should not working with all the wonderful technology that is out there for the using. We have floating point. We have arbitrary precision math. We have the Unicode character set. We have programming languages and CPUs.

What need have we of more of these?

(Other than that it is a deliberate mess, designed to keep the riff-raff like you and me from using it to make the world a better place.)

Well, Nephi asked God where he should go to get ore for tools.

I have been asking God where I should go to get funding.

There is a bit of difference.

Nephi had done his part in securing food and a place for his family. My family and I are on the brink.

He was looking for ore for tools. I am looking for money for a place, for food, and for tools.

This is scary business.

Visions, pioneering, and responsibility to family.

Tuesday, April 18, 2017

Why Tarō Can't Communicate -- 太郎は人の話が通じないのは何だ!

(Test Question -- 試験問題)

Choose the correct answer:

(1) What is your job?
  A: My job is an English teacher.
  B: I teach English.
You've seen this in the newspaper ads:
× A: My job is an English teacher.
○ B: I teach English.
But this is wrong.

Here's the real answer:
△ A: My job is an English teacher.
○ B: I teach English.
Here's an even better answer set:
△ A: My job is an English teacher.
○ B: I teach English.
○ C: I am an English teacher.
○ D: My job is teaching English.
△ E: My job is to work as an English teacher.
○ F: I work as an English teacher.
It is true that A is not the best phrasing for the assumed intent. 確かに A は推測の意味にしては、最適な言葉並びではありません。 It is also true that E is way too wordy. E は正に言葉が多すぎます。 But they are not without meaning. しかし、意味がないとはいえませんし、 and the assumed intent is within the range of possible interpretations. その推測の意味は可能な解釈の範囲の内に入ります。

The best interpretation of 
My job is an English teacher.
would be something like
My job is something that teaches English.
and this is not incompatible with the assumed meaning.

My job is an English teacher.

There is a problem of semantics.

A job is a thing and an English teacher is a person.

So it makes a person seem to be a thing.

So it would not be the preferred expression.

Not totally wrong, but not preferred.

But you can't explain this when you are focused on preparing students for the test. There's no time.

And this is the problem.

Too much of current curriculum is focused on tests.

Tests cannot test everything like this. Therefore, they cannot teach everything like this.

Students need time to read things that there will never be time to test.

And they need time for discussion, time to talk about the things they have learned.

If there's too much test prep homework, there's no time to learn.

That's why Tarō can't communicate.

More on this subject here:

Friday, April 7, 2017

The Danger of Charity

I have been seeing bits and pieces of this news about rejecting homeless shelters, and I am feeling no small shame and anger at my fellow Utahns. Community after community is rejecting the building of shelters and other facilities for those who are less fortunate than themselves.

If it were rejecting homeless shelters in order to use the money for providing more people with meaningful work where they can earn enough to pay the rent and feed their families, I could maybe see that. But I don't think that's what's happening.

Dawn Armstrong posted a gentle plea to people everywhere (and especially in Utah) to quit trying to keep the homeless people at a safe distance.

I know that's an awkward way to interpret things, but it's what you are saying when you say you don't want a homeless shelter in your neighborhood:
Keep them at safe distance!

Is homelessness a disease?

Are they somehow tainted by their association with the road?

Or is it that they must have done something terribly wrong to warrant losing their homes, and you, heaven forbid, should not have to associate with people like that?

Maybe you think of the Brian David Mitchells out there. Somebody posted such a comment on Dawn's blog. I think, maybe, I overreacted in my comment on that post. Dawn was much kinder.

Maybe I'm overreacting still, posting this in my blog.

But, statistically speaking, your family is no safer with, say, your business associates, neighbors, friends, relatives.

Most abuse is perpetrated by people who are known by the victim.

I think that's why Jesus finds no moral quandary in teaching us to be good Samaritans. Avoiding the good deed makes us no safer.

(If I had time, I'd work out a lengthy discussion of why charitable behavior ultimately makes the world safer for both your children and you, but it's two in the morning here.)

Would I be playing too rough if I questioned whether you were more concerned about your property value than with your family's safety?

They. The homeless. Dawn is not the only one for whom the "they" means "we".

If you'll stop for a moment's sober reflection, you'll remember that the only thing that stands between you and them is a little luck. If you can stand to admit your dependence on deity, there, but for the grace of God, go we.

The disease which is destroying our modern world, the source of the violence that expresses itself in terrorism and the conundrum of religious warfare is precisely the us vs. them approach to economics, and to life in general.

Them is us. They are we.

[JMR201704071335 added:]

I know it's easy to be scared. But if they are not safe, neither are we. Nor ours.

[JMR201704071335 end-added.]

Tuesday, March 14, 2017

"We Only Contact Applicants Who ...."

I don't like to sell myself. Somehow, I think the work I do is more important than who I am. That doesn't make sense, of course, because the work that I do is who I am, or, at least, is the expression of who I am.

What do Steve Jobs, Bill Gates, and Donald Trump have in common with Willy Loman? What does success really mean? Why should people sell success or buy it?

Anyway, teaching English in Japan is not a job for people who don't like to sell themselves. Sure, you can (contrary to my earlier understanding) get certified. But then you are stuck with a different job, one which is mostly neither teaching nor English.

(In some senses, it could be called glorified babysitting, but that's too many distractions in one rant.)

If you don't get certified, you end up having to renew your contract every year, because Japanese laws don't allow the company to keep renewing a temporary contract. After three years, they have to take you full time or tell you to move on.

That's not exactly what the law is supposed to say, but that's the effect.

My interpretation is that that law essentially attempts to protect the jobs of the people who do meet the "qualifications" and get hired as full-time, permanent employees.

And I personally think that the correct solution is to kick the illusion of security to the curb and get rid of the permanent employee status. Any company can fold, and, when it does, everyone finds out their job was just temporary.

Anyway, I spent all of last Friday working up an on-line résumé on a job search site called Gaijinpot that specializes in foreigners who want to work in Japan. This morning, I realized I had let the nicely done (if slow) interface lull me into regurgitating my work history, which is not what I wanted the companies I applied to last Friday to see. It does not tell them that I am focused on teaching.

Okay, I'm not focused on teaching. I'm focused on writing a novel, now. And having to look for work is a serious distraction.

(This is the common complaint of artists everywhere, but, again, that's too many distractions for one rant. And the distraction is not actually a bad thing unless I let it be a bad thing. Distractions actually help creativity. Even though they push the finished product further off into the future, they help refine the product.)

I need to make a copy of my résumé for backup and clean it up, refine the focus, sell my accomplishments.

(I have a focused résumé online, uhm, that is, relatively speaking, focused. For me, it's focused. :-/)

Well, I realized something else this morning, something that moved me to rant mode:

All three companies said they would only contact those applicants whose résumés passed their initial screening process.

That means I have no way of knowing that they even got my résumé. For all I know, Gaijinpot's server may have gone temporarily off-line, and that error message I got about the server timing out may really mean that my résumé was never sent.

Without some sort of confirmation that the submitted résumé actually made it to the company I intended to submit it to, I have no way of knowing they even got it. I can only wait for an event I have no reason to believe will actually happen. And I don't know how long I should wait.

This is bad information protocol. A program written this way would die on you every time you turned around.

Well, I can call and bug them about my résumé. All the counseling about job search tells you to follow up, anyway, so I really should follow up:
Me: Did you get it?

HR: We said we'd contact you if we want to interview you.

Me: Oh. Sorry. That's not what I read. I read that I should assume that you really didn't want to see my résumé at all.
Okay, so asking, "Did you get it?" is probably the wrong way to start.

But submitting the résumé on-line to a company that says they won't respond unless they want to respond is probably not the best thing to do, either.

Should have reviewed my résumé before I sent it.

And I should have sent it directly. After calling them first. I should know this, considering the number of training sessions I've been through.

(But I've never actually gotten a job doing it the way the training sessions tell you, which means that the one thing you should never do in a job search is rely on some sort of set procedure. Which means that software and job search are not a good match, after all.)

Maybe I can make sending the wrong copy an excuse to sent a decent copy instead. We'll see.

Job search sites really, really should provide, in their web UI, some sort of feedback button that the HR person can hit to send an e-mail saying, at bare minimum, "Yes, we did get the résumé, and if we don't reply within n days, you should assume you didn't pass the first screening."

A company whose HR department can't provide bare minimum information exchange protocol may not be worth applying to.

Except that that is precisely the sort of company that currently owns the market for foreign English teachers in Japan. Which is one of the reasons I want my novel to find readers -- so I can hope it will find buyers if I finish it.

If I can't hope to pay the rent with my writing, I should focus on teaching, in spite of the non-optimal stuff that I have to put up with in order to do so.

Speaking of my novel, here's the current (second) draft in progress again:

And here's the (roughly) two-thirds-complete first draft:

If you like it, tell your friends about it. Don't worry about whether the publishers will be scared away, if I have to, I'll self-publish. Maybe start with an electronic edition and a link to my paypal account if I can't find something better.

If the IRS hasn't found a way to throttle that, too.

But if I know people are reading it, I will find some way to properly publish it.