An Effective Way to Learn Kana

The most effective way I’ve used to learn kana (hiragana and katakana) is to write out tables of them. I believe any table will work if you stick with it, but I tried to find the official “alphabetical” order which led me to this japanese stackexchange post.

I was soon (in a couple of days) able to write all the kana from memory. I suspect that this is because I can make more/better associative memories against the position of kana that I do remember when I forget one.

Try it out. Worked well for me.

Background

In case you’re wondering, I’m not completely new to japanese, and so it’s possible that my previous experience makes this table thing more effective than it would be for a complete beginner. However, I suspect that it’s the recalling position of the characters that makes this technique more effective, and so I think it will be effective for a complete beginner as well. But so that you can get a feel for my experience, I give you some background.

I only tried a couple ways to learn kana, and fortunately this one worked out. I did take one semester in beginning japanese many years ago (which I’m not counting as these couple ways of learning kana). Then, several months ago, I decided to start seriously teaching myself japanese.

Rosetta Stone

At first I tried Rosetta Stone’s Totale Japanese. That was fun, but it’s very slow, and it would probably have been much slower if I hadn’t already had a course long ago. I used it several hours a week for about two or three months and only learned a few kana. That’s probably partly because of how I used it.

At first I tried matching up the sounds with the characters (kana and kanji), but grew impatient and just started clickin the pictures as soon as I figured them out. Now, my ability to match up sounds to characters was facilitated by my japanese course from long ago. I bet that a complete beginner wouldn’t be able to do that very efficiently, it would probably take them many times the amount of time it took me. I have a friend who was in that situation, and he said it was stupid because he didn’t understand a thing – I take this as evidence for my view.

Anki

The next thing I tried was using flashcards. I checked out all kinds of japanese flashcard apps, mostly for iPad, but I ended up using Anki (free, any computer), and it’s pretty awesome. There’s this shared deck that you can download for japanese kana (free), and I’ve been using it for a while now.

At first, I was just clicking through, and trying to memorize and recall from my memory, but I could tell right away that I needed to write the characters in order to memorize them faster. So whenever a sound description comes up, and you’re supposed to recall the character, I write it as the test to see if I remember it. I also supplemented this with the kana page on japanese.about.com so that I could learn proper stroke order.

I really like Anki, and I was learning the characters fairly quickly, but I kept forgetting characters too.

So…

After a while of that, it occured to me that sometimes, I visualize the English alphabet as a long line of characters, and I vaguely remembered times where I’ve used tables or (to put it even more abstractly) where I was able to remember the location of an object, which helped me remember the object itself. So that’s when I decided to find an official table of kana to memorize. Lucky for me, it works!

As you can see, I have had prior experience with kana before using this technique, so for a complete beginner, I don’t think we can expect they are able to write all the kana from memory after just a couple days (actually a few hours – I didn’t study all day), but I still think it will be a pretty fast and effective way for anyone to learn and memorize kana.

Specialized Search

I’ve been thinking that web search engines like google have come to a point where it is no longer possible for them to provide the results you’re looking for, and that specialized searches will become necessary. I finally have a good example of what I mean.

Ok, I was trying to find out if multiple images could be specified in a PDF document such that only one of the images would be selected based on the resolution of the device. So, I plugged in many searches along the lines of “pdf multiple image resolutions” into google. Here’s the result:

I tried cutting out the term “super” because most of the articles are about super-resolution. That gives us:

No good. Now you’re only seeing a few of the search terms, but several pages in still yields nothing.

A different line of searches adding in the term “resource” gets me a lot of articles about android and iOS development. That makes sense, because that’s where I got the idea for the term – in mobile development, you specify different image resources to support different screen sizes.

I tried pruning the android and iOS results. Still no luck.

Finally, I decided to try searching on Adobe’s site, limiting to results for Acrobat products. The first result is highly relevant.

So I hit that link and search the page for the phrase identified in the search result, and I notice a certain term being used for this “alternate image”.

This hasn’t told me what I’m looking for, but now I have a new term to hit google with. I still have to dig a bit – the result I’m looking for is on page 2 – but I’m able to find it.

Unstructured Data Processing

I was just thinking about big data and it gave me an interesting thought. Big data is trying to understand unstructured data, but even people don’t understand unstructured data. I’m thinking about the shortcomings of language. A man has a thought, and he wishes to make another man have it. He says some words to express the thought, or writes them down. But quite often, the thought is not conveyed because the other man interprets the language differently than the first man intended or hoped for.

If only we could devise some more powerful form of communication.

Risk, Laughter and Women

I recently started hunting lovers on a dating site, and the most remarkably common thing women are looking for in a man is a “man who can make me laugh.” My mind wondered, and it struck me – risk is important for survival. If you don’t take risks, you die. Maybe you die taking risks too, but as Zuck says, the biggest risk is not to take any risk.

That’s all for now, but take a look into it. I did a quick search and found an article from ’99 on this subject. Le shmeow: The Relationship Between Humor and Trust. Hampes, William P.

Windows Web Services Options

I was wondering, the other day, what options there have been for developing web services on Windows. I did a little research into the question, and here is what I came up with. But first, thank you, darnold924 of msdn for helping.

When asking what are the options for web service development on Windows, we first must understand what a web service is. A web service is basically any application that operates primarily by commands received over a network. Although, some use the term to refer specifically to a service that is operated over the Internet. So, basically any network communication mechanism in Windows is an option for development of a web service.

There are four major network communication platforms in Windows, today (June 2012), that allow you to make an HTTP web service. They are

  1. Winsock
  2. HTTP.sys
  3. ASP.NET
  4. WCF

WCF is considered the current technology, and the others are legacy – in the .NET world, at least. I’m not sure if HTTP.sys is considered legacy technology; for example, what if you want to create a native web service?

Also, we must remember that there are cross-platform options, for example, the networking platforms of Java. I imagine there are also third-party options, but I haven’t seen any and haven’t looked into it.

Winsock

Windows Sockets API. This is the earliest networking stack in Windows that I have learned of. It’s a general networking library, very low-level, providing little or no “web server” functionality. Winsock is a user-mode component.

So with Winsock, you could setup a simple C++ application that listens for commands on a network socket.

HTTP.sys

Hypertext Transfer Protocol stack. This is the first Windows stack offering “web server/services” functionality – i.e., more, deeper, built-in support for HTTP-based applications. It runs in a kernel-mode device driver.

So HTTP.sys is similar to Winsock except that you now get support for things like HTTP requests, responses, messages, etc.

ASP.NET

.NET’s original web application development platform – ASP.NET. Technically, it’s not a network communication platform, but it does have a component designed for building HTTP web services. ASP.NET is largely about abstracting the statelessness of HTTP, so you program more like you’re writing a standalone application. It is also IIS-based, which the previous web service facilities are not.

So with ASP.NET, you get the support of a full-blown web server.

WCF

Windows Communication Foundation. This is .NET’s general network communication platform, introduced in .NET 3.0. It supports development of both IIS-based and non-IIS-based web services.

I think the main advantage of WCF, here, is that you get a uniform development experience for many kinds of web services, including HTTP-based and other protocols. Also, you get the power of .NET, but you don’t have to run in IIS if your application doesn’t call for that.

More on WCF

There are two major options for WCF HTTP web services, SOAP-based and REST-based. Also, WCF can have WCF Web, MSMQ, Named Pipe and TCP services.

Questions

Can you have a web service built directly on top of IIS, bypassing the .NET Framework? Would there be any advantage there?

Is there a native technology (not .NET-based) that is considered current and not legacy?

How important are the cross-platform options?

Are there any third-party options that are big players?