<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2088267970281254598</atom:id><lastBuildDate>Wed, 28 Aug 2024 23:16:39 +0000</lastBuildDate><category>comics</category><category>CentOS 5.3 VirtualBox guest addition</category><category>Eratosthenes prime number math coding ruby python エラトステネスの篩</category><category>Google Code Project Apache license</category><category>HTML5</category><category>Monte Carlo</category><category>New Years</category><category>OpenOffice SDK java implementation loader error netbeans</category><category>OpenSolaris VirtualBox networking interface</category><category>VirtualBox guest addition</category><category>XHTML2</category><category>apache http rails mongrel centos 5.1 selinux</category><category>beginnings</category><category>captcha google web security anti-bots</category><category>comics dinosaur</category><category>culture wiener</category><category>databases postgresql 8.3.1 centos 5.1 linux rpm</category><category>death march</category><category>failure PM chicken golden week project management</category><category>firefox 3.0 download day world record</category><category>google gmail https security</category><category>google web toolkit gwt app engine test</category><category>hack HTTP GET  time.com moot</category><category>iss space</category><category>japan workforce engineers shortage outsourcing china shenyang</category><category>markup</category><category>math humor xkcd</category><category>me-myself-and-i</category><category>motivation drive video</category><category>music video grover mashup</category><category>music video radiohead smiths new order</category><category>pi</category><category>postgresql rails activerecord sessions cron no password</category><category>probability</category><category>programming languages</category><category>project management</category><category>python</category><category>python rawks</category><category>robots penguins movie</category><category>rspec ssl_requirement mock ruby rails behavior-driven development</category><category>ruby C# openssl asymmetric RSA encryption public private</category><category>ruby java openssl symmetric DES DES-CBC encryption</category><category>ruby rails ActiveRecord session store gettext unitialized constant error</category><category>ruby rails rant dislike disapproval</category><category>salary comparison</category><category>security dns cache poisoning</category><category>security mobile</category><category>security schneier apple society</category><category>shampoo sex</category><category>virtualbox freebsd network adapter</category><category>weebl bob copyright law madness destroy ladytron</category><category>xkcd humor dreams dream student students</category><category>北海道 2008年　冬　負担増　Hokkaido Bank rising expenses</category><category>北海道　札幌　Hokkaido Sapporo</category><category>外国人　通称名　名前　</category><category>札幌　ＩＴ　Sapporo IT business</category><category>札幌　ＩＴ　Sapporo IT business economy meltdown insecurity</category><title>Life In A Northern Town (43°4′N, 141°21′E)</title><description>A muddied stream of consciousness on programming, coffee, fly fishing, and expatriate life as a modern migrant worker in Japan</description><link>http://43n141e.blogspot.com/</link><managingEditor>noreply@blogger.com (Buruzaemon)</managingEditor><generator>Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-6089339242561925582</guid><pubDate>Fri, 19 Nov 2010 21:32:00 +0000</pubDate><atom:updated>2010-11-20T06:47:31.092+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">comics dinosaur</category><title>T-Rex Sort Of Validates Me, In Panel 3</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.qwantz.com/index.php?comic=1840&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 735px; height: 500px;&quot; src=&quot;http://www.qwantz.com/comics/comic2-1851.png&quot; alt=&quot;&quot; title=&quot;You really should be reading Dinosaur Comics&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This is in reference to an &lt;a href=&quot;http://43n141e.blogspot.com/2010/04/funny-thing-happened-on-my-train-to.html&quot;&gt;earlier post&lt;/a&gt;.&lt;/p&gt;</description><link>http://43n141e.blogspot.com/2010/11/t-rex-sort-of-validates-me-in-panel-3.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-3973554819908622334</guid><pubDate>Sat, 19 Jun 2010 13:07:00 +0000</pubDate><atom:updated>2010-06-19T22:10:30.240+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">motivation drive video</category><title>On Drive &amp; Motivation</title><description>Came across this terrific animation bit on drive, incentives, and motivation. It is hilariously spot-on. If you find yourself on the hiring side of the interview table, you should view this animated presentation first.&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/u6XAPnuFjJc&amp;amp;hl=ja_JP&amp;amp;fs=1&amp;amp;&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/u6XAPnuFjJc&amp;amp;hl=ja_JP&amp;amp;fs=1&amp;amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</description><link>http://43n141e.blogspot.com/2010/06/on-drive-motivation.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-7393009980180465089</guid><pubDate>Fri, 18 Jun 2010 21:48:00 +0000</pubDate><atom:updated>2010-06-19T06:53:52.381+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">music video grover mashup</category><title>Grover Does Dama Dam Mast Qalandar</title><description>I don&#39;t quite know what to say, except... &lt;a href=&quot;http://en.wikipedia.org/wiki/Grover&quot;&gt;Grover&lt;/a&gt; &lt;span style=&quot;font-style: italic;&quot;&gt;still rocks my world.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/m1g0yxLu2Zk&amp;amp;border=1&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xd0d0d0&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/m1g0yxLu2Zk&amp;amp;border=1&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xd0d0d0&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</description><link>http://43n141e.blogspot.com/2010/06/grover-does-dama-dam-mast-qalandar.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-6490695186090976541</guid><pubDate>Wed, 07 Apr 2010 13:51:00 +0000</pubDate><atom:updated>2010-04-07T23:41:36.837+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">culture wiener</category><title>A Funny Thing Happened on my Train to Work This Morning</title><description>I&#39;ve been in Japan so long, maybe I&#39;m going native.&lt;br /&gt;&lt;br /&gt;I just hopped on the subway this morning, finding a well-positioned seat on the right-hand side of car number 8, and was enjoying a nice article on how to read a balance sheet in my favorite business magazine. I had &lt;a href=&quot;http://www.audioslave.com/&quot; title=&quot;They rock!&quot;&gt;Audioslave&lt;/a&gt;&#39;s &lt;a href=&quot;http://www.youtube.com/watch?v=PXdSOxEnwWM&quot; title=&quot;now, why wasn&#39;t this song on the Iron Man soundtrack?&quot;&gt;Cochise&lt;/a&gt; on my iPhone, and I was looking forward to finishing the article before getting off at Otemachi. I normally get on at the station where the subway begins, so the seats fill up fast.&lt;br /&gt;&lt;br /&gt;The subway lurches forward, and soon I am deep into my magazine. After a stop or two, I look up and notice a woman standing in front of me. All the seats by now are taking, standing-room only. And then I notice that she could be... well, she might be pregnant.&lt;br /&gt;&lt;br /&gt;Now, &lt;a href=&quot;http://en.wikipedia.org/wiki/Boy_Scouts_of_America&quot; title=&quot;yeah, I am a member of an elite paramilitary organization: &#39;Eagle Scouts&#39;&quot;&gt;Boy Scout&lt;/a&gt; that I am, I was just about ready to jump up and offer my seat. But I hesitated. Yeah, she sort of had that wonderful, baby&#39;s-four-months-along-now bulge in her tummy. But was that bulge real, or was I just imagining it for her bulky and loose outfit?&lt;br /&gt;&lt;br /&gt;I bit my lip and tried to determine the situation. But it is rude to look to hard at a person in Japan, so I tried to be nonchalant about it. Urgh, couldn&#39;t tell. I glanced nervously sideways. The guy sitting next to me was fast asleep. The people sitting on the other side of the car were just staring vacantly forward out the windows. Didn&#39;t they notice this pregnant woman standing? Why couldn&#39;t any one of them stand and offer their seat, and save me the trouble of making a hard decision?&lt;br /&gt;&lt;br /&gt;I continued to discreetly assess this woman. Yeah, she sort of had a large, pear-shaped frame. Could be pregnant. Or was it just the cut of her clothes? Another station comes and goes, and I am still deep in debate. Back Stateside, I would offer my seat without hesitation, and so what if I was wrong and she wasn&#39;t pregnant? We&#39;d both laugh it off, and maybe I would get to sit back down and and continue reading.&lt;br /&gt;&lt;br /&gt;But this is Japan. Appearances and saving face counts, and I sure would not want to cause this woman any embarrassment for mistaking her to be pregnant when she might only have been just packing a bit of a &lt;a href=&quot;http://en.wikipedia.org/wiki/Love_handles&quot; title=&quot;or &#39;love handles&#39;&quot;&gt;beer belly&lt;/a&gt;. Oh, the predicament! A bead of imaginary sweat rolled down my forehead.&lt;br /&gt;&lt;br /&gt;So two more stations pass, no one around me is budging, this woman in still standing solidly right in front of me, and I am still pretending to be engrossed in my magazine. Ah! What a great column on the &lt;a href=&quot;http://en.wikipedia.org/wiki/Monty_Hall_problem&quot; title=&quot;a veridical paradox, but absolutely provable... just try to enumerate the possible cases, and you&#39;ll see&quot;&gt;classic Monty Hall problem on conditional probability&lt;/a&gt;! But the situation does not change a bit... another station comes and goes... and I am still struggling at the impasse. Do I stand or continue to politely pretend oblivious ignorance?&lt;br /&gt;&lt;br /&gt;Finally, the man sitting next to me gets up and disembarks at the next station. I breathe a sigh of relief, thinking that I don&#39;t have to make a hideous gaffe (embarrassing for both of us?) now that a seat has opened up. Joy!&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;But the woman doesn&#39;t sit. Nope. Doesn&#39;t even make a move towards the empty seat, just huddles up against the door next to me. A whole lot of other people get on the train, and someone else sits down next to me. But Ms. Beer Belly gets off a station later, when I finally see that she is not in the family way, just merely pleasingly pear-shaped.&lt;br /&gt;&lt;br /&gt;I am such a wiener.</description><link>http://43n141e.blogspot.com/2010/04/funny-thing-happened-on-my-train-to.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-3696857718919269637</guid><pubDate>Thu, 06 Aug 2009 16:06:00 +0000</pubDate><atom:updated>2009-08-07T01:07:51.229+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">comics</category><category domain="http://www.blogger.com/atom/ns#">project management</category><title>Another Comic</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.ibiblio.org/Dave/Dr-Fun/df200210/df20021001.jpg&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 640px; height: 480px;&quot; src=&quot;http://www.ibiblio.org/Dave/Dr-Fun/df200210/df20021001.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; title=&quot;yay, more comics!&quot; /&gt;&lt;/a&gt;</description><link>http://43n141e.blogspot.com/2009/08/another-comic.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-8183121880409926811</guid><pubDate>Wed, 05 Aug 2009 04:15:00 +0000</pubDate><atom:updated>2009-08-05T15:12:30.110+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">comics</category><category domain="http://www.blogger.com/atom/ns#">HTML5</category><category domain="http://www.blogger.com/atom/ns#">markup</category><category domain="http://www.blogger.com/atom/ns#">XHTML2</category><title>XHTML2 Is Dead, Long Live HTML 5!</title><description>&lt;p style=&quot;text-align: left;&quot; title=&quot;Yes, even at my age, I still read comic books&quot;&gt;&lt;img src=&quot;http://api.ning.com/files/nK4C8AIUE*Gmws9GptNfx1VXQDONweYtXcUxPV0heSr95FEX5-7yV8UW8OBFMZ5-HRuWcNEOiiu2h06eeycyk-NXN5SYqtM1/comic960px.jpg&quot; alt=&quot;&quot; width=&quot;587&quot; height=&quot;3477&quot;/&gt;&lt;/p&gt;</description><link>http://43n141e.blogspot.com/2009/08/xm.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-6768300060896895579</guid><pubDate>Wed, 15 Jul 2009 02:18:00 +0000</pubDate><atom:updated>2009-07-15T22:25:04.207+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">death march</category><category domain="http://www.blogger.com/atom/ns#">me-myself-and-i</category><title>Swearing to Cope with Pain</title><description>Man, it has been a while since I last posted. I wanted to write about all sorts of things. Like successfully installing &lt;a href=&quot;http://www.r-project.org/&quot; title=&quot;I like gnuplot, too&quot;&gt;R&lt;/a&gt; for &lt;a href=&quot;http://opensolaris.org/os/&quot;&gt;OpenSolaris&lt;/a&gt; using packages. Maybe about the &lt;a href=&quot;http://blogs.computerworld.com/is_oracle_getting_ready_to_kill_opensolaris&quot; title=&quot;well, there&#39;s always FreeBSD, my dears&quot;&gt;uncertain future for OpenSolaris&lt;/a&gt;, now that Oracle pwns that. Maybe about coffee (see my byline, I actually haven&#39;t written one word about my addiction to the bean). Maybe about a candidate for a side project I&#39;ve been mulling over, involving human speech parsing. But I&#39;ve been busy, both professionally and in private life.&lt;br /&gt;&lt;br /&gt;However, I found a wonderful article on Scientific American that is just so timely, that I feel compelled to post. Right here, right now.&lt;br /&gt;&lt;br /&gt;Been quite busy at work, having been drafted to fight fires on a project that I now understand to be, simply put, a real &lt;a href=&quot;http://www.informit.com/articles/article.aspx?p=169512&quot; title=&quot;Thank you, Ed Yourdon!&quot;&gt;death march project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you&#39;re in IT, then you &lt;span style=&quot;font-weight:bold;font-style:italic;&quot; title=&quot;yeah, I know that you know I know you know, you know what I mean?&quot;&gt;know&lt;/span&gt; what I mean...&lt;br /&gt;&lt;br /&gt;Crazed release schedules, dictated to us according to the customer&#39;s whims. Lack of basic, understandable documentation. Severe lack of a coherent, well-thought architecture. Largely apocryphal comments sprinkled in the code, probably mostly out-of-date and inaccurate. No unit tests, no automated builds. A test team working on a Frankenstein system comprising multiple web services and multiple db&#39;s, all the while claiming that a test sprint can be done in &lt;span style=&quot;font-style:italic;&quot; title=&quot;absolutely no way!&quot;&gt;1 hours&#39; time&lt;/span&gt;. Argh, and don&#39;t even get me started on the misinformed decision to use &lt;span style=&quot;font-style:italic;color:red;&quot; title=&quot;I won&#39;t bother providing a link, it sucks that much&quot;&gt;Seasar2&lt;/span&gt;, which itself suffers from extremely poorly written documentation, even in its home language of Japanese.&lt;br /&gt;&lt;br /&gt;So I&#39;ve been suffering from recurring headaches, lately. The cause? Me banging my head on my desk, asking futilely, &quot;&lt;span style=&quot;font-style:italic;&quot;&gt;Why&lt;/span&gt;, o dear lord, &lt;span style=&quot;font-style:italic;&quot;&gt;why?&lt;/span&gt;&quot;&lt;br /&gt;&lt;br /&gt;What is this global variable doing here? &lt;span style=&quot;font-style:italic;&quot;&gt;*wham*&lt;/span&gt;&lt;br /&gt;Why is this method duplicated in several objects, but in different, unrelated packages? &lt;span style=&quot;font-style:italic;&quot;&gt;*wham*&lt;/span&gt;&lt;br /&gt;Why are there 2 classes in separate packages but &lt;span style=&quot;font-weight:bold;&quot;&gt;of the same class name&lt;/span&gt; that at a functional level are almost, but not quite, completely different from each other? &lt;span style=&quot;font-style:italic;&quot; title=&quot;ow&quot;&gt;*wham!*&lt;/span&gt;&lt;br /&gt;Who the #$%! wrote this code??? &lt;span style=&quot;font-style:italic;&quot; title=&quot;ow&quot;&gt;*wham!!*&lt;/span&gt;&lt;br /&gt;What the #$%! was he thinking??? &lt;span style=&quot;font-style:italic;&quot; title=&quot;ow ow&quot;&gt;*wham!!!*&lt;/span&gt;&lt;br /&gt;What blockhead decided against unit-testing and automated builds?! &lt;span style=&quot;font-style:italic;&quot; title=&quot;ow ow ow&quot;&gt;*wham!!!!*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When I am coding, I often talk to myself. A lot. So much that the people that sit near me at my traditionally laid out Japanese office mention it. They mention it quite often, actually. And I find that if I am in fire-fighting mode, trying to fix code written (nay, slapped together??) by others, then I find that I begin to swear out loud. A lot.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.psy.dmu.ac.uk/brown/schizophrenia/kobayashi.pdf&quot;&gt;Hallucinatory soliloquy&lt;/a&gt;? &lt;a href=&quot;http://en.wikipedia.org/wiki/Generalized_anxiety_disorder&quot;&gt;Generalized anxiety disorder&lt;/a&gt;? Just a tad &lt;a href=&quot;http://en.wikipedia.org/wiki/Schizophrenia&quot;&gt;schizophrenic&lt;/a&gt;? &lt;a href=&quot;http://en.wikipedia.org/wiki/Tourette_syndrome&quot;&gt;Tourette&#39;s&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;No, none of the above. Not according to the Scientific American article &lt;a href=&quot;http://www.scientificamerican.com/article.cfm?id=why-do-we-swear&quot; title=&quot;you really should read this, it was slashdotted!&quot;&gt;Why the #$%! Do We Swear&lt;/a&gt;. No, I think the increase in my swearing out loud is in direct proportion to the amount of stress and frustration I am feeling at that time, and this outward vocalization is really helping me to relieve the pain I am feeling. It&#39;s a &lt;span style=&quot;font-style:italic;&quot; title=&quot;本当だよ、ウソじゃないよ！&quot;&gt;coping mechanism&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;A brief excerpt:&lt;br /&gt;&lt;blockquote cite=&quot;http://www.scientificamerican.com/article.cfm?id=why-do-we-swear&quot; style=&quot;font-style:italic;&quot; title=&quot;you really should read this, it was slashdotted!&quot; onclick=&quot;window.open(&#39;http://www.scientificamerican.com/article.cfm?id=why-do-we-swear&#39;);&quot;&gt;&lt;br /&gt;The study, published today in the journal NeuroReport, measured how long college students could keep their hands immersed in cold water. During the chilly exercise, they could repeat an expletive of their choice or chant a neutral word. When swearing, the 67 student volunteers reported less pain and on average endured about 40 seconds longer.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;How swearing achieves its physical effects is unclear, but the researchers speculate that brain circuitry linked to emotion is involved. Earlier studies have shown that unlike normal language, which relies on the outer few millimeters in the left hemisphere of the brain, expletives hinge on evolutionarily ancient structures buried deep inside the right half.&lt;br /&gt;&lt;br /&gt;One such structure is the amygdala, an almond-shaped group of neurons that can trigger a fight-or-flight response in which our heart rate climbs and we become less sensitive to pain. Indeed, the students&#39; heart rates rose when they swore, a fact the researchers say suggests that the amygdala was activated.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So you see, I am just trying to soothe my #$%! pain. I&#39;m &lt;a href=&quot;http://www.youtube.com/watch?v=hZ7oxb5BjJ8&quot; title=&quot;just like that Poi Dog Pondering tune&quot;&gt;just trying to work it on out&lt;/a&gt;. Hell yeah, I can feel that dull ache receding...</description><link>http://43n141e.blogspot.com/2009/07/swearing-to-cope-with-pain.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-7152838534279787410</guid><pubDate>Sun, 26 Apr 2009 15:16:00 +0000</pubDate><atom:updated>2009-04-27T00:23:54.910+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">virtualbox freebsd network adapter</category><title>Networking and FreeBSD 7.1 on VirtualBox</title><description>Quick tip if you&#39;re installing &lt;a href=&quot;http://www.freebsd.org/&quot;&gt;FreeBSD&lt;/a&gt; on &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;VirtualBox&lt;/a&gt;... when configuring networking, be sure to select the &lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;PCnet-PCI II (NAT) adapter&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I was bored this Sunday evening, so I decided to install FreeBSD 7.1 alongside my virtualized Linux distros (CentOS 5.2 and 5.3), plus I still have OpenSolaris around). Having just installed Linux this morning, I mistakenly selected the PCnet-FAST III (NAT) adapter, and was scratching my head for the better part of half an hour when I found I couldn&#39;t SSH into my shiny new FreeBSD install. &lt;br /&gt;&lt;br /&gt;The more you know...</description><link>http://43n141e.blogspot.com/2009/04/networking-and-freebsd-71-on-virtualbox.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-5174163180425510575</guid><pubDate>Sat, 25 Apr 2009 22:10:00 +0000</pubDate><atom:updated>2009-04-26T20:28:09.105+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CentOS 5.3 VirtualBox guest addition</category><title>CentOS 5.3 on VirtualBox</title><description>&lt;a href=&quot;http://www.karan.org/blog/index.php/2009/03/31/centos-5-3-released-for-i386-x86-64&quot;&gt;CentOS 5.3 was released last month&lt;/a&gt;, and I finally got around to adding that to the list of virtualized OSs I have running on VirtualBox.&lt;br /&gt;&lt;br /&gt;Install was easy as usual. Since I again installed a handful servers and development tools, along with Japanese Language Support, I ended requiring all 6 of the CentOS 5.3 install ISO image files. No need to burn them to CD-ROM, just mount the files using Devices -&gt; Mount CD/DVD-ROM in the VirtualBox main window menu.&lt;br /&gt;&lt;br /&gt;Did the normal preflight check: ensured that SELinux is on and enforcing (you can switch this off if all you&#39;re doing is developing locally, but it helps to understand how SELinux works if you will be using it in production); disabled services not needed when running virtually (anacron, bluetooth, cups, hidd, pcscd, xfs); double-checked to see that root access is disabled for sshd; and I only open ports for SSH and HTTP/HTTPS in iptables (again, you can always configure more open ports as needed, like for accessing a database or whatnot).&lt;br /&gt;&lt;br /&gt;Lastly, I installed the VirtualBox guest additions for Linux. Nothing special here, just follow the instructions in the User Manual. The long and short of follows below.&lt;br /&gt;&lt;br /&gt;First, we install the packages necessary for installing the Linux guest additions:&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;# yum install gcc -y&lt;br /&gt;# yum install kernel sources -y&lt;br /&gt;# yum install kernel-devel -y&lt;br /&gt;# shutdown -r now&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Next, mount the VBoxGuestAdditions.iso file per section 4.3.1 Installing the Linux Guest Additions in the User Manual.&lt;br /&gt;&lt;br /&gt;Then, all that&#39;s left is:&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;# mkdir /tmp/cdrom&lt;br /&gt;# mount /dev/cdrom /tmp/cdrom&lt;br /&gt;# sh ./VBoxLinuxAdditions-x86.run&lt;br /&gt;# shutdown -r now&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Hey, presto! In the messages displayed in the console at startup, you will see that VirtualBox Additions is also starting up now. Good to go. And not that much different from my &lt;a href=&quot;http://43n141e.blogspot.com/2008/03/installing-virtualbox-guest-additions.html&quot;&gt;previous post on guest additions with CentOS 5.1&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I should also add that there wasn&#39;t any need to first install gcc and dkms, since those packages were already included in the installation. &lt;span style=&quot;font-style:italic;&quot;&gt;Caveat emptor.&lt;/span&gt;</description><link>http://43n141e.blogspot.com/2009/04/centos-53-on-virtualbox.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-4494658849062689500</guid><pubDate>Thu, 23 Apr 2009 05:28:00 +0000</pubDate><atom:updated>2009-04-23T14:32:59.864+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">robots penguins movie</category><title>Robotic Penguins!!!</title><description>Is this not sweet, I ask you?&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;560&quot; height=&quot;340&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/L5JHMpLIqO4&amp;amp;hl=ja&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/L5JHMpLIqO4&amp;amp;hl=ja&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;560&quot; height=&quot;340&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</description><link>http://43n141e.blogspot.com/2009/04/robotic-penguins.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-4679955792879449551</guid><pubDate>Thu, 23 Apr 2009 01:24:00 +0000</pubDate><atom:updated>2009-04-23T11:00:04.034+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">failure PM chicken golden week project management</category><title>Learning from Failure, or There Goes My Golden Week Vacation</title><description>As a systems architect, I must concern myself with project management issues. Every now and then, I like to check my head and reread a wonderful blog post from &lt;a href=&quot;http://weblog.raganwald.com/2005/01/what-ive-learned-from-failure.html&quot;&gt;Reg Braithwaite on What I&#39;ve learned from failure&lt;/a&gt;. I printed up a copy and keep it in my notebook so that I can pull it out and read it on my train ride.&lt;br /&gt;&lt;br /&gt;This is a timely topic for me as I now find myself only a week away from the big Japanese Golden Week holidays facing the ugly and imminent possibility that I will have to drag my carcass into the office during the holidays to assist another project team that are in the unenviable position of being smack dab in a &quot;project out of control&quot;. &lt;br /&gt;&lt;br /&gt;This project is rather high-profile and very important for my current employer. Being an outsider to this project, I don&#39;t know anything about how it got to this state. Only three weeks before going public, with a large string of national holidays right at the end... Doesn&#39;t that sound like project management wasn&#39;t working properly? And it always just &lt;span style=&quot;font-style:italic;&quot;&gt;slays&lt;/span&gt; me when I see that the only solution upper management can come up with is &lt;span style=&quot;font-style:italic;&quot;&gt;to toss more people at the problem&lt;/span&gt; by asking them to come in over the vacation. Urgh, I am having flashbacks of &lt;a href=&quot;http://en.wikipedia.org/wiki/Bill_Lumbergh&quot;&gt;Lumbergh&lt;/a&gt; in Office Space: &quot;m&#39; yeah, I&#39;m gonna need you to come in on Saturday...&quot; &lt;br /&gt;&lt;br /&gt;Close your eyes, take a deep breath, and repeat this mantra after me: &lt;span style=&quot;font-style:italic;&quot;&gt;Adding manpower to a late software project makes it later&lt;/span&gt;. Fred Brooks is spot on there. I feel like I should bring my copy of The Mythical Man Month in to the office and start whacking people across their faces with it.&lt;br /&gt;&lt;br /&gt;So here&#39;s the punchline for today... what have I learned from failure?&lt;br /&gt;People just &lt;span style=&quot;font-style:italic;&quot;&gt;never&lt;/span&gt; learn, that&#39;s what.&lt;br /&gt;&lt;br /&gt;Closing note: It just so happens that there was a &lt;a href=&quot;http://developers.slashdot.org/comments.pl?sid=1207233&amp;cid=27673871&quot;&gt;recent thread on /. on project management&lt;/a&gt;. Great comments, especially from myvirtualid.</description><link>http://43n141e.blogspot.com/2009/04/learning-from-failure-or-there-goes-my.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-2473472516201667206</guid><pubDate>Tue, 21 Apr 2009 02:36:00 +0000</pubDate><atom:updated>2009-04-21T11:40:01.589+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python rawks</category><title>Python: Very Pleasant Language, Indeed</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://imgs.xkcd.com/comics/python.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 518px; height: 588px;&quot; src=&quot;http://imgs.xkcd.com/comics/python.png&quot; border=&quot;0&quot; alt=&quot;&quot; title=&quot;Try this in python: &#39;import this&#39;&quot;/&gt;&lt;/a&gt;</description><link>http://43n141e.blogspot.com/2009/04/python-very-pleasant-language-indeed.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-1313528973948815172</guid><pubDate>Tue, 21 Apr 2009 01:29:00 +0000</pubDate><atom:updated>2009-04-21T10:36:14.409+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack HTTP GET  time.com moot</category><title>Time.com 100 Most Influential People of 2009 Poll Hack</title><description>Great bit describing a hack to write out a &lt;a href=&quot;http://musicmachinery.com/2009/04/15/inside-the-precision-hack/&quot;&gt;not-so-hidden message in the Time.com 100 Most Influential People of 2009 poll&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As of 10:30, 2009/04/21 Tuesday, the message was being garbled --- check it out &lt;a href=&quot;http://www.time.com/time/specials/packages/article/0,28804,1883644_1886141,00.html&quot;&gt;here&lt;/a&gt; ---, but the hack is still pretty funny. At the very least, don&#39;t allow HTTP GET for any sort of non-idempotent operation.</description><link>http://43n141e.blogspot.com/2009/04/timecom-100-most-influential-people-of.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-4044453319482976656</guid><pubDate>Tue, 21 Apr 2009 00:50:00 +0000</pubDate><atom:updated>2009-04-21T09:58:31.040+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">captcha google web security anti-bots</category><title>Google Researchers Propose New-and-improved CAPTCHA?</title><description>Well, here&#39;s an interesting &lt;a href=&quot;http://www.theregister.co.uk/2009/04/20/new_google_captcha/&quot;&gt;article on Google researchers and their new proposal for improved captchas&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I really hesitate when it comes to &lt;a href=&quot;http://en.wikipedia.org/wiki/Captcha&quot;&gt;captcha&lt;/a&gt;s, whether it be from the user&#39;s perspective or the architect&#39;s. Present-day implementations are often too difficult or troublesome to deal with, and on the flipside, are all too often easily defeated by employing underpaid serfs in a sweatshop. But the gist of the article is that the new proposed captcha is image-based, which is great since text-based challenges have many shortcomings (language-dependent, requires text input). &lt;br /&gt;&lt;br /&gt;I hope that Google can roll out some kind of library or package for this idea, it sounds pretty solid.</description><link>http://43n141e.blogspot.com/2009/04/google-researchers-propose-new-and.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-322986686397094855</guid><pubDate>Mon, 20 Apr 2009 13:55:00 +0000</pubDate><atom:updated>2009-04-20T23:02:20.387+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">shampoo sex</category><title>Tsubaki Shampoo and Sex... Wax</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://ecx.images-amazon.com/images/I/41qwivqtknL._SS500_.jpg&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 500px; height: 500px;&quot; src=&quot;http://ecx.images-amazon.com/images/I/41qwivqtknL._SS500_.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Ah, my memories are all coming back to me now. I know why I like Shiseido&#39;s Tsubaki Red shampoo so much...&lt;br /&gt;&lt;br /&gt;It brings me back to the day I bought my first bar of &lt;a href=&quot;http://www.sexwax.com/&quot;&gt;Mr. Zog&#39;s Sex Wax&lt;/a&gt;! &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.sexwaxdealer.com/images/products/10010sexwax_alt.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 400px;&quot; src=&quot;http://www.sexwaxdealer.com/images/products/10010sexwax_alt.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;</description><link>http://43n141e.blogspot.com/2009/04/tsubaki-shampoo-and-sex-wax.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-4760903706674109955</guid><pubDate>Wed, 18 Mar 2009 21:18:00 +0000</pubDate><atom:updated>2009-03-19T06:26:50.736+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">xkcd humor dreams dream student students</category><title>XKCD: Students</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://imgs.xkcd.com/comics/students.png&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 740px; height: 262px;&quot; src=&quot;http://imgs.xkcd.com/comics/students.png&quot; border=&quot;0&quot; alt=&quot;&quot; title=&quot;The same goes the one where you&#39;re wrestling the Green Ranger in the swimming pool full of Crisco.  You guys all have that dream, right?  It&#39;s not just me.  Right?&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Can you believe, I actually still see this dream every so often?&lt;/p&gt;</description><link>http://43n141e.blogspot.com/2009/03/can-you-believe-i-actually-still-see.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-4258297887099690968</guid><pubDate>Tue, 28 Oct 2008 13:35:00 +0000</pubDate><atom:updated>2008-10-28T23:03:58.179+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">札幌　ＩＴ　Sapporo IT business economy meltdown insecurity</category><title>Skinny Times Are A&#39;Coming</title><description>I am sitting at the dining table, pecking away at this post while wolfing down some instant noodles. I just got back from company &lt;a href=&quot;http://ja.wikipedia.org/wiki/%E5%AE%B4%E4%BC%9A&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;enkai&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; where I really understood for the first time how grave the situation is at work. What with the grim economic circumstances unfolding worldwide, even here in Sapporo, skinny times are &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;a&#39;coming&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;It is time to bear down, re-evaluate your skills and knowledge, tap your social networks, and plan for the worst. With the sinking of Lehman Brothers just the tip of the iceberg, soaring fuel and food costs and the coming winter mean that I will have to work a bit harder and a lot more smarter to protect my family.&lt;br /&gt;&lt;br /&gt;S0, just how do I know that my company is in for some skinny times and stormy weather?&lt;br /&gt;&lt;br /&gt;Tonight&#39;s party menu, that&#39;s how. Or rather, the lack thereof.&lt;br /&gt;&lt;br /&gt;Normally, an &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;enkai&lt;/span&gt; for welcoming new employees should be a fairly filling affair. It is fall, so that should mean a nice, hearty &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;nabe&lt;/span&gt; hot-pot, with extra dishes of skewered meats or &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;sashimi&lt;/span&gt;, salads, and the like. But tonight? There was only:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a small &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;nabe&lt;/span&gt; hot-pot, 1 serving per person, with cabbage, mushrooms, and ground chicken dumplings&lt;/li&gt;&lt;li&gt;1 &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;yakitori&lt;/span&gt; skewer&lt;/li&gt;&lt;li&gt;1 &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;tsukune&lt;/span&gt; ground chicken skewer (very tiny)&lt;/li&gt;&lt;li&gt;a sparse green salad&lt;/li&gt;&lt;li&gt;tiny, tiny fried chicken nugget-lets (I mean, &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;tiny!&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;vinegared&lt;/span&gt; sushi rice (w/out much in the way of anything added to it)&lt;/li&gt;&lt;li&gt;a dry piece of cake for dessert&lt;/li&gt;&lt;/ul&gt;Granted, it was an all-you-can-drink-for-2-hours sort of deal, but after a hard day coding, I was looking forward to sitting down to a real meal. Seeing as how such a meal could not be afforded given the financial situation, I fear that expanding the staff at this point is probably folly. And any grandiose ideas for transforming the company from a software sweatshop into a real service-oriented enterprise should have been put into execution last year.&lt;br /&gt;&lt;br /&gt;Already, there is blood in the water for IT in Sapporo.  A local Sapporo IT company called Den-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;nou&lt;/span&gt; (&lt;a href=&quot;http://www.e-denno.co.jp/gaiyo.htm&quot;&gt;電脳&lt;/a&gt;, but their website is already down) just sank last week, and I reckon that it will not be the last. As far as I can tell, practically all IT in Sapporo have the same weak business model (bid as low as possible on jobs in Tokyo or Osaka, agree to unrealistic schedules, and work the crap outta your staff; lather, rinse, repeat). With practically nothing to discern one company from another, I expect that the same fate that befell Den-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;nou&lt;/span&gt; is what await many other Sapporo IT shops, including the one in which I am stuck.&lt;br /&gt;&lt;br /&gt;But I am a chameleon when it comes to careers, a trapeze-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;swingin&lt;/span&gt;&#39; kind of guy. I think it may be time to reinvent myself. Of course, I love coding way too much to give up that easy. But extraordinary times call for extraordinary measures.&lt;br /&gt;&lt;br /&gt;Be prepared. Skinny times are &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;a&#39;coming&lt;/span&gt;.</description><link>http://43n141e.blogspot.com/2008/10/skinny-times-are-acoming.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-3044595614674425096</guid><pubDate>Sat, 27 Sep 2008 11:36:00 +0000</pubDate><atom:updated>2009-04-23T10:21:22.802+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">weebl bob copyright law madness destroy ladytron</category><title>Weebl and Bob - Destroy (archived on YouTube)</title><description>&lt;object width=&quot;560&quot; height=&quot;340&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/CrPFNnE964Q&amp;hl=ja&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/CrPFNnE964Q&amp;hl=ja&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;560&quot; height=&quot;340&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Hilarious parody of &lt;a href=&quot;http://ladytron.nettwerk.com/&quot; title=&quot;Link to Ladytron&amp;rsquo;s website&quot;&gt;Ladytron&lt;/a&gt;&#39;s Destroy video. Apparently, the creators of &lt;a href=&quot;http://www.weebls-stuff.com/wab/&quot; title=&quot;Great animations here!&quot;&gt;Weebl and Bob&lt;/a&gt; got flak for making this, and British laws are not permissive enough to allow this. Thank god for YouTube.&lt;br /&gt;&lt;br /&gt;Link to thread discussing the &lt;a href=&quot;http://www.weebls-stuff.com/news/812/cease&quot;&gt;cease and desist order here&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;It&#39;s too bad that someone doesn&#39;t have a sense of humor.</description><link>http://43n141e.blogspot.com/2008/09/weebl-and-bob-destroy-archived-on.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-896977799192741144</guid><pubDate>Thu, 28 Aug 2008 13:25:00 +0000</pubDate><atom:updated>2008-08-28T22:51:14.486+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">OpenOffice SDK java implementation loader error netbeans</category><title>Java Implementation Loader Error in Deploying OpenOffice Add-On Project</title><description>My interest has been piqued lately: I am curious about developing applications in the &lt;a href=&quot;http://www.openoffice.org/&quot;&gt;OpenOffice&lt;/a&gt; framework, using the &lt;a href=&quot;http://download.openoffice.org/2.4.0/sdk.html&quot;&gt;OpenOffice SDK&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Anyhow, I had some trouble getting the &lt;a href=&quot;http://wiki.services.openoffice.org/wiki/OpenOffice_Add-On_Project_Type&quot;&gt;Add-On project tutorial&lt;/a&gt; going. Nothing serious, but I just couldn&#39;t deploy the add-on for &quot;Could not create Java implementation loader&quot; errors. Yeah, I didn&#39;t have a clue as to what that meant.&lt;br /&gt;&lt;br /&gt;But with a bit of googling, I found this &lt;a href=&quot;http://www.oooforum.org/forum/viewtopic.phtml?t=42403&quot;&gt;thread&lt;/a&gt;, which pointed me back to &lt;a href=&quot;http://wiki.services.openoffice.org/wiki/Extensions_trouble_shooting#java_loader&quot;&gt;this page on the OpenOffice wiki&lt;/a&gt;. The solution is right there, in 2. Possible Work-Arounds. I quote:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;This usually happens when one wants to debug Java in the office process and therefore has provided the debug options for Java in the options dialog. The Java service of the extension will be registered in a separate process (uno.exe) which also needs to start Java. This Java uses the same settings from the options dialog.&lt;br /&gt;...&lt;br /&gt;If there is also a Java running in the office process, then the creation of the virtual machine in the second process will fail. The reason is, that the latter receives the same debug settings. It appears that two virtual machines, although in separate processes, cannot use the same port for debugging. If one changes the port number before adding the extension (and after the Java has been created in the office process), then the extension will be installed properly. &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Urgh. I installed OpenOffice with its own JRE, but I am using Java SE 6 Update 10 RC as the default environment in my NetBeans IDE (I am also dabbling in &lt;a href=&quot;http://java.sun.com/javafx/index.jsp&quot;&gt;JavaFX&lt;/a&gt;!). I surmise, however, that when I use the &lt;span style=&quot;font-weight: bold;&quot;&gt;Project View -&gt; Project Node -&gt; Context Menu -&gt; Create OXT | Deploy Office Extension&lt;/span&gt; in NetBeans to launch the project deployer, it accordingly uses the environment settings of the NetBeans JRE/JDK the &lt;span style=&quot;font-style:italic;&quot;&gt;project&lt;/span&gt; is using, and not the JRE that comes packaged with OpenOffice.&lt;br /&gt;&lt;br /&gt;So, to make a long story short... In WinXP, locate your user&#39;s &lt;span style=&quot;font-family: courier new;&quot;&gt;C:\Documents and Settings\%user%\Application Data\OpenOffice.org2&lt;/span&gt;, and just delete it. Re-launching/re-deploying the OpenOffice Add-On project will just work. You&#39;ll have to change your Windows Explorer settings to display all hidden directories and files.</description><link>http://43n141e.blogspot.com/2008/08/java-implementation-loader-error-in.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-3890532059308423013</guid><pubDate>Thu, 28 Aug 2008 03:48:00 +0000</pubDate><atom:updated>2009-03-19T06:23:42.405+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">math humor xkcd</category><title>Mathematicians (nah, I&#39;m not really a mathematician)</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://xkcd.com/435&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;&quot; src=&quot;http://imgs.xkcd.com/comics/purity.png&quot; alt=&quot;&quot; title=&quot;On the other hand, physicists like to say physics is to math as sex is to masturbation.&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Which reminds me of the following joke:&lt;/span&gt;&lt;br /&gt;An engineer, a physicist and a mathematician were all staying in a hotel, when each of their rooms individually caught fire. The engineer did some basic math, flooded the floor and said, &quot;It is out.&quot; The physicist did more complicated math, used just precisely the amount of water needed to put out the fire and said, &quot;It is out.&quot; The mathematician did a lot of complicated math, cried out, &quot;I HAVE SOLVED IT!&quot; and went back to bed.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;... think I saw the above joke on /.&lt;/span&gt;</description><link>http://43n141e.blogspot.com/2008/08/mathematicians-nah-im-not-really.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-8291280790457721193</guid><pubDate>Wed, 27 Aug 2008 12:54:00 +0000</pubDate><atom:updated>2008-08-28T21:01:09.882+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby C# openssl asymmetric RSA encryption public private</category><title>RSA Encryption: OpenSSL to Ruby to C# (and back to Ruby)</title><description>Continuing on the topic of encryption, it turns out that the work project I mentioned in &lt;a href=&quot;http://43n141e.blogspot.com/2008/08/des-encryption-java-to-openssl-to-ruby.html&quot;&gt;my last post&lt;/a&gt; will require transmission of encrypted data from C# to Ruby. As this encrypted data must only be decrypt-able by the Ruby-side logic, asymmetric encryption fits the bill well. Here are some notes on working with RSA public key encryption with OpenSSL to generate the RSA key-pair; Ruby/OpenSSL to extract the public key parameters to feed the C# RSACryptoServiceProvider; C# to use the public key to encrypt an arbitrary array of bytes; and finally back to Ruby/OpenSSL to decrypt the enciphered data with the private key.&lt;br /&gt;&lt;br /&gt;Now, I will consider that trust between the C# logic and the Ruby/OpenSSL logic is implied, so there is no need for use of X.509 certificates or what-not to distribute the public key to the C#-side. I will instead use the RSACryptoServiceProvider&#39;s FromXmlString method to initialize the provider with the key modulus and exponent. Practically speaking, I would have to obtain the key modulus and exponent (most likely using Ruby/OpenSSL), and then serialize that in an XML form that the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspx&quot;&gt;C# class RSACryptoServiceProvider&lt;/a&gt; understands.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;RSA Private Key Generation with OpenSSL&lt;/span&gt;&lt;br /&gt;OK, let&#39;s start off by first using OpenSSL to generate a 512-bit RSA private key:&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;... with OpenSSL command-line ...&lt;br /&gt;&lt;br /&gt;... generate RSA private key (default of 512-bits)&lt;br /&gt;shino# openssl genrsa -out rsa.priv&lt;br /&gt;&lt;br /&gt;... confirm key parameters&lt;br /&gt;shino# openssl rsa -in [rsa.priv] -text -noout&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Simple enough, no? And once again, yeah, yeah, yeah: a 512-bit RSA key cannot do much in the way of protecting secrets. &lt;a href=&quot;http://www.theregister.co.uk/1999/08/30/rsa155_code_cracked/&quot;&gt;Cracked way back in 1999&lt;/a&gt;. But let&#39;s just agree to go with 512-bits for the sake of this post. BTW, don&#39;t forget that you will have to take into account any steps needed to protect this RSA private key file. I leave that exercise to you, dear reader.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Obtain Key Modulus &amp;amp; Exponent Parameters with Ruby/OpenSSL&lt;/span&gt;&lt;br /&gt;Next, we use Ruby/OpenSSL to read in our newly-created RSA private key and obtain Base64-encoded string values for key modulus and exponent for the RSACryptoServiceProvider&#39;s XML string (we will use those values to calculate the &lt;span style=&quot;font-style: italic;&quot;&gt;public&lt;/span&gt; key in C#-land shortly):&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;# with irb/ruby/openssl&lt;br /&gt;&lt;br /&gt;# use ruby/openssl to load private key&lt;br /&gt;irb(main):001:0&amp;gt; require &#39;openssl&#39;&lt;br /&gt;=&amp;gt; true&lt;br /&gt;irb(main):002:0&amp;gt; require &#39;base64&#39;&lt;br /&gt;=&amp;gt; true&lt;br /&gt;irb(main):003:0&amp;gt; privkey = OpenSSL::PKey::RSA.new(File.read(&#39;rsa.priv&#39;))&lt;br /&gt;&lt;br /&gt;# extract key exponent and Base64-encode&lt;br /&gt;irb(main):004:0&amp;gt; exp = []&lt;br /&gt;=&amp;gt; []&lt;br /&gt;irb(main):005:0&amp;gt; pubkey = privkey.public_key&lt;br /&gt;irb(main):006:0&amp;gt; pubkey.e&lt;br /&gt;=&amp;gt; 65537&lt;br /&gt;irb(main):007:0&amp;gt; (pubkey.e.num_bytes-1).downto(0) {|i| exp &amp;lt;&amp;lt; ((pubkey.e &amp;gt;&amp;gt; (i*8)).to_i &amp;amp; 0xFF) }&lt;br /&gt;=&amp;gt; 2&lt;br /&gt;irb(main):008:0&amp;gt; exp&lt;br /&gt;=&amp;gt; [1, 0, 1]&lt;br /&gt;irb(main):009:0&amp;gt; tmp = []&lt;br /&gt;=&amp;gt; []&lt;br /&gt;irb(main):010:0&amp;gt; tmp[0] = exp.map {|b| sprintf(&quot;%02x&quot; % b) }.join&lt;br /&gt;=&amp;gt; &quot;010001&quot;&lt;br /&gt;irb(main):011:0&amp;gt; Base64.encode64(tmp.pack(&#39;H*&#39;)).split(&quot;\n&quot;).join&lt;br /&gt;=&amp;gt; &quot;&lt;span style=&quot;color: rgb(0, 153, 0);&quot;&gt;AQAB&lt;/span&gt;&quot;&lt;br /&gt;&lt;br /&gt;# extract key modulus and Base64-encode&lt;br /&gt;irb(main):012:0&amp;gt; pubkey.n&lt;br /&gt;=&amp;gt; 10859685957917547658301583853465231245284761442925449111820039202653087969032&lt;br /&gt;48227098143938496267490334944907126548361037059959257154028677097618826672949&lt;br /&gt;irb(main):013:0&amp;gt; (pubkey.n.num_bytes-1).downto(0) { |i| mod &amp;lt;&amp;lt; ((pubkey.n &amp;gt;&amp;gt; (i*8)).to_i &amp;amp; 0xFF) }&lt;br /&gt;=&amp;gt; 63&lt;br /&gt;irb(main):014:0&amp;gt; mod&lt;br /&gt;=&amp;gt; [207, 89, 10, 12, 14, 23, 85, 80, 200, 210, 18, 182, 229, 231, 180, 219, 103,&lt;br /&gt;58, 118, 47, 162, 38, 14, 74, 94, 114, 192, 69, 174, 176, 175, 140, 177,&lt;br /&gt;230, 202, 21, 102, 169, 66, 199, 161, 128, 61, 223, 167, 210, 168, 145, 51,&lt;br /&gt;164, 94, 120, 73, 250, 100, 8, 7, 56, 185, 23, 28, 157, 59, 53]&lt;br /&gt;irb(main):015:0&amp;gt; tmp = []&lt;br /&gt;=&amp;gt; []&lt;br /&gt;irb(main):016:0&amp;gt; tmp[0] = mod.map {|b| sprintf(&quot;%02x&quot; % b) }.join&lt;br /&gt;=&amp;gt;&quot;cf590a0c0e175550c8d212b6e5e7b4db673a762fa2260e4a5e72c045aeb0af8cb1e6ca1566a942c7a1803ddfa7d2a89133a45e7849fa64080738b9171c9d3b35&quot;&lt;br /&gt;irb(main):017:0&amp;gt; Base64.encode64(tmp.pack(&#39;H*&#39;)).split(&quot;\n&quot;).join&lt;br /&gt;=&amp;gt; &quot;&lt;span style=&quot;color: rgb(0, 153, 0);&quot;&gt;z1kKDA4XVVDI0hK25ee022c6di+iJg5KXnLARa6wr4yx5soVZqlCx6GAPd+n0qiRM6ReeEn6ZAgHOLkXHJ07NQ==&lt;/span&gt;&quot;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A good point to bear in mind here is that for Ruby/OpenSSL, the key parameters are instances of OpenSSL::BN, which represent big numbers for OpenSSL for multiprecision integer arithmetics. OpenSSL::BN.num_bytes tells us how many bytes are used to represent a key parameter, and then in order to transform the big number into an array of bytes, we can pass a block that uses a bit mask to obtain the significant bits for each byte of the big number. Then, we transform the byte values in this array into 2-char hexadecimal strings, and concatenate into one, long string of hexadecimal chars. Stuff that into a temporary array, call &lt;a href=&quot;http://www.ruby-doc.org/core/classes/Array.html#M002245&quot;&gt;&lt;span style=&quot;font-family:courier new;&quot;&gt;pack(&#39;H*&#39;)&lt;/span&gt;&lt;/a&gt; on the array, remove any line-break chars, and then we   Base64-encode the values for modulus and exponent.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Encryption Using RSA Public Key with C#&lt;/span&gt;&lt;br /&gt;OK, so we have our 512-bit RSA private key, and we have extracted the key modulus and exponent values as Base64-encoded strings, which we can now pass to C#&#39;s RSACryptoServiceProvider in order to obtain the public key:&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;using System.Security.Cryptography;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();&lt;br /&gt;rsa.FromXmlString(&quot;&lt;br /&gt; &amp;lt;RSAKeyValue&amp;gt;&lt;br /&gt;     &amp;lt;Modulus&amp;gt;         &lt;br /&gt;&lt;span style=&quot;color: rgb(0, 153, 0);&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 153, 0);&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 153, 0);&quot;&gt;z1kKDA4XVVDI0hK25ee022c6di+iJg5KXnLARa6wr4yx5soVZqlCx6GAPd+n0qiRM6ReeEn6ZAgHOLkXHJ07NQ==&lt;/span&gt;&lt;br /&gt;     &amp;lt;/Modulus&amp;gt;&lt;br /&gt;     &amp;lt;Exponent&amp;gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 153, 0);&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 153, 0);&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 153, 0);&quot;&gt;AQAB&lt;/span&gt;&lt;br /&gt;     &amp;lt;/Exponent&amp;gt;&lt;br /&gt; &amp;lt;/RSAKeyValue&amp;gt;&quot;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note that the XML string really shouldn&#39;t have any line breaks, I only broke it up to for viewing&#39;s sake.&lt;br /&gt;&lt;br /&gt;The next step is to encrypt some arbitrary data, which we take to be an array of bytes. Be sure to Base64-encode the result, since we will pass that string over to the Ruby/OpenSSL side.&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;... in C# ...&lt;br /&gt;&lt;br /&gt;byte[] cipherbytes = rsa.Encrypt(plainbytes, false);&lt;br /&gt;String ciphertext = Convert.ToBase64String(cipherbytes);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Gotta love C#, the APIs are for the most part crystal clear and user-friendly.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Decrypt Ciphertext with RSA Private Key with Ruby/OpenSSL&lt;/span&gt;&lt;br /&gt;Alright, now we just need to bring it all home, and decrypt that ciphertext string with the RSA private key, using Ruby/OpenSSL:&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;# with irb/ruby/openssl again&lt;br /&gt;&lt;br /&gt;# read in private key from file&lt;br /&gt;irb(main):001:0&amp;gt; require &#39;openssl&#39;&lt;br /&gt;=&amp;gt; true&lt;br /&gt;irb(main):002:0&amp;gt; require &#39;base64&#39;&lt;br /&gt;=&amp;gt; true&lt;br /&gt;irb(main):003:0&amp;gt; privkey = OpenSSL::PKey::RSA.new(File.read(&#39;rsa.priv&#39;))&lt;br /&gt;&lt;br /&gt;# Base64 decode the transmitted ciphertext first&lt;br /&gt;irb(main):004:0&amp;gt; ciphertxt = Base64.decode64(&quot;RALJTqgPNRcmvZ4E09y4NODl+w/vJPRslmxi8xB9JPSrpDQ&lt;br /&gt;bKjOkoeivTOqL9gT4WBpRpIlqut3jflkcUy/5Qg==&quot;)&lt;br /&gt;=&amp;gt; &quot;D\002\311N\250\0175\027&amp;amp;\275\236\004\323\334\2704\340\345\373\017\357$\364l\&lt;br /&gt;226lb\363\020}$\364\253\2444\e*3\244\241\350\257L\352\213\366\004\370X\032Q\244\&lt;br /&gt;211j\272\335\343~Y\034S/\371B&quot;&lt;br /&gt;&lt;br /&gt;# decrypt w/ private key&lt;br /&gt;irb(main):005:0&amp;gt; plaintext = privkey.private_decrypt(ciphertxt)&lt;br /&gt;=&amp;gt; &quot;Ru&#39;\035\314`\f\352&quot;&lt;br /&gt;&lt;br /&gt;# reconstitute as plain byte array&lt;br /&gt;irb(main):006:0&amp;gt; plaintext.unpack(&#39;H*&#39;)[0].scan(/../).map{|b|b.hex}&lt;br /&gt;=&amp;gt; #... results in the original array of bytes which we encrypted in C# land!&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Conclusion&lt;/span&gt;&lt;br /&gt;That wasn&#39;t so bad now, was it? We created an RSA private key with OpenSSL, used the Ruby/OpenSSL binding to manipulate the key to extract the key modulus and exponent (the public key material), and fed that into some C# code. This allowed us to encrypt an arbitrary array of bytes with the RSA public key in C#-land, and then we wrapped it up by decrypting the ciphertext with the corresponding RSA private key with Ruby/OpenSSL.&lt;br /&gt;&lt;br /&gt;Like I mentioned in &lt;a href=&quot;http://43n141e.blogspot.com/2008/08/des-encryption-java-to-openssl-to-ruby.html&quot;&gt;my last post&lt;/a&gt;, it is the lack of clear documentation for the Ruby/OpenSSL API that can trip you up. However, hackable nature of Ruby made it fairly painless to explore and experiment, and to come up with the above example of RSA asymmetric encryption using OpenSSL, Ruby and C#.</description><link>http://43n141e.blogspot.com/2008/08/rsa-encryption-openssl-to-ruby-to-c-and_27.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-6808775896675113302</guid><pubDate>Mon, 25 Aug 2008 21:19:00 +0000</pubDate><atom:updated>2009-08-18T15:07:32.860+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby java openssl symmetric DES DES-CBC encryption</category><title>DES encryption: Java to OpenSSL to Ruby</title><description>Encryption has always been an interest of mine, but I really don&#39;t have mad skillz. I must admit that I ran into a bit of difficulty in trying to figure out how to properly use the &lt;a href=&quot;http://www.ruby-doc.org/stdlib/libdoc/openssl/rdoc/index.html&quot;&gt;OpenSSL API for Ruby&lt;/a&gt;, but what do you expect? The documentation is frustratingly poor.&lt;br /&gt;&lt;br /&gt;In parallel with an ongoing project at work, I took some notes on using DES encryption with Java to generate the proper bits for a DES key; OpenSSL to actually use this key to encrypt some file; and then use Ruby/OpenSSL to decrypt. I know, I know: &lt;a href=&quot;http://w2.eff.org/Privacy/Crypto/Crypto_misc/DESCracker/HTML/19980716_eff_descracker_pressrel.html&quot; title=&quot;EFF DES Cracker Press Release, July 1998&quot;&gt;DES has been cracked for some time now&lt;/a&gt;. But this an exercise just to see if I could bring together what little acumen I possess in &lt;a href=&quot;http://java.sun.com/javase/downloads/ea.jsp&quot; title=&quot;Java SE 6 includes javax.crypto&quot;&gt;Java&lt;/a&gt;, &lt;a href=&quot;http://www.ruby-lang.org/en/&quot; title=&quot;Install ruby with openssl and openssl-devel&quot;&gt;Ruby&lt;/a&gt;, and &lt;a href=&quot;http://www.openssl.org/&quot;&gt;OpenSSL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here&#39;s how I did it for DES using the Cipher Block Chain operation mode. Note that the DES key and initialization vector are being passed from Java to OpenSSL to Ruby as a string of hexadecimal char, but in reality we are dealing with bytes.&lt;br /&gt;&lt;br /&gt;First, we create a valid DES key and set of initialization vector bytes. From the &lt;a href=&quot;http://www.itl.nist.gov/fipspubs/fip46-2.htm&quot;&gt;Federal Information Processing Standards Publication 46-2&lt;/a&gt;, the specification for the Data Encryption Standard (DES):&lt;br /&gt;&lt;blockquote style=&quot;font-style: italic;&quot;&gt;A key consists of 64 binary digits (&quot;O&quot;s or &quot;1&quot;s) of which 56 bits are randomly generated and used directly by the algorithm. The other 8 bits, which are not used by the algorithm, are used for error detection. The 8 error detecting bits are set to make the parity of each 8-bit byte of the key odd, i.e., there is an odd number of &quot;1&quot;s in each 8-bit byte.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;We&#39;ll use Java and the&lt;span style=&quot;font-family:courier new;&quot;&gt; javax.crypto.KeyGenerator&lt;/span&gt; factory to create a valid DES key and initialization vector:&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;// in Java&lt;br /&gt;&lt;br /&gt;import javax.crypto.Cipher;&lt;br /&gt;import javax.crypto.KeyGenerator;&lt;br /&gt;import javax.crypto.SecretKey;&lt;br /&gt;import javax.crypto.spec.IvParameterSpec;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) throws Exception {&lt;br /&gt;     // create a DES key&lt;br /&gt;     KeyGenerator kg = KeyGenerator.getInstance(&quot;DES&quot;);&lt;br /&gt;     SecretKey key = kg.generateKey();&lt;br /&gt;     byte[] keyBytes = key.getEncoded();&lt;br /&gt;     StringBuffer sbuf = new StringBuffer();&lt;br /&gt;     for (byte b : keyBytes) {&lt;br /&gt;         sbuf.append(String.format(&quot;%02x&quot;, (b &amp; 0xFF)));&lt;br /&gt;     }&lt;br /&gt;     System.out.println(&quot;DES key: &quot; + sbuf);&lt;br /&gt;  &lt;br /&gt;     // create initialization parameter bytes&lt;br /&gt;     Cipher nonceCipher = Cipher.getInstance(&quot;DES/CBC/PKCS5padding&quot;);&lt;br /&gt;     nonceCipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(new byte[8]));&lt;br /&gt;     IvParameterSpec iv = new IvParameterSpec(nonceCipher.doFinal(new byte[8]), 0, 8);&lt;br /&gt;     byte[] ivBytes = iv.getIV();&lt;br /&gt;     sbuf = new StringBuffer();&lt;br /&gt;     for (byte b : ivBytes) {&lt;br /&gt;         sbuf.append(String.format(&quot;%02x&quot;, (b &amp; 0xFF)));&lt;br /&gt;     }&lt;br /&gt;     System.out.println(&quot;IV: &quot; + sbuf);&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The above Java code will output a string of 8 bytes in hexadecimal for the DES key, and also a string of 8 bytes in hexadecimal for the initialization vector to be used in CBC. We next use this as input for the &lt;span style=&quot;font-family:courier new;&quot;&gt;openssl enc&lt;/span&gt; program:&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;... with OpenSSL command-line ...&lt;br /&gt;&lt;br /&gt;shino# openssl des-cbc -e -in plaintext.txt -out encrypted.des-cbc \&lt;br /&gt;         -K [java-generated DES key string] -iv [java-generated IV string]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The above OpenSSL command will encrypt the file specified with the &lt;span style=&quot;font-family:courier new;&quot;&gt;-in&lt;/span&gt; option, using DES-CBC with the given &lt;span style=&quot;font-family:courier new;&quot;&gt;-K&lt;/span&gt; DES key and -iv initialization vector. The values for &lt;span style=&quot;font-family:courier new;&quot;&gt;-K&lt;/span&gt; and &lt;span style=&quot;font-family:courier new;&quot;&gt;-iv&lt;/span&gt; need to be a string of 8 bytes given in hex. Encrypting the plaintext file &lt;span style=&quot;font-family:courier new;&quot;&gt;plaintext.txt&lt;/span&gt; will then result in the output &lt;span style=&quot;font-family:courier new;&quot;&gt;encrypted.des-cbc&lt;/span&gt;. By the way, this OpenSSL command is using PKCS5 padding as default.&lt;br /&gt;&lt;br /&gt;To decrypt with ruby/OpenSSL was a bit tricky. Like I mentioned earlier, the &lt;a href=&quot;http://www.ruby-doc.org/stdlib/libdoc/openssl/rdoc/index.html&quot;&gt;documentation&lt;/a&gt; is very, very poor. Assuming that the DES-CBC encrypted file &lt;span style=&quot;font-family:courier new;&quot;&gt;encrypted.des-cbc&lt;/span&gt; exists in our current working directory, we can fire up irb to do the decryption and bring it all home:&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;# with irb/ruby/openssl&lt;br /&gt;&lt;br /&gt;# given key = &quot;838519bcc21fb0a1&quot;&lt;br /&gt;# given iv  = &quot;33bc52494428f4b6&quot;&lt;br /&gt;# given plaintext msg = &quot;hello, encryption!\n&quot;&lt;br /&gt;&lt;br /&gt;irb(main):001:0&amp;gt; require &#39;openssl&#39;&lt;br /&gt;=&amp;gt; true&lt;br /&gt;irb(main):002:0&amp;gt; f = File.open(&#39;encrypted.des-cbc&#39;, &#39;rb&#39;)&lt;br /&gt;=&amp;gt; #&amp;lt;file:encrypted.des-cbc&amp;gt;&lt;br /&gt;irb(main):003:0&amp;gt; data = f.readline&lt;br /&gt;=&amp;gt; ...&lt;br /&gt;irb(main):004:0&amp;gt; f.close&lt;br /&gt;=&amp;gt; nil&lt;br /&gt;irb(main):005:0&amp;gt; decrypt = OpenSSL::Cipher::Cipher.new(&#39;des-cbc&#39;)&lt;br /&gt;=&amp;gt; #&amp;lt;openssl::cipher::cipher:0x4417d60&amp;gt;&lt;br /&gt;irb(main):006:0&amp;gt; decrypt.decrypt&lt;br /&gt;=&amp;gt; #&amp;lt;openssl::cipher::cipher:0x4417d60&amp;gt;&lt;br /&gt;irb(main):007:0&amp;gt; decrypt.key = &quot;838519bcc21fb0a1&quot;.scan(/../).map{|b|b.hex}.pack(&#39;c*&#39;)&lt;br /&gt;=&amp;gt; &quot;\203\205\031\274\302\037\260\241&quot;&lt;br /&gt;irb(main):008:0&amp;gt; decrypt.iv = &quot;33bc52494428f4b6&quot;.scan(/../).map{|b|b.hex}.pack(&#39;c*&#39;)&lt;br /&gt;=&amp;gt; &quot;3\274RID(\364\266&quot;&lt;br /&gt;irb(main):009:0&amp;gt; decrypt.update(data) + decrypt.final&lt;br /&gt;=&amp;gt; &quot;hello, encryption!\n&quot;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here, we use irb to open the encrypted file and read in the bytes. Then, we use the ruby/OpenSSL API to create a DES-CBC cipher. The call to Cipher.decrypt sets the cipher to work in decryption mode. We next specify the DES key and IV initialization vector, as well as the string of encrypted chars as &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;binary strings&lt;/span&gt;.&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;br /&gt;# ruby snippet&lt;br /&gt;&quot;838519bcc21fb0a1&quot;.scan(/../).map{|b|b.hex}.pack(&#39;c*&#39;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In setting the key and iv, we provide a 16-char long string of hexadecimal  that represents 8-byte values. The above invocation uses &lt;a href=&quot;http://www.ruby-doc.org/core/classes/String.html#M000827&quot;&gt;String.scan(/../)&lt;/a&gt; to break the hex string into a list of 2-char long chunks. &lt;a href=&quot;http://www.ruby-doc.org/core/classes/Enumerable.html#M003159&quot;&gt;Enumerable.map&lt;/a&gt;&lt;a href=&quot;http://www.ruby-doc.org/core/classes/Enumerable.html#M003159&quot;&gt;{ |b| b.hex }&lt;/a&gt;  then maps each 2-char hex chunk back into its numerical (byte) equivalent. &lt;span style=&quot;font-family:courier new;&quot;&gt;&lt;a href=&quot;http://www.ruby-doc.org/core/classes/Array.html#M002245&quot;&gt;Array.pack(&#39;c*&#39;)&lt;/a&gt; &lt;/span&gt;lastly transforms the entire list into a single binary sequence. The documentation for &lt;span style=&quot;font-family:courier new;&quot;&gt;Cipher.key=&lt;/span&gt; and &lt;span style=&quot;font-family:courier new;&quot;&gt;Cipher.iv=&lt;/span&gt; is none too clear that both APIs expect a binary string. I spent quite a bit of time scratching my head as I was mistakenly passing in the plain-vanilla hexadecimal strings for the key and iv values.&lt;br /&gt;&lt;br /&gt;Anyhoo, as you have seen, it is not all that hard to do a round-trip DES-CBC encryption using Java to generate the key and iv; OpenSSL to actually encrypt the plaintext; and ruby/OpenSSL to decrypt.&lt;br /&gt;&lt;br /&gt;BTW, &lt;a href=&quot;http://www.ruby-lang.org/ja/man/html/OpenSSL_Cipher_Cipher.html&quot;&gt;this doc page in Japanese&lt;/a&gt; was a bit more helpful in pointing me in the right direction.</description><link>http://43n141e.blogspot.com/2008/08/des-encryption-java-to-openssl-to-ruby.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-3342070710346247427</guid><pubDate>Mon, 25 Aug 2008 11:42:00 +0000</pubDate><atom:updated>2008-08-25T21:05:16.409+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">北海道 2008年　冬　負担増　Hokkaido Bank rising expenses</category><title>The Hokkaido Bank predicts 57K JPY increase per household for winter expenses</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.hokkaido-np.co.jp/news/life/113548.php&quot; title=&quot;Sorry, Japanese only&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTr5R_h05Ccyo6rzQRPI7S2TQIU_K0-uoY-1GU2oEpFgn03nAyactGojD7wV9Cu7S2lHAZ4G0Hm8R1b6aYTf8H6xF4Rmxx9Z3KETwP6oCmB2gqhafuewkD7WoMU7-X7LOU1M0IVgB4v4qg/s320/doushin_57000_jpy.bmp&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5238420348925889458&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;A &lt;a href=&quot;http://www.hokkaido-np.co.jp/news/life/113548.php&quot; title=&quot;Sorry, Japanese only&quot;&gt;article in yesterday&#39;s Hokkaido &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;Shimbun&lt;/span&gt; Press&lt;/a&gt; reports that the Hokkaido Bank expect an increase of 57000 &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;JPY&lt;/span&gt; per household of expenditures on gasoline, kerosene, and other expenses related to winter. This figure is based on a recent Hokkaido Bank study that predicts a gross 134.6 billion &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;JPY&lt;/span&gt; increase in winter expenditures for the coming 2008 season. To make things worse, this study does not take into account effects of the expected increase for electricity rates.&lt;br /&gt;&lt;br /&gt;This seemingly downward spiral is certainly straining things for all people living in Hokkaido. Food, fuel and utilities like electricity all have been rising steadily. Personally, this has been weighing heavily on my mind as of late, as I am contemplating another career jump in order to keep up with all of the price-increases and keep my family afloat.&lt;br /&gt;&lt;br /&gt;I never really wanted to believe it, but the IT business here Hokkaido is starting to look very ghetto to me. There are a handful of good people, but most companies are pursuing a very conservative (read that as &quot;weak&quot; if it cannot let their employees stay ahead of inflation!) business plans for systems integration, made-to-order development, or call center and support.&lt;br /&gt;&lt;br /&gt;It may have been a mistake to tie myself directly to the local economy, so I am actively looking for opportunities and challenges that are more global and dynamic. Lord knows, there are a tons of such jobs in Tokyo...</description><link>http://43n141e.blogspot.com/2008/08/hokkaido-bank-predicts-57k-jpy-increase.html</link><author>noreply@blogger.com (Buruzaemon)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTr5R_h05Ccyo6rzQRPI7S2TQIU_K0-uoY-1GU2oEpFgn03nAyactGojD7wV9Cu7S2lHAZ4G0Hm8R1b6aYTf8H6xF4Rmxx9Z3KETwP6oCmB2gqhafuewkD7WoMU7-X7LOU1M0IVgB4v4qg/s72-c/doushin_57000_jpy.bmp" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-3396817186278347311</guid><pubDate>Thu, 07 Aug 2008 03:59:00 +0000</pubDate><atom:updated>2008-08-07T13:01:08.093+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">security dns cache poisoning</category><title>Dan Kaminsky Finally Outlines DNS Vulnerability</title><description>Dan Kaminsky finally outlined the DNS vulnerability that was reported about 4 weeks ago (&lt;a href=&quot;http://www.theregister.co.uk/2008/08/06/kaminsky_black_hat/&quot;&gt;article on The Register&lt;/a&gt;). It appears to be a DNS forgery variant of DNS cache poisoning. If an attacker of a DNS server can quickly and correctly guess a 16-bit transaction ID, then the attacker will be able to replace DNS entries with their own spoofed ones. There has been one confirmed attack so far, where the attacker &lt;a href=&quot;http://www.theregister.co.uk/2008/07/31/dns_cache_poisoning_goes_wild/&quot;&gt;caused AT&amp;T subscribers to be re-routed to fake Google pages&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For the curious, you might want to see how safe your ISP&#39;s DNS servers are. Try the &quot;Check My DNS&quot; button on &lt;a href=&quot;http://www.doxpara.com/&quot;&gt;Dan Kaminsky&#39;s site&lt;/a&gt;; or the &quot;Test My DNS&quot; link &lt;a href=&quot;https://www.dns-oarc.net/oarc/services/dnsentropy&quot;&gt;here&lt;/a&gt;. The key here is to see the amount of randomness of transaction IDs and query source ports in your ISP&#39;s DNS servers.</description><link>http://43n141e.blogspot.com/2008/08/dan-kaminsky-finally-outlines-dns.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2088267970281254598.post-3386993658789345887</guid><pubDate>Thu, 07 Aug 2008 03:29:00 +0000</pubDate><atom:updated>2008-08-07T12:37:53.611+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">security mobile</category><title>Hacking FasTrak</title><description>I&#39;ve never used the &lt;a href=&quot;http://www.bayareafastrak.org/&quot;&gt;FasTrak&lt;/a&gt; debit system for the tollways in California when I lived there, but The Register recently reports that &lt;a href=&quot;http://www.theregister.co.uk/2008/08/07/fastrak_vulns/&quot;&gt;an exploit has been found&lt;/a&gt;. I can&#39;t believe that FasTrak apparently transmits its unique ID number &lt;span style=&quot;font-style:italic;&quot;&gt;in the clear&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Not that I use it here, but I wonder what sort of vulnerabilities and countermeasures exist for the &lt;a href=&quot;http://www.go-etc.jp/riyouhouhou/riyouhouhou.html&quot; title=&quot;Sorry, link in Japanese&quot;&gt;Electronic Toll Collection (ETC) system&lt;/a&gt; in Japan. Or &lt;a href=&quot;http://ja.wikipedia.org/wiki/%E3%81%8A%E3%82%B5%E3%82%A4%E3%83%95%E3%82%B1%E3%83%BC%E3%82%BF%E3%82%A4&quot; title=&quot;Sorry, this is in Japanese, too&quot;&gt;おサイフケータイ services&lt;/a&gt; for the mobile devices used in Japan.</description><link>http://43n141e.blogspot.com/2008/08/hacking-fastrak.html</link><author>noreply@blogger.com (Buruzaemon)</author><thr:total>0</thr:total></item></channel></rss>