<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The GITS Blog</title>
	<atom:link href="http://ginstrom.com/scribbles/feed/" rel="self" type="application/rss+xml" />
	<link>http://ginstrom.com/scribbles</link>
	<description>Random scribbling about programming, translation, and Japan</description>
	<lastBuildDate>Sun, 07 Mar 2010 08:38:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Simple Ajax with cherrypy and jQuery</title>
		<link>http://ginstrom.com/scribbles/2010/03/07/simple-ajax-with-cherrypy-and-jquery/</link>
		<comments>http://ginstrom.com/scribbles/2010/03/07/simple-ajax-with-cherrypy-and-jquery/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 08:27:04 +0000</pubDate>
		<dc:creator>Ryan Ginstrom</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://ginstrom.com/scribbles/?p=1503</guid>
		<description><![CDATA[All the cool kids these days are putting Ajax into their web applications. Ajax is great for when you want to update data on a page without reloading the entire page. Most of the Ajax tutorials use PHP, so I want to show here how easy it is to do Ajax with cherrpy.
Ajax stands for [...]]]></description>
			<content:encoded><![CDATA[<p>All the cool kids these days are putting Ajax into their web applications. Ajax is great for when you want to update data on a page without reloading the entire page. Most of the Ajax tutorials use PHP, so I want to show here how easy it is to do Ajax with <a href="http://www.cherrypy.org/">cherrpy</a>.</p>
<p>Ajax stands for "asynchronous JavaScript and XML," but these days <a href="http://www.json.org/">json</a> is often used as a lighter-weight alternative to XML. In this tutorial, I'm therefore going to show how to use the python <a href="http://pypi.python.org/pypi/simplejson/">simplejson</a> library to enable communication between python and JavaScript using json.</p>
<p>What you will need for this tutorial:</p>
<ul>
<li><a href="http://www.cherrypy.org/">cherrpy</a></li>
<li><a href="http://pypi.python.org/pypi/simplejson/">simplejson</a></li>
<li><a href="http://jquery.com/">jQuery</a></li>
<li>The <a href="/code/ajax_cherrypy_sample.zip">sample project</a></li>
</ul>
<p>You can get cherrypy and simplejson from pypi via easy_install; there's a copy of jQuery in my <a href="/code/ajax_cherrypy_sample.zip">sample project</a>. The sample project consists of three files, in the following structure:</p>
<pre>
ajax_app.py
media/
  + jquery-1.4.2.min.js
  | index.html
</pre>
<p>First, I'll show the HTML file:</p>
<div class="dean_ch" style="white-space: wrap;">
&lt;html&gt;<br />
&lt;head&gt;<br />
&nbsp; &nbsp; &lt;title&gt;AJAX with jQuery and cherrypy&lt;/title&gt;<br />
&nbsp; &nbsp; &lt;script type=&quot;text/javascript&quot; src=&quot;/media/jquery-1.4.2.min.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot;&gt;<br />
&nbsp; &nbsp; $(function() {<br />
&nbsp; &nbsp; // When the testform is submitted&#8230;<br />
&nbsp; &nbsp; $(&quot;#testform&quot;).submit(function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; // post the form values via AJAX&#8230;<br />
&nbsp; &nbsp; &nbsp; &nbsp; var postdata = {name: $(&quot;#name&quot;).val()} ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; $.post('/submit', postdata, function(data) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // and set the title with the result<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $(&quot;#title&quot;).html(data['title']) ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});<br />
&nbsp; &nbsp; &nbsp; &nbsp; return false ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; });<br />
&nbsp; &nbsp; });<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&nbsp; &nbsp; &lt;body&gt;<br />
&nbsp; &nbsp; &lt;h1 id=&quot;title&quot;&gt;What's your name?&lt;/h1&gt;</p>
<p>&nbsp; &nbsp; &lt;form id=&quot;testform&quot; action=&quot;#&quot; method=&quot;post&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;label for=&quot;name&quot;&gt;Name:&lt;/label&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; id=&quot;name&quot; /&gt; &lt;br /&gt;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;submit&quot; value=&quot;Set&quot; /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/p&gt;<br />
&nbsp; &nbsp; &lt;/form&gt;<br />
&nbsp; &nbsp; &lt;/body&gt;<br />
&lt;/html&gt;</div>
<p>Let's see what this is doing. In the body, you've got a title tag, and bog standard HTML form, which asks for a name.</p>
<p>In the head, you've got an include to the jQuery library, and the following JavaScript code:</p>
<div class="dean_ch" style="white-space: wrap;">
&nbsp; &nbsp; $<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="co1">// When the testform is submitted&#8230;</span><br />
&nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;#testform&quot;</span><span class="br0">&#41;</span>.<span class="me1">submit</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// post the form values via AJAX&#8230;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> postdata = <span class="br0">&#123;</span><span class="kw3">name</span>: $<span class="br0">&#40;</span><span class="st0">&quot;#name&quot;</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#125;</span> ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; $.<span class="me1">post</span><span class="br0">&#40;</span><span class="st0">'/submit'</span>, postdata, <span class="kw2">function</span><span class="br0">&#40;</span>data<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// and set the title with the result</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;#title&quot;</span><span class="br0">&#41;</span>.<span class="me1">html</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span><span class="st0">'title'</span><span class="br0">&#93;</span><span class="br0">&#41;</span> ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span> ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
<p>The initial <code> $(function() </code> statement is a jQuery construct that says, "When the page loads, execute this anonymous function." That function then creates a callback for the submit event of the element with id "testform" (the form). When the form is submitted, the jQuery <code>post</code> function is executed, which is where the magic happens.</p>
<p><a href="http://api.jquery.com/jQuery.post/">jQuery.post</a> is an Ajax method. The first argument is the URL to post to ("/submit"); the second argument is the data to send in the post (the "name" value from the form); and the third argument is the callback to call with the data we receive from the post.</p>
<p>The function then takes this data, and uses its "title" element to update the title of the page.</p>
<p>Next, here's the ajax_app.py file:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">import</span> cherrypy<br />
<span class="kw1">import</span> <span class="kw3">webbrowser</span><br />
<span class="kw1">import</span> <span class="kw3">os</span><br />
<span class="kw1">import</span> simplejson<br />
<span class="kw1">import</span> <span class="kw3">sys</span></p>
<p>MEDIA_DIR = <span class="kw3">os</span>.<span class="me1">path</span>.<span class="me1">join</span><span class="br0">&#40;</span><span class="kw3">os</span>.<span class="me1">path</span>.<span class="me1">abspath</span><span class="br0">&#40;</span><span class="st0">&quot;.&quot;</span><span class="br0">&#41;</span>, u<span class="st0">&quot;media&quot;</span><span class="br0">&#41;</span></p>
<p><span class="kw1">class</span> AjaxApp<span class="br0">&#40;</span><span class="kw2">object</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; @cherrypy.<span class="me1">expose</span><br />
&nbsp; &nbsp; <span class="kw1">def</span> index<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">open</span><span class="br0">&#40;</span><span class="kw3">os</span>.<span class="me1">path</span>.<span class="me1">join</span><span class="br0">&#40;</span>MEDIA_DIR, u<span class="st0">'index.html'</span><span class="br0">&#41;</span><span class="br0">&#41;</span></p>
<p>&nbsp; &nbsp; @cherrypy.<span class="me1">expose</span><br />
&nbsp; &nbsp; <span class="kw1">def</span> submit<span class="br0">&#40;</span><span class="kw2">self</span>, name<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; cherrypy.<span class="me1">response</span>.<span class="me1">headers</span><span class="br0">&#91;</span><span class="st0">'Content-Type'</span><span class="br0">&#93;</span> = <span class="st0">'application/json'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> simplejson.<span class="me1">dumps</span><span class="br0">&#40;</span><span class="kw2">dict</span><span class="br0">&#40;</span>title=<span class="st0">&quot;Hello, %s&quot;</span> % name<span class="br0">&#41;</span><span class="br0">&#41;</span></p>
<p>config = <span class="br0">&#123;</span><span class="st0">'/media'</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="st0">'tools.staticdir.on'</span>: <span class="kw2">True</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">'tools.staticdir.dir'</span>: MEDIA_DIR,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p><span class="kw1">def</span> open_page<span class="br0">&#40;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; <span class="kw3">webbrowser</span>.<span class="kw2">open</span><span class="br0">&#40;</span><span class="st0">&quot;http://127.0.0.1:8080/&quot;</span><span class="br0">&#41;</span><br />
cherrypy.<span class="me1">engine</span>.<span class="me1">subscribe</span><span class="br0">&#40;</span><span class="st0">'start'</span>, open_page<span class="br0">&#41;</span><br />
cherrypy.<span class="me1">tree</span>.<span class="me1">mount</span><span class="br0">&#40;</span>AjaxApp<span class="br0">&#40;</span><span class="br0">&#41;</span>, <span class="st0">'/'</span>, config=config<span class="br0">&#41;</span><br />
cherrypy.<span class="me1">engine</span>.<span class="me1">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
<p>First, the <code>AjaxApp</code> class is our application. It's pretty simple, having only two methods: <code>index</code> and <code>submit</code>. </p>
<p>When the index method is called, the app opens the index file and returns it. </p>
<p>The submit method is our Ajax method; when it is called with the form data, we use the information to create a new title, and pass that back as json data using <a href="http://svn.red-bean.com/bob/simplejson/tags/simplejson-1.3/docs/module-simplejson.html#dumps">simplejson.dumps</a>. The JavaScript function that called this method can then use the data to update the page content.</p>
<p>This little piece of code is a convenience for development; when you run the cherrpy app, it loads the index page in your web browser.</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">def</span> open_page<span class="br0">&#40;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; <span class="kw3">webbrowser</span>.<span class="kw2">open</span><span class="br0">&#40;</span><span class="st0">&quot;http://127.0.0.1:8080/&quot;</span><span class="br0">&#41;</span><br />
cherrypy.<span class="me1">engine</span>.<span class="me1">subscribe</span><span class="br0">&#40;</span><span class="st0">'start'</span>, open_page<span class="br0">&#41;</span></div>
<p>Finally, the last two lines mount the app, and start up the server. The "config" dict tells cherrpy to serve up static files from the "media" dir in the script's home directory.</p>
<p>If you download the sample project, unzip it, and run ajax_app.py, you should get the following screen (shown here with the name filled in):</p>
<div id="attachment_1506" class="wp-caption alignnone" style="width: 310px"><a href="http://ginstrom.com/scribbles/wp-content/uploads/2010/03/screen1.png"><img src="http://ginstrom.com/scribbles/wp-content/uploads/2010/03/screen1.png" alt="Ajax app -- step1" title="ajax_app1" width="300" height="175" class="size-full wp-image-1506" /></a><p class="wp-caption-text">Ajax app -- step 1</p></div>
<p>Here it is after filling in the name and clicking <strong>Set</strong>:</p>
<div id="attachment_1507" class="wp-caption alignnone" style="width: 310px"><a href="http://ginstrom.com/scribbles/wp-content/uploads/2010/03/screen2.png"><img src="http://ginstrom.com/scribbles/wp-content/uploads/2010/03/screen2.png" alt="Ajax app -- step 2" title="ajax_app2" width="300" height="175" class="alignnone size-full wp-image-1507" /></a><p class="wp-caption-text">Ajax app -- step 2</p></div>
<h3>When to use Ajax</h3>
<p>Ajax is useful when you want to update the page content without reloading the entire page. This is useful for CRUD apps when you want to do things like edit items in place, delete items, or add items.</p>
<h3>When not to use Ajax</h3>
<p>Since Ajax actions don't correspond to URIs, you can't bookmark Ajax actions, send links to friends, or use the back and forward buttons to navigate like in a normal website.</p>
<p>For this reason, avoid Ajax if you want certain application states to be navigable as URIs. For example, if you have a calendar application, and use Ajax to show all the data, the user won't have any way to bookmark an event on December 12th, 2011. Likewise, if you use an Ajax data grid to show tables of data, you won't be able to email your data views to your colleagues.</p>
<p>One middle way is to offer a "permalink" for each Ajax view, which allows for bookmarking, sending links, etc. This still breaks the back-button functionality, but may be worth the trade-off.</p>
]]></content:encoded>
			<wfw:commentRss>http://ginstrom.com/scribbles/2010/03/07/simple-ajax-with-cherrypy-and-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Experts Needed</title>
		<link>http://ginstrom.com/scribbles/2010/03/04/experts-needed/</link>
		<comments>http://ginstrom.com/scribbles/2010/03/04/experts-needed/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 14:15:22 +0000</pubDate>
		<dc:creator>Ryan Ginstrom</dc:creator>
				<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://ginstrom.com/scribbles/?p=1491</guid>
		<description><![CDATA[Commoditization is something that you want to avoid as a service provider. When your services become a commodity, they can be replaced by many other service providers. Then you end up competing almost solely on price.
There are many ways that you can make your services stand out from the crowd so that they aren't a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Commodification">Commoditization</a> is something that you want to avoid as a service provider. When your services become a commodity, they can be replaced by many other service providers. Then you end up competing almost solely on price.</p>
<p>There are many ways that you can make your services stand out from the crowd so that they aren't a commodity; I think that being an <strong>expert</strong> is one of the best. </p>
<p>But becoming an expert isn't easy. It's so hard, in fact, that some people even <a href="http://blog.asmartbear.com/expert-distraction.html">say you shouldn't bother trying to become one</a>.</p>
<p>Becoming an expert is hard because it takes lots of time and effort. Many people will <a href="http://norvig.com/21-days.html">tell you</a> that <a href="http://www.selfgrowth.com/articles/10-Year_Rule_to_Become_an_Expert.html">it takes 10 years to become an expert</a> in a given domain. And that's not all: just putting in the time doesn't guarantee you'll even become an expert. The danger is that you'll reach <strong>competency</strong> after a couple of years, and just coast after that without improving much.</p>
<p>I'm like that with cars. I've been a car owner for over 20 years. I can check the oil in my car, top off the fluids, change a tire in a pinch. But I'm no expert on cars. I don't work on my car on the weekends; I take it to a mechanic. I don't even change the oil if I can avoid it. I've reached a basic level of competency in car maintenance, and haven't been inspired to progress any further.</p>
<p>Interestingly, so-called "natural talent" doesn't seem to play much of a role in becoming an expert. It's almost pure effort and stick-to-it-iveness. Also interestingly, an undergraduate degree followed by a PhD and two-year postdoc seem to be just enough to make you into an expert in some academic field.</p>
<h3>The secret to becoming an expert</h3>
<p>Now I'm going to tell you the secret to becoming an expert. The secret is: follow your bliss. Or to put that another way:</p>
<p><strong>Do what you love.</strong></p>
<p>This kind of sounds like the pitch of some shady late-night motivational speaker infomercial, but this really works. This is what will get you doing whatever it is you're doing for 10 or more years, and will give you the passion to keep improving after you've reached competency. There might be other ways to achieve expertise, but this is the only sure one that I know of.</p>
<p>So how do you know what you "love" &#8212; what you should be devoting your time to becoming an expert in? I like to use a simple test: imagine that you've just won the lottery. You're set financially for life. But you've still got to do <strong>something</strong>, right? What would it be? That's your "bliss" &#8212; that's what you need to do in order to become a real expert and get off the commoditization express.</p>
<p>If I won the lottery (and after I was done with a trip around the world), I'd be studying foreign languages, writing, and programming. These are the things that I really love to do, and the areas where I have the best chance of becoming an expert.</p>
<p>Of course, once you're an expert, barring a knock on your door from Ed McMahon (really dating myself, I know), you'll still have to make that work for you in order to make a living. In my case, nobody was willing to pay me to learn Japanese or write whatever I wanted, so I turned to translation as a way to leverage what I've learned. Likewise, I couldn't find anyone to pay me to write whatever programs I wanted, so I have to program things that other people want.</p>
<p>But the point is that you can make it work for you. The key is to become an expert; there's almost always a way to turn that into a career. It's totally backwards to pick some prosperous-looking profession and try to become an expert in that field. Nine times out of ten, you'll get stuck in the doldrums of competency, wondering why you aren't as successful as you would like to be and why you hate your job so much.</p>
<p>One last word of advice: you can change your mind. Don't be afraid to pursue new interests. The key is to enjoy it.</p>
]]></content:encoded>
			<wfw:commentRss>http://ginstrom.com/scribbles/2010/03/04/experts-needed/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Talk on translation at Japanese high school</title>
		<link>http://ginstrom.com/scribbles/2010/02/08/talk-on-translation-at-japanese-high-school/</link>
		<comments>http://ginstrom.com/scribbles/2010/02/08/talk-on-translation-at-japanese-high-school/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 04:48:01 +0000</pubDate>
		<dc:creator>Ryan Ginstrom</dc:creator>
				<category><![CDATA[freelancing]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://ginstrom.com/scribbles/?p=1484</guid>
		<description><![CDATA[Last week, I gave a talk at Naha Nishi High School about the translation profession, as well as language learning and some of my experiences in Japan. The talk was arranged through an educational company called Kids Corporation.
Although my talk was in Japanese, the students emceed the presentation in both English and Japanese, and I [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, I gave a talk at <a href="http://www.nahanishi-h.open.ed.jp/">Naha Nishi High School</a> about the translation profession, as well as language learning and some of my experiences in Japan. The talk was arranged through an educational company called <a href="http://www.kids-21.co.jp/">Kids Corporation</a>.</p>
<p>Although my talk was in Japanese, the students emceed the presentation in both English and Japanese, and I was impressed by their English ability.</p>
<p>I spoke for a little over an hour, followed by questions from the students. They also gave me a lovely bouquet of flowers! The kids' questions were really smart, and showed that they're interested in the translation profession. Below are two of their questions, and my answers.</p>
<p><strong>What do you like best about being a translator?</strong></p>
<p>My favorite things about being a translator are probably:</p>
<ul>
<li>Freedom: I get to work at home, live in Okinawa, and set my own schedule</li>
<li>Learning: I'm always learning new things, and get paid to study things that I am interested in</li>
</ul>
<p><strong>How much money can a translator make?</strong></p>
<p>There is a wide range of income for freelance translators. Some translators can barely earn a living, and need to get side jobs. The very top paid translators can earn over 10,000,000 yen (US $100,000) per year.</p>
]]></content:encoded>
			<wfw:commentRss>http://ginstrom.com/scribbles/2010/02/08/talk-on-translation-at-japanese-high-school/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A new addition to the Ginstrom clan</title>
		<link>http://ginstrom.com/scribbles/2010/02/07/a-new-addition-to-the-ginstrom-clan/</link>
		<comments>http://ginstrom.com/scribbles/2010/02/07/a-new-addition-to-the-ginstrom-clan/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 05:35:57 +0000</pubDate>
		<dc:creator>Ryan Ginstrom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ginstrom.com/scribbles/?p=1471</guid>
		<description><![CDATA[My wife and son were walking the dogs when this little critter came running out of the sugar cane fields. Which is pretty unusual, since cats usually don't go running after strangers, especially when they're walking two dogs.
Assuming it was a stray (a depressingly large number of people come to the cane fields to abandon [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1475" class="wp-caption alignnone" style="width: 235px"><a href="http://ginstrom.com/scribbles/wp-content/uploads/2010/02/100121_1949581.jpg"><img src="http://ginstrom.com/scribbles/wp-content/uploads/2010/02/100121_1949581-225x300.jpg" alt="Shadow poses for the camera" title="100121_194958" width="225" height="300" class="size-medium wp-image-1475" /></a><p class="wp-caption-text">Behold my cuteness!</p></div>
<p>My wife and son were walking the dogs when this little critter came running out of the sugar cane fields. Which is pretty unusual, since cats usually don't go running after strangers, especially when they're walking two dogs.</p>
<p>Assuming it was a stray (a depressingly large number of people come to the cane fields to abandon unwanted pets), they took her home, cleaned her up, and fed her while we tried to find out if she was lost or abandoned. After a bit of searching we concluded it was the second, and we decided to keep her. We named her Shadow, because it looks like she's wearing eye shadow.</p>
<p>Here's a picture of her with my son's shoe (size 25) for size comparison:</p>
<div id="attachment_1477" class="wp-caption alignnone" style="width: 235px"><a href="http://ginstrom.com/scribbles/wp-content/uploads/2010/02/100115_183528.jpg"><img src="http://ginstrom.com/scribbles/wp-content/uploads/2010/02/100115_183528-225x300.jpg" alt="" title="100115_183528" width="225" height="300" class="size-medium wp-image-1477" /></a><p class="wp-caption-text">I'm smaller than a shoe!</p></div>
<p>After a short feeling out process, she's getting along well with the other cats:</p>
<div id="attachment_1478" class="wp-caption alignnone" style="width: 235px"><a href="http://ginstrom.com/scribbles/wp-content/uploads/2010/02/100127_233324.jpg"><img src="http://ginstrom.com/scribbles/wp-content/uploads/2010/02/100127_233324-225x300.jpg" alt="" title="100127_233324" width="225" height="300" class="size-medium wp-image-1478" /></a><p class="wp-caption-text">It even gets cold in Okinawa sometimes</p></div>
<p>And one more of Shadow on her favorite perch:</p>
<div id="attachment_1479" class="wp-caption alignnone" style="width: 235px"><a href="http://ginstrom.com/scribbles/wp-content/uploads/2010/02/100114_153011.jpg"><img src="http://ginstrom.com/scribbles/wp-content/uploads/2010/02/100114_153011-225x300.jpg" alt="" title="100114_153011" width="225" height="300" class="size-medium wp-image-1479" /></a><p class="wp-caption-text">Chilling on a Sunday</p></div>
<p>So here is the current makeup of the Ginstrom household:</p>
<p>1 mom<br />
1 dad<br />
1 grandma<br />
1 son<br />
2 dogs<br />
3 cats</p>
]]></content:encoded>
			<wfw:commentRss>http://ginstrom.com/scribbles/2010/02/07/a-new-addition-to-the-ginstrom-clan/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Is a smarter Google worse for translators?</title>
		<link>http://ginstrom.com/scribbles/2010/01/30/is-a-smarter-google-worse-for-translators/</link>
		<comments>http://ginstrom.com/scribbles/2010/01/30/is-a-smarter-google-worse-for-translators/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 10:23:54 +0000</pubDate>
		<dc:creator>Ryan Ginstrom</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://ginstrom.com/scribbles/?p=1469</guid>
		<description><![CDATA[There's an excellent article on the official Google blog about how Google is improving the search engine's natural language understanding.
Two of the big areas of improvement are using synonyms and similar words to expand search results, and automatic translation to find results in other languages. 
These are generally useful, because they get more results from [...]]]></description>
			<content:encoded><![CDATA[<p>There's an <a href="http://googleblog.blogspot.com/2010/01/helping-computers-understand-language.html">excellent article</a> on the official Google blog about how Google is improving the search engine's natural language understanding.</p>
<p>Two of the big areas of improvement are using synonyms and similar words to expand search results, and automatic translation to find results in other languages. </p>
<p>These are generally useful, because they get more results from the pages we're after. Some examples from the article are adding matches for "song lyrics" when you search for "song words," and matches for "homicide" when you search for a string containing "murder."</p>
<p>But these techniques tend to foil the main ways I use Google when I'm doing research for a translation. When I use Google as a research tool for translation, I'm usually looking for exact phrases. I'm looking to see if a given English phrase is used in the same kinds of contexts as its Japanese equivalent. </p>
<p>I also use it to try and find the English names for Japanese organizations. If I've made a reasonable effort and no English name turns up, then I'll translate it myself, but if there's already an English equivalent with any currency, I think I have a duty to use that. Actually, when there is an English equivalent for an organization name, 95% of the time I find it on the organization's home page. But for the other 5%, it makes a big difference to be able to search on exact phrases.</p>
<p>In these cases, when Google gets too smart, it actually makes it harder to find what I'm after. I especially don't want Google to back-translate my search terms into Japanese, and show me Japanese matches!</p>
<p>You can kind of force Google into being more literal by prepending your search terms with a plus sign (+), but this doesn't always work, and the rules for when it works and when it doesn't are opaque (as far as I've been able to tell).</p>
<p>As Google gets increasingly smart about guessing what we really wanted to search for, I wonder if it will get increasingly hard for those of us who already know exactly what we're searching for, and just want to know if it exists.</p>
]]></content:encoded>
			<wfw:commentRss>http://ginstrom.com/scribbles/2010/01/30/is-a-smarter-google-worse-for-translators/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Game to test kanji trivia</title>
		<link>http://ginstrom.com/scribbles/2010/01/19/game-to-test-kanji-trivia/</link>
		<comments>http://ginstrom.com/scribbles/2010/01/19/game-to-test-kanji-trivia/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 02:53:19 +0000</pubDate>
		<dc:creator>Ryan Ginstrom</dc:creator>
				<category><![CDATA[Japanese]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[kanji]]></category>

		<guid isPermaLink="false">http://ginstrom.com/scribbles/?p=1463</guid>
		<description><![CDATA[Here's a cool Flash game called "Verbatim" that tests your ability to read obscure kanji compounds and English words (I did best at that).
After the time is up, it creates a mecha-robot for you. The more you got right, the cooler your robo.
]]></description>
			<content:encoded><![CDATA[<p>Here's a <a href="http://www.verbatim.jp/senshuken/">cool Flash game called "Verbatim"</a> that tests your ability to read obscure kanji compounds and English words (I did best at that).</p>
<p>After the time is up, it creates a mecha-robot for you. The more you got right, the cooler your robo.</p>
]]></content:encoded>
			<wfw:commentRss>http://ginstrom.com/scribbles/2010/01/19/game-to-test-kanji-trivia/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Can you read kanji?</title>
		<link>http://ginstrom.com/scribbles/2010/01/16/can-you-read-kanji/</link>
		<comments>http://ginstrom.com/scribbles/2010/01/16/can-you-read-kanji/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 08:20:28 +0000</pubDate>
		<dc:creator>Ryan Ginstrom</dc:creator>
				<category><![CDATA[freelancing]]></category>
		<category><![CDATA[translation]]></category>
		<category><![CDATA[kanji]]></category>
		<category><![CDATA[nes]]></category>

		<guid isPermaLink="false">http://ginstrom.com/scribbles/?p=1456</guid>
		<description><![CDATA[Just a month after writing about how agencies should give translators direct access to their clients, an agency asked me to go with them to meet their client for a big new job.
The back story
The end client had been burned a couple of times by horrible translations. So they contracted with this new agency, on [...]]]></description>
			<content:encoded><![CDATA[<p>Just a month after writing about how <a href="/scribbles/2009/12/02/five-practices-of-agencies-that-get-it/">agencies should give translators direct access to their clients</a>, an agency asked me to go with them to meet their client for a big new job.</p>
<h3>The back story</h3>
<p>The end client had been burned a couple of times by horrible translations. So they contracted with this new agency, on the condition that they could meet the translator and verify his/her ability. The agency didn't have anyone suitable, so they found me through an introduction. Dealing with a translator directly was out of the question, because the end client has a strict bidding process that requires huge capitalization and credit rating just to bid.</p>
<h3>The meeting</h3>
<p>I met two nice people from the translation agency, and then we drove down to the client's office together. This was my first time meeting them, so although they had my CV, and we had exchanged emails, they wanted to know some more about me. One of their first questions was, "Do you read kanji?" The end clients would probably want to show us some documents, and if I couldn't read them it might not come off well.</p>
<p>I was flabbergasted. I asked the leader of their team, "Can you be a translator and not be able to read the language you translate?" Apparently, you can: this PM's other native English speaker (NES) is an interpreter who also translates. But she doesn't read Japanese well, and instead has her partner dictate her documents; she then "translates" from the voice recording.</p>
<p>I answered that yes, I could read kanji, and kind of shrugged it off until we got to the meeting. There, when the documentation lead brought out the documents that I was supposed to translate, he asked me the same question: "Can you read kanji?" I bemusedly told him yes, and we went on with our discussion, but it left me thinking. Are native English-speaking translators really so thin on the ground that our very existence is questioned?</p>
<p>The null hypothesis here would be that my spoken Japanese is so bad that they doubted my ability to actually read the language. This can be discarded, however: my spoken Japanese isn't at the native level, but it's good enough for these purposes. </p>
<p>It's possible that these two groups' small sample size allowed skewed results to be magnified. I don't know about the end-client's experience with native English-speaking translators, but as I wrote above, the agency's other NES doesn't read Japanese.</p>
<p>Part of it might also be my looks: I'm a big white guy, and I know that I tend to give off a vibe of being big, strong, and not too bright. People often tell me that they're shocked when I first open my mouth and Japanese comes out. <img src='http://ginstrom.com/scribbles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  So maybe that helped boost the incredulity factor.</p>
<h3>Happy ending</h3>
<p>Despite the initial doubts of both the agency and the end client as to my kanji-reading abilities, the meeting went well. I'm now working on an interesting project with good feedback from the client. I'm hoping that I can change some minds about NES translators and their abilities. I kind of feel like I'm trying to prove the existence of Big Foot. Which in my case isn't too far from the truth. <img src='http://ginstrom.com/scribbles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://ginstrom.com/scribbles/2010/01/16/can-you-read-kanji/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>The really hard part about translating</title>
		<link>http://ginstrom.com/scribbles/2009/12/25/the-really-hard-part-about-translating/</link>
		<comments>http://ginstrom.com/scribbles/2009/12/25/the-really-hard-part-about-translating/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 05:01:34 +0000</pubDate>
		<dc:creator>Ryan Ginstrom</dc:creator>
				<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://ginstrom.com/scribbles/?p=1442</guid>
		<description><![CDATA[Non-translators often have wrong notions about what makes translation hard. They think the problem is in understanding all those funny squiggles, or if they're a bit more sophisticated, they think the hard part is knowing all those technical terms.
They're wrong, of course. Firstly, you're not ready to start thinking about becoming a translator until reading [...]]]></description>
			<content:encoded><![CDATA[<p>Non-translators often have wrong notions about what makes translation hard. They think the problem is in understanding all those funny squiggles, or if they're a bit more sophisticated, they think the hard part is knowing all those technical terms.</p>
<p>They're wrong, of course. Firstly, you're not ready to start thinking about becoming a translator until reading those foreign squiggles is no longer a challenge, and secondly, technical terms are actually the easiest things to translate. Why? Because they're most often in a one-to-one correspondence between the two languages. I doubt there are many languages lacking a direct translation for the word "hydrogen," for example. </p>
<p>Technical terms aren't the problem: it's the fuzzy stuff around them that really gives us headaches. Figurative, vague, and culturally bound phrases are what give us ulcers, or what make translation an exciting and rewarding career (or both!), depending on your outlook. <img src='http://ginstrom.com/scribbles/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The problem is that unlike "technical" terms, there's no one "right way" to translate these expressions. You've got to tailor each translation to the context at hand. If you look at translators' mailing lists like <a href="http://groups.google.co.jp/group/honyaku/">honyaku</a>, by far the most digital ink is spilled on translations of "fuzzy" terms like <a href="http://groups.google.co.jp/group/honyaku/browse_thread/thread/413f6f1bb001ada4/3b2d08c1f235c731?lnk=gst&#038;q=ganbaru#3b2d08c1f235c731">ganbaru</a> and <a href="http://groups.google.co.jp/group/honyaku/browse_thread/thread/7bfc691f86668b3e#">tettei</a>. Note that here I'm using the term "fuzzy" to mean a phrase that doesn't map directly to an equivalent in the target language. "Ganbaru" and its ilk are fulfilling their roles perfectly in the context of the Japanese language.</p>
<p>A case in point is the term 取り組み (<em>torikumi</em>), which literally means "grapple." It's used figuratively in the sense of "grappling" with issues or challenges, and makes frequent appearances in corporatespeak of all types. </p>
<p>While it's possible to translate this into English as "grapple" as well, it's not nearly as common as the Japanese, and in many cases doesn't fit. This is a conceptual mismatch: the Japanese language has a figurative image of "coming to grips with something" that English lacks.</p>
<p>Take for example the following phrase, which gets nearly 26 million hits on Google:</p>
<blockquote><p>環境への取り組み</p></blockquote>
<p>The phrase means, roughly, "things that we are doing for the environment." It would be totally inappropriate to translate this as "grappling with the environment," or even "coping with the environment." I would likely translate this as "Environmental Initiatives" or "Commitment to the Environment."</p>
<p>Yet all most dictionaries give us as the translation for 取り組み is "grapple," with perhaps "come to grips with," "cope with," or "tackle" thrown in.</p>
<p>The two example sentences from the 5th edition of the <a href="http://en.wikipedia.org/wiki/Kenky%C5%ABsha%27s_New_Japanese-English_Dictionary">Green Goddess</a> (widely recognized as the top J-&gt;E bilingual dictionary available) also take this weaselly way out:</p>
<blockquote><p>
その問題に関しては社会全体の<strong>取り組み</strong>が必要である.<br />
When it comes to that problem, society as a whole must <strong>grapple</strong> with it.</p>
<p>まだまだ日本の環境問題に対する<strong>取り組み</strong>が遅れている.<br />
Japan is still lagging far behind in <strong>grappling</strong> with environmental problems.</p></blockquote>
<p>Even if there seems to be a direct match for the term in the target language, the connotations can create unwelcome meanings in the translation. I <a href="/scribbles/2009/04/01/an-ounce-of-prevention/">blogged before</a> about how translating 防止 as "prevent" can be politically charged in the case of global warming.</p>
<p>With time and experience, we gradually build up a personal bag of tricks to deal with these pesky terms. Each time you figure out a way to deal with a fuzzy concept adds another trick to your bag. I gave two examples above for 取り組み: "initiatives" and "commitment." Another possibility is "efforts." </p>
<p>Having this bag of tricks means that you can solve conceptual mismatches quickly, instead of pulling on your hair for an hour and then going with the lame dictionary translation anyway. It's one of the main assets a translator accumulates with experience, and it's far more important than dictionaries or glossaries of "technical terms" for producing smooth, accurate translations at an economically viable pace.</p>
]]></content:encoded>
			<wfw:commentRss>http://ginstrom.com/scribbles/2009/12/25/the-really-hard-part-about-translating/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Japanese/Western mobile website aesthetics</title>
		<link>http://ginstrom.com/scribbles/2009/12/20/japanesewestern-mobile-website-aesthetics/</link>
		<comments>http://ginstrom.com/scribbles/2009/12/20/japanesewestern-mobile-website-aesthetics/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 07:25:12 +0000</pubDate>
		<dc:creator>Ryan Ginstrom</dc:creator>
				<category><![CDATA[localization]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://ginstrom.com/scribbles/?p=1436</guid>
		<description><![CDATA[About a year ago, I wrote about the differences in Website aesthetics between Japan and the West. I was recently translating the review of a redesigned mobile website, and found a similar aesthetic.
The mobile site was for the Japanese subsidiary of a major European brand/fashion corporation. The company had changed the site from a cutesy, [...]]]></description>
			<content:encoded><![CDATA[<p>About a year ago, I wrote about the <a href="/scribbles/2009/01/05/differences-in-japanese-and-western-website-aesthetics/">differences in Website aesthetics between Japan and the West</a>. I was recently translating the review of a redesigned mobile website, and found a similar aesthetic.</p>
<p>The mobile site was for the Japanese subsidiary of a major European brand/fashion corporation. The company had changed the site from a cutesy, plastered-with-cartoon-animals design to a clean, stylish design inspired by the iPhone, and in fact designed specifically for compatibility with the iPhone. As an example, the page background was changed from white to a wood-inspired, shaded brown. The amount of text on each page was pared down considerably as well.</p>
<p>The company hired to evaluate the site did a focus group-style study with the target audience, and found that the subjects almost universally preferred the old, "busy" site, and found the new site 殺風景 ("drab").</p>
<p>Part of this dreariness may have been an attempt to appeal less to young women, who give lots of eyeballs but not much revenue, and more to older women, who might actually buy some of that overpriced stuff. But the study showed that even women in their 30s and 40s liked the old site design better, cutesy cartoon kittens and all.</p>
<p>On the one had, the company wants to maintain a consistent international image (one remark was that the new site design conforms the the global brand image). But I saw this as another proof that you need to design websites for your audience, not necessarily according to what looks good to you &#8212; especially when marketing in different cultures.</p>
]]></content:encoded>
			<wfw:commentRss>http://ginstrom.com/scribbles/2009/12/20/japanesewestern-mobile-website-aesthetics/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Great resource for translating software docs into English</title>
		<link>http://ginstrom.com/scribbles/2009/12/17/great-resource-for-translating-software-docs-into-english/</link>
		<comments>http://ginstrom.com/scribbles/2009/12/17/great-resource-for-translating-software-docs-into-english/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 02:52:02 +0000</pubDate>
		<dc:creator>Ryan Ginstrom</dc:creator>
				<category><![CDATA[localization]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://ginstrom.com/scribbles/?p=1429</guid>
		<description><![CDATA[Often when translating software documentation from Japanese to English, I'll have to find the exact corresponding English names for various OS and other software components. These are things that you can't just make up, because the user will be looking for that actual text on her computer.
I recently discovered a site that makes this a [...]]]></description>
			<content:encoded><![CDATA[<p>Often when translating software documentation from Japanese to English, I'll have to find the exact corresponding English names for various OS and other software components. These are things that you can't just make up, because the user will be looking for that actual text on her computer.</p>
<p>I recently discovered a site that makes this a lot easier: <a href="http://screenshots.modemhelp.net/">http://screenshots.modemhelp.net/</a>. This site has screen shots for Windows and Mac operating systems, as well as popular software, all organized and labeled.</p>
<p>Say, for example, you need to get the names of <a href="http://screenshots.modemhelp.net/screenshots/Windows_2000/Control_Panel/Index.shtml">Control Panel icons from Windows 2000</a>, or the menu items on the <a href="http://screenshots.modemhelp.net/screenshots/Windows_Vista/Desktop/Vista/%28Recycle_Bin%29.shtml">context menu for the Recycle bin in Windows Vista</a>, or the <a href="http://screenshots.modemhelp.net/screenshots/Macintosh_OS_v10.1/System_Preferences/Index.shtml">System Preferences icons for Mac OS X</a>. Yep, it's all there.</p>
<p>Unfortunately, the site doesn't appear to have screen shots for Windows 7 yet, but at least those are substantially similar to Vista's.</p>
]]></content:encoded>
			<wfw:commentRss>http://ginstrom.com/scribbles/2009/12/17/great-resource-for-translating-software-docs-into-english/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
