<?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: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'><id>tag:blogger.com,1999:blog-2721723</id><updated>2026-10-09T00:32:52.842-07:00</updated><category term="ads"/><category term="java"/><category term="python"/><category term="avro"/><category term="cplusplus"/><category term="eclipse"/><category term="euml2"/><category term="perl"/><category term="accomplishments"/><category term="android"/><category term="bugs"/><category term="format"/><category term="health"/><category term="httpretty"/><category term="hysteria"/><category term="jni"/><category term="mint"/><category term="mox"/><category term="regex"/><category term="serialization"/><category term="star trek"/><title type='text'>hair is important</title><subtitle type='html'>I am a master (not PhD). I don&#39;t know who you are. I don&#39;t know what you want. If you are looking for references or recommendations, I can tell you I don&#39;t have any. But what I do have are a very particular set of skills; skills I have acquired over a very long career. Skills that make me a positive dream for people like you.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2721723.post-4424647125338687460</id><published>2013-06-08T21:24:00.000-07:00</published><updated>2013-07-29T19:43:51.038-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mox"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Assert a method is not called using Mox</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Let&#39;s say you want to unit test a function and make sure that another function is &lt;b&gt;not&lt;/b&gt; called at any point during the routine.
&lt;br /&gt;
&lt;br /&gt;
To do it, simply stub out the function you want to assert isn&#39;t called, and do not record a call to it before putting the mocks into replay mode.
&lt;br /&gt;
&lt;br /&gt;
Here&#39;s some example code:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;import unittest

import mox


class Mystery(object):
    def want(self):
        pass

    def do_not_want(self):
        pass

    def func(self):
        self.want()


