<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2590682796027714479</id><updated>2012-03-02T14:02:34.074+09:00</updated><category term='job application'/><category term='2009'/><category term='Neuro Net Recordings'/><category term='DNS'/><category term='sysadmin'/><category term='Gauche'/><category term='SQL'/><category term='admin'/><category term='Schneier'/><category term='NTP'/><category term='collaboration'/><category term='C'/><category term='concurrent programming'/><category term='privacy'/><category term='tumblr'/><category term='Web'/><category term='outsourcing'/><category term='teleworking'/><category term='software development'/><category term='GUI'/><category term='lifestyle'/><category term='amateur radio'/><category term='SMTP'/><category term='git'/><category term='eventual consistency'/><category term='erasing data'/><category term='spam'/><category term='preventing overworking'/><category term='self introduction'/><category term='2008'/><category term='database'/><category term='IPv6'/><category term='scheme'/><category term='radio'/><category term='social binding'/><category term='MySQL'/><category term='research'/><category term='kyoto-u'/><category term='mixi'/><category term='Erlang Workshop 2011'/><category term='security'/><category term='programming'/><category term='new year resolution'/><category term='music'/><category term='lisp'/><category term='FreeBSD'/><category term='YouTube'/><category term='alexa'/><category term='CF-R4'/><category term='legal issues'/><category term='multimedia'/><category term='tai'/><category term='LUNARR'/><category term='pageview'/><category term='POSIX'/><category term='CW'/><category term='PKI'/><category term='iTunes'/><category term='twitter'/><category term='leap seconds'/><category term='HTML'/><category term='cloudcomputing'/><category term='sns'/><category term='Internet messaging'/><category term='risks'/><category term='Github'/><category term='writing'/><category term='3-11'/><category term='Google Apps'/><category term='Erlang'/><title type='text'>Concurrently Chaotic</title><subtitle type='html'>Random notes on concurrency-oriented technology by Kenji Rikitake</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://concurrently-chaotic.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-3384594186957764348</id><published>2012-03-02T12:00:00.000+09:00</published><updated>2012-03-02T13:57:43.196+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='IPv6'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Kernel module functions for IPv6 on Erlang/OTP R15B</title><content type='html'>&lt;p&gt;I've been reading the source code of&lt;a href="http://www.erlang.org/"&gt;Erlang/OTP&lt;/a&gt; R15Bto find out how it handles the IPv6-related functions.&lt;/p&gt;&lt;p&gt;Erlang VM has the most functions embedded into the &lt;tt&gt;inet_drv&lt;/tt&gt; linked-in driver,so programmers don't really have to worry about many things except for the address tuple formatdifference between IPv4 (&lt;tt&gt;{192, 168, 0, 1})&lt;/tt&gt; and IPv6 (&lt;tt&gt;{8193,3512,4660,22136,51966,47806,57005,48879}&lt;tt&gt; for&lt;tt&gt;2001:db8:1234:5678:cafe:babe:dead:beef&lt;/tt&gt;).You can find a lot of gems by reading the &lt;tt&gt;kernel&lt;/tt&gt; module source code. &lt;/p&gt;&lt;p&gt;Here is a list of notable functions inside the &lt;tt&gt;kernel&lt;/tt&gt; module for IPv6 handling on Erlang/OTP R15B.I suggest you to read these functions before writing your own ones.&lt;/p&gt;&lt;p&gt;(Note: this is a work-in-progress article of&lt;a href="http://www.erlang-factory.com/conference/SFBay2012/speakers/kenjirikitake"&gt;my Erlang Factory SF Bay Area 2012 presentation.&lt;/a&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;color:black;background:white;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #808080"&gt;%%% A partial list of IPv6 keywords in Erlang/OTP R15B source code&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #808080"&gt;%%% atom &amp;quot;inet6&amp;quot; is an important keyword&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_parse&lt;/span&gt;:address&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_parse&lt;/span&gt;:ipv6_address&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_parse&lt;/span&gt;:ipv6strict_address&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;1&lt;/span&gt; &lt;span style="color: #808080"&gt;% review RFC4291&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_parse&lt;/span&gt;:ntoa&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_parse&lt;/span&gt;:hosts&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;2&lt;/span&gt; &lt;span style="color: #808080"&gt;% internal, now ignoring &amp;quot;%if&amp;quot; suffix&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-&lt;span style="color: #800000; font-weight: bold"&gt;type&lt;/span&gt; &lt;span style="color: #0e84b5; font-weight: bold"&gt;inet&lt;/span&gt;:ip6_address()&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet&lt;/span&gt;:getifaddrs&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet&lt;/span&gt;:getifaddrs&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet&lt;/span&gt;:gethostbyaddr&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet&lt;/span&gt;:getaddrs&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;2&lt;/span&gt; &lt;span style="color: #808080"&gt;% second arg: inet6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet&lt;/span&gt;:gethostbyname_string&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;2&lt;/span&gt; &lt;span style="color: #808080"&gt;% second arg: inet6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet&lt;/span&gt;:i&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet&lt;/span&gt;:i&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #808080"&gt;%%% interesting module results&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #808080"&gt;%%% (no significant difference other than inet/inet6 flags):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #808080"&gt;%%%     diff --unified inet_tcp.erl inet6_tcp.erl&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #808080"&gt;%%%     diff --unified inet_udp.erl inet6_udp.erl&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #808080"&gt;%%%     diff --unified inet_sctp.erl inet6_sctp.erl&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #808080"&gt;%%%     diff --unified inet_tcp_dist.erl inet6_tcp_dist.erl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_config&lt;/span&gt;:set_hostname&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;0&lt;/span&gt; &lt;span style="color: #808080"&gt;% internal, dependent on inet_udp:open/2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #808080"&gt;%%% inet_db.erl has tcp/udp/sctp module config params&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #808080"&gt;%%% for the gen_server callbacks&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_db&lt;/span&gt;:set_inet6&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_db&lt;/span&gt;:dn_ip6_int&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;8&lt;/span&gt; &lt;span style="color: #808080"&gt;% internal, for 8 elements of an IPv6 address tuple&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_db&lt;/span&gt;:make_hostent(&lt;span style="color: #906030"&gt;Name&lt;/span&gt;, &lt;span style="color: #906030"&gt;Addrs&lt;/span&gt;, &lt;span style="color: #906030"&gt;Aliases&lt;/span&gt;, &lt;span style="color: #003060; font-weight: bold"&gt;?S_AAAA&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_db&lt;/span&gt;:handle_call({add_host, &lt;span style="color: #906030"&gt;IPv6address&lt;/span&gt;, &lt;span style="color: #906030"&gt;Names&lt;/span&gt;})&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_db&lt;/span&gt;:handle_call({del_host, &lt;span style="color: #906030"&gt;IPv6address&lt;/span&gt;})&lt;br /&gt;&lt;br /&gt;inet_dns.&lt;span style="color: #0e84b5; font-weight: bold"&gt;erl&lt;/span&gt;: &lt;span style="color: #003060; font-weight: bold"&gt;?S_AAAA&lt;/span&gt; related lines&lt;br /&gt;&lt;br /&gt;inet_dns.&lt;span style="color: #0e84b5; font-weight: bold"&gt;hrl&lt;/span&gt;: &lt;span style="color: #303030"&gt;--&lt;/span&gt;define(&lt;span style="color: #906030"&gt;T_AAAA&lt;/span&gt;), &lt;span style="color: #303030"&gt;--&lt;/span&gt;define(&lt;span style="color: #906030"&gt;S_AAAA&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;inet_int.&lt;span style="color: #0e84b5; font-weight: bold"&gt;hrl&lt;/span&gt;: &lt;span style="color: #303030"&gt;--&lt;/span&gt;define(&lt;span style="color: #906030"&gt;INET_AF_INET6&lt;/span&gt;), &lt;span style="color: #303030"&gt;--&lt;/span&gt;define(&lt;span style="color: #906030"&gt;SCTP_FLAG_PMTUD_&lt;/span&gt;&lt;span style="color: #303030"&gt;*&lt;/span&gt;),&lt;br /&gt;              &lt;span style="color: #303030"&gt;--&lt;/span&gt;define(ip6(&lt;span style="color: #906030"&gt;A&lt;/span&gt;,&lt;span style="color: #906030"&gt;B&lt;/span&gt;,&lt;span style="color: #906030"&gt;C&lt;/span&gt;,&lt;span style="color: #906030"&gt;D&lt;/span&gt;,&lt;span style="color: #906030"&gt;E&lt;/span&gt;,&lt;span style="color: #906030"&gt;F&lt;/span&gt;,&lt;span style="color: #906030"&gt;G&lt;/span&gt;,&lt;span style="color: #906030"&gt;H&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;-&lt;span style="color: #800000; font-weight: bold"&gt;type&lt;/span&gt; &lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_res&lt;/span&gt;:res_option({inet6, boolean()})&lt;br /&gt;-&lt;span style="color: #800000; font-weight: bold"&gt;type&lt;/span&gt; &lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_res&lt;/span&gt;:dns_data() &lt;span style="color: #808080"&gt;% inet:ip6_address()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_res&lt;/span&gt;:gethostbyaddr&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_res&lt;/span&gt;:gethostbyaddr_tm&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_res&lt;/span&gt;:gethostbyname&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_res&lt;/span&gt;:gethostbyname_tm&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_res&lt;/span&gt;:udp_open&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;2&lt;/span&gt; &lt;span style="color: #808080"&gt;% internal (record #sock)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0e84b5; font-weight: bold"&gt;inet_res&lt;/span&gt;:udp_connect&lt;span style="color: #303030"&gt;/&lt;/span&gt;&lt;span style="color: #0000D0; font-weight: bold"&gt;2&lt;/span&gt; &lt;span style="color: #808080"&gt;% internal (record #sock)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #808080"&gt;% There will be more...&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-3384594186957764348?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3384594186957764348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3384594186957764348'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2012/03/kernel-module-functions-for-ipv6-on.html' title='Kernel module functions for IPv6 on Erlang/OTP R15B'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-5689106071536398067</id><published>2012-02-25T12:00:00.000+09:00</published><updated>2012-02-25T20:17:11.864+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teleworking'/><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><category scheme='http://www.blogger.com/atom/ns#' term='self introduction'/><title type='text'>Small pieces of happiness that I pursue</title><content type='html'>&lt;p&gt;The small pieces of happiness I've been pursuing since 1992 are as follows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Making money by doing what I want and by minimizing doing what I don't want to do;&lt;li&gt;Living in a house of my own control with my partner without interference;&lt;li&gt;Working at a place where I want and at a place where I can minimize the mental stress; and&lt;li&gt;Working at a period of time in the most productive way, including taking enough time to rest.&lt;/ul&gt;&lt;p&gt;I feel I've been devoting myself to pursue this small happiness at my best effort.&lt;/p&gt;&lt;p&gt;And I'm happy with it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-5689106071536398067?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5689106071536398067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5689106071536398067'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2012/02/small-pieces-of-happiness-that-i-pursue.html' title='Small pieces of happiness that I pursue'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-1086043183749099912</id><published>2012-01-08T00:00:00.000+09:00</published><updated>2012-01-08T21:13:51.414+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='POSIX'/><category scheme='http://www.blogger.com/atom/ns#' term='leap seconds'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='NTP'/><category scheme='http://www.blogger.com/atom/ns#' term='tai'/><title type='text'>Leap second, again</title><content type='html'>&lt;p&gt;News: &lt;a href="ftp://hpiers.obspm.fr/iers/bul/bulc/bulletinc.43"&gt;There will be another leap second on 23:59:60UTC 31-JUN-2012&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Nevertheless, I quitted supporting leap second on the time zone file at home last year on December 2011,which had been introduced for more than 12 years. Reason: I gain very little while I lose quite a lot by setting the system time based on TAI.&lt;/p&gt;&lt;p&gt;I think POSIX should have defined the timezone functions to handle leap seconds properly, by setting the TAI-based monotonically-increasing value to the local clock, and by correcting the difference between UTC and TAI with the timezone file. But POSIX doesn't. So TAI-based local time is &lt;em&gt;not interchangeable&lt;/em&gt;. Most applications assume the value of &lt;code&gt;time_t&lt;/code&gt; represents UTC without the leap seconds, which is not the case when the local clock is set based on TAI.&lt;/p&gt;&lt;p&gt;I suspect that many sysadmins are not really aware of the leap seconds, unfortunately, including &lt;em&gt;those provide NTP services&lt;/em&gt;.  I've experienced one of the upper-stratum NTP servers of my ISP did not synchronize on 1-JAN-2009, when the last leap second was added.&lt;/p&gt;&lt;p&gt;Very few language systems can explicitly handle leap seconds either. For example,&lt;a href="http://erlang.2086793.n4.nabble.com/leap-second-enabled-FreeBSD-doesn-t-work-right-with-R12B4-erts-emulator-beam-erl-time-sup-c-correctid-td2119945.html"&gt;I had to post a patch for Erlang for handling TAI.&lt;/a&gt; (Fixed on Erlang/OTP R13A and later.)&lt;/p&gt;&lt;p&gt;So you should be very careful on the de-synchronization of your machine's local clocks on June 30th or July 1st this year on 2012.&lt;/p&gt;&lt;p&gt;Useful links:&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ucolick.org/~sla/leapsecs/onlinebib.html"&gt;The Future of Leap Seconds&lt;/a&gt;&lt;li&gt;&lt;a href="http://www.cl.cam.ac.uk/~mgk25/time/leap/"&gt;Leap Seconds by Markus Kuhn&lt;/a&gt;&lt;li&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=1941487.1941505&amp;coll=portal&amp;dl=ACM"&gt;Communications ACM May 2011: The One-Second War&lt;/a&gt;&lt;li&gt;&lt;a href="http://www.eecis.udel.edu/~mills/leap.html"&gt;The NTP Timescale and Leap Seconds&lt;/a&gt;&lt;li&gt;&lt;a href="http://cr.yp.to/proto/utctai.html"&gt;D. J. Bernstein: UTC, TAI, and UNIX time&lt;/a&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;(Correction 8-JAN-2012: &lt;code&gt;gmtime()&lt;/code&gt; was ambiguous. Corrected to &lt;code&gt;time_t&lt;/code&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-1086043183749099912?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1086043183749099912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1086043183749099912'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2012/01/leap-second-again.html' title='Leap second, again'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-2542028440841324817</id><published>2012-01-04T00:00:00.000+09:00</published><updated>2012-01-04T11:19:05.215+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Preparing FreeBSD Port of Erlang/OTP</title><content type='html'>&lt;p&gt;Updating an Erlang/OTP Port (files under the Ports tree) for FreeBSD is not a complicated task,with the latest pieces of the Port files.You can find out the latest pieces at&lt;a href="http://www.freebsd.org/cgi/cvsweb.cgi/ports/lang/erlang/"&gt;the FreeBSD CVSweb page for Erlang Port&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;You need to do the following things:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#filenames"&gt;Updating the source file names&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lib"&gt;Preparing the library list&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#man"&gt;Preparing the man file list&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#patches"&gt;Removing/editing/adding patches&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#makesum"&gt;Updating the checksum file&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#plist"&gt;Preparing the package list&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#build"&gt;Test building&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#ref"&gt;References&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;&lt;a name="filenames"&gt;&lt;/a&gt;Updating the source file names&lt;/h2&gt;&lt;p&gt;The following parts of the main &lt;code&gt;Makefile&lt;/code&gt; must be modifiedto specify the related source file names(in a unified diff-like format):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;    -PORTVERSION=   r14b04&lt;br /&gt;    +PORTVERSION=   r15b&lt;br /&gt;&lt;br /&gt;    -DISTNAME=      otp_src_R14B04&lt;br /&gt;    +DISTNAME=      otp_src_R15B&lt;br /&gt;&lt;br /&gt;    -ERLANG_MAN=    otp_doc_man_R14B04.tar.gz&lt;br /&gt;    +ERLANG_MAN=    otp_doc_man_R15B.tar.gz&lt;br /&gt;&lt;br /&gt;    -ERLANG_DOCS=   otp_doc_html_R14B04.tar.gz&lt;br /&gt;    +ERLANG_DOCS=   otp_doc_html_R15B.tar.gz&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a name="lib"&gt;&lt;/a&gt;Preparing the library list&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Makefile.lib&lt;/code&gt; must be supplied to provideall the version numbers of the OTP library modules.&lt;/p&gt;&lt;p&gt;To extract the version number, use the following shell command:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;    (cd work/otp_src_VERSION; \&lt;br /&gt;     find . -name vsn.mk -print | xargs grep VSN) \&lt;br /&gt;     &amp;gt; OTP-vsnlist.txt&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The content of &lt;code&gt;OTP-vsnlist.txt&lt;/code&gt; will be something like this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;    ./erts/vsn.mk:VSN = 5.9&lt;br /&gt;    ./erts/vsn.mk:SYSTEM_VSN = R15B&lt;br /&gt;    ./lib/appmon/vsn.mk:APPMON_VSN = 2.1.14&lt;br /&gt;    ./lib/asn1/vsn.mk:ASN1_VSN = 1.6.19&lt;br /&gt;    ./lib/common_test/vsn.mk:COMMON_TEST_VSN = 1.6&lt;br /&gt;    ./lib/compiler/vsn.mk:COMPILER_VSN = 4.8&lt;br /&gt;    ./lib/cosEvent/vsn.mk:COSEVENT_VSN = 2.1.12&lt;br /&gt;    ./lib/cosEventDomain/vsn.mk:COSEVENTDOMAIN_VSN = 1.1.12&lt;br /&gt;    ./lib/cosFileTransfer/vsn.mk:COSFILETRANSFER_VSN = 1.1.13&lt;br /&gt;    ./lib/cosNotification/vsn.mk:COSNOTIFICATION_VSN = 1.1.18&lt;br /&gt;    [...]&lt;br /&gt;    ./lib/wx/vsn.mk:WX_VSN = 0.99.1&lt;br /&gt;    ./lib/xmerl/vsn.mk:XMERL_VSN = 1.3&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You have to manually edit the &lt;code&gt;Makefile.lib&lt;/code&gt;with the content of &lt;code&gt;OTP-vsnlist.txt&lt;/code&gt;.The format of &lt;code&gt;Makefile.lib&lt;/code&gt; is(beware that the last line has no backslash):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;    ERTS_VSN=       5.9&lt;br /&gt;    TOOLS_VSN=      2.6.6.6&lt;br /&gt;    OTP_LIBS=       appmon-2.1.14 \&lt;br /&gt;                    asn1-1.6.19 \&lt;br /&gt;                    common_test-1.6 \&lt;br /&gt;                    compiler-4.8 \&lt;br /&gt;                    cosEvent-2.1.12 \&lt;br /&gt;                    cosEventDomain-1.1.12 \&lt;br /&gt;                    cosFileTransfer-1.1.13 \&lt;br /&gt;                    cosNotification-1.1.18 \&lt;br /&gt;                    [...]&lt;br /&gt;                    wx-0.99.1 \&lt;br /&gt;                    xmerl-1.3&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The contents of &lt;code&gt;Makefile.lib&lt;/code&gt; is a set of &lt;code&gt;Makefile&lt;/code&gt; variables,so all the module names must be listed with the backslash character.(Note: &lt;code&gt;ERTS_VSN&lt;/code&gt; is no longer needed, but I will include ithere just FYI.)&lt;/p&gt;&lt;h2&gt;&lt;a name="man"&gt;&lt;/a&gt;Preparing the man file list&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Makefile.man&lt;/code&gt; must be supplied to provideall the version numbers of the OTP library modules.&lt;/p&gt;&lt;p&gt;To extract the man filenames, use the following shell command:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;    tar ztf /usr/ports/distfiles/erlang/otp_doc_man_VERSION.tar.gz | \&lt;br /&gt;    sort | awk '{FS="/"; print $3;}' &amp;gt; OTP-manlist.txt&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You have to manually edit the &lt;code&gt;Makefile.man&lt;/code&gt;with the content of &lt;code&gt;OTP-manlist.txt&lt;/code&gt;.For OTP R15B, &lt;code&gt;Makefile.man&lt;/code&gt; only needs man sections 1, 3, 4, and 6,so man section 7 must not be included.&lt;/p&gt;&lt;p&gt;The content of &lt;code&gt;OTP-manlist.txt&lt;/code&gt; will be something like this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;COPYRIGHT&lt;br /&gt;PR.template&lt;br /&gt;README&lt;br /&gt;&lt;br /&gt;man1/&lt;br /&gt;man1/ct_run.1&lt;br /&gt;man1/diameter_compile.1&lt;br /&gt;man1/epmd.1&lt;br /&gt;man1/erl.1&lt;br /&gt;man1/erl_call.1&lt;br /&gt;man1/erlc.1&lt;br /&gt;[...]&lt;br /&gt;man7/SNMP-VIEW-BASED-ACM-MIB.7&lt;br /&gt;man7/SNMPv2-MIB.7&lt;br /&gt;man7/SNMPv2-TM.7&lt;br /&gt;man7/STANDARD-MIB.7&lt;br /&gt;man7/TRANSPORT-ADDRESS-MIB.7&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You have to manually edit the &lt;code&gt;Makefile.man&lt;/code&gt;with the content of &lt;code&gt;OTP-manlist.txt&lt;/code&gt;.The format of &lt;code&gt;Makefile.man&lt;/code&gt; is(beware that the last line of each section has no backslash):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;    MAN1=   ct_run.1 \&lt;br /&gt;            diameter_compile.1 \&lt;br /&gt;            epmd.1 \&lt;br /&gt;            erl.1 \&lt;br /&gt;            erl_call.1 \&lt;br /&gt;            erlc.1 \&lt;br /&gt;            erlsrv.1 \&lt;br /&gt;            escript.1 \&lt;br /&gt;            run_erl.1 \&lt;br /&gt;            snmpc.1 \&lt;br /&gt;            [...]&lt;br /&gt;            start_webtool.1 \&lt;br /&gt;            werl.1&lt;br /&gt;&lt;br /&gt;    MAN3=   CosEventChannelAdmin.3 \&lt;br /&gt;            CosEventChannelAdmin_ConsumerAdmin.3 \&lt;br /&gt;            [...]&lt;br /&gt;            zlib.3 \&lt;br /&gt;            zlib_stub.3&lt;br /&gt;&lt;br /&gt;    MAN4=   app.4 \&lt;br /&gt;            appup.4 \&lt;br /&gt;            [...]&lt;br /&gt;            relup.4 \&lt;br /&gt;            script.4&lt;br /&gt;&lt;br /&gt;    MAN6=   common_test.6 \&lt;br /&gt;            crypto.6 \&lt;br /&gt;            [...]&lt;br /&gt;            stdlib.6 \&lt;br /&gt;            test_server.6&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The contents of &lt;code&gt;Makefile.man&lt;/code&gt; is a set of &lt;code&gt;Makefile&lt;/code&gt; variables,so all the man file names must be listed with the backslash character.&lt;/p&gt;&lt;h2&gt;&lt;a name="patches"&gt;&lt;/a&gt;Removing/editing/adding patches&lt;/h2&gt;&lt;p&gt;FreeBSD-specific patch files are provided under the Port directory&lt;code&gt;files&lt;/code&gt;. You need to remove the obsolete patches first, by &lt;code&gt;make patch&lt;/code&gt;.You should edit the existing ones and add the new ones as well.&lt;/p&gt;&lt;p&gt;The naming convention of the patch file is:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;    patch-lib_et_src_et__gs__contents__viewer.erl&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;for&lt;/p&gt;&lt;pre&gt;&lt;code&gt;    lib/et/src/et_gs_contents_viewer.erl&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(Conversion of &lt;code&gt;/ -&amp;gt; _&lt;/code&gt; and &lt;code&gt;_ -&amp;gt; __&lt;/code&gt; is needed.)&lt;/p&gt;&lt;h2&gt;&lt;a name="makesum"&gt;&lt;/a&gt;Updating the checksum file&lt;/h2&gt;&lt;p&gt;&lt;code&gt;make makesum&lt;/code&gt; is the convenient way to update the &lt;code&gt;distinfo&lt;/code&gt; checksum data.&lt;/p&gt;&lt;h2&gt;&lt;a name="plist"&gt;&lt;/a&gt;Preparing the package list&lt;/h2&gt;&lt;p&gt;New binary files are occasionally added in the OTP distributions.The &lt;code&gt;pkg-plist&lt;/code&gt; file must be updated as well.&lt;/p&gt;&lt;h2&gt;&lt;a name="build"&gt;&lt;/a&gt;Test building&lt;/h2&gt;&lt;p&gt;The building process will be like this(note the &lt;code&gt;umask 022&lt;/code&gt;):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;    # I use zsh, but use whatever you want&lt;br /&gt;    # as root&lt;br /&gt;    sudo zsh&lt;br /&gt;    umask 022&lt;br /&gt;    make fetch&lt;br /&gt;    exit&lt;br /&gt;    # as your own account&lt;br /&gt;    umask 022&lt;br /&gt;    make&lt;br /&gt;    # as root&lt;br /&gt;    sudo zsh&lt;br /&gt;    umask 022&lt;br /&gt;    make deinstall &amp;amp;&amp;amp; make reinstall&lt;br /&gt;    exit&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a name="ref"&gt;&lt;/a&gt;References&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/erlang/otp/"&gt;Erlang/OTP repository at GitHub&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.freebsd.org/doc/en/books/porters-handbook/"&gt;FreeBSD Porter's Handbook&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-2542028440841324817?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2542028440841324817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2542028440841324817'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2012/01/preparing-freebsd-port-of-erlangotp.html' title='Preparing FreeBSD Port of Erlang/OTP'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-5528852442921204351</id><published>2011-08-19T23:24:00.000+09:00</published><updated>2011-08-19T23:24:55.220+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amateur radio'/><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrent programming'/><title type='text'>It's all about experience</title><content type='html'>&lt;p&gt;It's not just the programming.&lt;br&gt;It's not just the music.&lt;br&gt;It's not just the message.&lt;br&gt;&lt;/p&gt;&lt;p&gt;It's all about experience. And the desire for it.&lt;/p&gt;&lt;p&gt;People are looking for a new experience through technologies.&lt;/p&gt;&lt;p&gt;Concurrency will surely help giving a smooth experience;and even more good things.&lt;/p&gt;&lt;p&gt;(I will not quote Jimi Hendrix here)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-5528852442921204351?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5528852442921204351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5528852442921204351'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2011/08/its-all-about-experience.html' title='It&apos;s all about experience'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-3509395524418986116</id><published>2011-05-08T00:00:00.005+09:00</published><updated>2011-06-15T13:04:01.882+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><category scheme='http://www.blogger.com/atom/ns#' term='sns'/><category scheme='http://www.blogger.com/atom/ns#' term='3-11'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='risks'/><title type='text'>Twitter in Japan after 3-11 or 11-MAR-2011</title><content type='html'>&lt;p&gt;I'm really thinking about restricting my tweets to tech issues only.&lt;/p&gt;&lt;p&gt; Tweets in Japanese have been getting too political these days, especially after the 3-11 accidents and disasters. People are less restrictive on expressing op-ed tweets, and the tweets further invoke even more harsh exchanges of discussions without careful thoughts, often lead to blackmailing.&lt;/p&gt; &lt;p&gt;I do understand people in Japan including myself have legitimate fears against the possible nuclear and predicted earthquake/tsunami disasters. And I accept people have rights to openly discuss those matters. Twitter, however, is not a good place to have discussions with showing sufficient clarifications and enough pieces of evidence.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-3509395524418986116?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3509395524418986116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3509395524418986116'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2011/05/twitter-in-japan-after-3-11-or-11-mar.html' title='Twitter in Japan after 3-11 or 11-MAR-2011'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-4130126128847507958</id><published>2011-05-07T13:51:00.000+09:00</published><updated>2011-05-07T13:51:59.018+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrent programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>My technical interests for Erlang/OTP as of April 2011</title><content type='html'>&lt;p&gt;This is a list of my technical interests for Erlang/OTP as of April 2011:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Catching up the latest cryptographic algorithms, including hash functions,shared-key cryptography, public-key cryptography, pseudo random number generators (PRNGs),while making them efficient in parallel/concurrent execution environment;&lt;li&gt;Delay tolerance network technologies which can handle days, weeks, months ofmessage delivery delays;&lt;li&gt;Fundamental support functions of IPv6, especially for Distributed Erlang and epmd, andcryptographic transport support with SSL/TLS;&lt;li&gt;DNSSEC-compatible resolver implementation for inet_res module;&lt;li&gt;Large binary heap handling of BEAM, and the programming methodologiesfor the faster NIF implementation, including the performance measurement;&lt;li&gt;PRNGs with small context/internal-state size, e.g., Wichmann-Hill 1982/2006, LShift, XOR32;&lt;li&gt;PRNGs with large context/internal-state size, e.g., SFMT;&lt;li&gt;TAI or leap-second handling by NIF;&lt;li&gt;Privilege separation techniques between BEAM instances (e.g., virtualization, FreeBSD Jail); and&lt;li&gt;the effective usage and choice of port drivers, linked-in drivers, and NIFs&lt;/ul&gt;&lt;p&gt;And projects I'm interested in (but not limited to):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a http="http://discoproject.org/"&gt;Disco Project&lt;/a&gt;, a MapReduce implementation&lt;li&gt;&lt;a http="http://www.zeromq.org/"&gt;ZeroMQ&lt;/a&gt; and other general queueing systems&lt;li&gt;UBF, BERT-RPC, and other messaging formats&lt;li&gt;&lt;a http="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt;&lt;/ul&gt;&lt;p&gt;And don't forget I'll be hosting &lt;a href="http://www.erlang.org/workshop/2011/"&gt;the ACM Erlang Workshop 2011&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;(This article is a revised version of &lt;a href="http://heikou-konton.blogspot.com/2011/02/erlangotp.html"&gt;http://heikou-konton.blogspot.com/2011/02/erlangotp.html&lt;/a&gt; (originally written in Japanese.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-4130126128847507958?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/4130126128847507958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/4130126128847507958'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2011/05/my-technical-interests-for-erlangotp-as.html' title='My technical interests for Erlang/OTP as of April 2011'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-926607111613603729</id><published>2011-03-31T15:45:00.001+09:00</published><updated>2011-03-31T15:48:34.641+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Erlang Workshop 2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Erlang Workshop 2011 will be held as scheduled</title><content type='html'>This is a short notice that&amp;nbsp;&lt;a href="http://www.erlang.org/workshop/2011/"&gt;Erlang Workshop 2011 aka The Tenth ACM SIGPLAN Erlang Workshop&lt;/a&gt;&amp;nbsp;will be held as scheduled at&amp;nbsp;&lt;a href="http://www.nii.ac.jp/en/index.php?action=pages_view_main&amp;amp;page_id=469&amp;amp;lang=english"&gt;National Center of Sciences, National Institute of Informatics, Tokyo, Japan&lt;/a&gt;, on Friday, September 23, 2011.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.k2r.org/kenji/papers/file-archive/erlloungeSF-erlang2011.pdf"&gt;See my presentation slides at ErlLounge of Erlang Factory SF Bay 2011 for the further details (in PDF).&lt;/a&gt;&amp;nbsp;I should emphasize that the distance between the troubled Fukushima nuclear power plants and Tokyo is more than 200 kilometers, and also that the venue building of the workshop will not be affected by the scheduled rolling blackouts.&lt;br /&gt;&lt;br /&gt;I also suggest you to take a look at&amp;nbsp;&lt;a href="http://www.icfpconference.org/icfp2011/"&gt;ICFP 2011 Web site&lt;/a&gt;&amp;nbsp;for the details of the ICFP 2011 related events.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-926607111613603729?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/926607111613603729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/926607111613603729'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2011/03/erlang-workshop-2011-will-be-held-as.html' title='Erlang Workshop 2011 will be held as scheduled'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-5894854712903668531</id><published>2011-02-04T12:36:00.003+09:00</published><updated>2011-02-04T12:45:42.436+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='IPv6'/><title type='text'>3-FEB-2011: IPv4 address pool in IANA is used up</title><content type='html'>As of 3 February 2011, the central pool of available IPv4 addresses managed by the Internet Assigned Numbers Authority (IANA) has been depleted. &lt;a href="https://www.arin.net/resources/request/ipv4_depletion.html"&gt;See ARIN's FAQ for the further details.&lt;/a&gt;Since July 1994 when IPv6 was first recommended by the IETF, Internet engineers are periodically warning people that IPv4 address space is finite.  And the day has come.Of course this is not the end of the Internet.  We need to consider, however, some new issues:&lt;ul&gt;&lt;li&gt;Internet is &lt;em&gt;no longer a unified network of single protocol&lt;/em&gt;; it will become a multi-protocol network of IPv4 &lt;em&gt;and&lt;/em&gt; IPv6 shortly.&lt;li&gt;While quite a new technologies have been developed and are under deployment for the migration to IPv6 (i.e., dumping the old technology of IPv4 and replace it by IPv6), we will still have to endure the fact that IPv4 will be staying around for another few years, or even more than 10 years.&lt;li&gt;Promoting IPv6 is essential. I think, however, maintaining the inter-connectivity of the two networks and the services provided there from both networks is even more critical. We don't want two split networks; we still want one unified Internet, don't we?&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-5894854712903668531?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5894854712903668531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5894854712903668531'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2011/02/3-feb-2011-ipv4-address-pool-in-iana-is.html' title='3-FEB-2011: IPv4 address pool in IANA is used up'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-794937223723592021</id><published>2011-01-31T00:39:00.005+09:00</published><updated>2011-01-31T19:31:39.757+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>Failing to import - now solved</title><content type='html'>I am trying to import some old articles from one of my old Blogger.com exported file, still failing. Stay tuned.&lt;br /&gt;Update: now complete after tweaking the &amp;lt;author&amp;gt; section of the XML from the blogger.com exported file. Whew. &lt;br /&gt;Contents from old Concurently Chaotic have been moved. And the contents from my old blog &lt;em&gt;jj1bdx: journal of technology&lt;/em&gt; have also been merged.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-794937223723592021?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/794937223723592021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/794937223723592021'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2011/01/failing-to-import.html' title='Failing to import - now solved'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-3500013971276684905</id><published>2011-01-30T12:06:00.003+09:00</published><updated>2011-01-31T11:42:56.938+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='cloudcomputing'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Apps'/><title type='text'>Cloudsourcing from home</title><content type='html'>&lt;p&gt;Managing the information and services which I provide has been apersistent source of headache since I set up my own Web server at homein 1997.  So far I've been successfully managing the contents, such as:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;External authoritative DNS (though you still need to maintain the    &lt;em&gt;internal&lt;/em&gt; authoritative DNS and the cache servers)&lt;/li&gt; &lt;li&gt;Mail receiving servers (or more formally called the &lt;em&gt;message transfer    agents&lt;/em&gt; or MTAs) and the complex forwarding schemes for my family,    namely me and Kyoko&lt;/li&gt; &lt;li&gt;Static web servers solely for the public contents, including this blog&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;I still have to pursue moving out the servers from home to the externalsites, however, because managing new protocols from home such as IPv6and other new applications is increasingly getting difficult, due to theconstraints of available bandwidth, IP address space, and &lt;em&gt;my own time&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;Frankly speaking, I do not want to buy any more computer at home. Moreaccurately, I do not want to install and maintain operating systems andthe application software at home unless I really have to.  Things havealready been getting too complex, and I need to offset or outsource thecomplexity to external sites and services.&lt;/p&gt; &lt;p&gt;The problem I'm facing is that &lt;em&gt;cloudsourcing&lt;/em&gt; or moving out servicesprovided at my home servers adds many levels of indirection and layersof things to consider: availability and redundancy issues, associationof the services, how and where to consistently collect the backup data,and the contingency plan and the recovery procedure in case of servicedisruption.&lt;/p&gt; &lt;p&gt;I know the cloudsourcing issue is a matter of &lt;em&gt;business reengineeringprocess&lt;/em&gt;, and to redesign the workflows of the various activities, in myfamily.  It's not only about the computer systems.  We need to changeour way of living.&lt;/p&gt; &lt;p&gt;And I finally started to learn what kind of things you can do on GoogleApps, Google AppEngine, and Amazon Web Services.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-3500013971276684905?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3500013971276684905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3500013971276684905'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2011/01/cloudsourcing-from-home.html' title='Cloudsourcing from home'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-5316701893476908072</id><published>2010-12-31T00:00:00.004+09:00</published><updated>2011-01-31T11:41:12.561+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='kyoto-u'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>My new challenge in 2010: security issues at university network systems</title><content type='html'>&lt;p&gt;Since April 2010, I've been working on the network security managementof Kyoto University.  There are many things to consider.  I've alreadypublished &lt;a href="http://www.ne.jp/asahi/bdx/info/depot/css2010-defaccnet.pdf"&gt;a report in PDF&lt;/a&gt; about the status and issues.&lt;/p&gt; &lt;p&gt;The fundamental principle which always haunts me is that adding securityto a not-so-secure system is &lt;em&gt;far more difficult&lt;/em&gt; than making thesecurity component built-in into the system.  In a large organization,you cannot change the policies and configuration of the running systemsovernight; you need to negotiate with a lot of stakeholders to reach aconsensus or an agreement.  Consolidation takes a lot of time,especially for a well-established system such as the email servers.&lt;/p&gt; &lt;p&gt;Another difficult issue to handle is how &lt;em&gt;not to restrict&lt;/em&gt; users fromthe &lt;em&gt;legitimate&lt;/em&gt; use of the campus systems.  University is anorganization of research and education.  While leaving a systemvulnerable for the known attack vectors is not an option anymore,allowing failures for learning from the try-and-error process should notbe prohibited.  Without a firm security policy, you cannot really decidewhat is right or wrong.&lt;/p&gt; &lt;p&gt;Catching up with new technologies is also a tough requirement to meetfor a large network system. The global IPv4 address space will be usedup in next year 2011, so introducing IPv6 is a must, though not urgent;and the organizational DNS subsystems should be DNSSEC-ready, for boththe cache resolvers and authoritative servers.  And I have to be able toexplain those changes will surely benefit the users and are worth payingfor.&lt;/p&gt; &lt;p&gt;I'm sure I'm going to face a lot of existing and new problems on nextyear 2011.  And I'm hoping I will be able to solve at least some of them.&lt;/p&gt;  &lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-5316701893476908072?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5316701893476908072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5316701893476908072'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2010/12/my-new-challenge-in-2010-security.html' title='My new challenge in 2010: security issues at university network systems'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-2247821710396905475</id><published>2010-03-14T00:00:00.001+09:00</published><updated>2011-01-31T11:39:12.950+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job application'/><category scheme='http://www.blogger.com/atom/ns#' term='writing'/><title type='text'>Writing for job seeking</title><content type='html'>&lt;p&gt; For the past few months, my top priority issue has been searching for anew job.  My current (as of March 2010) job contract will terminate byMarch 31, 2010.  Looking for a job itself is very stressful, and youneed to focus on writing a lot of documents, including your CV, coverletters, etc.  In this article I will introduce a few Web sites whichmight help job seekers in general.&lt;/p&gt; &lt;p&gt; &lt;a href="http://askamanager.blogspot.com/"&gt;Ask A Manager&lt;/a&gt;, a blogwritten by a real human resource professional, has been particularlyhelpful during my job searching period.  The articles on the blogsuggest me that corporate and organizational cultures in Japan and theUSA are much more similar than different with each other.  I think thepsychology of hiring and getting hired is highly universal.&lt;/p&gt; &lt;p&gt; For writing a CV, &lt;a href="http://www.cs.umd.edu/~dml/app/"&gt;Dave Levin'sjob application page&lt;/a&gt; has a set of useful examples, especially forthose searching for IT research/academic positions, with the statementsof research and teaching.  His energetic, upbeat and rational writingstyle, while not getting overly emotional, will help you find how tomake your CV fit for the job openings. (Note: of course you need tochange the details of your CV for each job you apply for.)&lt;/p&gt; &lt;p&gt; Getting the job contract terminated, laid off, or even fired, is itselfa tedious and tough experience.  I've read a few books for helping myself:&lt;ul&gt; &lt;li&gt;&lt;a href="http://www.gapingvoid.com"&gt;Hugh MacLeod's &lt;em&gt;IgnoreEverybody&lt;/em&gt;&lt;/a&gt;: this book and his comic strips remind me of the hardcold facts that creative people must endure loneliness, and that theyhave to earn money before doing what they want to do.&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.ftpress.com/store/product.aspx?isbn=0137021143"&gt;MarthaI. Finney's &lt;em&gt;Rebound&lt;/em&gt;&lt;/a&gt; iswhat &lt;a href="http://www.acm.org/"&gt;ACM&lt;/a&gt; first suggested me for careerdevelopment.  The good thing about this book is that it starts fromdescribing how to cope with the traumatic and angry feelings when youfirst find out you're getting pushed out of a job.&lt;/li&gt; &lt;li&gt;&lt;a href="http://pragprog.com/titles/cfcar2/the-passionate-programmer"&gt;ChadFowler's &lt;em&gt;The Passionate Programmer&lt;/em&gt;&lt;/a&gt;, formerly called &lt;em&gt;My JobWent to India&lt;/em&gt;, describes how a software developer should cope withthe change of trends and other social environmental factors.  I highlyrecommend this book as a list of checkpoints for sorting out yourexperience and finding out what you need to do for doing what you reallywant to do.&lt;/li&gt; &lt;/ul&gt; &lt;/p&gt; &lt;p&gt; And I suggest you to think carefully about how you expose yourselfthrough blogs, Twitter, Facebook and other social media, during thetransition period of your job.  Your articles or written pieces on the Internet are &lt;em&gt;public&lt;/em&gt; and not private;&lt;a href="http://askamanager.blogspot.com/2010/03/how-do-managers-feel-about-blogging.html"&gt;anAsk A Manager article about how managers feel about blogging of theiremployees&lt;/a&gt; represents a practical view of pros and cons of bloggingin a plain English.&lt;/p&gt; &lt;p&gt; I also suggest you to make your &lt;em&gt;past blogs private&lt;/em&gt;, when youfeel awkward about what you have written there, even slightly.  Then youcan reopen them after editing and removing the articles before you getembarrassed.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-2247821710396905475?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2247821710396905475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2247821710396905475'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2010/03/writing-for-job-seeking.html' title='Writing for job seeking'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-7773258371203950053</id><published>2009-12-30T00:00:00.002+09:00</published><updated>2011-01-31T11:37:24.699+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Persistent Erlang processes or process pairs</title><content type='html'>&lt;p&gt; &lt;a href="http://www.erlang.org/doc/reference_manual/processes.html"&gt;Erlang'sprocesses&lt;/a&gt; are the minimal unit of execution of Erlang BEAM virtualmachine.  Each process has its own ID, and can send/receivemessages, register the name to the BEAM it's running, and can link withanother process for error handling and monitoring.  It even has its ownprocess dictionary.&lt;/p&gt; &lt;p&gt; I've been thinking about a question for a few days: &lt;em&gt;can you make acomputer holding a process for more than 100 years?&lt;/em&gt;  Theword &lt;em&gt;process&lt;/em&gt; here does not necessarily have to be the Erlangone, but the Erlang process will be a good candidate because the workingenvironment it has to carry around with it is minimal and much smallerthan that of UNIX process.&lt;/p&gt; &lt;p&gt; Keeping a process alive for a long time would not be possible if aprocess is confined to a single machine; the machine's failure means theimmediate death of the process.  So the process should be able to movearound between multiple machines and make its clone on its own.  Usingshared memory should be avoided as possible.  Realizing thesecharacteristics with Erlang is less difficult than in other computerlanguage systems.&lt;/p&gt; &lt;p&gt; I discovered the idea of having a persistent computer process isactually not my original.  Google search engine tell me that Jim Grayhas already published a technical report when he was in Tandem in 1985&lt;a href="http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf"&gt;(PDF copy from HP Labs)&lt;/a&gt; &lt;a href="http://www.eecs.berkeley.edu/~yelick/294-f00/papers/Gray85.txt"&gt; (a scanned text file of the report)&lt;/a&gt; with an idea of &lt;em&gt;persistentprocess-pairs&lt;/em&gt;, as a part of his model of &lt;em&gt;transactions forsimple fault-tolerant execution&lt;/em&gt;.&lt;/p&gt; &lt;p&gt; In Gray's report, he describes a much smarter approach of making twopersistent processes a pair to realize the persistency.  If one of thepair fails, another one will show up and take over the actions of thefailed one.  This idea is much wiser than trying to keep a singleprocess alive.&lt;/p&gt; &lt;p&gt; So now I find a way to realize persistent processes; next I need tolearn how to implement them.  It'll be a part of my new year'sresolution for year 2010.  A happy new year to you all the readers.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-7773258371203950053?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/7773258371203950053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/7773258371203950053'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2009/12/persistent-erlang-processes-or-process.html' title='Persistent Erlang processes or process pairs'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-999660129220777441</id><published>2009-12-21T00:00:00.003+09:00</published><updated>2011-01-31T11:36:14.568+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>DNS operation is utterly neglected by many people</title><content type='html'>&lt;p&gt; &lt;a href="http://isc.sans.org/diary.html?storyid=7774"&gt;Twitter outage viaDNS hijacking&lt;/a&gt; showed another case of common symptom: &lt;em&gt;DNSoperation is simply neglected&lt;/em&gt; by people doing business on the Internet.&lt;/p&gt; &lt;p&gt; I was doing research on DNS transport security from 2002 to 2008.  Oneof the reason I quit focusing on the research was that most, if not all,of the DNS problems are caused by operation failures, not necessarilydue to technical deficiency of the DNS protocols and systems.  In short,it's too political and social to do the technological experiments overDNS.&lt;/p&gt; &lt;p&gt; I still think DNS transport protocol issues are critical for stableInternet operation.  But solving those issues does not help recoveringhuman errors, such as lame delegation (missing link) between the domainname hierarchy.  And stable operation of DNS systems is very difficultto maintain without stable hardware, software, networks, and operators.&lt;/p&gt; &lt;p&gt; I notice many small companies (especially in Japan) keep theirauthoritative servers inside their office, which is not good from thestability point of view.  Actually, for many small Internet sites,including mine, not so many DNS zone records have to be exposed to thepublic.  So I've already outsourced the DNS authoritative servers, whileI periodically watch whether those servers do the right thing.&lt;/p&gt; &lt;p&gt; DNS is by definition a distributed system; and the management standardis much lower than what people (and even Internet engineers) believe.For the further details of how DNS is &lt;em&gt;not&lt;/em&gt; well-managed, Isuggest you to read &lt;a href="http://asert.arbornetworks.com/2009/12/your-dns-is-an-asset-twitter-dns-woes/"&gt;a more detailed commentary on howimportant DNS is as an asset, by Danny McPherson of Arbor Networks&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-999660129220777441?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/999660129220777441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/999660129220777441'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2009/12/dns-operation-is-utterly-neglected-by.html' title='DNS operation is utterly neglected by many people'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-7118825452882604911</id><published>2009-12-06T00:00:00.003+09:00</published><updated>2011-01-31T11:34:36.259+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Schneier'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Bruce Schneier's speech at IWSEC2009</title><content type='html'>&lt;p&gt; I had a chance to meet &lt;a href="http://www.schneier.com/"&gt;BruceSchneier&lt;/a&gt; face-to-face for the first time, when I attended hisinvited talk session at &lt;a href="http://www.iwsec.org/2009/"&gt;IWSEC2009conference&lt;/a&gt; in Toyama, Japan, on October 28, 2009.&lt;/p&gt; &lt;p&gt; I once worked for translating Schneier's book &lt;em&gt;Email Security&lt;/em&gt; (published in 1995, which is now declared outdated by him) intoJapanese. At that time he was a technologist on cryptography.  Thekeynote speech in Toyama showed, however, that he was rather interestedin psychology and human behavior, which is not necessarily logicallypredictable and often considered errorneous from technological points ofview.&lt;/p&gt; &lt;p&gt; While I read a few people who apparently tweeted Schneier's speech wasboring, I found his speech on the psycology of security ratherrefreshing and interesting.  Maybe that's because I've been frequentlydisillusioned by how technological solutions often backfire.  Of courseit's not about the details in cryptography or other security protocolswhich are the primary topics of IWSEC so that might have been boring forthe majority of the participants.&lt;/p&gt; &lt;p&gt; I won't go into the details of Schneier's speech, because most of theindividual topics are frequently coveredin &lt;a href="http://www.schneier.com/blog/"&gt;his blog&lt;/a&gt;.  Let me writeabout one of the things intrigued me the most; it was about the riskheuristics. People are risk-aversed or trying to have sure gain. And atthe same time, they prefer &lt;em&gt;probabilistic loss or risk-takingbehavior when they have possibilities of losing something.&lt;/em&gt;  Withthis heurisric way of thinking, people usually don't want to pay forhaving less risky life, and this is exactly one of the reasons whysecurity products don't make good sales.&lt;/p&gt; &lt;p&gt; After the speech, I asked him why he converted from pure technologist torather a scientist of broader topics including psycology and sociology.Unfortunately I didn't get a definitive answer on what made him so; heonly emphasized the sociological aspects of security were equallyimportant and critical as the technological ones.  Maybe I could findthe answer in one of his books; especially if the reason is a highlypersonal one, which no one will ever know.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-7118825452882604911?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/7118825452882604911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/7118825452882604911'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2009/12/bruce-schneiers-speech-at-iwsec2009.html' title='Bruce Schneier&apos;s speech at IWSEC2009'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-8503248637759085653</id><published>2009-12-05T00:00:00.002+09:00</published><updated>2011-01-31T11:32:36.625+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='Github'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Erlang and Github</title><content type='html'>&lt;p&gt; &lt;a href="http://www.erlang.org/"&gt;Erlang/OTP&lt;/a&gt; is now officiallymaintained under &lt;a href="http://github.com/erlang/otp/"&gt;the Githubrepository&lt;/a&gt;, since the release R13B03. I think this is a milestonefor the language, because the Ericsson development team finally decidedto show the interim results of what they are doing for the time being. &lt;/p&gt; &lt;p&gt; One of the characteristics I like about Erlang is that the languagespecification and libraries have been maintained by a single entitycalled Ericsson's Erlang/OTP Development Team.  I do not want an anarchyfor computer language and operating systems.  I prefer BSDism thanLinuxism in this sense; I think pieces of code should be rathercontrolled by the core people while sufficiently accepting improvementsfrom the other developers.&lt;/p&gt; &lt;p&gt; The old Erlang/OTP daily snap archives, however, are no longersufficient to catch up with the daily development cycles.  And manynon-Ericsson authors have put in their patches into Erlang, includingmine.  So there had to be some systems to accept user feedbacks.&lt;/p&gt; &lt;p&gt; Using an open repository system such as Github is a wise idea forincorporating new code into Erlang/OTP, and showing the official statusof modifications.  Git is flexible enough to allow per-user andper-purpose branches.  And Github allows forking between the users.  TheEricsson's Team doesn't have to build and publicize its own coderepository system for Erlang/OTP, which will cost them significantamount of human and financial resources.&lt;/p&gt; &lt;p&gt; And now I have an official requirement to learn Git; to catch up withthe Erlang/OTP development cycles.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-8503248637759085653?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/8503248637759085653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/8503248637759085653'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2009/12/erlang-and-github.html' title='Erlang and Github'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-5428123538966823349</id><published>2009-09-02T00:00:00.003+09:00</published><updated>2011-01-31T11:30:52.464+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='eventual consistency'/><title type='text'>The definition of eventually secure systems</title><content type='html'>&lt;p&gt; I've been using Web services under a new assumption of integrity thesedays, which allows the data inconsistency during a span of a fewminutes.  The designers of those systems allow such a relaxed conditionto data consistency, for putting higher priority to availability andtolerance to split database subsystems within a cluster representing anintegrated database.&lt;/p&gt; &lt;p&gt; Then a question comes into my mind: &lt;em&gt;what does it mean for a database tobe secured, while allowing unstable condition in a range of fewminutes?&lt;/em&gt;  Of course guaranteeing unconditional access restriction is asolution to claim a database secure, provided each party who is allowedto get access to the database does not harm the integrity at all.  Thissort of strict access limitation, however, is impractical for a publicsystem. So, a new notion of security, probably called &lt;em&gt;eventuallysecure&lt;/em&gt; systems, should be introduced.  But how?  I still have noidea about this.&lt;p&gt; Traditionally, databases are designed under the restriction of&lt;em&gt;Atomicity, Consistency, Isolation and Durability&lt;/em&gt; (ACID) for everyquery and update operation.  The ACID policy demands locking of criticalsections between conflicting database requests and causes performancedegradation.&lt;/p&gt; &lt;p&gt; On the other hand, Gilbert and Lynch [1]claim in their &lt;em&gt;CAP Theorem&lt;/em&gt; for a distributed database, that thethree properties of a database will not be realized at the same timing:data consistency, availability, and tolerance to network partition.BASE [2], which stands for &lt;em&gt;basically available, soft  state, eventually consistent&lt;/em&gt;, is an example of anti-ACID designpolicies based on the CAP Theorem, giving higher priority toavailability and tolerance to network partition than the dataconsistency.&lt;/p&gt; &lt;p&gt; Vogels [3] also explains the idea of &lt;em&gt;eventual consistency&lt;/em&gt;, or an&lt;em&gt;eventually consistent&lt;/em&gt; change of states, as an analogy to DomainName System (DNS), which allows the clients to query the distributeddatabase to see the inconsistency during the propagation of databaseupdate events, while the inconsistency will be resolved in a finiteperiod determined by the configuration of the replication networkbetween the database caches.&lt;/p&gt; &lt;p&gt; While CAP Theorem, BASE, and the notion of eventually consistent systemsare effective to relax the boundary condition of data inconsistency formaking a very large-scale systems, those ideas will not solve the coreissue: &lt;em&gt;how to keep the consistency of a cluster of a database in afinite predictable time range.&lt;/em&gt;  I understand many applications do notrequire atomic consistency of data, especially those for casualconversation, such as Twitter or Facebook.  I don't think, however, thata bank system can be created under the BASE principle, unless themaximum allowance of temporal data inconsistency or the maximum time ofeventual convergence are given and proven.&lt;/p&gt; &lt;p&gt; And I think on running large-scale systems, things are often gettingeventually &lt;em&gt;inconsistent&lt;/em&gt; and disintegrated, rather thaneventually consistent. I still wonder how we can solve this problemconsistently.&lt;/p&gt; &lt;p&gt; References:&lt;ul&gt;   &lt;li&gt;[1] Gilbert, S. and Lynch, N. 2002. Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services. SIGACT News 33, 2 (Jun. 2002), 51-59. DOI=&lt;a href="http://doi.acm.org/10.1145/564585.564601"&gt;http://doi.acm.org/10.1145/564585.564601&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;[2] Pritchett, D. 2008. BASE: An Acid Alternative. Queue 6, 3 (May. 2008), 48-55. DOI=&lt;a href="http://doi.acm.org/10.1145/1394127.1394128"&gt;http://doi.acm.org/10.1145/1394127.1394128&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;[3] Vogels, W. 2008. Eventually Consistent. Queue 6, 6 (Oct. 2008), 14-19. DOI=&lt;a href="http://doi.acm.org/10.1145/1466443.1466448"&gt;http://doi.acm.org/10.1145/1466443.1466448&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-5428123538966823349?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5428123538966823349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5428123538966823349'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2009/09/definition-of-eventually-secure-systems.html' title='The definition of eventually secure systems'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-3698552106203388773</id><published>2009-08-12T00:00:00.003+09:00</published><updated>2011-01-31T11:28:22.162+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Current and outdated references of secure C programming</title><content type='html'>C is the modern assembly language for many architectures, and still themost useful computer language for me.  C does not have a rigid grammarand has a lot of variants and local dialects, and have revised a fewtimes including the old UNIX C, ANSI C 1989 which first introducedprototypes, and C99.  Finding out the de-facto standard elements of C is a complicated work.You can find a bunch of different indentation andwriting styles on C code.  I do not recommend a specific coding style inthis article; I can only recommend you need to follow the mainstreamstyle when working in a project.Sometimes you have to read the books for discovering what is the most right thing to do.I recommend following books for C programming now:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/dp/013089592X/"&gt;C: A reference Manual (5th edition)&lt;/a&gt; (2002), which has a lot of precise and detailed examples on ambiguous usage;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oreilly.com/catalog/9780596003944/"&gt;Secure Programming Cookbook for C and C++&lt;/a&gt; (2003), which explains what to do and what not to do to write secure code; and&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/dp/0201433079/"&gt;Advanced Programming in the UNIX Environment (2nd Edition)&lt;/a&gt; (2005), which explains usages of modern UNIX system calls and libraries.&lt;/li&gt;&lt;/ul&gt;For practical programming, however, depending on books is not enough.Actually those books I recommended above are 5 to 7 years old as of2009, so if you want to know the cutting-edge details of programming,you should read the latest software.  Consulting a C compiler manual andwell-written source code such as that of BSD kernels is a must if youwant to write an efficient code (those are freely available).One thing to which you've got to pay special attention is that booksare &lt;em&gt;eventually but surely getting outdated&lt;/em&gt;.  Books are not theWeb articles; they are static and will not change.  The lifespan of areference book for computer science is typically very short these days,due to the rapid change of technologies.  Books about C is not anexception either. And I should confess that a few days ago I decided to sell the followingold worn-out books because I found out them simply outdated (and &lt;em&gt;Ino longer recommend the following two books any more&lt;/em&gt;):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/dp/0131103628/"&gt;The C Programming Language (2nd edition)&lt;/a&gt; (1988)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/dp/0131315099/"&gt;The Standard C Library&lt;/a&gt; (1991)&lt;/li&gt;&lt;/ul&gt;The reason that I found them outdated were as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;They are old, written in approx. 20 years ago, and they do notreflect the changes of C99 and other additional elements;&lt;/li&gt;&lt;li&gt;Not mentioning secure programming at all, including&lt;ul&gt;&lt;li&gt;avoiding reference to non-existent data objects,&lt;/li&gt;&lt;li&gt;preventing buffer overflows,&lt;/li&gt;&lt;li&gt;limiting the length of a string;&lt;/li&gt;&lt;/ul&gt;and&lt;/li&gt;&lt;li&gt;The C library structure and source have been changed a lot for these 20 years.&lt;/li&gt;&lt;/ul&gt;Frankly speaking, I loved those old books, especially which I referredto the most during my apprentice time of learning the language in thelate 1980s. Those books were the only source before the Web.  I had torepeatedly read the old bestsellers many times to discover the details.I do respect the authors of those books. They are pioneers of UNIX and C programming.Nothing is eternal, however; and I suggest use to stop using outdatedreference books ASAP for every subject, not only for programming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-3698552106203388773?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3698552106203388773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3698552106203388773'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2009/08/current-and-outdated-references-of.html' title='Current and outdated references of secure C programming'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-6956311927834065059</id><published>2009-03-30T11:09:00.000+09:00</published><updated>2011-01-31T11:21:38.763+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='tumblr'/><category scheme='http://www.blogger.com/atom/ns#' term='social binding'/><title type='text'>Moving away from heavyweight blogs</title><content type='html'>I admit I've been dormant on blogs.  Instead I've been active on Twitter and Tumblr; you can be reactive and posting short messages on those so-called microblogging systems.  Time is the most scarce resource for me, and I want something with smaller overhead to write.&lt;br /&gt;&lt;br /&gt;I will not entirely remove the contents of this blog, but I will not post a new article here, without further notice.&lt;br /&gt;&lt;br /&gt;FYI, the pointers for my microblogging URLs:&lt;br /&gt;(Note: the tumblr sites have been deleted by July 2009)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;del&gt;&lt;a href="http://jj1bdx.tumblr.com/"&gt;jj1bdx: quote of technology&lt;/a&gt; &lt;br /&gt;&lt;/del&gt;&lt;/li&gt;&lt;li&gt;&lt;del&gt;&lt;a href="http://cyberperiscope.tumblr.com/"&gt;Cyberperiscope Reviews (in Japanese)&lt;/a&gt;&lt;br /&gt;&lt;/del&gt; &lt;/li&gt;&lt;li&gt;&lt;strike&gt;&lt;a href="http://twitter.com/jj1bdx"&gt;Twitter: jj1bdx&lt;/a&gt; (in Japanese)&lt;/strike&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://twitter.com/kenji_rikitake"&gt;Twitter: kenji_rikitake&lt;/a&gt; (in English)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.k2r.org/kenji/blog/"&gt;Concurrently Chaotic&lt;/a&gt; (in English) &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-6956311927834065059?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/6956311927834065059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/6956311927834065059'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2009/03/moving-away-from-heavyweight-blogs.html' title='Moving away from heavyweight blogs'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-5391598001878136506</id><published>2009-01-26T16:44:00.000+09:00</published><updated>2011-01-31T11:21:38.771+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teleworking'/><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='privacy'/><category scheme='http://www.blogger.com/atom/ns#' term='risks'/><category scheme='http://www.blogger.com/atom/ns#' term='preventing overworking'/><title type='text'>Open-plan office and peer-monitoring socialism against creativity</title><content type='html'>When I started working as a programmer after I graduated from college in 1990s, I was fortunate enough to have a wall-separated booth, thoughwithout a door.  This is something which workers have taken for granted atresearch laboratories in the USA or Canada.  But things have beendifferent in Japan, where I live and work.&lt;p&gt;Having a separated space for individuals has been considered a luxury inJapanese companies, where people think &lt;i&gt;space is money&lt;/i&gt;.  So I should emphasize I was &lt;i&gt;fortunate&lt;/i&gt;; because in Japan still corporateoffices are mostly open-planned: everybody seeing each other with nowall, whole bunch of noise, and is forced to listen to each other.&lt;p&gt;I had to work in 1980s with an open-plan office in Japan as an inturn,and I thought working in the office would surely hurt my body anddegrade the quality of my thinking.  If I were just moving around anddoing ordinary tasks, I wouldn't have considered it much.  But I had tothink there for writing a technical report.  So I thought something hadto be changed.&lt;p&gt;I do not reject the idea of shared meeting space or the importance offace-to-face meetings.  Those are vital factors of successful companies.But without a place for solitude, nobody would be ableto &lt;i&gt;think&lt;/i&gt;.  Without thinking, no innovation will come, and nonew idea will emerge.  How can you think without being alone?&lt;p&gt;Recently I've found an article on Web which says working in open-planoffice &lt;i&gt;makes you sick&lt;/i&gt; and &lt;i&gt;is hazardous to your health&lt;/i&gt;.&lt;p&gt;&lt;a href="http://eprints.qut.edu.au/16732/"&gt;A recent study of Dr. VineshOommen and his group in Queensland University of Technology&lt;/a&gt; showsthe following results:&lt;blockquote&gt;Results: Research evidence shows that employees face a multitude ofproblems such as the loss of privacy, loss of identity, low workproductivity, various health issues, overstimulation and low jobsatisfaction when working in an open plan work environment.&lt;/blockquote&gt;Well said.&lt;p&gt;Tom Demarco and Timothy Lister also write in one of theirclassics &lt;i&gt;Peopleware&lt;/i&gt; (2nd Edition, 1999, Dorset HousePublishing) as follows (in Chapter 12):&lt;blockquote&gt;Management, at its best, should make sure there is enough space, enoughquiet, and enough ways to ensure privacy so that people can create theirown sensible workspace.&lt;/blockquote&gt;I've read the 1st edition of Peopleware (published 1987) in 1989, so theworkplace privacy issue is well-known for at least 20 years.&lt;p&gt;On the other hand, Japanese workplace has little changed for the past 20years.  I still see many open-plan offices, especially amongnon-engineering workers.&lt;p&gt;I suspect Japanese open-plan offices are designed for managers to putthe subordinates under surveillance during the working hours.  This isan example of a dark side in Japanese workplace socialism.&lt;p&gt;In a typical office layout, a manager in a team has the own desk besidesthe cluster of the desks for the team members.  A team member can't takea rest or make a physical movement during working hours.  I think thissort of desk layout does not respect the health of the team members, letalone the privacy or the productivity.&lt;p&gt;I've found quite a few articles about this open-plan office sicknessissue on the Web.  So I think this is a matter of concern for manypeople.  Maybe this is a sort of backlash due to the recent economydepression.  &lt;p&gt;I'd rather work alone if I were put into an open-plan office every day again, solong as my brain and my ideas are the source of my income.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-5391598001878136506?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5391598001878136506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5391598001878136506'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2009/01/open-plan-office-and-peer-monitoring.html' title='Open-plan office and peer-monitoring socialism against creativity'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-1121244235815213784</id><published>2009-01-10T08:20:00.000+09:00</published><updated>2011-01-31T11:21:38.773+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PKI'/><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='risks'/><title type='text'>The risks of systems left alone and untested</title><content type='html'>Computer systems left alone unmaintained are a premier source of risks. Those systems may cause a serious crisis and a major service disruption.&lt;br /&gt;&lt;br /&gt;On September 14, 2008, All Nippon Airways (ANA), a major Japanese airline, caused the disruption of the ticketing service due to the &lt;i&gt;cryptographic function software expiration&lt;/i&gt; (as they announced in &lt;a href="http://www.ana.co.jp/topics/notice080914/index.html"&gt;the Japanese press release&lt;/a&gt;), which is logically assumable about the PKI certificate, according to the other Japanese-written press reports like &lt;a href="http://www.itmedia.co.jp/enterprise/articles/0809/18/news095.html"&gt;ITmedia's &lt;/a&gt;and &lt;a href="http://itpro.nikkeibp.co.jp/article/NEWS/20080918/315052/"&gt;Nikkei ITpro's&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The chilling fact revealed was that the ANA left the cryptographic function unused for 2 years and &lt;i&gt;did not make a review about expiration at all &lt;/i&gt;when they activated the function for the terminals used by the ticketing agents. This is an awful example of software development indeed.&lt;br /&gt;&lt;br /&gt;I wrote about the service disruption for &lt;a href="http://catless.ncl.ac.uk/Risks/25.34.html#subj11"&gt;RISKS-DIGEST 25.34&lt;/a&gt; just after the incident occurred.&amp;nbsp; And recently I knew the article was quoted by &lt;a href="http://venafiblog.com/index.php/2009/01/07/gregorywebb/it-lessons-learned-the-hard-way/"&gt;another blog article&lt;/a&gt; yesterday.&lt;br /&gt;&lt;br /&gt;The expiration issue is not only about the PKI certificate; domain name registration is another source of expiration risks. An expired domain can be abused for phishing and overtaken by attackers.&amp;nbsp; Software license is another good example.&amp;nbsp; In general, Expiration is a part of overall misconfiguration.&amp;nbsp; &lt;i&gt;So when did you review the expiration date of the system resources under your control last time?&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-1121244235815213784?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1121244235815213784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1121244235815213784'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2009/01/risks-of-systems-left-alone-and.html' title='The risks of systems left alone and untested'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-1652662582200424151</id><published>2009-01-05T21:23:00.000+09:00</published><updated>2011-01-31T11:21:38.775+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2009'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='social binding'/><category scheme='http://www.blogger.com/atom/ns#' term='privacy'/><title type='text'>Chain of distrust</title><content type='html'>Communication is a collection of trust between the involving parties. Unfortunately, the trust is eroding in Internet, or in the society itself; and I see the emerging &lt;i&gt;chains of distrust&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;An idea called &lt;i&gt;Chain of trust&lt;/i&gt; is a practical implementation of authentication.&amp;nbsp;&amp;nbsp; Let me put it in this way; when Alice trusts Bob and Bob trusts Carol, then Alice assumes Carol is trustable.&amp;nbsp; In this way, Alice doesn't have to directly authenticate Carol.&amp;nbsp; Internet is another good example of chain of trust; each router assumes the peer routers will forward the packets originated from itself.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;But the chain of trust is not what should be taken as it is, in the real world.&amp;nbsp; In the Alice-Bob-Carol case of the previous paragraph, the peer-to-peer trust relationship between Alice and Carol is &lt;i&gt;not necessarily &lt;/i&gt;established; the existence of distrust between Alice and Carol is even possible, and they may don't want to talk to each other.&amp;nbsp; Communication through a proxy is in fact quite common between the distrusting two parties. Should I call this a chain of trust?&amp;nbsp; I should rather call this a chain of &lt;i&gt;distrust&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;The current Internet is full of chains of distrust. Maybe I should rephrase it for accuracy; the chains of &lt;i&gt;limited trust&lt;/i&gt;. For example, your employer will not unconditionally trust you to protect the employer's privacy, so you have to communicate outside the employer's network through a firewall, usually made of packet filters and proxy servers.&amp;nbsp; Your employer gives you a limited trust for the external communication.&amp;nbsp; This sort of limitation may cause your distrust to your employer, but the employer usually considers this is a security feature to protect the relationship with you.&amp;nbsp; The difference of interpretation to the situation of limited trust can be a source of distrust.&lt;br /&gt;&lt;br /&gt;In a set of trusted parties with a limited size, each party does not have to spend time on authenticating each other for every packet they communicate with each other. The trust is proven through the physical connection and perimeters.&amp;nbsp; Internet's packet forwarding system extends this idea of physical connection to the chains of trust by reliable communication with discrete packet deliveries, and the idea has worked well in a limited community where the people are trustable with each other. The end-to-end principle [1] has worked so effectively that the engineers of Internet firmly believe in it.&lt;br /&gt;&lt;br /&gt;The reality we are facing, however, is that the people are no longer trustable with each other and rather distrusting one another. People are seeking for a safe haven by creating a chain of distrust, which is apparently a false sense of security, considering that the chain of distrust is easily broken if the proxy between the distrusting two has a malicious intent.&lt;br /&gt;&lt;br /&gt;We are heading into the very difficult times, where the security engineers ought to secure the chains of distrust as well as the chains of trust.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;[1] Blumenthal, M. S. and Clark, D. D. 2001. Rethinking the design of the Internet: the end-to-end arguments vs. the brave new world. &lt;i&gt;ACM Trans. Internet Technol.&lt;/i&gt; 1, 1 (Aug. 2001), 70-109. DOI=&lt;a href="http://doi.acm.org/10.1145/383034.383037%20"&gt;http://doi.acm.org/10.1145/383034.383037 &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-1652662582200424151?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1652662582200424151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1652662582200424151'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2009/01/chain-of-distrust.html' title='Chain of distrust'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-2731309854389591678</id><published>2008-12-31T16:59:00.001+09:00</published><updated>2011-01-31T11:53:33.603+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='radio'/><category scheme='http://www.blogger.com/atom/ns#' term='amateur radio'/><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><category scheme='http://www.blogger.com/atom/ns#' term='CW'/><category scheme='http://www.blogger.com/atom/ns#' term='self introduction'/><title type='text'>Working CW stations at the end of the year</title><content type='html'>I've set up an amateur radio station again this week, and worked some stations, including some friends.  The transmission feeder is a temporary one, so I will disassemble and reassemble the system soon, after the new year vacation time is over.&lt;br /&gt;&lt;br /&gt;Amateur radio for me since 2002 is mostly CW (Morse Code).  CW is the most primitive but still practical digital communication form.  The bit rate is about 10 to 25 bps (&lt;i&gt;no kilo, mega, or giga)&lt;/i&gt; (that is 12 to 30WPM) and it's very slow indeed.  You still can send something meaningful over CW, and it has been used for more than 100 years.  See how people are using &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt; these days.&lt;br /&gt;&lt;br /&gt;CW has already been phased out from the mainstream of professional communication systems, but it's still a viable backup, and ham radio operators still use it over shortwaves to exploit the maximum possibility of communication, to overcome the difficulties of natural and artificial noises, and significant path loss.  On the other hand, the latency is minimal; only the path distance between the peers determines the delay time.  It's the oldest &lt;i&gt;chat system&lt;/i&gt; in the world.&lt;br /&gt;&lt;br /&gt;The hardest part of CW is that you need to learn and have a lot of practice to listen to it.  It's like learning another foreign language. Some eccentric people including me, however, choose &lt;i&gt;this road less traveled&lt;/i&gt;, for many reasons.&lt;br /&gt;&lt;br /&gt;Many old operators may find out their younger days of enthusiasm towards radio itself.  And many hardware hackers will use CW for realizing the simplest but useful radio system with a pair of home-made transmitter and receiver. Whatever the reason it might be, still quite a lot of people devote themselves to CW.  And I am one of them.&lt;br /&gt;&lt;br /&gt;Working on CW is simply a good time for me. Learning for a faster CW listening stimulates my mind a lot. And CW reminds me of the very basic issues of digital communication; reliability, bandwidth, stability, latency, and practicality. The procedure of sending and receiving letters by yourself gives you more time to &lt;i&gt;think&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;I'm a computer engineer and scientist, and technologically CW is an archaic thing. The principle embedded, however, is still effective to be a fundamental motivation of pursuing engineering and scientific skills; to explore &lt;i&gt;the road less traveled&lt;/i&gt; and discover the new world.&lt;br /&gt;&lt;br /&gt;The following article of Jeff, KE9V may help you to understand why some old amateur radio operators are still enthusiastic to operate on CW:&lt;a href="http://ke9v.net/stories/roadless.html"&gt; The Road Less Traveled&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;73 and have a happy new year 2009.&lt;br /&gt;&lt;br /&gt;Kenji Rikitake, JJ1BDX(/3), &lt;DEL&gt;JO3FUO&lt;/DEL&gt;, N6BDX and JQ2KST&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-2731309854389591678?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2731309854389591678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2731309854389591678'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/12/working-cw-stations-at-end-of-year.html' title='Working CW stations at the end of the year'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-5902827313621653315</id><published>2008-12-06T10:23:00.000+09:00</published><updated>2011-01-31T11:21:38.781+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='self introduction'/><title type='text'>My Influences</title><content type='html'>My influences on programming, Internet, and computer skills:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Tsuneji Rikitake, my father: who taught me basic math, FORTRAN, and financed my startup (of my professional career, indeed)&lt;/li&gt;&lt;li&gt;Paul Vixie and DEC NSL people: for the primary idea of &lt;em&gt;firewalls&lt;/em&gt; and Internet systems administration, and the proper engineering attitudes toward problem solving&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Daniel J. Bernstein: on re-thinking Internet protocols from the very beginning, especially on DNS&lt;/li&gt;&lt;li&gt;Bruce Schneier: for the basic philosophy and principles of &lt;em&gt;security&lt;/em&gt;, not only for computer systems&lt;/li&gt;&lt;li&gt;UNIX gurus on Bell Labs and BSD communities: for the programming suite and styles, including C, awk, and Bourne shell&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Joe Armstrong and the Erlang programming communities: for letting me know a practical message-passing-based concurrency &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I know there are many other people I should put on the list, but I will just keep this list small.&lt;br /&gt;&lt;br /&gt;My salutation to &lt;a href="http://www.chadfowler.com/2008/12/1/who-are-your-influences"&gt;Chad Fowler&lt;/a&gt; and&amp;nbsp;&lt;a href="http://weblog.hypotheticalabs.com/?p=336"&gt;Kevin Smith&lt;/a&gt; for reminding me of this topic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-5902827313621653315?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5902827313621653315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5902827313621653315'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/12/my-influences.html' title='My Influences'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-778145237744105533</id><published>2008-11-16T17:28:00.000+09:00</published><updated>2011-01-31T11:21:38.783+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YouTube'/><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><title type='text'>A quiet life without a TV tuner</title><content type='html'>I've been spending time without TV at home since this (2008) September.  And I recommend you to do so too for living a quiet life.&lt;br /&gt;&lt;br /&gt;I decided to stop watching TV regularly; no airwave, no satellite, no cable channel at all.  Actually the condo building I live is cable-TV ready.  But I decided to quit.  I gave our LCD TV to my wife's Mom. We instead listen to the radio when we're at home and having a dinner or lunch and we want some news.  Most of airwave TV programs are junk.  And most of non-airwave (that is, paid) TV programs are also junk.  And we know most of airwave radio programs are junk.  But some of them, including news and classic music programs of our national broadcaster (in Japan), are fortunately not. I carry around a pocket radio when I travel in Japan to listen to the same night program called Radio Shin-ya-bin, a rather-quiet-and-calm program without ads.&lt;br /&gt;&lt;br /&gt;We still want to see the DVD contents.  We have a DVD player.  So I decide to newly buy and install a &lt;em&gt;new&lt;/em&gt; PC display instead.  It accepts DVI, VGA, component and NTSC video, and even HDMI.  It has 1920x1200 pixel resolution; an excessive spec for DVD or an old PC.  It doesn't have a TV tuner, however.  It doesn't have speakers either, but that is OK, because I installed a pair of speakers and an amplifier with AM/FM radio tuner installed.  So no problem for enjoying audio.  &lt;br /&gt;&lt;br /&gt;The good thing about &lt;em&gt;not&lt;/em&gt; watching TV while on a family meal is that we rather talk and make a lot of conversations.  And we started to read a lot of books and talk about them.  It's like living in the world of 1950s or 1960s, though we still use PCs.&lt;br /&gt;&lt;br /&gt;We have also quit subscribing newspapers since this April.  I decided so because even Nikkei Shimbun, let alone other papers, were carrying junk articles these days.  The New York Times and The Economist have already allowed people to read their articles online freely, as other media companies follow.  So I told my wife we didn't need a newspaper &lt;em&gt;subscription at home&lt;/em&gt; anyway.  She first complained, but eventually she also learned to enjoy reading something instead, or to spend the time for being exposed to mass media to something else.&lt;br /&gt;&lt;br /&gt;We don't have any game machines such as Sony's PlayStation or Microsoft's Xbox.  Our eyes can no longer follow or respond to artificial graphic pictures.  &lt;br /&gt;&lt;br /&gt;We mostly use PC to read letters and design presentations; we don't make active 3D graphics and we will not unless we need to visualize something for our works.  And of course we see visual presentations on YouTube and elsewhere.  The good news is, however, they are on-demand only.  &lt;em&gt;Unless you explicitly tell PCs to show them, you don't have to watch at those on-demand videos.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-778145237744105533?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/778145237744105533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/778145237744105533'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/11/quiet-life-without-tv-tuner.html' title='A quiet life without a TV tuner'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-8481322906120379190</id><published>2008-11-13T15:55:00.000+09:00</published><updated>2011-01-31T11:21:38.785+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrent programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Why choosing Erlang for concurrent processing</title><content type='html'>A few weeks ago I was reading a blog article called &lt;a href="http://www.cincomsmalltalk.com/userblogs/ralph/blogView?showComments=true&amp;entry=3364027251"&gt;Erlang, the next Java&lt;/a&gt;.  While I agreed with the author's views, I felt something was bugging me in the article, which eventually lead me to write this blog article.&lt;br /&gt;&lt;br /&gt;I didn't choose Erlang just because it's a functional language.  I have chosen Erlang to learn because Erlang programming requires and has to enforce the programmers to write the concurrent code. Concurrent programing should minimize the number and size of critical regions and bottlenecks.  And I think writing such programs is very difficult without the assistance of the programming language.&lt;br /&gt;&lt;br /&gt;Many programming languages claim or plan to &lt;em&gt;be capable of&lt;/em&gt; running a part of code based on concurrent processing. For example, Ruby will incorporate distributed storage mechanism called Roma and the task administration subsystem called Fairy.  Another good example is Haskell concurrency: it is implemented as a language feature called &lt;a href="http://www.haskell.org/ghc/docs/6.6/html/users_guide/lang-parallel.html"&gt;Parallel Haskell&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I think, however, introducing concurrency while allowing programmers to write code to use shared memory will cause a lot of problems.  Joe Armstrong has already described &lt;a href="http://armstrongonsoftware.blogspot.com/2006/09/why-i-dont-like-shared-memory.html"&gt;his concern on shared memory in his blog&lt;/a&gt;.  I support his arguments; those arguments an important part of the reason why I decided to learn Erlang.&lt;br /&gt;&lt;br /&gt;I should add another problem programmers will face when dealing with code allowing shared memory; rewriting the code for removing shared access to run it efficiently on concurrent environment will be an incredibly difficult task.&lt;br /&gt;&lt;br /&gt;Unfortunately, most existing languages have already had a lot of code written assuming shared memory areas.  For example, C code with &lt;em&gt;extern&lt;/em&gt; variables implicitly assume those are shared between the functions in all source code files linked together.  I assume I can hardly find any set of C code without using an &lt;em&gt;extern&lt;/em&gt; declaration.  I have learned that even Common Lisp has &lt;a href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/dec_special.html#special"&gt;&lt;em&gt;special&lt;/em&gt;&lt;/a&gt; declaration for the variables, which allows multiple functions share the same object, out of lexical scopes.&lt;br /&gt;&lt;br /&gt;Another example of shared-memory concurrency is the operating system (OS) threads. C/C++/Java threads inherently share the parent OS process address space and environment in common.  Python has the &lt;a href="http://www.python.org/doc/2.5.2/lib/thread-objects.html"&gt;Thread Objects&lt;/a&gt;.  While OS threads often ease implementation of concurrent servers by reducing the task switching time, the semantics is implicit and error-prone.&lt;br /&gt;&lt;br /&gt;I understand and agree that sharing objects itself cannot be completely eliminated under the read-world constraints of processing and communication timings between programming language functions.  I think, however, that programming languages should help the programmers to minimize writing code including shared memory areas, which will turn themselves into critical regions.&lt;br /&gt;&lt;br /&gt;Erlang imposes necessary restriction on avoiding &lt;em&gt;implicit data sharing&lt;/em&gt; between functions by:&lt;br /&gt;&lt;ul&gt;  &lt;br /&gt;&lt;li&gt;prohibiting multiple variable assignments in a function;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;enforcing and helping the programmers to conduct message-passing programming between functions, by &lt;em&gt;not&lt;/em&gt; providing any implicit data-sharing facility between the functions;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;providing fast task-switching capabilities, by giving the definition that functions are the minimum concurrent execution units; and&lt;/li&gt;&lt;br /&gt;&lt;li&gt;restricting the usage of data-sharing facilities between functions to the minimum, such as process dictionaries, ETS, DETS, Mnesia, and the global naming service shared between connected Erlang nodes, by requring explicitly writing so in the code.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;In short, I think &lt;em&gt;adding concurrent features is not enough for concurrent programming; prohibiting non-concurrent habits and enforcing writing concurrent programs are necessary as part of the programming language specifications.&lt;/em&gt;  I believe concurrent programming under coming multi-processor environment is only possible under such a hard-liner attitude to the programmers.  I feel programmers including myself are &lt;em&gt;very conservative and rigid&lt;/em&gt; to change their sequential-programming habits.  &lt;br /&gt;&lt;br /&gt;And actually, I was one of those programmers who did not recognize the urgency of learning concurrent programming in 2007.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-8481322906120379190?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/8481322906120379190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/8481322906120379190'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/11/why-choosing-erlang-for-concurrent.html' title='Why choosing Erlang for concurrent processing'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-3845671981195508544</id><published>2008-08-31T11:07:00.000+09:00</published><updated>2011-01-31T11:21:38.787+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Programming language design and security</title><content type='html'>I suspect quite a few programming language designers just don't care about the security of the languages and the systems built by them.  Maybe I'm too pessimistic, but a recent experience brought me the idea.&lt;br /&gt;&lt;br /&gt;I was an audience at an event called &lt;a href="http://ll.jus.or.jp/2008/"&gt;Lightweight Language Future&lt;/a&gt; yesterday in Nakano, Tokyo, Japan.  I only attended the first two sessions.  The second session was a panel discussion about &lt;em&gt;the programming language 100 years later&lt;/em&gt;.  While the discussion was technically intriguing, &lt;em&gt;I heard not a word about security at all&lt;/em&gt; during the panel.  Two of the panelists (names withheld because I don't want this article to be a personal attack to them) were the principal designers of popular lightweight languages, so I asked them in the Q&amp;A session about how they would deal with the security issues which would become more serious in the future.  One of the answers surprised me; the person told me that &lt;em&gt;VMware would do&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;I understand virtualization in various operating system layers, including VMware and FreeBSD jail, is surely a good hack to control the damage area in the whole system to run a public access system.  I think it's not sufficient at all, however, to prevent &lt;em&gt;future&lt;/em&gt; security incidents; if a programming language is potentially vulnerable to attacks, the systems built by the language will be also equally vulnerable.&lt;br /&gt;&lt;br /&gt;  I think programming language designers are not exempted from the responsibility of (at least trying to) making computer systems secure.  If I could hear more constructive ways of solving the security problems in the answer from one of the panelists, such as:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;protecting the language from the buffer-overflow bugs; &lt;br /&gt;&lt;li&gt;preventing the garbage collector from crashing even in a hostile environment where the external attackers try to deliberately manipulate the pointers or variables to hack into the protected memory area;&lt;br /&gt;&lt;li&gt;implementing a syntax or semantics validation system in the programming language so that the programmers can apply it to validate the external data, such as those from the network-connected users; or&lt;br /&gt;&lt;li&gt;preventing the race condition, deadlocks, or any sort of resource starvation by the intentional or unintentional programming;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;then I would have been much more convinced.  But now I should suspect that quite a few programming language designers &lt;em&gt;just don't care&lt;/em&gt; about the security consequences of the features they build into the language.&lt;br /&gt;&lt;br /&gt;I don't have a definitive answer to solve the issues of unsecure systems built from unsecure programming languages.  All I can write now is that a security-aware programming language will surely help making a secure system.  Note that security is not just about privacy and secrecy; it's also about the reliability and fault-tolerance.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Note on 4-SEP-2008:&lt;/em&gt; one of my friends later reviewed the panel recording and told me that it was not VMware but &lt;em&gt;VM layer&lt;/em&gt; that the panelist answered to me.  I still think solely relying on the VM layer is insufficient for building a security structure in a programming language, though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-3845671981195508544?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3845671981195508544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3845671981195508544'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/08/programming-language-design-and.html' title='Programming language design and security'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-1970781130862406203</id><published>2008-08-19T12:57:00.000+09:00</published><updated>2011-01-31T11:21:38.789+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='self introduction'/><title type='text'>About myself: 1965-2000</title><content type='html'>This self introduction is a reprint of an article once posted to my own website &lt;a href="http://www.k2r.org/kenji/"&gt;http://www.k2r.org/kenji/&lt;/a&gt; as a part of my self introduction.&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;I was born in 1965.  I grew up in a Japanese urban community in Setagaya-ku, Tokyo.  The whole things changed in 1974 when my father decided to go to Boulder, CO, USA for a visiting professor job at &lt;a href="http://cires.colorado.edu"&gt;Cooperative Institute for Research in Environmental Sciences&lt;/a&gt; of University of Colorado at Boulder.&lt;br /&gt;&lt;br /&gt;For the first 6 months of my American life, I didn't speak English at all.  We lived there for 15 months, so I was a lousy kid speaking broken English just before when we returned to Japan.  I still think the life in the USA was the best of my times.  I've never lived abroad since then.  I've been keeping up my English proficiency by listening to and watching English-speaking broadcasts, and reading English Web articles.&lt;br /&gt;&lt;br /&gt;After coming back to Tokyo, I found out myself I was fatally incompatible with and just way too outspoken than other kids around.The totalitarian and socialist society and elementary schools of Japan did not and still do not accept me.  They told and still tell me that I was and I am so-called contaminated with individualism and American way of thoughts.  So I had to make a difference to survive.&lt;br /&gt;&lt;br /&gt;I didn't have much advantage from the other kids, except for hacking around the radio and audio devices, writing some code on the papers (no desktop PC existed in 1975 in Japan), playing around with electronic circuits, and having no fear for speaking English.  I was just a geek. My father Tsuneji bought me a FORTRAN book and a shortwave radio in 1973, the slide rules and electronic calculators in 1974, and a bunch of math books.  I learned them mostly by myself.&lt;br /&gt;&lt;br /&gt;I went to Musashi high school, a private school well-known for the liberalism.  Soon I became a programmer of Apple II in 1979.  My programming experience was mostly on 6502 assembly language, 6K Integer Basic, and the GAME programming language.  ASCII Magazine bought my GAME-APPLE compiler in 1980 and I earned about JPY200,000 by the sales.During that time I met a lot of talented hackers.  Many of them are active in the Japanese Internet R&amp;D scene.&lt;br /&gt;&lt;br /&gt;In 1982, my right eye was badly damaged with the retina detachment so I had to stay away from computers.  I started to make techno music instead of computer programs, using later well-known techno gears such as TB-303 and TR-909, until 1986.  I loved making music, but I didn't feel I belonged to the music industry.  I think I made the right decision,after discovering the whole mess of the ripping-off business models.&lt;br /&gt;&lt;br /&gt;I went to University of Tokyo in 1984 and there I experienced the harshest part of Japanese career competition.  I managed to be accepted by the faculty of Engineering to learn instrumentation physics.  I later studied information engineering for my Master's degree.  Life in the university was no fun; hanging around with real hackers and real systems were much better.&lt;br /&gt;&lt;br /&gt;In 1985 after NTT finally opened up the phone lines to public, I discovered international computer networks and online systems.  I soon became an e-mail and BBS junkie.  In 1987, I started working with Jeffrey Shapard, who was running an English-speaking system called TWICS, for the VAX/VMS system administration, until 1989.  During the TWICS days I met &lt;a href="http://joi.ito.com/"&gt;Joichi "Joi" Ito&lt;/a&gt;, an English-speaking multi-talented Japanese activist.&lt;br /&gt;&lt;br /&gt;Many hackers went for UNIX, BSD, VAX and Sun in 1980s. I was also one of the root-privileged users of a packet-radio UNIX systems, learning vi and hacking with the code.  Having an account on an UNIX system was a cool thing.  What made my difference was that I ported the &lt;a href="http://www.kew.com/kendra/uupc/"&gt;UUPC/Extended&lt;/a&gt; software package for NEC's PC-9801 computers.  It was a version of UUCP software,which performed automatic file exchange and email address relay between computers.  And I was a licensed radio amateur (as JJ1BDX since 1976), so I made some gateway software packages linking ham radio TCP/IP mail/NetNews systems and the UUCP-based systems.&lt;br /&gt;&lt;br /&gt;In 1990, I joined Digital Equipment Corporation (DEC) Japan, to write the core software of VAX/VMS.  During that period, I had a chance to exchange messages to many Internet gurus, including Paul Vixie, a DNS guru and Internet leading technologist, who was working for DEC then. It was really nice to learn the philosophy and principles of Internet from those hard-core hackers.&lt;br /&gt;&lt;br /&gt;During my 2 years of Digital career, I was struggling with the corporate bureaucrats, and too many overworking and commuting hours which were eventually killing me.  I met Kyoko in 1991, and we decided to get together and married.  She told me she had a new job in Osaka from April 1992, so I decided to move to Osaka too.  I was looking for an Internet job there, and Kazuo Hirono hired me for one of his research team at TDI Co., Ltd., a Japanese software service firm.  We started to build a research lab in Kyoto and the lab was operational from 1993 to 2000, also as a part of WIDE Project Kyoto NOC (POP).  Hirono-san taught me a lot of things, and he was very tolerate on my rather individualistic and outspoken communication style.   (Hirono-san passed away on June 2007. RIP.)&lt;br /&gt;&lt;br /&gt;(Originally written in March 2008)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-1970781130862406203?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1970781130862406203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1970781130862406203'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/08/about-myself-1965-2000.html' title='About myself: 1965-2000'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-5852067959245878825</id><published>2008-08-15T14:59:00.000+09:00</published><updated>2011-01-31T11:21:38.792+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>nsplit available as a Google Code project</title><content type='html'>&lt;a href="http://code.google.com/p/nsplit/"&gt;My Erlang code &lt;em&gt;nsplit&lt;/em&gt;&lt;/a&gt; is now available as a part of Google Code projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://concurrently-chaotic.blogspot.com/2008/06/erlang-parallelism-without-modifying.html"&gt;Link on this blog about the code is here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-5852067959245878825?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5852067959245878825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/5852067959245878825'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/08/nsplit-available-as-google-code-project.html' title='nsplit available as a Google Code project'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-2535584422681172040</id><published>2008-07-24T16:32:00.000+09:00</published><updated>2011-01-31T11:21:38.795+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Outsourcing my DNS lookup service to OpenDNS</title><content type='html'>DNS subsystem is a real headache to manage.  You will realize that once you have to tweak the system, especially if you want to incorporate your own filtering/access-blocking rules.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kb.cert.org/vuls/id/800113"&gt;&lt;em&gt;And the DNS Cache Poisoning&lt;/em&gt;&lt;/a&gt;.  &lt;em&gt;It's a real threat.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;While I believe my DNS subsystem is quite safe under the good-old &lt;a href="http://cr.yp.to/djbdns.html"&gt;djbdns&lt;/a&gt; servers,  I am now testing the &lt;a href="http://www.opendns.com/"&gt;OpenDNS&lt;/a&gt;, a DNS cache service provider.  One of the good things about OpenDNS is that they even allow a single-IPv4 address network to be individually managed, even it's dynamically allocated, as in most of the cases for non-static-IPv4 users.  &lt;br /&gt;&lt;br /&gt;If you can trust your ISP for the DNS management, you are on your own.  But if you can't or don't, OpenDNS is a good alternative.  I notice many ISPs still have not changed their DNS cache servers to prevent the poisoning attack as of today (July 24, 2008); using OpenDNS from such a mobile networking environment will make the whole DNS access much secure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-2535584422681172040?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2535584422681172040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2535584422681172040'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/07/outsourcing-my-dns-lookup-service-to.html' title='Outsourcing my DNS lookup service to OpenDNS'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-2997566263863614221</id><published>2008-07-16T14:04:00.000+09:00</published><updated>2011-01-31T11:21:38.797+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>My allegation of spamdexing is finally dropped</title><content type='html'>It seems that the Blogger admin finally dropped the allegation of spamdexing from &lt;a href="http://macrofield.blogspot.com/"&gt;http://macrofield.blogspot.com/&lt;/a&gt;.  It took more than 2 months, but less than 3 months, to solve this issue.  &lt;br /&gt;&lt;br /&gt;Of course, I removed the suspicious META refresh tag from the alleged page.&lt;br /&gt;&lt;br /&gt;Links:&lt;br /&gt;&lt;a href="http://concurrently-chaotic.blogspot.com/2008/04/possible-false-detection-of-spamming-on.html"&gt;The report of false detection of spamming&lt;/a&gt;&lt;br /&gt;&lt;a href="http://concurrently-chaotic.blogspot.com/2008/04/meta-refreshing-considered-spamdexing.html"&gt;Meta refreshing considered spamdexing&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-2997566263863614221?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2997566263863614221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2997566263863614221'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/07/my-allegation-of-spamdexing-is-finally.html' title='My allegation of spamdexing is finally dropped'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-2592870257007122432</id><published>2008-06-10T10:14:00.000+09:00</published><updated>2011-01-31T11:21:38.799+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Erlang: parallelism without modifying code</title><content type='html'>&lt;a href="http://www.erlang.org/"&gt;The Erlang programming language&lt;/a&gt; has been getting popular among programmers, for the capability of handling massive number of connections, such as the chat server used in Facebook.&lt;br /&gt;&lt;br /&gt;One of the basic ideas of Erlang are that minimizing the side effect of assignments by prohibiting multiple assignments into the same variable.  At first this looks a rigid restriction and memory-consuming practice, but once you learn the native list structure of Erlang (mostly the same as in the Lisp language) and the tail-recursion control flow, writing the Erlang code is not too difficult, while retaining the conciseness and the performance. &lt;br /&gt;&lt;br /&gt;I've written a code of parallel mapping of a function to a list. The word &lt;em&gt;mapping&lt;/em&gt; means applying the same function to each member of the source list and obtaining the results which retains the same sequence as in the source list.  If the function does not have side effects (such as changing the values of shared data structures), the operation can be parallelized by splitting the list into the smaller sublists and invoking the mapping process for each sublist.  &lt;br /&gt;&lt;br /&gt;Erlang has the supporting libraries of invoking a process in a distributed Erlang node running in multiple computers, so the parallel mapping function is the simplest but very powerful tool to experience the collective computing power of parallelism.&lt;br /&gt;&lt;br /&gt;The code is available &lt;a href="http://www.ne.jp/asahi/bdx/info/depot/nsplit-0.2.tar.gz"&gt;here&lt;/a&gt; as a tar archive, of one file of Erlang source code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-2592870257007122432?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2592870257007122432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2592870257007122432'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/06/erlang-parallelism-without-modifying.html' title='Erlang: parallelism without modifying code'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-981578575212486800</id><published>2008-05-17T15:33:00.000+09:00</published><updated>2011-01-31T11:21:38.800+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='CF-R4'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><title type='text'>Installing FreeBSD 6.3 and 7.0 to Panasonic CF-R4</title><content type='html'>I had difficulties installing FreeBSD 6.3-RELEASE and 7.0-RELEASE to Panasonic Note PC CF-R4.  This machine has been known for having an incompatible BIOS which prevents FreeBSD BTX 1.01 or earlier to boot.&lt;br /&gt;&lt;br /&gt;Recent FreeBSD 8.0-CURRENT snapshot ISO images are with BTX 1.02, which allows CF-R4 booting from USB CD-ROM drives.  So I tested the following procedure for the 6.3 and 7.0 releases and the both releases were successfully installed:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;boot from a CD-R(W) with 8.0-CURRENT-200805-i386-bootonly.iso (or later)&lt;br /&gt;&lt;li&gt;exit the boot prompt screen to the loader prompt (by pressing &lt;tt&gt;6&lt;/tt&gt;) &lt;em&gt;before&lt;/em&gt; the 8.0 kernel boots itself&lt;br /&gt;&lt;li&gt;enter &lt;tt&gt;unload&lt;/tt&gt; to clear the loaded (8.0) kernel&lt;br /&gt;&lt;li&gt;replace the CD-R(W) in the drive to the target installation image (e.g., Disc 1 of 6.3/7.0-RELEASE)&lt;br /&gt;&lt;li&gt;enter &lt;tt&gt;boot-conf&lt;/tt&gt; to load the target kernel and install&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I think this is the compatibility problem of BTX.  I also think this is so far the easiest way to boot from the USB CD-ROM drive for CF-R4, because generating ISO images for previous releases with the compatible BTX loader will be a big hassle.  You may give it a try if you want to boot from a USB flash memory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-981578575212486800?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/981578575212486800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/981578575212486800'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/05/installing-freebsd-63-and-70-to.html' title='Installing FreeBSD 6.3 and 7.0 to Panasonic CF-R4'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-6812071670361161627</id><published>2008-04-26T15:21:00.000+09:00</published><updated>2011-01-31T11:21:38.802+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Learning Erlang</title><content type='html'>I've been learning &lt;a href="http://www.erlang.org/"&gt;the Erlang programming language&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've tested an IPv6 address-to-domain-name conversion for the reverse lookups. I made a presentation at the &lt;a href="http://ja.doukaku.org/wiki/index.php/1000speakers:4"&gt;1000speakers:4 conference&lt;/a&gt; on April 26, 2008. &lt;a href="http://www.ne.jp/asahi/bdx/info/depot/jj1bdx-erlang-20080426.pdf"&gt;The presentation slide set in PDF is here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-6812071670361161627?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/6812071670361161627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/6812071670361161627'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/04/learning-erlang.html' title='Learning Erlang'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-8272993838923397881</id><published>2008-04-09T20:39:00.000+09:00</published><updated>2011-01-31T11:21:38.803+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='Neuro Net Recordings'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>The days of Neuro Net Recordings</title><content type='html'>Neuro Net Recordings (NNR), an online techno-music distribution project, is one of the most important music projects of my life.  &lt;a href="http://www.archive.org/details/NeuroNetRecordings"&gt;Many music files of NNR have been available at archive.org as a part of the open source music archive.&lt;/a&gt; It was founded by Tomotoshi "Ackie" Akiyama and other core members including myself, in 1994.  I was the Internet Archivist, or the one who handled the online distribution channels over Internet. &lt;br /&gt;&lt;br /&gt;NNR had the free online distribution policy from the beginning: NNR had the non-exclusive distibution rights of the music files in the various available formats on the Internet.  It was quite similar to the &lt;a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"&gt;Creative Commons BY-NC-ND license&lt;/a&gt;, which means preserving the author's credit, non-profit use only, and changes not allowed during redistribution.&lt;br /&gt;&lt;br /&gt;NNR was not really a for-profit label, but most of the albums of NNR &lt;em&gt;Active Potential&lt;/em&gt; Series were distributed by cassette tapes with reasonable price (JPY500 for &lt;em&gt;Active Potential Number 0&lt;/em&gt;).  NNR also released one CD album called &lt;em&gt;Neural Networks Vol. 1&lt;/em&gt; in 1996.  So NNR was really an independent label, though NNR consistently distributed the music files towards the potential listeners on the Internet.  NNR once had a redistribution agreement with FranceMP3.com.  Jean-Fran&amp;ccedil;ois Fecteau has been a long-time supporter of NNR activities, and he has played NNR tunes many times in his program &lt;a href="http://www.myspace.com/levestibule"&gt;Le Vestibule&lt;/a&gt; from &lt;a href="http://www.cfou.ca/v2/programmation.php"&gt;CFOU-FM in Trois-Rivi&amp;egrave;res, Qu&amp;eacute;bec, Canada&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The distribution format NNR chosen were RealAudio, MPEG-1, Ogg Vorbis, and MP3 finally, because &lt;a href="http://mp3licensing.com/royalty/emd.html"&gt;MP3 technology license owners allowed exemption of the MP3 technology royalty fee to the business with USD100000 or less annual revenue&lt;/a&gt;.  Ackie kindly sent me the past DATs for mastering NNR cassette tapes, so I rebuilt and remastered the CD-R master discs from the DATs.  I learned the remastering skills using Syntrillium's Cool Edit (now Adobe Audition) and other tools.&lt;br /&gt;&lt;br /&gt;I also performed real-time streaming events called &lt;em&gt;Neuro Net Radio&lt;/em&gt; twice on 1998 and 1999, which were actually DJing from my house over RealAudio streaming, playing only NNR tunes to avoid dealing copyright issues with the copyright holders.&lt;br /&gt;&lt;br /&gt;Many professional music creators contributed to the NNR music archive before and during they became really professional.  Some of the artists are: &lt;em&gt;NISH, Leopaldon, Takuya Kitani, and Warping Allergen&lt;/em&gt;.  I find many NNR contributors are still actively seeking their other opportunities in their lives.&lt;br /&gt;&lt;br /&gt;In the age of iTunes and Amazon.com MP3, no professional musician can survive without distributing their music online.  Streaming music radio stations like Soma FM are doing competitive business.  Many people in the so-called music industry, however, still do not accept online media, and I feel quite sad about it.  I've already been fed up with the stagnated copyright issues in Japanese music scene either.  So I decided to quit distributing NNR files on my own in 2004.  Fortunately, archive.org generously provides the storage space and other goodies to the free-music distributors, so I decided to put NNR and my music pieces there in 2007.&lt;br /&gt;&lt;br /&gt;I know my talent on music is quite limited and is not competitive enough to survive as a professional musician.  But I also believe that does not limit my rights to freely distribute my own music.  I've learned a lot through my NNR activities and I appreciate all those who helped NNR.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fumi.vox.com/"&gt;Fumi Yamazaki&lt;/a&gt; suggested me to write this, as a case study of Creative Commons activities in Japan.  Thanks, Fumi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-8272993838923397881?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/8272993838923397881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/8272993838923397881'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/04/days-of-neuro-net-recordings.html' title='The days of Neuro Net Recordings'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-7318362241187228955</id><published>2008-04-04T09:16:00.000+09:00</published><updated>2011-01-31T11:21:38.806+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>META refreshing considered spamdexing</title><content type='html'>I am writing this as a memo for myself, and a message to Blogger.com reviewers of my old (blocked) blog at &lt;tt&gt;macrofield.blogspot.com&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;I realize the whole issue is about &lt;a href="http://en.wikipedia.org/wiki/Meta_refresh"&gt;Meta refreshing&lt;/a&gt; of HTML.  This has been a common practice for a long time to redirect users from an old page to a new page.  The problem of this practice, however, is that users will have difficulties on intervening the redirection.  &lt;br /&gt;&lt;br /&gt;I embedded a Meta-refreshing tag in my old (now blocked) blog for an automatic redirection.  As seen in &lt;a href="http://help.blogger.com/bin/answer.py?answer=42639&amp;topic=12467"&gt;the Blogger.com's definition of &lt;em&gt;spam blog&lt;/em&gt;&lt;/a&gt;, this redirection is considered &lt;a href="http://en.wikipedia.org/wiki/spamdexing"&gt;spamdexing&lt;/a&gt;, a violation of Blogger.com service terms.&lt;br /&gt;&lt;br /&gt;I think no one likes spamming any more and neither do I, but I should confess that I didn't study well on how Meta-refreshing is considered abusive these days in the HTML writing practice.  I will remove the embedded META tag as soon as Blogger.com allows me to reedit the contents, or to be specific, to reedit the layout HTML tags of the old blog of mine.&lt;br /&gt;&lt;br /&gt;And I suggest you all to stop using Meta refreshing.  Being misunderstood as a spamdexing is doing nothing good for you, whatever your intention might be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-7318362241187228955?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/7318362241187228955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/7318362241187228955'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/04/meta-refreshing-considered-spamdexing.html' title='META refreshing considered spamdexing'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-4894174554851502917</id><published>2008-04-04T08:05:00.000+09:00</published><updated>2011-01-31T11:21:38.807+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><title type='text'>Possible false detection of spamming on Blogger.com</title><content type='html'>This is an administrative announcement.&lt;br /&gt;&lt;br /&gt;Due to the automatic classification of &lt;em&gt;possible&lt;/em&gt; blog abuse on Blogger.com, the old URL of this blog, &lt;tt&gt;macrofield.blogspot.com&lt;/tt&gt;. has been disabled by Blogger.com.  I've already requested Blogger.com to unlock the contents under the old URL.  I will make a necessary fix ASAP.  I'm sorry for the inconvenience.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Note: on July 2008, I have confirmed this blockage has been dropped.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-4894174554851502917?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/4894174554851502917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/4894174554851502917'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/04/possible-false-detection-of-spamming-on.html' title='Possible false detection of spamming on Blogger.com'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-1659733114533934506</id><published>2008-03-23T10:32:00.000+09:00</published><updated>2011-01-31T11:21:38.808+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Gauche'/><category scheme='http://www.blogger.com/atom/ns#' term='scheme'/><title type='text'>Gauche: yet another Scheme-a-tic diagram of programming (self-)education</title><content type='html'>I feel programmers in the 21th century prefer so-called &lt;em&gt;dynamic&lt;/em&gt;, &lt;em&gt;scripting&lt;/em&gt; or &lt;em&gt;light-weight&lt;/em&gt; programming languages to the good-old static, compilation-based, and heavy-weight ones. In this sense, I belong to the old-style programmers, who like C, awk, and simple Bourne Shell.  So far the most complex light-weight language I've used is Perl.  &lt;br /&gt;&lt;br /&gt;I like definitive or pre-defined syntax and keywords than those which may change the meanings by the programmer's definition, because the dynamic definition will make the program too complicated.  Maybe my brain is losing flexibility, but I'd rather want to read something which can be easily decoded than the cryptic ones.&lt;br /&gt;&lt;br /&gt;I didn't have a chance to &lt;em&gt;formally&lt;/em&gt; learn programming, however, during my education.  This is both good and bad: the good thing is that you don't have to spend time on learning subjects which you won't use throughout the rest of your life; and the bad thing is that you may have no chance to know the coding practice much efficient than what you usually write.&lt;br /&gt;&lt;br /&gt;Some programming languages still irritate me. I should confess I don't like Prolog.  I will be a very poor programmer if I have to write only rules between the objects than the way of moving around and cutting and pasting them.  Thinking about the backtracking facility is a nightmare for me.  I'm 99.9% (if not 100%) filled with the idea that every statement of a programming language will have a side effect, or may cause changes of the contents of the &lt;em&gt;preallocated&lt;/em&gt; memory space.  I still don't believe in the idea that no assignment is needed for a real-world computing. &lt;br /&gt;&lt;br /&gt;I still think, however, the idea of functional languages which is focused on the relationship of data than copying and manipulating them back and forth, is an essential part of the modern computer programming. Abstraction work of data often simplifies the complex problems. Writing things in recursion than an arbitrary loop will simplify the code and often makes it efficient. &lt;br /&gt;&lt;br /&gt;Recently I've learned many young programmers are learning a lot from LISP and Scheme, and I've heard some of them have learned Scheme in their formal education process.  I welcome that trend and I hope it continues to grow, because in the real-world programming paradigm there's large room for optimization by introducing Scheme-style abstraction, such as describing an XML document in an S expression.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.practical-scheme.net/gauche/index.html"&gt;Gauche&lt;/a&gt;, an implementation of Scheme by Shiro Kawai and other developers, is a well-balanced mixture of the LISP-Scheme tradition of simplicity and a Perl-like feature, such as being able to handle Unicode, regular expressions, network sockets, and simple byte-aligned buffer structures which is essential for network programming.&lt;br /&gt;&lt;br /&gt;Gauche is a viable alternative to scripting languages like Perl; and it's still a Scheme implementation, so an old-minded programmer like me has many things to learn and enjoy.  Gauche has a lot of &lt;em&gt;modules&lt;/em&gt; or external libraries to handle real-world problems, such as manipulating database engines and HTML/XML data structures.  It took me only three hours to rewrite a Japanese input method server program in C by Gauche, thanks to the modules.  Gauche and Scheme designers also know that programmers want to use assignments, so an old-headed guy like me didn't have to  scratch the head forever.&lt;br /&gt;&lt;br /&gt;In 1989, when I first met a Symbolics LISP machine, it didn't attract me much because the machine was something completely different from the UNIX workstations, which I wanted to use to communicate with my friends and gurus. I realize, however, things have changed a lot now; you can play around and even solve the real-world issues on a LISP-Scheme processing environment like Gauche.  The vast increase of processing power including the CPU speed and the amount of main memory make this possible for everyone.  And I think it's a new Scheme-a-tic diagram for a competitive programmer; you will become much more productive after learning practical data abstraction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-1659733114533934506?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1659733114533934506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1659733114533934506'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/03/gauche-yet-another-scheme-tic-diagram.html' title='Gauche: yet another Scheme-a-tic diagram of programming (self-)education'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-8934224945698857092</id><published>2008-03-03T19:29:00.000+09:00</published><updated>2011-01-31T11:21:38.812+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YouTube'/><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='iTunes'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='preventing overworking'/><title type='text'>Gotchas, gotchas, gotchas</title><content type='html'>I've learned a lot of hard cold facts on how to deal with multimedia systems.  Here are the examples:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;White fungi can grow on a CD medium surface and even often render the media unreadable, though in most cases the medium can be rescued by wiping out the fungi. (Be careful not to damage the acrylic surface!)&lt;br /&gt;&lt;li&gt;Windows XP goes into an infinite loop (100% usage of a CPU core) to try to read an unreadable CD medium. If you don't have a multi-core machine, you'll be getting into a trouble. Why the CD/DVD drive cannot tell you that the media seems to have a problem, rather than just simply retry and wait for the timeout periods?  &lt;br /&gt;&lt;li&gt;iPod 5G firmware Version 1.2.3 can crash and reboot forever, just because the album title field of an MP3 file contains an unreadable/irregular character. The iTunes 7.6.1 for Windows is running smoothly without any error message even with the MP3 file, so you can't tell what's &lt;em&gt;really&lt;/em&gt; wrong until you try-and-fail the whole possible cases. &lt;br /&gt;&lt;li&gt;You cannot easily attach still pictures to an audio file without external software. And I realize that's the meaning of the word &lt;em&gt;authoring&lt;/em&gt; of a streaming video.&lt;br /&gt;&lt;li&gt;You have to make a set of still pictures into &lt;em&gt;motion pictures&lt;/em&gt; or &lt;em&gt;a video stream first&lt;/em&gt; first, before syncing with an audio stream and make them a video stream, to be broadcast on the Internet, such as on YouTube. (A good news is that you can do this by a set of the open source software, such as &lt;em&gt;mjpegtools&lt;/em&gt; and &lt;em&gt;Avidemux&lt;/em&gt;.)&lt;br /&gt;&lt;li&gt;Gracenote CDDB has been broken for WinAmp, so I have to migrate into iTunes, just to pick up the metadata of each song I'm going to put into my lovely iPod.  I like my iPod very much, but iTunes for Windows is really a big slow program and I hope it was a bit smaller and faster.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;And I even learned some security and systems administration tips:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Many of PCI Serial-ATA cards cannot be used for operating systems other than Windows.&lt;br /&gt;&lt;li&gt;A 13-year old hard disk can spin up and is readable even if you once put it in your closet and left it unplugged for 10 years.&lt;br /&gt;&lt;li&gt;As of 2008, you can hardly find a SCSI interface card for a PC, at least in Osaka.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Then I remember the truth: &lt;em&gt;your computer could be the number one device to consume your time and kill your productivity&lt;/em&gt;.  So how many gotchas do you get every day?  Ten? Or a hundred?  And how many hours or even &lt;em&gt;days&lt;/em&gt; do you lose?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-8934224945698857092?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/8934224945698857092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/8934224945698857092'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/03/gotchas-gotchas-gotchas.html' title='Gotchas, gotchas, gotchas'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-6429345198831789971</id><published>2008-02-21T12:25:00.000+09:00</published><updated>2011-01-31T11:21:38.814+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='teleworking'/><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='LUNARR'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='privacy'/><category scheme='http://www.blogger.com/atom/ns#' term='preventing overworking'/><title type='text'>Teleworking technology: we already have it</title><content type='html'>I've been thinking about months for what &lt;em&gt;technology&lt;/em&gt; can help people to discover and get the most out of teleworking.  I'm getting closer and closer to the following conclusion:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;We've already built teleworking infrastructures&lt;/em&gt;, at least in my home country Japan, and many other nations and regions which have already deployed the Internet. Period.  We need to focus on how to break the barriers and remove the impediments to people to embrace teleworking technologies as their own tools.&lt;br /&gt;&lt;br /&gt;Let me simply put in this way: &lt;em&gt;teleworking is no longer something special&lt;/em&gt;.  For example, writing this blog itself is a very good example of teleworking technologies.  All I need is a decent Web browser capable to run JavaScript for Blogger's writing environment; and I can publish and show you what I write, like what you read now.&lt;br /&gt;&lt;br /&gt;Collaboration is getting more and more easier also.  &lt;a href="http://www.lunarr.com/"&gt;LUNARR&lt;/a&gt; allows you to &lt;em&gt;flip back&lt;/em&gt; an electronic document and let you and other people write something &lt;em&gt;on the back&lt;/em&gt;.  This is a rather intuitive way to co-author a document, which I had never thought about until I saw it.  Geeks will do the whole things in more geeky ways using SSH, rsync, CVS, subversion, or whatever else for software development, but it's not only for geeks anymore.  Anyone who has to write a document can do it on a teleworking environment.&lt;br /&gt;&lt;br /&gt;So let's stop saying "I'm not allowed to work from (wherever you want other than your office) because blah blah blah..." and talk how you can leverage your productivity from introducing teleworking into your lifestyle.  If you and your employer think teleworking is something restricted for special people, that mindset is archaic, and no longer applicable to the 21st-century version of modern lifestyle. And let's not take communiting as a duty; it should be a choice and it has to be, to reduce the gross amount of time and energy wasted by being forced to commute.&lt;br /&gt;&lt;br /&gt;But &lt;em&gt;beware that teleworking is not necessarily a duty either&lt;/em&gt;; don't do it like this as in &lt;a href="http://xkcd.com/386/"&gt;an xkcd article&lt;/a&gt;.  Don't leave your partner alone just because "something is wrong on/with the Internet" &lt;em&gt;(grin)&lt;/em&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-6429345198831789971?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/6429345198831789971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/6429345198831789971'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/02/teleworking-technology-we-already-have.html' title='Teleworking technology: we already have it'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-330073579265809223</id><published>2008-02-17T15:07:00.000+09:00</published><updated>2011-01-31T11:21:38.816+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>The art and limit of dependencies</title><content type='html'>If you want to get a job done, you need to list up the necessary things and tools, and procedures to use and apply them.  In other words, you have many &lt;em&gt;dependencies&lt;/em&gt; on them.&lt;br /&gt;&lt;br /&gt;In a modern computer software development, no piece of software can withstand without any dependency to other pieces.  You do not want to make a C program without the standard I/O library.  Dependencies to the tools are also important and critical; if your codes include those written in FORTRAN, C, C++, and Java, you need the four compilers and language execution environments.&lt;br /&gt;&lt;br /&gt;Computer programmers have been making the tools to automatically resolve the dependencies.  &lt;em&gt;make&lt;/em&gt; is a popular one, derived from the UNIX programming environment, which parses the rulesets called &lt;em&gt;Makefile&lt;/em&gt; and determine whether if you need to rebuild a result from the source files, by comparing the timestamps.  If &lt;em&gt;make&lt;/em&gt; finds out one of the source files are newer than the result, it will invoke the command to rebuild the result.  &lt;br /&gt;&lt;br /&gt;Version control systems such as &lt;em&gt;subversion&lt;/em&gt;, &lt;em&gt;CVS&lt;/em&gt;, and &lt;em&gt;RCS&lt;/em&gt;, are another good examples of dependency management tools.  You can save the history of changes on a file, a directory, or a set of directories.  You can make a software package by checking out a set of tagged files; you can even make multiple branches of a code.   &lt;br /&gt;&lt;br /&gt;FreeBSD operating system has its own dependency management system of externally-contributed programs called &lt;em&gt;ports&lt;/em&gt; and &lt;em&gt;packages&lt;/em&gt;.  A port means a set of rules, configuration files, and source codes necessary to build a program.  A package means the derivative of the port, built by another computer.  Many essential parts of FreeBSD subsystems, including the X Window and Perl programming language, are installed as packages, because they are not considered as the core parts of FreeBSD.&lt;br /&gt;&lt;br /&gt;I'm always pleasantly surprised when a very complicated port, such as Japanese version of LaTeX, a typesetting and documentation set of programs, can be built without major glitches, including the automatic installation of depending programs, such as Ghostscript.  For most of the ports, FreeBSD volunteers are always doing the outstanding jobs.&lt;br /&gt;&lt;br /&gt;I feel very much annoyed, however, when I have to &lt;em&gt;untangle the web of dependencies&lt;/em&gt; when the installation/building of a software toolset from the scratch.  Unfortunately, Xorg 7.3, a free implementation set of X Window programs, fonts, and tools, was not able to build in my environment.  I had to copy three prebuilt sets of files: include files of C/C++, shared/static libraries, and the very basic fonts, to finish building the necessary programs.  &lt;br /&gt;&lt;br /&gt;In my case of Xorg kitbuilding, some very old fonts existing since late 1980s were not successfully compiled and converted into various ISO8859 part codesets.  And I could not build the font handling libraries.  This glitch killed the whole automatic compilation task, which was supposed to untangle the enormous list of dependencies.  I also found that the target directory name was merged to &lt;tt&gt;/usr/local&lt;/tt&gt; from the traditional &lt;tt&gt;/usr/X11R6&lt;/tt&gt;, and I wasn't sure whether if I moved the old files and subdirectories under the old directory safely to the new directory.&lt;br /&gt;&lt;br /&gt;Untangling the web of dependency is a very hard task, since the parameters you need to examine are scattering around all the directories, in all the ports, and you often also have to set an environment variable to do something extraordinary.  While I can &lt;em&gt;guess&lt;/em&gt; what I should do because I've done a lot of this kind of tasks, I never want to do this at any time because scanning your memory and poking around the files are very much &lt;em&gt;mentally painful&lt;/em&gt;.  In a recent hostile computer environment, vulnerabilities can easily sneak into such a complicated and unformalized tasks.&lt;br /&gt;&lt;br /&gt;How do you manage your computers?  Do you care about the dependencies of the tools, programs, configuration files, and other objects?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-330073579265809223?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/330073579265809223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/330073579265809223'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/02/art-and-limit-of-dependencies.html' title='The art and limit of dependencies'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-1575840247294449347</id><published>2008-02-10T16:20:00.000+09:00</published><updated>2011-01-31T11:21:38.819+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mixi'/><category scheme='http://www.blogger.com/atom/ns#' term='legal issues'/><category scheme='http://www.blogger.com/atom/ns#' term='sns'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='social binding'/><category scheme='http://www.blogger.com/atom/ns#' term='privacy'/><title type='text'>Accountability of an SNS user</title><content type='html'>In a major Japanese SNS mixi, I feel I have been always exposed to a strong peer pressure, which I find common in Japanese society, that &lt;span style="font-style:italic;"&gt;you should not argue with others unless you really want to break up with those people&lt;/span&gt;.  This sort of fuzzy feelings covers over the whole society of Japan, including that on the Internet.  &lt;br /&gt;&lt;br /&gt;I really don't like the fuzzy Japanese social atmosphere, though I don't favor the hostile and negative environment which I always find in &lt;span style="font-style:italic;"&gt;anonymous and open&lt;/span&gt; bulletin boards and blogs in Japan nowadays either.  I always want to have a creative discussion with a constructive criticism.  People tend to go the opposite way, however, in most of the times.  This is what I've learned both from the real and Internet communications.&lt;br /&gt;&lt;br /&gt;One of my friends claimed to me that the warm fuzziness surrounded him in 1980s in the Japanese online community of bulletin boards was something completely different from that after the popularization of Internet in Japan. He told me &lt;span style="font-style:italic;"&gt;the fuzziness&lt;/span&gt; which I don't like actually helped the self-governance of the users.  I asked him why.&lt;br /&gt;&lt;br /&gt;He told me that the bulletin board operators could individually locate and even persecute each account holder, by exchanging the written agreement in paper, and &lt;span style="font-style:italic;"&gt;charging access fee individually from each user's bank account, automatically drawn each month&lt;/span&gt;.  He said he had many &lt;span style="font-style:italic;"&gt;anonymous or pseudonymous friends&lt;/span&gt; there, because he could trust those people even without knowing the &lt;span style="font-style:italic;"&gt;real&lt;/span&gt; names, by &lt;span style="font-style:italic;"&gt;the guarantee of financial and social accountabilities for each users&lt;/span&gt; that the BBS operator provided.  In other words, the participants were supposed to behave nicely online, and the participants could prevent each other from the extreme cases of disputes.&lt;br /&gt;&lt;br /&gt;The friend and I agreed, however, that you could no longer expect such a high degree of individual responsibility on the current SNSes and other Internet communities.  Many people belong to many different systems, and those systems are usually supposed to keep the personal information &lt;span style="font-style:italic;"&gt;undisclosed&lt;/span&gt; except for a legal request for the authorities.  This means all disputes between Internet participants have to become &lt;span style="font-style:italic;"&gt;legal issues&lt;/span&gt;, or &lt;span style="font-style:italic;"&gt;lawsuits&lt;/span&gt;.  &lt;br /&gt;&lt;br /&gt;And even if you win a legal battle, you can't really collect the compensation justified by the law, unless the law enforcement officers really pursue the defendant to do so.  The legally-responsible individual of one of the largest anonymous BBSes in Japan keeps refusing paying the money he has been requested from the court, though he loses on multiple lawsuits, and he is actually &lt;span style="font-style:italic;"&gt;winning the battle&lt;/span&gt; by not adhering to the legal requests, because those lawsuits are all civil law issues and not the criminal ones.  This is a good example of the limitation of depending resolution of individual disputes over Internet on the legal procedures.  Forcing people to use &lt;span style="font-style:italic;"&gt;"real"&lt;/span&gt; names will not solve this problem at all.&lt;br /&gt;&lt;br /&gt;How can an SNS user be held accountable, for his/her legal and social activities?  This is not a direct technology issue, but technology can and must help the issue to be resolved.  And I think tagging individuals and restricting online identifiers do not necessarily effectively work on this issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-1575840247294449347?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1575840247294449347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1575840247294449347'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/02/accountability-of-sns-user.html' title='Accountability of an SNS user'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-1450286047499780088</id><published>2008-02-08T08:20:00.000+09:00</published><updated>2011-01-31T11:21:38.821+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>CALLing disaster during MySQL upgrade</title><content type='html'>I've been upgrading one of my servers for the daily use, by migrating the running environment between two PCs.  It's not a mission critical server because I don't run a public service there, but I need to do the upgrade carefully anyway because the version number of running FreeBSD and other applications have been changed.  I want to keep the old environment as long as possible to use it as a reference, so I'm doing the migration manually by recompiling and reconfiguring the software.&lt;br /&gt;&lt;br /&gt;One of the glitches I faced was about MySQL.  It's not about the bugs in MySQL, because the database server load is very small.  I was trying to transfer a dataset from the old version 4.0 to a new version 5.1 software of MySQL.  The mysqldump result of the old 4.0 output didn't get through and reloaded into the 5.1 server.  I could not even perform CREATE TABLE.  &lt;span style="font-style:italic;"&gt;The reason: the column and database identifiers were not properly backquoted.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The database was for my amateur radio activity.  Amateur radio stations have &lt;span style="font-style:italic;"&gt;callsigns&lt;/span&gt;, and in a popular contacting log exchange format called &lt;a href="http://www.adif.org/adif219.htm"&gt;ADIF&lt;/a&gt;, the other party's callsign is represented by the identifier CALL.  Unfortunately, MySQL 5.1 made the word CALL &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html"&gt;&lt;span style="font-style:italic;"&gt;a reserved word&lt;/span&gt;&lt;/a&gt;, while in the 4.0 version the word was apparently not.  This is a tragedy for an amateur radio enthusiast, and a careless programmer like me who tends to omit proper (back-)quotation.&lt;br /&gt;&lt;br /&gt;After an investigation for a few minutes, an idea of referring to the result SHOW CREATE TABLE from the 4.0 server came into my mind.  I did it and fortunately the table definition was properly backquoted, so at least I could rebuild the database skeleton.  The dumped data was a set of INSERT INTO statements with the VALUES and they were all properly quoted, so I could rebuild the database.&lt;br /&gt;&lt;br /&gt;The new mysqldump command's output of MySQL 5.1 looks much better and properly backquoted and quoted all the necessary strings, and even put the SQL statements to lock and unlock the database.  The entire dataset is represented by a single INSERT INTO statement VALUES set, so you've got to be careful when you want to use the data set not in the full contents.&lt;br /&gt;&lt;br /&gt;I should note that &lt;span style="font-style:italic;"&gt;I had to rewrite all the software which generated the SQL statements for the proper (back-)quotation.&lt;/span&gt;  This was a handful of complicated tasks of fixing the Bourne shell and Perl scripts.&lt;br /&gt;&lt;br /&gt;And I realize why SQL injection is so popular for attacking the database servers.  Parsing SQL correctly is a non-trivial process.  A word can be either a part of a directive or a target identifier, &lt;span style="font-style:italic;"&gt;depending on the position where it is in an SQL statement&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So when you want to store CALLs into a MySQL database, you've got to do it carefully with (back-)quotation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-1450286047499780088?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1450286047499780088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/1450286047499780088'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/02/calling-disaster-during-mysql-upgrade.html' title='CALLing disaster during MySQL upgrade'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-6582778745492635969</id><published>2008-02-04T17:07:00.000+09:00</published><updated>2011-01-31T11:21:29.865+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erasing data'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='privacy'/><title type='text'>Data erasing woes</title><content type='html'>Clearing up the used disk has been a real burden for sysadmins, as exploitation of carelessly-discarded information becomes popular.  In Japan, people are extremely sensitive against how their personal data records are kept secret and controlled.  The reality is, however, that data disclosure incidents keep happening, no matter the government enforces the law, and companies make frequent apologies for those incidents.  Once the data get out, you won't be able to take them back.&lt;br /&gt;&lt;br /&gt;I think a part of the reason of continuing data disclosure incidents is that &lt;em&gt;erasing data is simply a difficult task&lt;/em&gt;.  For example, even if you store only 10G bytes into a 160G-byte disk, you need to thoroughly sweep the whole 160G bytes, to guarantee all data are cleared.  Also, you've got to be careful to deal with &lt;em&gt;the hidden data, which is not accessible by the data erasing software&lt;/em&gt;.  If you really want to make the data not recoverable at all, you need to erase the trace of electromagnetic residue on the hard disk platters, which is hard to perform in a usual business or office environment.  Destroying a usable device is not an environmentally-friendly practice either.&lt;br /&gt;&lt;br /&gt;Another problem is that &lt;em&gt;the sweeping process is slow&lt;/em&gt;.  The physical writing speed governs the whole performance.  For example, one of my old portable 40G-byte hard disk can be written in only 20M bytes per second.  So it will take at least 2000 seconds or about 34 minutes to sweep out the whole disk once.  You need to do this multiple times to ensure the residue of data is not easily detectable, so the whole process may take 2 or 3 hours.  3 hours for just 40G bytes. 12 hours for 160G bytes. &lt;em&gt;(sigh)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The data storage which an individual has to manage is getting bigger and bigger every year.  I wonder how people can cope with this.  &lt;em&gt;Do you sweep and erase the used disk data before you resell or give it away to somebody?&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-6582778745492635969?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/6582778745492635969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/6582778745492635969'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/02/data-erasing-woes.html' title='Data erasing woes'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-3106556972326910275</id><published>2008-01-31T18:00:00.000+09:00</published><updated>2011-01-31T11:21:29.867+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><title type='text'>Simple access-control status display</title><content type='html'>I had a chance to talk to my business partners about computer networking security.  One of the participants told me that a &lt;span style="font-style:italic;"&gt;secure&lt;/span&gt; networks should not be mixed up with the &lt;span style="font-style:italic;"&gt;unsecure&lt;/span&gt; ones.  He said in a trusted operating system environment, you would see a &lt;span style="font-style:italic;"&gt;red&lt;/span&gt; window and a &lt;span style="font-style:italic;"&gt;green&lt;/span&gt; window, when you handle the different security levels of the information in the windows.  You can't copy-and-paste the pieces between the red and green windows, unless an overriding procedure is accepted, and recorded.  While I think you can do something more to assist visually-handicapped people, this simple definition of security models should be incorporated with many Web and other Internet applications as soon as possible.&lt;br /&gt;&lt;br /&gt;A few years ago I had a chance to see &lt;a href="#20080131-ref1"&gt;a presentation of similar ideas [1]&lt;/a&gt;, which described the difference between Microsoft and Symantec products on telling the security level of the Web pages to the users.  I thought Symantec's simple color-based access control looked much better than the IE's massive pairs of (not necessarily trivial) parameters.&lt;br /&gt;&lt;br /&gt;Access control is often very complex, but the ideas should easily get through to the users.  This simple principle has not been popular yet in the world of computer software and Internet applications.&lt;br /&gt;&lt;br /&gt;Related link:&lt;br /&gt;&lt;a name="20080131-ref1"&gt;[1]&lt;/a&gt;&lt;a href="http://www.oecd.org/dataoecd/12/3/35492849.pdf"&gt;Steven Furnell: Fostering the usability of information security solutions&lt;/a&gt;, at OECD-APEC Workshop on Security of Information Systems and Networks, Seoul, Korea, 6 September 2005.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-3106556972326910275?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3106556972326910275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/3106556972326910275'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/01/simple-access-control-status-display.html' title='Simple access-control status display'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-2423605030646816540</id><published>2008-01-29T20:45:00.000+09:00</published><updated>2011-01-31T11:21:29.869+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='SMTP'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><title type='text'>A speculation: SMTP may disappear from the global Internet soon</title><content type='html'>Long time ago in the late 1990s, I was a system administrator, maintaining a bunch of SMTP (mail transfer agent) servers.  Since 2007 I have quitted running SMTP servers at home. The number of SPAM messages have rapidly increased since then; 95% of my received mail messages are considered SPAM and unread now.  I've been watching this on multiple mailboxes using different SPAM-filtering algorithms, and the trend is mostly the same.  Only 5% of mail messages are meaningful to me, including those from my business partners and mailing lists.&lt;br /&gt;&lt;br /&gt;On a DNS operator meeting last year, I was joking to one of the participants that the current SMTP (email) and DNS will cease to exist much sooner than we expect, due to the complexity of the running systems.  People tend to believe they are &lt;span style="font-style:italic;"&gt;always up and running&lt;/span&gt;, but the reality is that a lot of sysadmins are killing themselves to get the systems up and running.&lt;br /&gt;&lt;br /&gt;I think DNS surely has a lot of economic incentives to keep it alive as it is now.  For example, domain names are protected under intellectual property rights and the international treaties.  So somebody will keep the system alive, although the implementation details may change.&lt;br /&gt;&lt;br /&gt;On the other hand, many people have already seen the limitation of email; they are not pervasive as they were a decade ago.  People are fed up with SPAM, and try not to rely on email too much.  Many of them have already been using other messaging systems, such as the one implemented in various SNSes.  In other words, they put a lower priority to email in general.&lt;br /&gt;&lt;br /&gt;Some people say the easiest way to deal with SPAMmers is to constantly change the mail addresses, which I do not think so.  I think SPAMmers nowadays exploit all the traceable resources of mail addresses, so the leading time you can gain by changing the email address is getting smaller and smaller every day.  The hardest part to fix, and the impossible part to fix, is &lt;span style="font-style:italic;"&gt;the promiscuity of SMTP, to accept everything without authentication&lt;/span&gt;.  Many people have said this and I know this is a mere repetition, but it is a fact we must recognize.&lt;br /&gt;&lt;br /&gt;Recently I tend to feel more than ever that I really don't care about the medium or protocol, as long as I can stay connected to the people who I want to.  Of course it might get harder to meet new unknown people and communities, but I think that role has already been replaced by open blogs and the update notifiers or RSS readers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-2423605030646816540?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2423605030646816540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2423605030646816540'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/01/speculation-smtp-may-disappear-from.html' title='A speculation: SMTP may disappear from the global Internet soon'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-2846635008539974688</id><published>2008-01-28T08:30:00.000+09:00</published><updated>2011-01-31T11:21:29.871+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mixi'/><category scheme='http://www.blogger.com/atom/ns#' term='sns'/><category scheme='http://www.blogger.com/atom/ns#' term='pageview'/><category scheme='http://www.blogger.com/atom/ns#' term='alexa'/><title type='text'>The fall and decline of Mixi</title><content type='html'>&lt;a href="http://www.alexa.com/data/details/traffic_details/mixi.jp?site0=mixi.jp&amp;site1=facebook.com&amp;site2=myspace.com&amp;y=p&amp;z=1&amp;h=300&amp;w=610&amp;range=3y&amp;size=Medium"&gt;How Alexa finds the difference between mixi.jp, facebook.com, and myspace.com.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You will see how the Japanese SNS giant Mixi is &lt;span style="font-style:italic;"&gt;smaller&lt;/span&gt; than the rest of the world.  Even worse, Mixi is losing the users, at least from the PC/Internet domain.  &lt;br /&gt;&lt;br /&gt;Mixi's markering target is shifting towards the &lt;span style="font-style:italic;"&gt;Keitai&lt;/span&gt; (cell phone) users, which will not show up on the Alexa pageview statistics.  I think this is a bad change of tactics, at least for their business.  The number of Keitai users (of cell-phone users &lt;span style="font-style:italic;"&gt;in and only in Japan&lt;/span&gt;) has already been saturated and does not have much room to grow any more.  If Mixi depends on the ad business, the revenue will decline.&lt;br /&gt;&lt;br /&gt;And I feel the emptiness of Mixi every day as one of the users; less number of diary articles, less frequent updates, and the persistent scanning by bots.  It's getting more and more like a deserted city.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-2846635008539974688?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2846635008539974688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2846635008539974688'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/01/fall-and-decline-of-mixi.html' title='The fall and decline of Mixi'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2590682796027714479.post-2085723577774528</id><published>2008-01-27T17:58:00.000+09:00</published><updated>2011-01-31T11:21:29.874+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><category scheme='http://www.blogger.com/atom/ns#' term='new year resolution'/><title type='text'>New Year Resolution 2008</title><content type='html'>Dear Kenji: this is your new year resolution for 2008.&lt;br /&gt;&lt;br /&gt;a) Love your job.  Love computers, coding, experimenting, and hacking.&lt;br /&gt;&lt;br /&gt;b) Redesign your financial portfolio, and how to earn money.&lt;br /&gt;&lt;br /&gt;c) Re-learn abstraction and principles of Internet and electronics.&lt;br /&gt;&lt;br /&gt;d) Continue reducing home computer system; downsize and outsource.&lt;br /&gt;&lt;br /&gt;e) Optimize online activities; publicize your works and minimize rants.&lt;br /&gt;&lt;br /&gt;f) Do not waste time on DXing; spend time for more creative activities.&lt;br /&gt;&lt;br /&gt;g) Practice DJ and recordings; stop wasting time on thinking about music.&lt;br /&gt;&lt;br /&gt;h) Always &lt;span style="font-style:italic;"&gt;STAY FIT&lt;/span&gt;; eat less, go out of your house and move around.&lt;br /&gt;&lt;br /&gt;i) Interact with real people; love your family, respect your friends, and nurture productive relationships.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2590682796027714479-2085723577774528?l=concurrently-chaotic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2085723577774528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2590682796027714479/posts/default/2085723577774528'/><link rel='alternate' type='text/html' href='http://concurrently-chaotic.blogspot.com/2008/01/new-year-resolution-2008.html' title='New Year Resolution 2008'/><author><name>Kenji Rikitake</name><uri>http://www.blogger.com/profile/00837128766291897538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_7X-VBdyWgz8/TUSzSa4CGzI/AAAAAAAAAAM/Cw1WS6sgJGc/s220/nh007-20100327.jpg'/></author></entry></feed>
