<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4739699547757079509</id><updated>2011-08-25T01:53:48.954-07:00</updated><category term='Tech'/><category term='Europe2009'/><title type='text'>Nicolaus Malnick</title><subtitle type='html'>A technically oriented blog for sharing experiences and ideas.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-6770200027450806539</id><published>2011-06-21T11:56:00.000-07:00</published><updated>2011-06-21T12:01:27.510-07:00</updated><title type='text'>Testing Ruby Scripts Without .rb Extension</title><content type='html'>Say you you want to test functions in a ruby script that doesn't have a ".rb" extension.  Below are 2 tips.&lt;br /&gt;&lt;br /&gt;To start writing you test you must use 'load' and NOT 'require.'  Require is to load libraries (.so, .dll, etc) and will search for a file with a .rb extension.  Load on the other hand loads ruby scripts and does not require a .rb extension.  You will actually get an error if you use require saying "can't find file blah_blah"&lt;br /&gt;&lt;br /&gt;Matz does a better job explaining the differences between the two:&lt;br /&gt;&lt;br /&gt;"require is to load "libraries", where load is to load "scripts".  The&lt;br /&gt;target of the load method might be configuration files, or anything&lt;br /&gt;else from the specified path, but at least they are all Ruby scripts.&lt;br /&gt;On the other hand, the require method loads Ruby libraries or dynamic&lt;br /&gt;loading C implemented libraries reside in the load path.  So it needs&lt;br /&gt;file path extension to distinguish which kind of library to read."&lt;br /&gt;&lt;br /&gt;The above was taken from &lt;a href="http://redmine.ruby-lang.org/issues/1046"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Once the load fires your script will be executed immediately!  To stop that from happening wrap the entry point of your ruby script with "if  $0 == __FILE__…end"  This says, if the current file (__FILE__) is equal to the running program ($0) then execute this block.  This still allows you to execute the script with a direct call.&lt;br /&gt;&lt;br /&gt;EOL&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-6770200027450806539?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/6770200027450806539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=6770200027450806539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/6770200027450806539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/6770200027450806539'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2011/06/testing-ruby-scripts-without-rb.html' title='Testing Ruby Scripts Without .rb Extension'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-3530629221738829959</id><published>2011-05-24T13:29:00.001-07:00</published><updated>2011-05-24T14:34:51.598-07:00</updated><title type='text'>Good Tools for Debugging Bash Scripts</title><content type='html'># builtin for displaying a list of all settable options&lt;br /&gt;shopt&lt;br /&gt;&lt;br /&gt;# to see if your process is in a login shell&lt;br /&gt;shopt | grep login&lt;br /&gt;&lt;br /&gt;# Print commands and their arguments as they are executed&lt;br /&gt;set -x&lt;br /&gt;# turns off printing of commands&lt;br /&gt;set +x&lt;br /&gt;&lt;br /&gt;# standard way to determine linux distribution&lt;br /&gt;lsb_release -a&lt;br /&gt;&lt;br /&gt;# current process id&lt;br /&gt;$$&lt;br /&gt;&lt;br /&gt;# display cmdline arguments to your script&lt;br /&gt;cat /proc/$$/cmdline&lt;br /&gt;&lt;br /&gt;# Not a tool, but something good to know&lt;br /&gt;# $@ vs $*&lt;br /&gt;## set ARGV&lt;br /&gt;set a b c&lt;br /&gt;## dollar star will expand to a single string&lt;br /&gt;for x in "$*"; do echo $x; done&lt;br /&gt;OUTPUT&gt; a b c&lt;br /&gt;## dollar at sign will expand to array of separate elements.&lt;br /&gt;for x in "$@"; do echo $x; done&lt;br /&gt;OUTPUT&gt;&lt;br /&gt;a&lt;br /&gt;b&lt;br /&gt;c&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-3530629221738829959?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/3530629221738829959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=3530629221738829959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/3530629221738829959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/3530629221738829959'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2011/05/good-tools-for-debugging-bash-scripts.html' title='Good Tools for Debugging Bash Scripts'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-806201361851067675</id><published>2011-05-20T06:54:00.000-07:00</published><updated>2011-05-20T06:57:14.316-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>bash type vs unix which</title><content type='html'>The real difference between &lt;a href="http://stackoverflow.com/questions/592620/check-if-a-program-exists-from-a-bash-script"&gt;type and which&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Avoid which, the exit code isn't guaranteed to exist and some operating systems change the output.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-806201361851067675?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/806201361851067675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=806201361851067675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/806201361851067675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/806201361851067675'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2011/05/bash-type-vs-unix-which.html' title='bash type vs unix which'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-2665092655955804441</id><published>2011-05-19T17:32:00.000-07:00</published><updated>2011-05-19T18:36:03.946-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>echo Bash{Brace Expansion, Buildin Type}</title><content type='html'>Today a colleague of mine, Elliot Shank (@clonezone on twitter), introduced me to two new bash commands that I think are pretty useful.  I've decided to blog about them in the hopes that the commands will stick.&lt;br /&gt;&lt;br /&gt;First Brace Expansion.  You can read a nice over view of Brace Expansion &lt;a href="http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion"&gt;here&lt;/a&gt;.   The summary gives a nice example of using it to make mulitple directories.  You can also use it to rename a file that is in a deep directory structure, for example like this:&lt;br /&gt;&lt;br /&gt;mv /site/web/hello_world/version1.0.0/data/2010/05/17/foo{,.bar}&lt;br /&gt;&lt;br /&gt;So rather than typing out the whole directory structure again you just have to type it once!  The above expands to:&lt;br /&gt;&lt;br /&gt;mv /site/web/hello_world/version1.0.0/data/2010/05/17/foo /site/web/hello_world/version1.0.0/data/2010/05/17/foo.bar&lt;br /&gt;&lt;br /&gt;Don't forget the ',' in the braces either.  Basically the braces are being expanded and the first element is nothing.&lt;br /&gt;&lt;br /&gt;The second command is the bash builtin command type.  Type doesn't have a man page but you can get information about it by using the built in help and by typing type:&lt;br /&gt;&lt;br /&gt;help type&lt;br /&gt;type type&lt;br /&gt;&lt;br /&gt;type is an alternative to which.  The big difference is that which is an external command whereas type is a bash builtin.  You can read more about it &lt;a href="http://tldp.org/LDP/abs/html/internal.html"&gt;here&lt;/a&gt;.   With type(and which) you can  things like vim `type -p foo` which is kind of nice.&lt;br /&gt;&lt;br /&gt;In my time tests these were my results:&lt;br /&gt;using type:&lt;br /&gt;real 0m0.000s&lt;br /&gt;user 0m0.000s&lt;br /&gt;sys 0m0.000s&lt;br /&gt;&lt;br /&gt;Using which&lt;br /&gt;real 0m0.003s&lt;br /&gt;user 0m0.001s&lt;br /&gt;sys 0m0.002s &lt;br /&gt;&lt;br /&gt;So type is a little faster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-2665092655955804441?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/2665092655955804441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=2665092655955804441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/2665092655955804441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/2665092655955804441'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2011/05/echo-bashbrace-expansion-buildin-type.html' title='echo Bash{Brace Expansion, Buildin Type}'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-106584059350259416</id><published>2011-05-17T10:14:00.000-07:00</published><updated>2011-05-19T17:29:32.571-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>Git – setting local repo and pushing to new remote</title><content type='html'>Initialize local git repository&lt;br /&gt;git init&lt;br /&gt;&lt;br /&gt;Add and commit all the files to the local repo&lt;br /&gt;git add *&lt;br /&gt;git commit -m 'nick - git init'&lt;br /&gt;&lt;br /&gt;Create your remote repository&lt;br /&gt;&lt;TODO&gt;&lt;br /&gt;&lt;br /&gt;Locally add your remote repository&lt;br /&gt;git remote add origin &lt;remote_url&gt;&lt;br /&gt;&lt;br /&gt;Locally setup tracking so we can do 'git pull' rather than 'git pull origin master'&lt;br /&gt;git branch --set-upstream master origin/master&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-106584059350259416?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/106584059350259416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=106584059350259416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/106584059350259416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/106584059350259416'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2011/05/git-setting-local-repo-and-pushing-to.html' title='Git – setting local repo and pushing to new remote'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-4033861758432033725</id><published>2009-09-28T14:50:00.001-07:00</published><updated>2009-09-29T06:45:15.417-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>Sweet Home Chicago</title><content type='html'>Arrived back in Chicago yesterday.  After 13 hours of travel, we were exhausted.  Gabrielle went to sleep at 7 and I followed at 8 (after watching the Bears beat Seattle!).&lt;br /&gt;&lt;br /&gt;Of course everything didn't go completely as planned.  We took the Sheraton taxi (which to my surprise was a Mercedes) and got the Prague airport an hour and a half before our flight.  Plenty of time right?  Only if United properly ticketed you a seat on the Lufthansa plane!  UGH, so we spent 15 minutes (at 1.50 a minute) on the phone trying to resolve the problem with United.  Finally  with 20 minutes to board we got the crucial ticket number Lufthansa needed to get us on the plane.  After that everything was pretty smooth.&lt;br /&gt;&lt;br /&gt;We arrived in Chicago around 3 and finally got home around 4:30.  On the taxi ride home I just rolled down the window and breathed in the sweet Chicago air.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-4033861758432033725?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/4033861758432033725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=4033861758432033725' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/4033861758432033725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/4033861758432033725'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/sweet-home-chicago.html' title='Sweet Home Chicago'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-1069665846889280841</id><published>2009-09-26T06:42:00.000-07:00</published><updated>2009-09-26T06:56:54.086-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>Papal Tease</title><content type='html'>Today as been pretty busy so far.  This morning Gabrielle and I walked to the Prague Castle-- carefully avoiding the Charles Bridge (which was packed with tourists).  On our way we passed the Church of Our Lady beneath the Chain and ran into a sea of people.  Hundreds of people were lined up and after first thinking this was the line to the castle we soon discovered that the Pope was in town and would be coming this way!  &lt;br /&gt;&lt;br /&gt;I immediately started thinking about what it would be like to see the Holy Father coming down a street we had just stumbled on. So we waited 15 minutes and then the bells began ringing and the police started pushing people back-- off in the distance we could hear police sirans.  This was it!  &lt;br /&gt;&lt;br /&gt;And then the motorcycles appeared, next a police car, then a black sedan, another black sedan, another black sedan, a van, another van and then...that was it.  Police started walking away and a huge groan sounded through the crowd. I just started laughing.  How silly to think that we would be so lucky!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-1069665846889280841?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/1069665846889280841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=1069665846889280841' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/1069665846889280841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/1069665846889280841'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/papal-tease.html' title='Papal Tease'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-8039044064757618738</id><published>2009-09-26T01:29:00.001-07:00</published><updated>2009-09-26T06:58:41.494-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>Praha</title><content type='html'>We arrived in Prague (Praha) last night.  The train ride was long, and though we had first class seats the train itself was old and gray (just what you'd think of if someone asked you to picture a communist made train).&lt;br /&gt;&lt;br /&gt;The city however is out of this world.  I really had no desire to come here, and after the train ride I was ready to really dislike Prague, but this city is just beautiful.&lt;br /&gt;&lt;br /&gt;After checking into the Sheraton (we were upgraded again, and the room...wow) we went to get some food that Gabrielle could eat.  In our Top 10 Prague book it mentioned a place called Jama that server really good Tex-Mex.  Since it was close we decided to try it out.  Boy was it a good decision.  The food was delicious and the atmosphere fun.  After we paid, the waitress asked us where we were from and subsequently told us that the Owner was from Chicago too!  We ended up talking to Max briefly and he gave us an excellent guide book, Expats Survival Guide.  He then recommended that we head to the Old City and walk the Charles Bridge.  During the day this area is packed with tourists but at night the traffic is lighter and you can really see why this area is so poetic.&lt;br /&gt;&lt;br /&gt;The streets are so narrow and cobbled stoned.  The light reflecting off the water and stone buildings was awe inspiring. Unfortunately we are only staying here one day.  We will have to come back here for a week&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-8039044064757618738?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/8039044064757618738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=8039044064757618738' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/8039044064757618738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/8039044064757618738'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/praha.html' title='Praha'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-8965198265704217745</id><published>2009-09-25T02:33:00.000-07:00</published><updated>2009-09-25T02:42:09.666-07:00</updated><title type='text'>Roll Out The Barrell!</title><content type='html'>Yesterday was so busy, I had no time to post.  First we went to BMW Welt (BMW World).  After seeing the new X5 M, M3, X1, and a decked out 7 series, I think I need a new car. :)  It was really a neat place.  Kirstyn reallz got into the architecture of the building.  The building was really cool.  Unfortunatelz all the English plant tours were filled. :(  Guess we'll just have to come back!&lt;br /&gt;&lt;br /&gt;After that our beer/wurst tank was running low, so after we arrived to go to the German Technology museum we stopped for food.  Gabrielle was able to get a tuna salad which she had been craving for a while (for some reason all the saugage and meat didn't appeal to her like it did to me).&lt;br /&gt;&lt;br /&gt;The tech museum was reallz neat.  I got a ton of pictures.  You could spend days in the place wandering around.&lt;br /&gt;&lt;br /&gt;Today we take a train to Prague at 12:44.  We're all packed and ready to go.  I reallz wish we could stay longer in Germany though.&lt;br /&gt;&lt;br /&gt;Aaron, what beer am I supposed to try in Prague?&lt;br /&gt;&lt;br /&gt;Sorry for any mistakes in the post, I'm using a European style keyboard -- driving me crayz!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-8965198265704217745?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/8965198265704217745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=8965198265704217745' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/8965198265704217745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/8965198265704217745'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/roll-out-barrell.html' title='Roll Out The Barrell!'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-7653964684880742843</id><published>2009-09-23T11:20:00.000-07:00</published><updated>2009-09-25T02:33:46.991-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>"You should get lost"</title><content type='html'>Today we woke up early, 8am, and met up with Mark and Kirtyn and got lost in Munich.  It was a lot of fun.  We found a wonderful outdoor market, then Gabrielle navigated us to an amazing chocolate shop.  Then we went to the Oktoberfest and it was awesome.  So much meat and beer. :)&lt;br /&gt;&lt;br /&gt;We had a reservation at the &lt;a href="http://www.hippodrom-oktoberfest.de/en/"&gt;Hippodrom&lt;/a&gt;.  3 hours later we had finished 7 liters beer and eaten 2 whole chickens.&lt;br /&gt;&lt;br /&gt;Now were back at the hotel, I'm using my friend's Mark dell mini computer.  I think we're going to head back to our hotel and go to sleep.&lt;br /&gt;&lt;br /&gt;Tomorrow we're going to go to the BMW Museum and the German Technology Museum.&lt;br /&gt;&lt;br /&gt;PS Mark is also keeping a blog &lt;a href="http://mearkus.blogspot.com"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-7653964684880742843?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/7653964684880742843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=7653964684880742843' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/7653964684880742843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/7653964684880742843'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/should-you-get-lost.html' title='&quot;You should get lost&quot;'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-6014098718535910740</id><published>2009-09-22T14:17:00.000-07:00</published><updated>2009-09-22T14:23:21.590-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>Man Heaven</title><content type='html'>Where can you get sausage, mustard, fried potatoes and sauerkraut?  What is Germany. &lt;br /&gt;&lt;br /&gt;We were in Cologne yesterday.  The Cologne Dom (cathedral) is beautiful!  We had a wonderful time, excellent food and beer.  unfortunately the museums were closed because it was Monday.&lt;br /&gt;&lt;br /&gt;Today we arrived in Munich.  After a wonderful 1st class train ride, we met Mark and Kirstyn and went to the Augustiner Keller --  a very nice beer garden for the locals. &lt;br /&gt;&lt;br /&gt;The hotel is very nice, and we were upgraded to a suite again.  We are located across the street from the train station.&lt;br /&gt;&lt;br /&gt;Unfortunately, we only have less than 15 minutes to post this blog for free.  Thus, this one is short!&lt;br /&gt;&lt;br /&gt;Don't forget -- the German food is AWESOME.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-6014098718535910740?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/6014098718535910740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=6014098718535910740' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/6014098718535910740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/6014098718535910740'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/man-heaven.html' title='Man Heaven'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-5741029809887911800</id><published>2009-09-20T14:26:00.001-07:00</published><updated>2009-09-20T14:35:39.396-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>I AMsterdam</title><content type='html'>This morning we woke up a little later than usual and, because we were trying to meet Mark and Kirstyn, we didn't get a chance to work out.&lt;br /&gt;&lt;br /&gt;We first took the trolley to the Van Gogh Museum campus.  We found a nice place to eat breakfast outside.   I had ham filled &lt;a href="http://en.wikipedia.org/wiki/Pannekoek"&gt;pannenkoeken&lt;/a&gt;, which was delicious, and Gabrielle had a fruit bowl.&lt;br /&gt;&lt;br /&gt;We then went to the museum which was amazing.  We got the audio tour tape and that helped alot.  We even bought a print to bring home.&lt;br /&gt;&lt;br /&gt;Next we went to the Heineken Experience which was quite neat.  We learned all about how the beer was made.  I asked a guy about Heineken Light, and he told me that it all gets shipped to the US--"Nobody drinks that here."&lt;br /&gt;&lt;br /&gt;Then we got dinner at another horrible Mexican restaurant.  If you're in Amsterdam, avoid mexican food--they don't seem to know how to make it here.&lt;br /&gt;&lt;br /&gt;Finally we just got done with a very nice wine and cheese evening boat cruise.  The weather is cooling down but it was still fun to be on the water.  We are both exhausted and ready for a good night's sleep.&lt;br /&gt;&lt;br /&gt;Tomorrow we leave for &lt;a href="http://maps.google.com/maps?q=cologne&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Cologne,+Germany&amp;amp;ei=T5-2Sq2LFaiH4gbmv4V9&amp;amp;ll=50.750359,8.85498&amp;amp;spn=4.004212,12.502441&amp;amp;z=6"&gt;Cologne, Germany&lt;/a&gt; at 10:30.  I am excited to head into Germany!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-5741029809887911800?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/5741029809887911800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=5741029809887911800' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/5741029809887911800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/5741029809887911800'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/i-amsterdam.html' title='I AMsterdam'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-5761475940807953296</id><published>2009-09-19T11:46:00.000-07:00</published><updated>2009-09-19T11:56:36.798-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>Space Cakes</title><content type='html'>Today we got up at 7:30 and went to the gym.  Feeling better from the mexican pinata party that was in my stomach.  I ran for 20 minutes.&lt;br /&gt;&lt;br /&gt;We got a call from Mark and Kirstyn around 9:15.  We met them at the &lt;a href="http://en.wikipedia.org/wiki/Dam_Square"&gt;Dam Square&lt;/a&gt; and then proceeded to get some coffee, beer and enjoy the canals and warm weather.  The weather has been very nice the past couple days.&lt;br /&gt;&lt;br /&gt;After getting some lunch, Gabrielle and Kirstyn went to the Handbag and Purse museum while Mark napped and I grabbed a snack.   After that, we picked up Mark and quickly realized the day was getting late.  We ran over to the &lt;a href="http://www.heinekenexperience.com/"&gt;Heineken Experience&lt;/a&gt;, however we were too late for the last tour of the day.  We will try again tomorrow.  We are also planning to see the Van Gogh museuem tomorrow.  Then perhaps a boat tour through the canals over dinner. &lt;br /&gt;&lt;br /&gt;We concluded the day with a thai dinner.  All of us were ready to fall asleep at the dinner table (lots of walking, etc. today).  Heading to bed now.  I'm sure I will sleep very well tonight.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-5761475940807953296?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/5761475940807953296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=5761475940807953296' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/5761475940807953296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/5761475940807953296'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/space-cakes.html' title='Space Cakes'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-6933803518268883768</id><published>2009-09-18T12:08:00.001-07:00</published><updated>2009-09-19T12:00:25.604-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>Day 2</title><content type='html'>We had a wonderful breakfast at &lt;a href="http://goamsterdam.about.com/od/whattoeatinamsterdam/gr/rr_cafenielsen.htm"&gt;Cafe Nielsen&lt;/a&gt;. I orderd a fried egg with bacon and toast. I'm not usually a fan of fried eggs but the waiter recommended it. It was actually delicious! They first put the toast down, then the bacon, then the friend egg on top of that, and finally covered it in cheese. I'll be making this at home.&lt;br /&gt;&lt;br /&gt;I noticed in my last post I forgot to mention that I had a beer for dinner. Well, I actually had 3. I forgot the name of it, but it was good. From now on if it is not mentioned, just assume that I'm drinking. X-)&lt;br /&gt;&lt;br /&gt;Today we got up late and worked out in the gym. We then went to breakfast and then headed to the &lt;a href="http://www.amsterdam.info/shopping/flowermarket/"&gt;flower market&lt;/a&gt;. The market was very pretty and I got a lot of pictures. We then walked through the shopping disctrict to Anne Frank's house.&lt;br /&gt;&lt;br /&gt;The tour took about half an hour and put us in a somber mood. After watching so many History Channel specials on the WW2 its a little shocking to actually find yourself in such a historical location.&lt;br /&gt;&lt;br /&gt;Afterwards we got a recommendation for dinner, however Gabrielle wasn't fond of the menu so we wandered around and found a Mexican restaurant. It was good for her because there was food she could eat, however I thought the food was pretty bad and now my stomach is not feeling well. We had a much easier time finding gluten free food in London (albeit not good food). All menu items were marked whether they were gluten-free, veggie, etc. The wait staff in London was also understanding. Here they are not as knowledgable and it has taken time to explain the allegery to them.&lt;br /&gt;&lt;br /&gt;After dinner we found a gluten-free grocery store, &lt;a href="http://www.biomarkt.nl/"&gt;BioMarkt&lt;/a&gt;. We stocked up on bread, chocolate spread and cookies--obviously for breakfast.&lt;br /&gt;&lt;br /&gt;Tomorrow our friends Mark and Kirstyn arrive at 8am. We are excited to see them and wish them safe travels!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-6933803518268883768?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/6933803518268883768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=6933803518268883768' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/6933803518268883768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/6933803518268883768'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/day-2.html' title='Day 2'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-5504424362788513563</id><published>2009-09-17T12:35:00.000-07:00</published><updated>2009-09-17T12:52:46.251-07:00</updated><title type='text'>Amsterdam</title><content type='html'>Amsterdam is absolutely beautiful.  After arriving we took the quietest train we've every ridden into the center of the city and then took a taxi to our hotel, &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=hotel+pulitzer+amsterdam&amp;amp;sll=52.375547,4.884839&amp;amp;sspn=0.013021,0.024419&amp;amp;ie=UTF8&amp;amp;ll=52.373634,4.884474&amp;amp;spn=0.006838,0.012209&amp;amp;z=16"&gt;The Pulitzer&lt;/a&gt;.  The staff was very helpful and due to Gabrielle's super-duper-elite-diamond-platinum-celebrity status we were upgraded to a executive suite!  (Speaking of her elite status--I am now beginning to understand why she doesn't want to quit traveling.  The threat of losing her status would be absolutely devastating.  How in the world do normal people do it???  We had royal treatment at the Heathrow airport lounge--invitation only-- too!  I'm likin' it.)  Of course this is the only way I roll.&lt;br /&gt;&lt;br /&gt;We just got back from a wonderful dinner at &lt;a href="http://www.restaurantdeproeverij.nl/"&gt;De Proeverij&lt;/a&gt;.  I had a wonderful steak with shitaki mushrooms and onions.  Gabrielle had delicious duck with peanut sauce.  For desert I had an amazing chocolate cake and Gabrielle had some vanilla ice cream.  The portions were not American style, however I appreciate the fact that my pants still seem to fit. :)&lt;br /&gt;&lt;br /&gt;Compared to London which was dirty, loud, and rude -- Amsterdam has been beautiful, welcoming and relaxing.  Tomorrow we plan to tour the Flower Market and the &lt;a href="http://en.wikipedia.org/wiki/Anne_Frank"&gt;Anne Frank house&lt;/a&gt; (which is just a block from our hotel).  Gabrielle is also trying to convince me to go for a run.  I think I'd rather find a coffee shop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-5504424362788513563?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/5504424362788513563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=5504424362788513563' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/5504424362788513563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/5504424362788513563'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/amsterdam.html' title='Amsterdam'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-6336963974575596584</id><published>2009-09-16T11:16:00.000-07:00</published><updated>2009-09-16T11:20:30.592-07:00</updated><title type='text'>Clean shave</title><content type='html'>After posting the last entry, we discovered the hotel Club Lounge with internet access.  Sooo, here's another entry for your entertainment.&lt;br /&gt;&lt;br /&gt;While strolling this afternoon, we ran into a gentlemen's shaving shop.  I experienced my first straight-edge razor shave and it was fantastic!!!  I ended up buying some India Lime aftershave that Gabrielle is going crazy over. &lt;br /&gt;&lt;br /&gt;Next stop:  Brick Street to check out the Indian restaurants that truly are supposed to be delicious.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-6336963974575596584?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/6336963974575596584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=6336963974575596584' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/6336963974575596584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/6336963974575596584'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/clean-shave.html' title='Clean shave'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-5680786565211968575</id><published>2009-09-16T05:46:00.000-07:00</published><updated>2009-09-16T11:16:26.802-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>London</title><content type='html'>Yesterday we took a bus into London. Our hotel is near Picadilly Circus. It reminds me of time square in New York. Unfortunately it rained all day, so it was very difficult to do any sight seeing. We found a neighborhood that we were told had great \indian food--but wound up being very disappointed in the restaurant we chose. Sigh. Later, we found a nice restaurant called Wolsely for tea. Gabrielle was happy because they had gluten free poppy seed cake! Apparently it was good (she didn't share!). We went to the hotel bar for some late night drinks. Came across an old Scottish man that talked our ears off! We needed another drink after he left so we could unwind.&lt;br /&gt;&lt;br /&gt;Today Gabrielle and I did quite a bit of walking. We saw Big Ben, Buckingham Palace and the changing of the guard. We just got done eating some authentic British food (fish and chips, and Chicken Tikka Masala). It was mediocre at best. The beer however has been good. :)&lt;br /&gt;&lt;br /&gt;Right now we are at an internet cafe across the street from Nelson's Column. We are planning on doing some shopping and more strolling around.&lt;br /&gt;&lt;br /&gt;Tomorrow we leave for Amsterdam at 3. The trip has been exciting so far, can't wait for the next leg of our adventure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-5680786565211968575?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/5680786565211968575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=5680786565211968575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/5680786565211968575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/5680786565211968575'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/london.html' title='London'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-8646662494492606364</id><published>2009-09-14T11:57:00.000-07:00</published><updated>2009-09-16T11:14:40.393-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>Greene King</title><content type='html'>Because of logistical reasons we were unable to make it to Bath today.  Instead we headed back&lt;br /&gt;&lt;div&gt;into Oxford  where Joel showed us around some more.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We also stopped by some pubs and drank plenty of good English Ale.  I bought some &lt;a href="http://en.wikipedia.org/wiki/Greene_King_Brewery"&gt;Greene King&lt;/a&gt; from the grocery store and am enjoying it now.  We then road a double decker bus home which was fun.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When we got back to Tanya and Joel's house, Tanya's friend Ulrike was visiting.  Ulrike grew up in Lemgo, the town in Germany where Gabrielle was a foreign exchange student.  They seemed to enjoy talking to each other and reminiscing about the goings-on of Lemgo.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tomorrow Gabrielle and I head into London, which should be exciting.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Alright, my youngest nephew is forcing everyone into a game of &lt;a href="http://en.wikipedia.org/wiki/Apples_to_Apples"&gt;Apples to Apples&lt;/a&gt;, cheers!&lt;br /&gt;&lt;br /&gt;---Okay, Apples to Apples is over.  Eli won and is very happy about it. :)  After the boys went to bed, Tanya, Joel, Gabrielle and I played Euchre for a couple hours.  We had a great time, but the teams were set up wrong.  Gabrielle and Joel played against Tanya and me.  Joel and Gabrielle kicked our butts in both the games we played!!  They tried to be gracious winners, but they weren't--in fact, Gabrielle is requiring me to post this important part of our trip so I won't forget it.  What are you gonna do?  :(&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-8646662494492606364?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/8646662494492606364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=8646662494492606364' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/8646662494492606364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/8646662494492606364'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/greene-king.html' title='Greene King'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-5811097805824897047</id><published>2009-09-13T11:12:00.000-07:00</published><updated>2009-09-13T11:23:37.550-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>Cotswolds</title><content type='html'>So we woke up at noon. :)  We slept very well.  After a shower and some coffee Joel and Tanya took us to the &lt;a href="http://en.wikipedia.org/wiki/Cotswolds"&gt;Cotswolds&lt;/a&gt;.  A picturesque English village.  The buildings and land were absolutely beautiful.  We had lunch at a little pub and had some wonderful English ale.  Right now we are home and getting ready for dinner.  Tomorrow we plan on taking a trip to &lt;a href="http://en.wikipedia.org/wiki/Bath,_Somerset"&gt;Bath&lt;/a&gt; to see some old Roman bath houses.  All-in-all, a very relaxing and fun day!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-5811097805824897047?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/5811097805824897047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=5811097805824897047' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/5811097805824897047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/5811097805824897047'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/cotswolds.html' title='Cotswolds'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-6294924944769223341</id><published>2009-09-12T10:21:00.000-07:00</published><updated>2009-09-12T10:42:48.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>Jet lag</title><content type='html'>This morning (9-12) at 8am we arrived safely at Heathrow airport.  I was a bit stressed out about the flight since I haven't flown in a while.  Gabrielle on the other-hand was in her element and even said "I really miss being in airports."&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Getting through security was a breeze--the TSA was actually helpful and good humored, unfortunately I can't say so much about the United flight attendants.  The cabin in economy was pretty gross.  A passenger behind us had a broken chair.  The metal arm that held up my video display was broken (a previous passenger had tried to fix it with a rolled up M&amp;amp;M wrapper to no avail), and the movie was stop and go.  Southwest is such a better airline, I really wish they flew international.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, when we arrived my brother-in-law, Joel, was there to pick us.  The whole driving on the left hand side is pretty freaky.  I'm not sure if I'll ever get used to it.  The drive was very nice, this area is very green with lots of rolling meadows and trees.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When we got to the house, we immediately took a nap.  Joel and Tonya, my sister-in-law, said that we would not want to get up but it was important to do so to get through the jet lag.  Boy was she right, after a two hour nap I had no desire to get up!  However after a very warm shower and breakfast I was feeling pretty good. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We then went into Oxford and got a walking tour of the campus.  Oxford is beautiful and it felt really good to walk around and breath in the fresh air--especially after 8 hours in a plane!  I bought 2 post cards and took a lot of pictures.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We are now back at home making gluten free pizza.  I'm drinking a Carlsberg ("Probably the best beer in the world" - their slogan) and relaxing.  I think we will sleep very well tonight.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-6294924944769223341?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/6294924944769223341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=6294924944769223341' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/6294924944769223341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/6294924944769223341'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/jet-lag.html' title='Jet lag'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-4874050903226240026</id><published>2009-09-10T21:23:00.000-07:00</published><updated>2009-09-11T12:20:08.061-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Europe2009'/><title type='text'>Europe here we come!</title><content type='html'>Gabrielle just finished packing all of our clothes in to two carry on suitecases.  I can't believe everything fit.  Somehow by rolling everything up we were able to pack all our clothes and still have room!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I ended up calling Verizon global service to get my Blackberry World Phone unlocked.  We have a Verizon sim card but would like the option of using a European sim card if we need to.  The process was pretty straight forward but did require that I use our existing sim card to access a few of the menus the technician walked me through.  Can't wait to see if it really works.  I also found out that by owning a World Phone I could receive a free simcard from Verizon. Will have to pick that up after our trip though.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well by this time tomorrow we'll be high over the Atlantic, Cheers!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-4874050903226240026?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/4874050903226240026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=4874050903226240026' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/4874050903226240026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/4874050903226240026'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2009/09/europe-here-we-come.html' title='Europe here we come!'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-9057262965494597017</id><published>2008-03-14T17:02:00.000-07:00</published><updated>2009-09-11T12:20:32.602-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>Eclipse Con 2008</title><content type='html'>Next week I'll be presenting with my colleague Kevin Taylor a tutorial entitled &lt;a href="http://www.eclipsecon.org/2008/?page=sub/&amp;amp;id=306"&gt;TDD for Eclipse RCP&lt;/a&gt; at &lt;a href="http://www.eclipsecon.org/2008/"&gt;EclipseCon 2008&lt;/a&gt; This is my first Eclipse Conference and I pretty excited about presenting.  If you make it to the conference please stop by and introduce yourself.  I'd love to talk about testing and TDD!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-9057262965494597017?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/9057262965494597017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=9057262965494597017' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/9057262965494597017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/9057262965494597017'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2008/03/eclipse-con-2008.html' title='Eclipse Con 2008'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-4244496653340387724</id><published>2008-03-04T19:14:00.000-08:00</published><updated>2009-09-11T12:20:32.602-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>Something to Strive for...</title><content type='html'>My officemate had a great quote the other day that he attributed to a developer he had previously worked with: "You should always be working on the coolest thing on a project.  And if you aren't, you need to step back and ask yourself why."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-4244496653340387724?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/4244496653340387724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=4244496653340387724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/4244496653340387724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/4244496653340387724'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2008/03/my-officemate-had-great-quote-other-day.html' title='Something to Strive for...'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-2709007516007065744</id><published>2007-11-14T13:48:00.000-08:00</published><updated>2009-09-11T12:20:32.603-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>CHIRB Presentation Tomorrow</title><content type='html'>Tomorrow night my colleague, Andy Maleh, and I will be presenting at &lt;a href="http://chirb.org/"&gt;ChiRb&lt;/a&gt;, Chicago Area Ruby Group.  We will be talking about &lt;a href="http://rubyforge.org/projects/glimmer/"&gt;Glimmer&lt;/a&gt;, a new JRuby DSL for quickly creating GUI applications.&lt;br /&gt;&lt;br /&gt;The presentation will include an introduction to Glimmer and a demonstration of an application built using the DSL.&lt;br /&gt;&lt;br /&gt;In order to attend the meeting you must &lt;a href="http://chirb.org/event/show/24"&gt;RSVP&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-2709007516007065744?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/2709007516007065744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=2709007516007065744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/2709007516007065744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/2709007516007065744'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2007/11/chirb-presentation-tomorrow.html' title='CHIRB Presentation Tomorrow'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-259196123191443059</id><published>2007-10-28T18:01:00.000-07:00</published><updated>2009-09-11T12:20:32.604-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>Comparing Apples Using the Adapter Pattern</title><content type='html'>&lt;div  style="text-align: justify;font-family:arial;"&gt;Last week my pair and I came up with an elegant solution to a problem that could have seriously bloated an already busy class.&lt;br /&gt;   The class was called Matcher and part of its job is to Match a Person to a Contact (the objects represent models from 2 different systems) with the method &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;isMatch&lt;/span&gt;.  The rules for matching were to first check that the full names were the same and, if they were, then check to see if either the email addresses match or one of the 6 phone fields.  If only the names matched the method should return false.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:arial;"&gt;            The problem itself isn't very hard, but looking at the rest of the class I did not want to clutter this method up with a bunch of if-then-else statements and, more importantly, I wanted the code to be readable.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;            Looking at both Contact and Person, my pair and I noticed that they both had &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;similar&lt;/span&gt; attributes (first name, last name, email address, day phone, etc), however, the field names were slightly different.  Our approach was to use the Adapter Pattern to change Contact and Person into &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;MatchableContacts&lt;/span&gt;.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;MatchableContact&lt;/span&gt; would have a method match() which would take in a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;MatchableContact&lt;/span&gt; and would return a Boolean based on the Names AND (Email Addresses OR Day Phones OR Evening Phones OR etc...)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;           What this did was turn 50 lines of code in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;isMatch&lt;/span&gt;() to 3 lines and made the code &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;significantly&lt;/span&gt; more readable.  Instead of if-then-else we had:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;MatchableContact&lt;/span&gt; matchable1 = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;MatchableContact&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;getInstance&lt;/span&gt;(person);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;matchableContact&lt;/span&gt; matchable2 = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;MatchableContact&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;getInstance&lt;/span&gt;(contact);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   return matchable1.match(matchable2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    And the match method looked like this:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    return this.getFullName.equals(matchableContact.getFullName) &amp;amp;&amp;amp; (this.getEmail.equalsIgnoreCase(matchableContact.getEmail) || etc...)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:arial;"&gt;    As an added bonus my pair realized that he could now re-use our new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;MatchableContact&lt;/span&gt; class for a problem that he had been working on for the past 2 days!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-259196123191443059?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/259196123191443059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=259196123191443059' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/259196123191443059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/259196123191443059'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2007/10/comparing-apples-using-adapter-pattern.html' title='Comparing Apples Using the Adapter Pattern'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4739699547757079509.post-9128888607485267161</id><published>2007-10-18T17:51:00.001-07:00</published><updated>2009-09-11T12:20:32.604-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>Domain Driven Design</title><content type='html'>At my current client, a colleague started a book club and proposed the book Domain Driven Design by Eric Evans. Today we had our first session and I thought it went very smoothly. Before we started I felt I had a pretty good idea of what Domain Driven Design was but after the discussion I was surprised about how much I learned. I am looking forward to next week's session.&lt;br /&gt;&lt;br /&gt;Things I learned:&lt;br /&gt;* Domain Driven Development is the idea of creating a ubiquitous language, meaning the words that you use to talk about your program are the same whether you are talking to a Developer or a Business user.&lt;br /&gt;Example: At the my client we have an Object called ShowPerson, which when I started was a very confusing name. This object represents a cross reference table in the database which relates a Show to a Person. In the business world they call this a Guest of the Show. Well, not only would it have helped me learn the code base (and domain) quicker if this Object would have just been called Guest, but the business users now have to learn what ShowPerson means. How are they supposed to understand a Developer at the stand up when he says "The ShowPerson had a null address that caused the exception." Compare that sentence with "The Guest had a null address that caused an exception." Doesn't it just sound better?&lt;br /&gt;* To say a Domain Model is good, is to say that the model (Object, POJO, Class, etc) contains all the attributes a business user would expect.&lt;br /&gt;* Once you have a well defined rich object graph your output (GUI, Reports, etc) are all window dressing.&lt;br /&gt;* How do you balance Easy Testing verse a good Domain Model?&lt;br /&gt;Example: It was mentioned that in order to make our Show Object a better Domain Object we should have created a method on it called submit(). Instead there is a Submit service that gets passed a Show object. First, why is this not good Domain Driven Design, well to a business user what is a Submit Service? Doesn't it make more sense to Submit a Show rather than to get an instance of Submit Service and pass it a Show?&lt;br /&gt;In the meeting we decided that it would have made a lot more sense if the submit behavior was located on the Show object. But there was already a really nice framework setup to mock the submit show service, if we were to encapsulate the service into Show then we would have to mock out that service.&lt;br /&gt;We strive for easy ways to test our behavior but we also want to strive for a rich domain model. In this case I feel the time it took to come up with this easy to use testing framework would have not been necessary if the models would have encapsulated this logic in the beginning.&lt;br /&gt;*What is the difference between the Schema in a Database and a Rich Domain? Behavior?&lt;br /&gt;Schema only represents data, a rich domain layer represents behavior and interactions between models.&lt;br /&gt;*My colleague gave a great analogy. Having an object with no behavior is like having a Car frame with no engine. If you want the Car to move you have to call a service locater that will get the engine for you. Does that make sense??? NO! You want the car to contain the engine, you don't want to go get the engine every time you want to drive.&lt;br /&gt;* Two separate groups like Development and Business need thick conduits for communication. It isn't good for communication and team building if 1 Developer meets with 10 Business users. Conversely, it is also not healthy for 1 Business user to meet with 10 Developers.&lt;br /&gt;Example: Our Customer Proxy has been meeting with us for quit a while. I finished up a feature and she sent me the instructional text that should be added to the new screens I created. After inserting the text I asked the Tech Support manger to stop by and go through the new feature to see if it made sense to him (Since he would be the one supporting the feature. Even better he had not been apart of any of the planning meetings and would be testing the feature by using only the instructional text and the GUI we had come up with). Looking over the new screen we had come up with, he said "This is terrible, the instructions read like a developer wrote them. We are going to get a bunch of calls from our users if we release this." In this example the Customer Proxy had adapted to developer lingo and had inadvertently written instructions that used Database/Object names and if-then-else like sentences.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4739699547757079509-9128888607485267161?l=malnick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://malnick.blogspot.com/feeds/9128888607485267161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4739699547757079509&amp;postID=9128888607485267161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/9128888607485267161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4739699547757079509/posts/default/9128888607485267161'/><link rel='alternate' type='text/html' href='http://malnick.blogspot.com/2007/10/at-my-current-client-colleague-started.html' title='Domain Driven Design'/><author><name>Nick Malnick</name><uri>http://www.blogger.com/profile/01270605968385676001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://bp0.blogger.com/_Fmoenp7_TSA/R6d5ZslhrjI/AAAAAAAAAAM/8yqPMxJW-rE/S220/Photo_012808_002.jpg'/></author><thr:total>0</thr:total></entry></feed>