class TestIt(unittest.TestCase):
    def test(self):
        mox = mox.Mox()
        
        m = Mystery()

        # stub out the functions you&#39;re interested in verifying
        mox.StubOutWithMock(m, &#39;want&#39;)
        mox.StubOutWithMock(m, &#39;do_not_want&#39;)

        # record calls to stubbed out functions that are
        # expected to be called, in the order expected,
        # as many times as expected
        m.want()

        # set the mocks to replay mode
        mox.ReplayAll()

        # call the function you want to unit test
        m.func()

        # verify the expected calls were made, and the
        # unexpected calls were not made
        mox.VerifyAll()

if __name__ == &#39;__main__&#39;:
    unittest.main()
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
The above code yields the result:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
If we update class &lt;tt&gt;Mystery&lt;/tt&gt; to:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;class Mystery(object):
    def want(self):
        pass

    def do_not_want(self):
        pass

    def func(self):
        self.want()
        self.do_not_want()
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
We get this result instead:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;F
======================================================================
FAIL: test (__main__.TestIt)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;notcalled.py&quot;, line 28, in test
    m.func()
  File &quot;notcalled.py&quot;, line 14, in func
    self.do_not_want()
  File &quot;/Library/Python/2.6/site-packages/mox.py&quot;, line 765, in __call__
    return mock_method(*params, **named_params)
  File &quot;/Library/Python/2.6/site-packages/mox.py&quot;, line 1002, in __call__
    expected_method = self._VerifyMethodCall()
  File &quot;/Library/Python/2.6/site-packages/mox.py&quot;, line 1049, in _VerifyMethodCall
    expected = self._PopNextMethod()
  File &quot;/Library/Python/2.6/site-packages/mox.py&quot;, line 1035, in _PopNextMethod
    raise UnexpectedMethodCallError(self, None)
UnexpectedMethodCallError: Unexpected method call do_not_want.__call__() -&gt; None

----------------------------------------------------------------------
Ran 1 test in 0.008s

FAILED (failures=1)
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/4424647125338687460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2013/06/assert-method-is-not-called-using-mox.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/4424647125338687460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/4424647125338687460'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2013/06/assert-method-is-not-called-using-mox.html' title='Assert a method is not called using Mox'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-2959093077522589280</id><published>2013-05-03T16:32:00.000-07:00</published><updated>2013-07-29T19:41:40.877-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="httpretty"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Mock a socket timeout with HTTPretty</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Let&#39;s say you have a client that raises &lt;tt&gt;MyClientTimeoutException&lt;/tt&gt; if the underlying socket connect times out.

You can unit test this by using the &lt;a href=&quot;https://github.com/gabrielfalcao/HTTPretty&quot;&gt;HTTPretty&lt;/a&gt; library and stubbing out socket. This example uses Mox.
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;import socket
import unittest

from httpretty import HTTPretty, httprettified
import stubout

class Test(unittest.TestCase):
    def setUp(self):
        super(Test, self).setUp()
        self.stubs = stubout.StubOutForTesting()

    def tearDown(self):
        super(Test, self).tearDown()
        self.stubs.UnsetAll()
        self.stubs.SmartUnsetAll()

    @httprettified
    def test_timeout_call(self):
        client = MyClient()
        HTTPretty.register_uri(HTTPretty.GET, &quot;http://foo/&quot;)

        # fake a timeout
        def fake_create_connection(address, timeout):
            raise socket.timeout(&#39;timeout&#39;)

        self.stubs.Set(socket, &#39;create_connection&#39;, fake_create_connection)
        self.assertRaises(MyClientTimeoutException,
                          client.call,
                          &quot;http://foo/&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/2959093077522589280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2013/05/mock-socket-timeout-with-httpretty.html#comment-form' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/2959093077522589280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/2959093077522589280'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2013/05/mock-socket-timeout-with-httpretty.html' title='Mock a socket timeout with HTTPretty'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-5299756252787706010</id><published>2013-02-26T02:35:00.000-08:00</published><updated>2013-02-26T02:40:41.022-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Python Slicing and Copies</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I&#39;ve seen concern a number of times, on blogs or in code reviews, that slicing lists in Python negatively impacts performance, especially when dealing with large data. The concern is about objects being copied as a result of slicing.&lt;br /&gt;
&lt;br /&gt;
I hadn&#39;t heard of deep copy being the default behavior for, well, anything in any language. So, it surprised me to think Python would behave like that and I started looking around for information. I could have done my own test initially instead, but I&#39;m relatively new to Python and didn&#39;t immediately know how.&lt;br /&gt;
&lt;br /&gt;
It took awhile to find anything. It&#39;s one of those things where probably most people know it, but those who don&#39;t aren&#39;t corrected often. 
&lt;br /&gt;
&lt;br /&gt;
Anyway, I found in the introductory &lt;a href=&quot;http://docs.python.org/2/tutorial/introduction.html#lists&quot;&gt;documentation&lt;/a&gt; on lists that &lt;i&gt;&quot;... slice operations return a new list containing the requested elements. This means that the following slice returns a shallow copy of the list...&quot;&lt;/i&gt; A shallow copy means that only object references are copied. Strings behave the same way when sliced, probably because lists and strings are both &lt;a href=&quot;http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange&quot;&gt;sequence types&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Now, to an example I could have used instead of searching for documentation:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;class String(object):
    def __init__(self, value):
        self.value = value

    def __repr__(self):
        a = []
        for c in self.value:
            a.append(&#39;%c [%s]&#39; % (c, hex(id(c))))
        return &#39;&#39;.join([self.value, &#39;: &#39;, repr(a)])

s0 = String(&#39;OHAY&#39;)
print s0
s1 = String(s0.value[:1])
print s1
s2 = String(s0.value[1:])
print s2
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
And the output:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;OHAY: [&#39;O [0x100453a80]&#39;, &#39;H [0x1004d0780]&#39;, &#39;A [0x1004d07b0]&#39;, &#39;Y [0x1004d0840]&#39;]
O: [&#39;O [0x100453a80]&#39;]
HAY: [&#39;H [0x1004d0780]&#39;, &#39;A [0x1004d07b0]&#39;, &#39;Y [0x1004d0840]&#39;]
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
You can see from the object &lt;a href=&quot;http://docs.python.org/2/library/functions.html#id&quot;&gt;identities&lt;/a&gt; that only the references are copied, not the objects. This is generally inexpensive, that is, it&#39;s unlikely to hurt overall performance. Always measure first before trying to optimize.
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/5299756252787706010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2013/02/python-slicing-and-copies.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/5299756252787706010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/5299756252787706010'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2013/02/python-slicing-and-copies.html' title='Python Slicing and Copies'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-2590961526491351016</id><published>2013-01-01T20:36:00.000-08:00</published><updated>2013-02-23T18:04:58.575-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bugs"/><title type='text'>Labels Containing Symbols are Not Searchable</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;I don&#39;t know how it took me this long to notice, but here on blogger.com, labels containing symbols are broken in that they can&#39;t be searched. I have used the label &quot;c++&quot; in the past for a couple of my posts and today when I clicked the search link for the &quot;c++&quot; label, it gave the message &quot;No posts with label c++.&quot; instead of returning the labeled posts. I have changed to use &quot;cplusplus&quot; instead until there&#39;s hopefully a fix.&lt;br /&gt;
&lt;br /&gt;
It took me a little while to find where I could report a bug and I opened &lt;a href=&quot;http://productforums.google.com/forum/#!category-topic/blogger/something-is-broken/ELJN8JqfUAM&quot;&gt;this one&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s the &lt;a href=&quot;http://support.google.com/blogger/bin/request.py?contact_type=contact_policy&quot;&gt;link&lt;/a&gt; for reporting problems and bugs if you have any.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/2590961526491351016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2013/01/labels-containing-symbols-are-not.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/2590961526491351016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/2590961526491351016'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2013/01/labels-containing-symbols-are-not.html' title='Labels Containing Symbols are Not Searchable'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-9059461235965426173</id><published>2011-07-18T17:04:00.001-07:00</published><updated>2013-05-06T23:46:23.005-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cplusplus"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jni"/><title type='text'>JNI Example with Class Instantiation (C++)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Awhile back I had to create a JNI wrapper for a C++ class that uses a proprietary core C API. Rewriting everything including the core API in Java would be safer and perform better but in this case not duplicating code was more important. I couldn&#39;t find a clear code example containing everything that was needed to 1) make the JNI work at all and 2) wrap a class and call its non-static member function, so I&#39;m putting this here in case it might help someone else.&lt;br /&gt;
&lt;br /&gt;
There are two source files you&#39;ll need to write:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;A Java class that declares native methods, loads the library built using the JNI, and calls native methods.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;JNI code that implements the native methods declared in the Java class and uses the C++ class you&#39;re wrapping. You&#39;ll build a library with this.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;
The JNI code file will need to &lt;tt&gt;#include&lt;/tt&gt; a file you&#39;ll generate using &lt;a href=&quot;http://download.oracle.com/javase/6/docs/technotes/tools/solaris/javah.html&quot;&gt;javah&lt;/a&gt;, the &lt;i&gt;C Header and Stub File Generator&lt;/i&gt;. The javah tool will create the JNI function prototypes that match the native methods you declared in the Java class.
&lt;br /&gt;
&lt;br /&gt;
Here is an example, &lt;tt&gt;A.java&lt;/tt&gt;:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;package com.company.product.component;
import java.util.Properties;

public class A {
    private long ptr_;

    private native long createA(long value);
    private native void destroyA(long ptr);
    private native long getResult(long ptr, byte[] input, long length);

    static {
        System.loadLibrary(&quot;AJni&quot;);
    }
    
    public A(long value) {
        ptr_ = createA(value);
    }
    
    /**
     * Destroy the A instance created by the JNI.
     * This must be called when finished using the A.
     */
    public void destroy() {
        destroyA(ptr_);
    }

    /**
     * Do something.
     *
     * @param input The input array
     * @param length The length of the input array to process
     * @return The result
     */
    public long getResult(byte[] input, long length) {
        return getResult(ptr_, input, length);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
There are three native methods declared in &lt;tt&gt;A.java&lt;/tt&gt;: one that will create an instance of the C++ class, one that calls a member function of the class, and one that destroys the instance. There is a member variable, &lt;tt&gt;ptr_&lt;/tt&gt;, which stores the pointer to the &lt;tt&gt;A&lt;/tt&gt; instance that&#39;s created outside the JVM. You need this to call the member function, &lt;tt&gt;getResult()&lt;/tt&gt;. You also need it to destroy the &lt;tt&gt;A&lt;/tt&gt; instance when you&#39;re done. Once you have your Java class written you&#39;ll need to: &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Use javac to compile &lt;tt&gt;A.java&lt;/tt&gt; into &lt;tt&gt;A.class&lt;/tt&gt;.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Run javah on the Java class like this: &lt;tt&gt;javah com.company.product.component.A&lt;/tt&gt;&lt;br /&gt;
to generate &lt;tt&gt;com_company_product_component_A.h&lt;/tt&gt; which you&#39;ll include in the JNI code.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;
This is what &lt;tt&gt;com_company_product_component_A.h&lt;/tt&gt; looks like:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;/* DO NOT EDIT THIS FILE - it is machine generated */
#include &amp;lt;jni.h&amp;gt;
/* Header for class com_company_product_component_A */

#ifndef _Included_com_company_product_component_A
#define _Included_com_company_product_component_A
#ifdef __cplusplus
extern &quot;C&quot; {
#endif

/*
 * Class:     com_company_product_component_A
 * Method:    createA
 * Signature: (J)J
 */
JNIEXPORT jlong JNICALL Java_com_company_product_component_A_createA
  (JNIEnv *, jobject, jlong);

/*
 * Class:     com_company_product_component_A
 * Method:    destroyA
 * Signature: (J)V
 */
JNIEXPORT void JNICALL Java_com_company_product_component_A_destroyA
  (JNIEnv *, jobject, jlong);

/*
 * Class:     com_company_product_component_A
 * Method:    getResult
 * Signature: (J[BJ)J
 */
JNIEXPORT jlong JNICALL Java_com_company_product_component_A_getResult
  (JNIEnv *, jobject, jlong, jbyteArray, jlong);

#ifdef __cplusplus
}
#endif
#endif
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
The header contains function prototypes that you&#39;ll need to provide implementations for in a C++ source file.
&lt;br /&gt;
&lt;br /&gt;
Here is the example JNI code, &lt;tt&gt;A.cc&lt;/tt&gt;:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;#include &quot;com_company_product_component_A.h&quot;
#include &amp;lt;A.hh&amp;gt;

JNIEXPORT jlong JNICALL Java_com_company_product_component_createA
    (JNIEnv *env, jobject obj, jlong value)
{
    return reinterpret_cast&amp;lt;jlong&amp;gt;(new A(value));
}

JNIEXPORT void JNICALL Java_com_company_product_component_destroyA
    (JNIEnv *env, jobject obj, jlong ptr)
{
    A *a = reinterpret_cast&amp;lt;A*&amp;gt;(ptr);
    if(a) {
        delete a;
    }
}

JNIEXPORT jlong JNICALL Java_com_company_product_component_getResult
    (JNIEnv *env, jobject obj, jlong ptr, jbyteArray input, jlong length)
{
    jbyte *inputArray = env-&amp;gt;GetByteArrayElements(input, NULL);
    jlong result = reinterpret_cast&amp;lt;A*&amp;gt;(ptr)-&amp;gt;
        getResult(reinterpret_cast&amp;lt;const char*&amp;gt;(inputArray), length);
    env-&amp;gt;ReleaseByteArrayElements(input, inputArray, 0);
    return result;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
The code includes &lt;tt&gt;A.hh&lt;/tt&gt;, the header for the C++ class you&#39;re wrapping. All the use of the C++ class is here.   Then, &lt;tt&gt;A.cc&lt;/tt&gt; needs to be compiled and linked with the library you&#39;re wrapping into a new library, for example &lt;tt&gt;libAJni.so&lt;/tt&gt;, that gets loaded by the Java code using &lt;tt&gt;System.load()&lt;/tt&gt; as you saw in &lt;tt&gt;A.java&lt;/tt&gt; earlier.   That&#39;s pretty much it. You can now use the Java class &lt;tt&gt;A&lt;/tt&gt; to interact with the C++ library &lt;tt&gt;libAJni.so&lt;/tt&gt; which interacts with the C++ library you wanted to wrap in the first place. &lt;br /&gt;
&lt;pre&gt;A.class --&amp;gt; libAJni.so --&amp;gt; libA.so&lt;/pre&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/9059461235965426173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2011/07/jni-example-with-class-instantiation-c.html#comment-form' title='38 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/9059461235965426173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/9059461235965426173'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2011/07/jni-example-with-class-instantiation-c.html' title='JNI Example with Class Instantiation (C++)'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>38</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-8964879948643280741</id><published>2011-07-01T15:57:00.000-07:00</published><updated>2013-02-19T03:24:21.550-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="perl"/><category scheme="http://www.blogger.com/atom/ns#" term="regex"/><title type='text'>Alternation without Capture/Extraction/Selection</title><content type='html'>This drove me crazy for longer than I wanted (since I would want that for varying amounts of time) so I will note it here for other frustrated people to find.
&lt;br /&gt;
&lt;br /&gt;
I had a regular expression from which I wanted to capture part of it in &lt;tt&gt;$1&lt;/tt&gt;. I also had an alternation in it that needed grouping with parentheses. It kept capturing the alteration in &lt;tt&gt;$1&lt;/tt&gt; when I didn&#39;t care or want to capture that at all.
&lt;br /&gt;
&lt;br /&gt;
This is an example of what I had at first that didn&#39;t do what I wanted:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;$string =~ /bytes\s+=\s+\d+\.?\d*(K|M)?\s+\(\s*(\d+\.?\d*)\%/;
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
The above code was giving me either &#39;K&#39; or &#39;M&#39; in &lt;tt&gt;$1&lt;/tt&gt; if either were there instead of what I wanted which was the second grouping &lt;tt&gt;(\d+\.?\d*)&lt;/tt&gt;. I just needed to know how to stop the capture since stuff like &lt;tt&gt;K|M?&lt;/tt&gt; and &lt;tt&gt;K?|M?&lt;/tt&gt; without parentheses didn&#39;t work right either.
&lt;br /&gt;
&lt;br /&gt;
After a lot of online searching using probably the wrong query terms, I found the concept of &quot;&lt;a href=&quot;http://perldoc.perl.org/perlretut.html#Non-capturing-groupings&quot;&gt;non-capturing groupings&lt;/a&gt;&quot; which are apparently denoted by (?:regex).&lt;br /&gt;
&lt;br /&gt;
Changed my code to this to finally get what I wanted:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;/code&gt;$string =~ /bytes\s+=\s+\d+\.?\d*(?:K|M)?\s+\(\s*(\d+\.?\d*)\%/;
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
This way the &#39;K&#39; or &#39;M&#39; isn&#39;t captured and I get the second grouping &lt;tt&gt;(\d+\.?\d*)&lt;/tt&gt; stored in &lt;tt&gt;$1&lt;/tt&gt;.</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/8964879948643280741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2011/07/alternation-without-captureextractionse.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/8964879948643280741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/8964879948643280741'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2011/07/alternation-without-captureextractionse.html' title='Alternation without Capture/Extraction/Selection'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-3183999624578128399</id><published>2011-05-20T10:40:00.000-07:00</published><updated>2013-02-19T03:24:46.317-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="perl"/><title type='text'>Storing Options with Multiple Values in a Hash using Getopt::Long</title><content type='html'>I&#39;m relatively new to Perl and was writing a program that takes long options on the command line. I quickly found the Getopt::Long module and started out getting options where each option&#39;s value was stored in a separate variable. One of the options has multiple values, e.g. &lt;tt&gt;--option5 0 1 2&lt;/tt&gt;.
&lt;br /&gt;
&lt;br /&gt;
When I started, I had something like:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;my ($option1, $option2, $option3, $option4, @option5);
my $result = GetOptions(&#39;option1=s&#39;    =&gt; \$option1,
                        &#39;option2=i&#39;    =&gt; \$option2,
                        &#39;option3=s&#39;    =&gt; \$option3,
                        &#39;option4=s&#39;    =&gt; \$option4,
                        &#39;option5=i{,}&#39; =&gt; \@option5);
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
I wanted to change it to store the options in a hash since I had several options but got confused with the option that takes multiple values using a repeat specifier. The reason was stated in the &lt;a href=&quot;http://perldoc.perl.org/5.8.8/Getopt/Long.html#Options-with-multiple-values&quot;&gt;documentation&lt;/a&gt; that &quot;The destination for the option must be an array or array reference.&quot; What I didn&#39;t realize is that I needed to use this syntax &quot;Alternatively, you can specify that the option can have multiple values by adding a &quot;@&quot;, and pass a scalar reference as the destination&quot; since my destination was now an uninitialized hash entry.
&lt;br /&gt;
&lt;br /&gt;
I ended up with this:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;my %options;
my $result = GetOptions(\%options, &#39;option1=s&#39;,
                                   &#39;option2=i&#39;,
                                   &#39;option3=s&#39;,
                                   &#39;option4=s&#39;,
                                   &#39;option5=i@{,}&#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/3183999624578128399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2011/05/storing-options-with-multiple-values-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/3183999624578128399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/3183999624578128399'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2011/05/storing-options-with-multiple-values-in.html' title='Storing Options with Multiple Values in a Hash using Getopt::Long'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-6054460246616554809</id><published>2011-03-10T20:27:00.000-08:00</published><updated>2013-02-17T19:15:01.341-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cplusplus"/><category scheme="http://www.blogger.com/atom/ns#" term="format"/><title type='text'>Using C Format Code Macros in C++</title><content type='html'>First, the macros are located in &lt;tt&gt;/usr/include/inttypes.h&lt;/tt&gt;.&lt;br /&gt;
&lt;br /&gt;
If you look at the header file, you&#39;ll see that you need to add &lt;tt&gt;-D__STDC_FORMAT_MACROS&lt;/tt&gt; to your compile command.&lt;br /&gt;
&lt;br /&gt;
An example of using them looks like this:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;char s[100];
int32_t value = 5;
snprintf(s, sizeof(s), &quot;%&quot;PRIi32, value);
uint64_t andthen = 6;
snprintf(s, sizeof(s), &quot;%&quot;PRIu64, andthen);
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/6054460246616554809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2011/03/using-c-format-code-macros-in-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/6054460246616554809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/6054460246616554809'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2011/03/using-c-format-code-macros-in-c.html' title='Using C Format Code Macros in C++'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-7477199387208965040</id><published>2011-03-04T17:35:00.000-08:00</published><updated>2013-02-19T03:29:09.241-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="avro"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="serialization"/><title type='text'>Avro Serialization in Java</title><content type='html'>There are two ways to serialize data in Avro: using code generation and not using code generation. I want to show examples of each way because I didn&#39;t find many examples online when I needed to do it. First, I will briefly cover my understanding of the general concept of each method for serialization.
&lt;br /&gt;
&lt;br /&gt;
When using code generation, you use the Avro tool binary, external to your application (or programatically internal to your application) to generate classes that represent the data in your schema. You populate the fields in the classes and use a &lt;b&gt;specific&lt;/b&gt; datum writer parameterized with the class to produce the serialized data.
&lt;br /&gt;
&lt;br /&gt;
When you do not use code generation, you use the &lt;tt&gt;GenericData&lt;/tt&gt; classes along with the schema to do a series of &lt;tt&gt;put()&lt;/tt&gt; operations. You then use a &lt;b&gt;generic&lt;/b&gt; datum writer constructed with the schema to produce the serialized data.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Example Avro Schema&lt;/h3&gt;
&lt;br /&gt;
This is a simple schema to use in the example. I made it have an array as a record field because I had a bit of trouble with that when I was working with such a schema. Let&#39;s say that this schema is in a file called &lt;tt&gt;Schema.avsc&lt;/tt&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;{
  &quot;namespace&quot;: &quot;my.pkg.path.avro&quot;,
  &quot;type&quot; : &quot;record&quot;,
  &quot;name&quot; : &quot;PeopleList&quot;,
  &quot;fields&quot; : [
    {&quot;name&quot; : &quot;Version&quot;, &quot;type&quot; : &quot;int&quot;},
    {&quot;name&quot; : &quot;People&quot;, &quot;type&quot; : {
      &quot;namespace&quot; : &quot;my.pkg.path.avro&quot;,
      &quot;type&quot; : &quot;array&quot;,
      &quot;items&quot; : {
        &quot;type&quot; : &quot;record&quot;,
        &quot;namespace&quot;: &quot;my.pkg.path.avro&quot;,
        &quot;name&quot; : &quot;Person&quot;,
        &quot;fields&quot; : [
            {&quot;name&quot; : &quot;FirstName&quot;, &quot;type&quot; : &quot;string&quot;},
            {&quot;name&quot; : &quot;LastName&quot;, &quot;type&quot; : &quot;string&quot;}
        ]
      }}
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
This schema represents data consisting of a version and a list of records describing people. Each record has the person&#39;s first and last name.
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Serialize Using Code Generation&lt;/h3&gt;
&lt;br /&gt;
To generate classes from outside of your program using the tool, you can invoke it like this:
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;java -cp &amp;lt;needed jars&amp;gt; org.apache.avro.tool.Main compile schema
    &amp;lt;path to avro schema&amp;gt; &amp;lt;path to put generated classes&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
For the &amp;lt;needed jars&amp;gt; it will probably be a handful of dependencies. If a needed dependency can&#39;t be found when you run the tool, you&#39;ll see an error that the specific jar cannot be found. When this happened, I added it to the classpath (the &lt;tt&gt;-cp&lt;/tt&gt; option) and once I had all of them, it worked.
&lt;br /&gt;
&lt;br /&gt;
The generator will start at the destination path specified as the second argument and create directories as specified by the namespaces in your schema. Note that you must have namespaces otherwise an exception will be thrown (&lt;tt&gt;NullException&lt;/tt&gt;) and the code generation will fail. In this example, the tool will generate classes and put them in:
&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;&amp;lt;path to put generated classes&amp;gt;/my/pkg/path/avro/&lt;/tt&gt;.
&lt;br /&gt;
&lt;br /&gt;
In this example, two classes will be generated: &lt;tt&gt;PeopleList&lt;/tt&gt; and &lt;tt&gt;Person&lt;/tt&gt;. All of the classes contain i.e. store the schema used to generate them.&lt;br /&gt;
&lt;br /&gt;
Here is a link to the Avro 1.6.1 API to refer to when looking at the code: &lt;a href=&quot;http://avro.apache.org/docs/1.6.1/api/java/index.html&quot;&gt;http://avro.apache.org/docs/1.6.1/api/java/index.html&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This code snippet shows how to use the generated classes to create the serialized data and place it in a &lt;tt&gt;java.nio.ByteBuffer&lt;/tt&gt;. I create a stream, a binary encoder initialized with the stream, and a &lt;b&gt;specific&lt;/b&gt; datum writer. Then, I create a &lt;tt&gt;PeopleList&lt;/tt&gt;, add three people to it, serialize it, and store it in the &lt;tt&gt;ByteBuffer&lt;/tt&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;ByteArrayOutputStream out = new ByteArrayOutputStream();
Encoder e = new BinaryEncoder(out);
SpecificDatumWriter&amp;lt;PeopleList&amp;gt; w = 
        new SpecificDatumWriter&amp;lt;PeopleList&amp;gt;(PeopleList.class);

PeopleList all = new PeopleList();
all.People = new GenericData.Array&amp;lt;Person&amp;gt;(
        3, all.getSchema().getField(&quot;People&quot;).schema());

Person person1 = new Person();
person1.FirstName = new Utf8(&quot;Cairne&quot;);
person1.LastName = new Utf8(&quot;Bloodhoof&quot;);
all.People.add(person1);

Person person2 = new Person();
person2.FirstName = new Utf8(&quot;Sylvanas&quot;);
person2.LastName = new Utf8(&quot;Windrunner&quot;);
all.People.add(person2);

Person person3 = new Person();
person3.FirstName = new Utf8(&quot;Grom&quot;);
person3.LastName = new Utf8(&quot;Hellscream&quot;);
all.People.add(person3);

all.Version = 1;
w.write(all, e);
e.flush();
ByteBuffer serialized = ByteBuffer.allocate(out.toByteArray().length);
serialized.put(out.toByteArray());
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;h3&gt;Serialize Without Using Code Generation&lt;/h3&gt;
&lt;br /&gt;
This code snippet shows how to populate &lt;tt&gt;GenericData&lt;/tt&gt; objects, serialize them, and place the result in a &lt;tt&gt;java.nio.ByteBuffer&lt;/tt&gt;. This is similar to the previous code. I create a stream, a binary encoder initialized with the stream, and a &lt;b&gt;generic&lt;/b&gt; datum writer. Then, I create a &lt;tt&gt;GenericData.Record&lt;/tt&gt; that will have the version and the list. Next, I create a &lt;tt&gt;GenericData.Array&lt;/tt&gt; for the list, add three people (each being a &lt;tt&gt;GenericData.Record&lt;/tt&gt;) to it, serialize it, and store it in the &lt;tt&gt;ByteBuffer&lt;/tt&gt;. Each &lt;tt&gt;GenericData&lt;/tt&gt; has to be initialized with a schema that describes its format. You can grab different sections of the overall schema using &lt;tt&gt;Schema&lt;/tt&gt; methods. Check them out here: &lt;a href=&quot;http://avro.apache.org/docs/current/api/java/org/apache/avro/Schema.html&quot;&gt;http://avro.apache.org/docs/current/api/java/org/apache/avro/Schema.html&lt;/a&gt;. Keep in mind as you&#39;re doing this, each &lt;tt&gt;put()&lt;/tt&gt; gets validated against the schema, so if you mess up, an exception will be thrown. If you leave out any field i.e. you don&#39;t do a &lt;tt&gt;put()&lt;/tt&gt; for it, an exception will be thrown when you try to write it.
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;mycode&quot;&gt;
&lt;pre&gt;
&lt;code&gt;Schema schema = Schema.parse(new File(&quot;Schema.avsc&quot;));

ByteArrayOutputStream out = new ByteArrayOutputStream();
Encoder e = new BinaryEncoder(out);
GenericDatumWriter&amp;lt;GenericRecord&amp;gt; w = new GenericDatumWriter&amp;lt;GenericRecord&amp;gt;(schema);

GenericRecord all = new GenericData.Record(schema);
Schema peopleSchema = schema.getField(&quot;People&quot;).schema();
GenericArray&amp;lt;GenericRecord&amp;gt; people = new GenericData.Array&amp;lt;GenericRecord&amp;gt;(3, peopleSchema);
Schema personSchema = peopleSchema.getElementType();

GenericRecord person1 = new GenericData.Record(personSchema);
person1.put(&quot;FirstName&quot;, new Utf8(&quot;Cairne&quot;));
person1.put(&quot;LastName&quot;, new Utf8(&quot;Bloodhoof&quot;));
people.add(person1);

GenericRecord person2 = new GenericData.Record(personSchema);
person2.put(&quot;FirstName&quot;, new Utf8(&quot;Sylvanas&quot;));
person2.put(&quot;LastName&quot;, new Utf8(&quot;Windrunner&quot;));
people.add(person2);

GenericRecord person3 = new GenericData.Record(personSchema);
person3.put(&quot;FirstName&quot;, new Utf8(&quot;Grom&quot;));
person3.put(&quot;LastName&quot;, new Utf8(&quot;Hellscream&quot;));
people.add(person3);

all.put(&quot;People&quot;, people);
all.put(&quot;Version&quot;, 1);
w.write(all, e);
e.flush();
ByteBuffer serialized = ByteBuffer.allocate(out.toByteArray().length);
serialized.put(out.toByteArray());
&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;h3&gt;Thoughts&lt;/h3&gt;
&lt;br /&gt;
I tried both methods of serializing my data and found that using the code generation seemed less error prone and also handy for when I made changes to the schema. I use Eclipse with the Maven Integration Plugin (&lt;a href=&quot;http://maven.apache.org/eclipse-plugin.html&quot;&gt;http://maven.apache.org/eclipse-plugin.html&lt;/a&gt;) to build. I wrote a bash script to invoke the code generation tool and used the Maven AntRun Plugin (&lt;a href=&quot;http://maven.apache.org/plugins/maven-antrun-plugin/&quot;&gt;http://maven.apache.org/plugins/maven-antrun-plugin/&lt;/a&gt;) to run it as part of my build. That way I could make changes to my schema, do a project clean, and have updated classes generated easily. I think updating the serialization methods is easier using the generated classes instead of changing/adding/removing the &lt;tt&gt;GenericData&lt;/tt&gt; objects and/or their &lt;tt&gt;put()&lt;/tt&gt; operations.
&lt;br /&gt;
&lt;br /&gt;
I hope maybe some of this can help someone with their Avro serialization endeavors in Java.</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/7477199387208965040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2011/03/avro-serialization-in-java.html#comment-form' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/7477199387208965040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/7477199387208965040'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2011/03/avro-serialization-in-java.html' title='Avro Serialization in Java'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-6371155442989338864</id><published>2011-02-28T14:34:00.000-08:00</published><updated>2011-03-15T11:33:54.293-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="euml2"/><title type='text'>How To Install eUML2 Free Edition</title><content type='html'>These are instructions for installing the free edition of the eUML2 Eclipse plugin.&lt;br /&gt;
&lt;br /&gt;
From Eclipse:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Help-&amp;gt;Install New Software...&lt;/li&gt;
&lt;li&gt; Add/use software site http://www.soyatec.com/update/galileo&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;This works for Helios too.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt; Check &quot;eUML2 Free Edition for Galileo&quot; and click Next.&lt;/li&gt;
&lt;li&gt;Keep following the wizard. If you encounter an error for a missing dependency (the GMF Runtime), you will need to install it manually before reattempting the eUML2 install.&lt;/li&gt;
&lt;li&gt;If you received the error, start over with Help-&amp;gt;Install New Software...&lt;/li&gt;
&lt;li&gt;Use software site http://download.eclipse.org/releases/helios&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;This is for Helios, if you&#39;re using a different release, choose the right site for your release. &lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Use filter text &quot;gmf&quot; and wait for it to load matches.&lt;/li&gt;
&lt;li&gt;Check &quot;Graphical Modeling Framework (GMF) Runtime&quot; and click Next.&lt;/li&gt;
&lt;li&gt;Keep following the wizard until it is installed. Use &quot;Restart Now&quot; or &quot;Apply Changes Now&quot; and return to step 1 to install eUML2.&lt;/li&gt;
&lt;li&gt;Enjoy working with UML (this is a required step).&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/6371155442989338864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2011/02/how-to-install-euml2-free-edition.html#comment-form' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/6371155442989338864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/6371155442989338864'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2011/02/how-to-install-euml2-free-edition.html' title='How To Install eUML2 Free Edition'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-8092198143252131425</id><published>2011-02-22T17:19:00.000-08:00</published><updated>2011-07-06T23:43:11.629-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="euml2"/><title type='text'>eUML2 Class Diagram including Multiple Packages</title><content type='html'>It didn&#39;t seem straightforward to me how to do this so I&#39;ll explain the steps here. I wanted to generate a class diagram from my code using the reverse engineering capability of the plugin. This seems backward but I wanted to use it as a way to show my coworkers how the design of something already written looks visually. I have my code separated into different packages and wanted to make a diagram containing every package and show relations between most of the classes.&lt;br /&gt;
&lt;br /&gt;
The overall concept of the class diagrams generated from the plugin is that each diagram represents one package. So first you must create a class diagram representing one of your packages. Once you have that, you can add your other packages to that diagram. &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Open the .ucd file for the existing diagram you have so far in Eclipse.&lt;/li&gt;
&lt;li&gt;Make sure you&#39;re in &quot;Selection mode&quot; in the toolbar.&lt;/li&gt;
&lt;li&gt;Make sure nothing is selected*. Then right-click on empty space in the diagram.&lt;/li&gt;
&lt;li&gt;Choose Insert-&amp;gt;Package and pick the package you want to add to the diagram.&lt;/li&gt;
&lt;li&gt;A box will be added that represents that package. Select it by left-clicking on it.&lt;/li&gt;
&lt;li&gt;Then right-click and choose &quot;Package Elements...&quot;.&lt;/li&gt;
&lt;li&gt;Check the boxes for the classes you want to show explicitly in the diagram.&lt;/li&gt;
&lt;li&gt;The classes should now be in the package box.&lt;/li&gt;
&lt;li&gt;Then you can select nothing* again, right-click and choose &quot;Show All Associations&quot; or &quot;Show all Inheritances&quot; if you want.&lt;/li&gt;
&lt;li&gt;When you have picked all the options you want, select nothing*, right-click and choose &quot;Layout&quot; to make it arrange things nicely. If you don&#39;t like the layout it comes up with, you can repeat the same action and it seems to cycle through a few layout options.&lt;/li&gt;
&lt;li&gt;You can save it as an image by selecting nothing*, right-clicking and choosing &quot;Export as image&quot; and following the wizard.&lt;/li&gt;
&lt;/ol&gt;*Left-click on empty space in the diagram to &quot;select nothing&quot; i.e. make sure that no items are selected. &lt;br /&gt;
&lt;ol&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/8092198143252131425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2011/02/euml2-class-diagram-including-multiple.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/8092198143252131425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/8092198143252131425'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2011/02/euml2-class-diagram-including-multiple.html' title='eUML2 Class Diagram including Multiple Packages'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-2728720729348941379</id><published>2011-02-12T18:15:00.000-08:00</published><updated>2012-02-19T15:09:22.653-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="health"/><category scheme="http://www.blogger.com/atom/ns#" term="hysteria"/><title type='text'>Brominated Vegetable Oil (BVO) Soda List</title><content type='html'>Brominated vegetable oil (BVO) is vegetable oil that has had atoms of the element bromine bonded to it: &lt;a href=&quot;http://en.wikipedia.org/wiki/Brominated_vegetable_oil&quot;&gt;http://en.wikipedia.org/wiki/Brominated_vegetable_oil&lt;/a&gt;. It&#39;s used in many citrus flavored drinks that have a cloudy appearance. Clear lemon-lime sodas such as Sprite do not contain it.&lt;br /&gt;
&lt;br /&gt;
Its use as a food additive may have harmful effects on health. BVO has been banned for use in food in several places including Europe and Japan, but it&#39;s legal in the United States. This article from &lt;i&gt;Scientific American&lt;/i&gt; explains the history of BVO and its potential dangers: &lt;a href=&quot;http://www.scientificamerican.com/article.cfm?id=soda-chemical-cloudy-health-history&quot;&gt;http://www.scientificamerican.com/article.cfm?id=soda-chemical-cloudy-health-history&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This is a list of brominated drinks that I have found so far. I will keep this list updated for your protection.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Squirt&lt;/li&gt;
&lt;li&gt;Diet Squirt&lt;/li&gt;
&lt;li&gt;Mountain Dew (all)&lt;/li&gt;
&lt;li&gt;Orange Crush&lt;/li&gt;
&lt;li&gt;Pineapple Crush&lt;/li&gt;
&lt;li&gt;Peach Crush&lt;/li&gt;
&lt;li&gt;Sun Drop (all)&lt;/li&gt;
&lt;li&gt;Gatorade (&quot;some&quot;)&lt;/li&gt;
&lt;li&gt;Sunkist Fruit Punch&lt;/li&gt;
&lt;li&gt;Sunkist Peach&lt;/li&gt;
&lt;li&gt;Sunkist Pineapple&lt;/li&gt;
&lt;li&gt;Fanta Orange&lt;/li&gt;
&lt;li&gt;Fanta Orange Zero&lt;/li&gt;
&lt;li&gt;Fresca (all)&lt;/li&gt;
&lt;li&gt;Refreshe Diet Grapefruit&lt;/li&gt;
&lt;/ul&gt;&lt;i&gt;(Edited 11/02/2011): &lt;/i&gt;A commenter today noticed that some flavors of drinks such as Sunkist do not contain BVO and instead have ester gum: &lt;a href=&quot;http://en.wikipedia.org/wiki/Glycerol_ester_of_wood_rosin&quot;&gt;http://en.wikipedia.org/wiki/Glycerol_ester_of_wood_rosin&lt;/a&gt;, which &quot;...serves as a natural alternative to brominated vegetable oil, particularly in citrus-flavored soft drinks.&quot; Check the wiki for a list of drinks that contain ester gum.</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/2728720729348941379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2011/02/brominated-vegetable-oil-bvo-soda-list.html#comment-form' title='45 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/2728720729348941379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/2728720729348941379'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2011/02/brominated-vegetable-oil-bvo-soda-list.html' title='Brominated Vegetable Oil (BVO) Soda List'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>45</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-1577209911709057513</id><published>2011-02-07T03:00:00.000-08:00</published><updated>2013-02-19T03:30:30.578-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="avro"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>Null Exception when Generating Classes using SpecificCompiler.compileSchema(File, File)</title><content type='html'>I decided to try generating classes corresponding to an Avro schema I had created using &lt;tt&gt;SpecificCompiler.compileSchema(src, dest)&lt;/tt&gt;.  It threw an exception &quot;null&quot; and I found that what it wants to do is create a &lt;tt&gt;File(parent, child)&lt;/tt&gt; using the destination path as the parent and the namespace as the child.  The problem was that my schema lacked a namespace and when child is null instantiating a &lt;tt&gt;File&lt;/tt&gt;, it will throw a null exception.</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/1577209911709057513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2011/02/null-exception-when-generating-classes.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/1577209911709057513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/1577209911709057513'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2011/02/null-exception-when-generating-classes.html' title='Null Exception when Generating Classes using SpecificCompiler.compileSchema(File, File)'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-4276499023673139434</id><published>2010-10-02T17:10:00.000-07:00</published><updated>2010-11-08T22:30:47.472-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="mint"/><title type='text'>Mint Android App has Duplicate Accounts</title><content type='html'>Recently I noticed in the Mint app on my phone, it would show some of my accounts multiple times, completely throwing off my income/expense and budget views.  However, on the Mint web site, everything was normal and each account had only one entry.&lt;br /&gt;
&lt;br /&gt;
So the problem had to be local to my phone, with some data it had cached before.&lt;br /&gt;
&lt;br /&gt;
To fix it:&lt;br /&gt;
1) Go to Settings -&gt; Applications -&gt; Manage Applications -&gt; Mint.com -&gt; Clear data&lt;br /&gt;
2) Start the Mint app again.&lt;br /&gt;
&lt;br /&gt;
I think something about it got messed up after I updated my phone to Android Froyo.  I&#39;m glad it&#39;s back to normal now because it&#39;s a nice app.</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/4276499023673139434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2010/10/mint-android-app-has-duplicate-accounts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/4276499023673139434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/4276499023673139434'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2010/10/mint-android-app-has-duplicate-accounts.html' title='Mint Android App has Duplicate Accounts'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-2119797732482999722</id><published>2010-04-09T00:22:00.000-07:00</published><updated>2013-01-01T23:28:57.071-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ads"/><title type='text'>Friskies Feed the Senses</title><content type='html'>This seems like a slight exaggeration of how great this food could be.&lt;br /&gt;
&lt;br /&gt;
&lt;object height=&quot;258&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/nUuutY9_VyI&amp;amp;hl=en_US&amp;amp;fs=1?rel=0&amp;amp;hd=1&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/nUuutY9_VyI&amp;amp;hl=en_US&amp;amp;fs=1?rel=0&amp;amp;hd=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;258&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/2119797732482999722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2010/04/this-seem-like-slight-exaggeration-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/2119797732482999722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/2119797732482999722'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2010/04/this-seem-like-slight-exaggeration-of.html' title='Friskies Feed the Senses'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-543634263958066165</id><published>2010-02-16T15:45:00.000-08:00</published><updated>2013-01-01T23:40:40.543-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ads"/><title type='text'>All Night Long</title><content type='html'>In case you forgot how awesome this was.&lt;br /&gt;
&lt;br /&gt;
&lt;object height=&quot;340&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/dhraWmQPfYo&amp;amp;hl=en_US&amp;amp;fs=1?rel=0&amp;amp;hd=1&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/dhraWmQPfYo&amp;amp;hl=en_US&amp;amp;fs=1?rel=0&amp;amp;hd=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;340&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/543634263958066165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2010/02/in-case-you-forgot-how-awesome-this-was.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/543634263958066165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/543634263958066165'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2010/02/in-case-you-forgot-how-awesome-this-was.html' title='All Night Long'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-4139219737259168343</id><published>2010-02-02T21:12:00.000-08:00</published><updated>2013-01-01T23:29:26.605-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="accomplishments"/><category scheme="http://www.blogger.com/atom/ns#" term="ads"/><title type='text'>Fame</title><content type='html'>For those who don&#39;t know, this is the television ad I starred in.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/opaPQYdKPCs?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/4139219737259168343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2010/02/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/4139219737259168343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/4139219737259168343'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2010/02/blog-post.html' title='Fame'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-7875071905559822276</id><published>2007-06-17T20:19:00.001-07:00</published><updated>2007-06-17T20:20:34.413-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://i8.tinypic.com/52n4p6d.gif&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;&quot; src=&quot;http://i8.tinypic.com/52n4p6d.gif&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Ready for departure!</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/7875071905559822276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2007/06/ready-for-departure_17.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/7875071905559822276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/7875071905559822276'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2007/06/ready-for-departure_17.html' title=''/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://i8.tinypic.com/52n4p6d_th.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-116829607778069020</id><published>2007-01-08T14:39:00.000-08:00</published><updated>2007-01-08T14:44:05.150-08:00</updated><title type='text'></title><content type='html'>O, why can&#39;t we all be like Combo...&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/x/blogger/4992/21/1600/221037/killcombo-1.gif&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/x/blogger/4992/21/200/111980/killcombo-1.png&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/x/blogger/4992/21/1600/460749/killcombo-2.gif&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/x/blogger/4992/21/200/152167/killcombo-2.png&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/x/blogger/4992/21/1600/455896/killcombo-3.gif&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/x/blogger/4992/21/200/560550/killcombo-3.png&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/116829607778069020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2007/01/o-why-cant-we-all-be-like-combo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/116829607778069020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/116829607778069020'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2007/01/o-why-cant-we-all-be-like-combo.html' title=''/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-116529297468200912</id><published>2006-12-04T20:25:00.000-08:00</published><updated>2006-12-04T20:37:25.110-08:00</updated><title type='text'></title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/x/blogger/4992/21/1600/112173/duh.jpg&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/x/blogger/4992/21/200/841971/duh.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;The song, &lt;span style=&quot;font-style:italic;&quot;&gt;Summer of &#39;69&lt;/span&gt;, is by Bryan Adams, not Don Henley.</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/116529297468200912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2006/12/song-summer-of-69-is-by-bryan-adams-not.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/116529297468200912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/116529297468200912'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2006/12/song-summer-of-69-is-by-bryan-adams-not.html' title=''/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-115143358664830829</id><published>2006-06-27T11:36:00.000-07:00</published><updated>2007-01-08T14:44:27.736-08:00</updated><title type='text'></title><content type='html'>This airplane is TOTALLY WIZARD!!&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/4992/21/1600/owl_plane.0.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger/4992/21/320/owl_plane.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/115143358664830829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2006/06/this-airplane-is-totally-wizard.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/115143358664830829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/115143358664830829'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2006/06/this-airplane-is-totally-wizard.html' title=''/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-114800892210386386</id><published>2006-05-18T20:08:00.000-07:00</published><updated>2010-10-02T17:58:37.189-07:00</updated><title type='text'></title><content type='html'>&lt;a style=&quot;&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/4992/21/1600/koowl_crop.0.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger/4992/21/200/koowl_crop.0.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;This is Squinty Eyed Owl.</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/114800892210386386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2006/05/this-is-squinty-eyed-owl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/114800892210386386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/114800892210386386'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2006/05/this-is-squinty-eyed-owl.html' title=''/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-114653736271139099</id><published>2006-05-01T19:26:00.000-07:00</published><updated>2006-05-01T19:36:49.820-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/4992/21/1600/ruserious.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;&quot; src=&quot;http://photos1.blogger.com/blogger/4992/21/200/ruserious.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;John tried to be healthy by leaving out the added salt from grandma&#39;s crawfish boiling instructions.  The crawfish weren&#39;t spicy, and he found out later that adding the salt is what makes the crawfish spicy.  This is a picture of him from when he was informed.</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/114653736271139099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2006/05/john-tried-to-be-healthy-by-leaving-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/114653736271139099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/114653736271139099'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2006/05/john-tried-to-be-healthy-by-leaving-out.html' title=''/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-114481450714888079</id><published>2006-04-11T20:54:00.000-07:00</published><updated>2013-01-01T23:26:53.399-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="star trek"/><title type='text'>Star Trek: TNG Season 1 Episode 15 &amp;quot;11001001&amp;quot;</title><content type='html'>&lt;a name=&quot;label&quot;&gt;&lt;/a&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/4992/21/1600/bynars.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger/4992/21/400/bynars.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-family:Courier New;&quot;&gt;&lt;a href=&quot;http://www.twiztv.com/scripts/nextgeneration/season1/tng-115.txt&quot; target=&quot;_blank&quot;&gt;From Star Trek: The Next Generation episode &lt;span style=&quot;font-style: italic;&quot;&gt;11001001&lt;/span&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
PICARD&lt;br /&gt;
Data, the Bynars have stored an enormous amount of information in the computer. We can&#39;t access it, and we  must.&lt;br /&gt;
&lt;br /&gt;
DATA&lt;br /&gt;
The access would be available by &lt;span id=&quot;expand_text&quot; style=&quot;display:inline;&quot; onClick=&quot;document.getElementById(&#39;more_text&#39;).style.display=&#39;inline&#39;;document.getElementById(&#39;expand_text&#39;).style.display=&#39;none&#39;;document.getElementById(&#39;collapse_text&#39;).style.display=&#39;inline&#39;&quot;&gt;...[click to expand]&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span id=&quot;more_text&quot; style=&quot;display:none&quot;&gt;code or password.&lt;br /&gt;
&lt;br /&gt;
PICARD&lt;br /&gt;
I know, but what could it be?&lt;br /&gt;
&lt;br /&gt;
DATA&lt;br /&gt;
File names can be anything.&lt;br /&gt;
&lt;br /&gt;
PICARD&lt;br /&gt;
They want us to find it. They would have kept it simple.&lt;br /&gt;
&lt;br /&gt;
DATA&lt;br /&gt;
Then a name -- or a place. It could be personal. In this case in binary language which is ones and zeros in groups of eight or sixteen characters.&lt;br /&gt;
&lt;br /&gt;
Picard looks at the prone figures.&lt;br /&gt;
&lt;br /&gt;
PICARD&lt;br /&gt;
Could it be that simple?&lt;br /&gt;
(to Riker)&lt;br /&gt;
Try  it.&lt;br /&gt;
&lt;br /&gt;
86 RIKER AT COMPUTER (OPTICAL)&lt;br /&gt;
&lt;br /&gt;
He sets up the program. The CRT  SCREEN DISPLAYS a PATTERN and starts running COMBINATIONS OF ONES  AND ZEROS until it gets to -- 11001001 -- then the  SCREEN LOCKS.&lt;br /&gt;
&lt;br /&gt;
RIKER&lt;br /&gt;
That&#39;s the file. It&#39;ll work now.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;near the end of the episode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Picard and Riker watch, the Bynars continue to regain their strength. Bynar One Zero and Zero One, go to a computer panel and verify that the transfer of information is being accomplished efficiently. The bridge lighting returns to normal.&lt;br /&gt;
&lt;br /&gt;
PICARD&lt;br /&gt;
Why didn&#39;t you just ask for our help?&lt;br /&gt;
&lt;br /&gt;
The four of them communicate quickly between themselves.&lt;br /&gt;
&lt;br /&gt;
ZERO ONE&lt;br /&gt;
You might have...&lt;br /&gt;
&lt;br /&gt;
ONE ZERO&lt;br /&gt;
... said no.&lt;br /&gt;
&lt;br /&gt;
RIKER&lt;br /&gt;
But there was a very good chance we would have said &quot;yes.&quot;&lt;br /&gt;
&lt;br /&gt;
ZERO ZERO&lt;br /&gt;
Our need was too great...&lt;br /&gt;
&lt;br /&gt;
ONE ONE&lt;br /&gt;
... to risk rejection.&lt;br /&gt;
&lt;br /&gt;
PICARD&lt;br /&gt;
So you stole it.&lt;br /&gt;
&lt;br /&gt;
RIKER&lt;br /&gt;
Their reason is part of their binary thinking -- for them there are only two choices -- one or zero -- yes or no. &lt;span id=&quot;collapse_text&quot; style=&quot;display:none;&quot; onClick=&quot;document.getElementById(&#39;more_text&#39;).style.display=&#39;none&#39;;document.getElementById(&#39;expand_text&#39;).style.display=&#39;inline&#39;;document.getElementById(&#39;collapse_text&#39;).style.display=&#39;none&#39;&quot;&gt;[click to collapse]&lt;/span&gt;&lt;/span&gt;&lt;/near&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/114481450714888079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2006/04/from-star-trek-next-generation-episode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/114481450714888079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/114481450714888079'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2006/04/from-star-trek-next-generation-episode.html' title='Star Trek: TNG Season 1 Episode 15 &amp;quot;11001001&amp;quot;'/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2721723.post-114453479489400985</id><published>2006-04-08T15:18:00.000-07:00</published><updated>2007-01-08T14:45:17.610-08:00</updated><title type='text'></title><content type='html'>Ye Olde Toade Abode&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/4992/21/1600/toad_house.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger/4992/21/320/toad_house.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://stylishtoupee.blogspot.com/feeds/114453479489400985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stylishtoupee.blogspot.com/2006/04/ye-olde-toade-abode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/114453479489400985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2721723/posts/default/114453479489400985'/><link rel='alternate' type='text/html' href='http://stylishtoupee.blogspot.com/2006/04/ye-olde-toade-abode.html' title=''/><author><name>monsieur</name><uri>http://www.blogger.com/profile/12988298027365869974</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGVDXd8YD3iz6P3iqmRIk4Olq60-wy_XdMBr6DL_HTUyFY688SBaHT1-zZz94oKz7wBZFimXSqWKl4OtSShuDYMUORYKEfurjbmugyA9AjGcXJGeF2fNROvFUG0pk-ng/s220/murderface_cat_sq.png'/></author><thr:total>0</thr:total></entry></feed>