<?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-2988881835967653892</id><updated>2012-02-16T09:56:27.416-08:00</updated><category term='ruby'/><category term='twitter iran'/><category term='perl'/><category term='glassfish'/><category term='adobe'/><category term='algorithms'/><category term='compression effect'/><category term='complexity'/><category term='dng. gimp. picasa'/><category term='mating problems'/><category term='retro chess'/><category term='wolfram alpha'/><category term='haskell'/><category term='abstract data types'/><category term='gimp'/><category term='IP'/><category term='wearable computing'/><category term='email'/><category term='decidability'/><category term='photography raw ubuntu rawtherapee'/><category term='linux'/><category term='cassandra'/><category term='theory'/><category term='RFC'/><category term='object orientation'/><category term='rule of thirds'/><category term='java'/><category term='photography'/><category term='iis7'/><category term='photoshop'/><category term='data model'/><category term='programming'/><category term='smalltalk'/><category term='photography exposure'/><category term='activeperl'/><category term='legal'/><category term='natty'/><category term='acceptance problem'/><category term='netbeans'/><category term='modes'/><category term='software'/><category term='minimax'/><category term='polaroid'/><category term='search'/><category term='server'/><category term='ubuntu'/><category term='bass'/><category term='wide-angle'/><category term='chess'/><category term='telephoto'/><category term='gmail'/><category term='vista'/><category term='openjdk'/><title type='text'>Coffee-enabled Musings</title><subtitle type='html'>Mostly about pro things: Java/Web technology, math and more theory. Some lighter stuff: Music, Photography and digital image processing, maybe about chess?</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-248982126905750944</id><published>2011-09-09T20:55:00.000-07:00</published><updated>2011-09-09T21:57:49.510-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography exposure'/><title type='text'>What's wrong with P mode?</title><content type='html'>Ok - just a short rant!&lt;br /&gt;&lt;br /&gt;Since we all went off "Full Auto" mode on our DSLRs some years ago, it's now all the rage and a sign of professionalism to shoot in "Full Manual" mode, right?&lt;br /&gt;&lt;br /&gt;So, you can either guess the proper exposure - I grew up with that and I'm still pretty good at it, then take a shot and check the exposure (preferably via histogram), correct and shoot again. Works perfectly for e.g. dragonfly pictures with no dragonflies in them! &lt;br /&gt;&lt;br /&gt;Or you can use the little wheel(s) to adjust f-stop and exposure time and turn it/them until the bar is somewhere in the center - selecting which of the two to change requires some good "finger memory", and yes! it's (more or less) always in the center when you have your camera in "Auto ISO" anyway, because it compensates for a change of EV by adjusting the ISO value, just dreadful!&lt;br /&gt;&lt;br /&gt;So, message 1: Get off "Auto ISO" - I loved for 10 days and now I'm back to selecting ISO first: sunny: 100, not so sunny: 200, not really sunny: 400, pretty dark: 640 etc. If all goes wrong, the 60D lets you adjust ISO without even taking the camera down - I love this little "nubby" on the ISO selector button!&lt;br /&gt;&lt;br /&gt;Now in "M" I'm adjusting f-stop and exposure time manually, until the little exposure bar is centered (unless I have a weird lighting situation in which that doesn't work). I'm looking at different combinations estimating depth of field and moving speed, then I see that it's underexposed or overexposed, correct and then the shot is lost (unless it's a building or mountain both of which luckily have the pleasant habit of moving quite slowly or not at all).&lt;br /&gt;&lt;br /&gt;Well, message 2: If it's moving fast, why not get a decent ISO preset, switch into "Tv" mode, select 1/1000 sec and see what the display says? Actually, I still think that 1/250 is fast enough for everything - some of my butterfly and horse photos are proof to the contrary :-)&lt;br /&gt;&lt;br /&gt;Or, message 3: If I need some decent DOF why not switch into "Av" and select f/11?&lt;br /&gt;&lt;br /&gt;Or. message 4 -and that's what I'm doing right now, if I have more than 5 seconds to take a shot: Use "P" mode and then turn the (one!) wheel until it comes up with a combination of f-stop and exposure time that seems usable?&lt;br /&gt;&lt;br /&gt;And what about weird lighting situations? I see the point, of course! In these cases Exposure Compensation and/or Spot Measuring work perfectly if you can predict the effect.&lt;br /&gt;&lt;br /&gt;Sorry, "M" aficionados - I'm back in "P", "Av" and "Tv"!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-248982126905750944?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/248982126905750944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2011/09/whats-wrong-with-p-mode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/248982126905750944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/248982126905750944'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2011/09/whats-wrong-with-p-mode.html' title='What&apos;s wrong with P mode?'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-745800479399801965</id><published>2011-07-05T09:57:00.000-07:00</published><updated>2011-07-05T10:11:02.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography raw ubuntu rawtherapee'/><title type='text'>RawTherapee</title><content type='html'>Here's a nice one:&lt;a href="http://www.rawtherapee.com/"&gt; RawTherapee &lt;/a&gt;- something that can make life a little easier under Linux (works quite nicely under Windows, too).&lt;br /&gt;&lt;br /&gt;When you use &lt;a href="http://www.gimp.org/"&gt;GIMP&lt;/a&gt; and &lt;a href="http://ufraw.sourceforge.net/"&gt;UFRaw&lt;/a&gt;, you might have had some issues, but RawTherapee helps a lot. It's not really a &lt;a href="http://www.adobe.com/products/photoshoplightroom/"&gt;Adobe LR&lt;/a&gt; or &lt;a href="http://www.digikam.org/"&gt;Digikam&lt;/a&gt; replacer, but once you got it installed, it's really easy to use and the RAW processing capabilites are among the best available.&lt;br /&gt;&lt;br /&gt;Once you got it installed, yes! While getting it to run under Windows is a no-brainer, under Ubuntu Linux it's just a little - difficult. Amazing, since it's a native Linux app.&lt;br /&gt;&lt;br /&gt;So here's what I did do get 3.0 set up under Ubuntu 11.04&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;sudo add-apt-repository ppa:rawtherapee/ppa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;sudo apt-get update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;sudo apt-get install rawtherapee&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And that took some time to figure out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-745800479399801965?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/745800479399801965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2011/07/rawtherapee.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/745800479399801965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/745800479399801965'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2011/07/rawtherapee.html' title='RawTherapee'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-1314058315281950704</id><published>2011-05-18T19:40:00.000-07:00</published><updated>2011-05-18T19:56:21.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='decidability'/><category scheme='http://www.blogger.com/atom/ns#' term='theory'/><category scheme='http://www.blogger.com/atom/ns#' term='acceptance problem'/><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><title type='text'>Why use Turing Machines when there's Haskell</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Predicates and algorithms in Haskell&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The nice thing about using Haskell (or lambda calculus) against using Turing machines is the possibility to talk about signatures of predicates and/or algorithms in a more natural manner. It is even easier to describe languages in terms of partial predicates rather than grammars or TMs.&lt;br /&gt;&lt;br /&gt;So, let's do that:&lt;br /&gt;&lt;br /&gt;A &lt;span style="font-weight: bold;"&gt;one-place predicate (1pp)&lt;/span&gt; &lt;span style=" font-weight: bold;font-family:verdana;" &gt;P&lt;/span&gt; is defined by a Haskell expression of the form&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight: bold;font-family:verdana;" &gt;P :: String -&amp;gt; Bool&lt;br /&gt;P = \x -&amp;gt; ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;returning either &lt;span style=" font-weight: bold;font-family:verdana;" &gt;True &lt;/span&gt;or &lt;span style=" font-weight: bold;font-family:verdana;" &gt;False&lt;/span&gt;. Since Haskell allows for Type Synonyms, we define as an abbreviation:&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight: bold;font-family:verdana;" &gt;type OnePP = String -&amp;gt; Bool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The extension or language of the predicate &lt;span style=" font-weight: bold;font-family:verdana;" &gt;P&lt;/span&gt; - denoted as &lt;span style=" font-weight: bold;font-family:verdana;" &gt;L(P)&lt;/span&gt; - is given by those values for which &lt;span style=" font-weight: bold;font-family:verdana;" &gt;P&lt;/span&gt; returns &lt;span style=" font-weight: bold;font-family:verdana;" &gt;True&lt;/span&gt;. If &lt;span style=" font-weight: bold;font-family:verdana;" &gt;P&lt;/span&gt; returns &lt;span style=" font-weight: bold;font-family:verdana;" &gt;True &lt;/span&gt;or &lt;span style=" font-weight: bold;font-family:verdana;" &gt;False &lt;/span&gt;for &lt;span style="font-style: italic;"&gt;every &lt;/span&gt;argument, it is called &lt;span style="font-style: italic;"&gt;total &lt;/span&gt;and can be regarded as a decision procedure for &lt;span style=" font-weight: bold;font-family:verdana;" &gt;L(P)&lt;/span&gt;, else it called &lt;span style="font-style: italic;"&gt;partial &lt;/span&gt;and can be regarded as an acceptor, recognizer, semi-decider or enumeration procedure for &lt;span style="font-weight: bold; font-family:verdana;" &gt;L(P)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;If a language &lt;span style=" font-weight: bold;font-family:verdana;" &gt;L &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;=&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:verdana;" &gt; L(P)&lt;/span&gt; for a &lt;span style=" font-weight: bold;font-family:verdana;" &gt;1pp P&lt;/span&gt;, we refer to &lt;span style=" font-weight: bold;font-family:verdana;" &gt;P&lt;/span&gt; as a &lt;span style="font-style: italic;"&gt;representation &lt;/span&gt;of &lt;span style=" font-weight: bold;font-family:verdana;" &gt;L&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Note that when we will talk about decision problems regarding languages, we assume the language in question is given by a representation. Another representation could be a Turing Machine, Type-0 grammar or another equivalent formalism.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Examples&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Acceptance Problem &lt;span style="font-weight: bold; font-family: verdana;"&gt;A&lt;/span&gt;&lt;sub style="font-weight: bold; font-family: verdana;"&gt;TM&lt;/sub&gt; can now be stated and proved like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;: Is there a total predicate&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-weight: bold;"&gt;H :: OnePP -&amp;gt; String -&amp;gt; Bool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;such that &lt;span style="font-family: verdana; font-weight: bold;"&gt;(H A w)&lt;/span&gt; returns &lt;span style="font-family: verdana; font-weight: bold;"&gt;True&lt;/span&gt;, iff &lt;span style="font-family: verdana; font-weight: bold;"&gt;A&lt;/span&gt; returns &lt;span style="font-family: verdana; font-weight: bold;"&gt;True &lt;/span&gt;for &lt;span style="font-family: verdana; font-weight: bold;"&gt;w&lt;/span&gt; and &lt;span style="font-family: verdana; font-weight: bold;"&gt;False&lt;/span&gt;, if not (i. e. &lt;span style="font-family: verdana; font-weight: bold;"&gt;A&lt;/span&gt; returns &lt;span style="font-family: verdana; font-weight: bold;"&gt;False&lt;/span&gt; or no value at all)&lt;br /&gt;&lt;br /&gt;Answer: &lt;span style="font-style: italic;"&gt;No&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Proof: Assume &lt;span style="font-family: verdana; font-weight: bold;"&gt;H&lt;/span&gt; exists as specified. Then consider the following Haskell program:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-weight: bold;"&gt;D :: OnePP -&amp;gt; Bool&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-weight: bold;"&gt;D = \A -&amp;gt; not (H A A)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then the program&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-weight: bold;"&gt;main = (D D)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;shows the desired contradiction.&lt;br /&gt;&lt;br /&gt;The fact that  &lt;span style="font-weight: bold; font-family: verdana;"&gt;A&lt;/span&gt;&lt;sub style="font-weight: bold; font-family: verdana;"&gt;TM &lt;/sub&gt;is recursively enumerated is neatly shown by&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-weight: bold;"&gt;Acc :: OnePP -&amp;gt; String -&amp;gt; Bool&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-weight: bold;"&gt;Acc = \A w -&amp;gt; (A w)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;That should work nicely - more about that when Rice's Theorem comes up in some days...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-1314058315281950704?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/1314058315281950704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2011/05/why-use-turing-machines-when-theres.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/1314058315281950704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/1314058315281950704'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2011/05/why-use-turing-machines-when-theres.html' title='Why use Turing Machines when there&apos;s Haskell'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-6997106621033144622</id><published>2011-05-10T08:14:00.000-07:00</published><updated>2011-05-10T11:19:51.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cassandra'/><category scheme='http://www.blogger.com/atom/ns#' term='data model'/><title type='text'>More Cassandra</title><content type='html'>There's a lot written about the Cassandra data model, here's a good one: &lt;a href="http://javamaster.wordpress.com/2010/03/22/apache-cassandra-quick-tour/"&gt;http://javamaster.wordpress.com/2010/03/22/apache-cassandra-quick-tour/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let's set up a small system to work together with one little web app I did some years ago (at that time with MySql). Prepare a glossary for the Distributed Software Architecture Course for the fall. The data model should support two operations:&lt;br /&gt;&lt;br /&gt;* List all terms/explanations in alphabetic order (over the term of course)&lt;br /&gt;* List all terms/explanations in alphabetic order in a given interval&lt;br /&gt;&lt;br /&gt;Shouldn't be too difficult, once you forget about ACID. Actually, in this case, with the small amount of "use cases", it seems I can just copy the basic SQL idea, equating a table with a column family. How did the SQL look like?&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;CREATE DATABASE IF NOT EXISTS DSAGlossary;&lt;br /&gt;USE DSAGlossary;&lt;br /&gt;DROP TABLE IF EXISTS Reference;&lt;br /&gt;&lt;br /&gt;CREATE TABLE DSAGlossary.Reference (&lt;br /&gt; refID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,&lt;br /&gt; term VARCHAR(50) NOT NULL,&lt;br /&gt; description VARCHAR(250) NOT NULL,&lt;br /&gt; PRIMARY KEY (refID)&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;That doesn't look too difficult - the problems may arise with more cases. Here it's more or less the same structure - apart from the missing artificial primary key.&lt;br /&gt;&lt;pre&gt;create keyspace DSAGlossary;&lt;br /&gt;use DSAGlossary;&lt;br /&gt;&lt;br /&gt;create column family Reference with&lt;br /&gt;  comparator = UTF8Type and&lt;br /&gt;  column_metadata =&lt;br /&gt;  [&lt;br /&gt;      {column_name: term, validation_class: UTF8Type,&lt;br /&gt;                          index_type: KEYS},&lt;br /&gt;      {column_name: expl, validation_class: UTF8Type}&lt;br /&gt;  ];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We need this KEYS in order to have access to a column over the term. Feed this into the Cassandra implementation - in the Cassandra home directory:&lt;br /&gt;&lt;br /&gt;1. Start it with &lt;span style="font-size:100%;"&gt;&lt;span style="font-family: courier new;"&gt;bin/cassandra start&amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;2. Use the CLI to feed the script in:&lt;pre&gt;bin/cassandra-cli -host localhost -port 9160 -f glossary.txt&lt;br /&gt;Connected to: "Test Cluster" on localhost/9160&lt;br /&gt;1361c18a-7b18-11e0-b561-e700f669bcfc&lt;br /&gt;Waiting for schema agreement...&lt;br /&gt;... schemas agree across the cluster&lt;br /&gt;Authenticated to keyspace: DSAGlossary&lt;br /&gt;13eb63eb-7b18-11e0-b561-e700f669bcfc&lt;br /&gt;Waiting for schema agreement...&lt;br /&gt;... schemas agree across the cluster&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Sounds like a success (you're never completely sure); so add one entry:&lt;br /&gt;&lt;pre&gt;bin/cassandra-cli -host localhost -port 9160&lt;br /&gt;Connected to: "Test Cluster" on localhost/9160&lt;br /&gt;Welcome to cassandra CLI.&lt;br /&gt;&lt;br /&gt;Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit.&lt;br /&gt;[default@unknown] use DSAGlossary;&lt;br /&gt;Authenticated to keyspace: DSAGlossary&lt;br /&gt;[default@DSAGlossary] set Reference['Cassandra']['term']&lt;br /&gt;                     = 'Cassandra';&lt;br /&gt;Value inserted.&lt;br /&gt;[default@DSAGlossary] set Reference['Cassandra']['expl']&lt;br /&gt;                     = 'http://en.wikipedia.org/wiki/Apache_Cassandra';&lt;br /&gt;Value inserted.&lt;br /&gt;&lt;/pre&gt;Still fine! Get it back, maybe?&lt;pre&gt;[default@DSAGlossary] get Reference where term&lt;br /&gt;                     = 'Cassandra';&lt;br /&gt;-------------------&lt;br /&gt;RowKey: Cassandra&lt;br /&gt;=&amp;gt; (column=expl, value=http://en.wikipedia.org/wiki/Apache_Cassandra,  &lt;br /&gt;     timestamp=1305041351336000)&lt;br /&gt;=&amp;gt; (column=term, value=Cassandra,&lt;br /&gt;     timestamp=1305041338862000)&lt;br /&gt;&lt;br /&gt;1 Row Returned.&lt;/pre&gt;Ok! Next time: Get access from Java (or any other language).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-6997106621033144622?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/6997106621033144622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2011/05/more-cassandra.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/6997106621033144622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/6997106621033144622'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2011/05/more-cassandra.html' title='More Cassandra'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-3932278277873354695</id><published>2011-05-06T12:05:00.000-07:00</published><updated>2011-05-06T12:28:29.964-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='chess'/><category scheme='http://www.blogger.com/atom/ns#' term='minimax'/><title type='text'>Chess Search Algorithms 1: Minimax Search</title><content type='html'>Here's a series of little things I wrote around 10 years ago. Maybe it's time to resurrect them.  You probably would have guessed that from the Pascal-ish pseudocode anyway.&lt;br /&gt;&lt;br /&gt;It's all about basic Chess Search Algorithms - I wrote that mainly because I never felt too comfortable with the way they're coded in text books. Here "&lt;span style="font-family:courier new;"&gt;ref&lt;/span&gt;" before a parameter means that it should be passed by reference making it an out or in-out parameter; everything else is a value parameter.&lt;br /&gt;&lt;br /&gt;1. MiniMax&lt;br /&gt;&lt;br /&gt;Minimax search embodies two almost identical routines for the maximizing and minimizing player. It's usually less useful than NegaMax search  (next issue), since you have two pieces of code to maintain. Watch out, to make sure it works &lt;span style="font-weight: bold;"&gt;always &lt;/span&gt;evaluate from the max player's side - this will change with NegaMax!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;bestVal&lt;/span&gt;:   best value for max/min player&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;bestMove&lt;/span&gt;:  best move leading to this value&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Maximizing level&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;procedure maxSearch(ref bestVal,&lt;br /&gt;                   ref bestMove)&lt;br /&gt;if atLeaf then&lt;br /&gt; // leaf: static evaluation&lt;br /&gt; // from maxPlayer's side&lt;br /&gt; bestVal := evalu8(maxPlayer)&lt;br /&gt;else&lt;br /&gt; // generate successor moves...&lt;br /&gt; generate(moves,nMoves)&lt;br /&gt; // ...and preset return value&lt;br /&gt; bestVal := -infinity&lt;br /&gt;&lt;br /&gt;// loop over all moves&lt;br /&gt;for i := 1 to nMoves do&lt;br /&gt;  // execute move and call min player&lt;br /&gt;  makeMove(moves[i])&lt;br /&gt;  minSearch(succVal,reply)&lt;br /&gt;  // take back before continuing&lt;br /&gt;  retractMove(moves[i])&lt;br /&gt;&lt;br /&gt;// compare returned value: update value/move&lt;br /&gt;if succVal &amp;gt; bestVal then&lt;br /&gt;  bestVal  := succVal&lt;br /&gt;  bestMove := moves[i]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Minimizing level&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;procedure minSearch(ref bestVal,&lt;br /&gt;                 ref bestMove)&lt;br /&gt;// really (almost) identical&lt;br /&gt;if atLeaf then&lt;br /&gt;  // always evaluate from maxPlayer's side&lt;br /&gt;  bestVal := evalu8(maxPlayer)&lt;br /&gt;else&lt;br /&gt;  generate(moves,nMoves)&lt;br /&gt;  bestVal := infinity&lt;br /&gt;&lt;br /&gt;for i := 1 to nMoves do&lt;br /&gt;  makeMove(moves[i])&lt;br /&gt;  // now call the max player&lt;br /&gt;  maxSearch(succVal,reply)&lt;br /&gt; retractMove(moves[i])&lt;br /&gt;&lt;br /&gt;if succVal &amp;lt;  bestVal then&lt;br /&gt;  bestVal  := succVal&lt;br /&gt;  bestMove := moves[i]&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-3932278277873354695?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/3932278277873354695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2011/05/chess-search-algorithms-1-minimax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/3932278277873354695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/3932278277873354695'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2011/05/chess-search-algorithms-1-minimax.html' title='Chess Search Algorithms 1: Minimax Search'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-6933761107886894258</id><published>2011-05-05T10:50:00.000-07:00</published><updated>2011-05-05T17:50:22.317-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='telephoto'/><category scheme='http://www.blogger.com/atom/ns#' term='compression effect'/><category scheme='http://www.blogger.com/atom/ns#' term='wide-angle'/><title type='text'>How to move big buildings</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-8XB-SacZEmk/TcMscgvNkDI/AAAAAAAABgQ/545O2VAltwk/s1600/car1.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://1.bp.blogspot.com/-8XB-SacZEmk/TcMscgvNkDI/AAAAAAAABgQ/545O2VAltwk/s320/car1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5603371229714944050" /&gt;&lt;/a&gt; As we all know, walking is wearing out your muscles, soles and motivation. Wouldn't it be much nicer if it would just take a moment's thought to move your target closer? Look at the mile long walk to the building in the background on the picture to the left. The silvery car in the front is just a couple of steps away, but then the strenuous part beckons.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-jK3tvMc78DM/TcMssyRZAmI/AAAAAAAABgY/9PaoQ94NGT0/s1600/car2.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://2.bp.blogspot.com/-jK3tvMc78DM/TcMssyRZAmI/AAAAAAAABgY/9PaoQ94NGT0/s320/car2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5603371509299610210" /&gt;&lt;/a&gt;The magic unveils itself when you hire someone with big tools that can move buildings in a heartbeat. Actually, it looks like he pushed all and everything behind the silver car closer up - nice!&lt;br /&gt;&lt;br /&gt;Of course, that's cheating! In two respects, actually:&lt;br /&gt;&lt;br /&gt;1. I had to walk quite a bit away from the scene to take the second picture.&lt;br /&gt;&lt;br /&gt;2. The focal length of the lens went from wide (17mm = 27.2mm/35mm equivalent) to long (should call it "narrow", 200mm = 320mm/35mm equivalent).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-ogKjZipxAiI/TcMtjQWxBqI/AAAAAAAABgg/TkVL5KkN-iE/s1600/car3.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://4.bp.blogspot.com/-ogKjZipxAiI/TcMtjQWxBqI/AAAAAAAABgg/TkVL5KkN-iE/s320/car3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5603372445088155298" /&gt;&lt;/a&gt;So, combining a short walk with an increase in focal length had this "compression" effect. As opposed to some statements about this phenomenon, it's not the focal length that is responsible for it. The picture on the left was also shot with 17mm focal length, only from the same spot where the second picture was taken: Behold, the same "compression" effect! &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-BeQombLLr6s/TcMuixaJgXI/AAAAAAAABgo/AjiOuWNdZaI/s1600/car4.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://2.bp.blogspot.com/-BeQombLLr6s/TcMuixaJgXI/AAAAAAAABgo/AjiOuWNdZaI/s320/car4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5603373536292471154" /&gt;&lt;/a&gt;The reason: it was cropped out of the one on the right (hence the little blurriness and the weird white balance).&lt;br /&gt;&lt;br /&gt;So, what's responsible for the compression effect? Angle! Our friends W (the one with the wide-angle lens) and T (with the telephoto lens) are taking a picture of a tree so that it appears the same size in both sensors (layer A).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-mqIOKb9WRzA/TcM0DQ65tZI/AAAAAAAABgw/fnMVSngDKEo/s1600/angles.jpg"&gt;&lt;img style="float:left; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://4.bp.blogspot.com/-mqIOKb9WRzA/TcM0DQ65tZI/AAAAAAAABgw/fnMVSngDKEo/s320/angles.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5603379592065299858" /&gt;&lt;/a&gt;The house in the background (layer B) fills about a third of the frame for W but still almost the full frame for T. No wonder it looks closer. Since cropping has the same effect of reducing the angle, pictures 2 and 3 show the same compression effect.&lt;br /&gt;&lt;br /&gt;I assume that the confusion about perspective compression stems from the fact that the idea of a wide-angle lens is to get close to the subject, so the wide angle effect hits. Per se, the focal length has nothing to do with it (at least ideally).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-6933761107886894258?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/6933761107886894258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2011/05/how-to-move-big-buildings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/6933761107886894258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/6933761107886894258'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2011/05/how-to-move-big-buildings.html' title='How to move big buildings'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-8XB-SacZEmk/TcMscgvNkDI/AAAAAAAABgQ/545O2VAltwk/s72-c/car1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-6712068223142222322</id><published>2011-05-04T18:20:00.000-07:00</published><updated>2011-05-04T19:31:19.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bass'/><category scheme='http://www.blogger.com/atom/ns#' term='modes'/><title type='text'>Memorizing Modes</title><content type='html'>Right! After months of lazying around without playing, grab the bass and go back to getting the &lt;a href="http://www.cyberfretbass.com/theory/modes/101/index.php" target="_new"&gt;modes &lt;/a&gt;back engraved in the brain.&lt;br /&gt;&lt;br /&gt;Takes a couple of hours and then the fingers get them back in. Here's my way of memorizing them (as long as my fingers don't recall them automatically).&lt;br /&gt;&lt;br /&gt;Generally they come in two "basic shapes" (here for the bottom three strings):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;|---|-*-|-y-|-y-|-*-|---|&lt;/span&gt;         Major&lt;br /&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|-*-|-x-|-x-|-*-|---|&lt;br /&gt;&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|---|-*-|---|-*-|---|&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;|---|---|-*-|---|-*-|---|&lt;/span&gt;          Minor&lt;br /&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|---|-*-|-y-|-y-|-*-|&lt;br /&gt;&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|---|-*-|-x-|-x-|-*-|&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;For x and y we can have the lower position (1) or the higher position (2). So, for example,&lt;br /&gt;&lt;br /&gt;Mode I (Ionian) is "Major 1,2" (or systematically 4, 7)&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|-*-|---|-*-|-*-|---|&lt;br /&gt;&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|-*-|-*-|---|-*-|---|&lt;br /&gt;&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|---|-*-|---|-*-|---|&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mode ii (Dorian) is the only one that doesn't work that way (because it's the only minor scale with an undiminished 6th). We'll look at it in a moment.&lt;br /&gt;&lt;br /&gt;Mode iii (Phrygian) is "Minor 1,2" (systematically b2, 5)&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|---|-*-|---|-*-|---|&lt;br /&gt;&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|---|-*-|---|-*-|-*-|&lt;br /&gt;&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|---|-*-|-*-|---|-*-|&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Mode IV (Lydian) is "Major 2,2"  (systematically #4, 7)&lt;br /&gt;Mode V (Mixolydian) is "Major 1,1" (systematically 4, b7)&lt;br /&gt;Mode vi (Aeolian) is "Minor 2,2" (systematically 2, 5)&lt;br /&gt;Mode vii (Locrian) is "Minor 1,1" (systematically b2, b5)&lt;br /&gt;&lt;br /&gt;So, apart from Dorian it all works nicely (as long as you remember the Major/Minor alternations, but that's more or less trivial - I use uppercase roman for Major and lowercase roman for Minor. And, no!, that doesn't refer to &lt;a href="http://uwf.edu/computerscience/undergraduate/" target="_new"&gt;CS majors or minors&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;1,2&lt;br /&gt;??&lt;br /&gt;1,2&lt;br /&gt;2,2&lt;br /&gt;1,1&lt;br /&gt;2,2&lt;br /&gt;1,1&lt;br /&gt;&lt;br /&gt;Dorian is obviously Minor 2,2 but it has this pesky 6th that maybe &lt;a href="http://www.jacopastorius.com/" target="_new"&gt;Jaco Pastorius&lt;/a&gt; could have reached on the second string (well, at least starting at F#) - I can't. In any case, I memorize it as "Minor 2,2,+1" and use the third string for the 6th:&lt;br /&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;&lt;br /&gt;|---|-*-|-*-|---|-*-|---|&lt;br /&gt;&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|---|-*-|---|-*-|---|&lt;br /&gt;&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;|---|---|-*-|---|-*-|-*-|&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So it all comes out to&lt;br /&gt;1,2&lt;br /&gt;2,2,+1&lt;br /&gt;1,2&lt;br /&gt;2,2&lt;br /&gt;1,1&lt;br /&gt;2,2&lt;br /&gt;1,1&lt;br /&gt;&lt;br /&gt;The pattern is easy, except for Dorian, which I treat as a special case anyway. So, it boils down to 1,2 - 1,2 - 2,2 - 1,1 - 2,2 - 1,1. Not too difficult.&lt;br /&gt;&lt;br /&gt;With some special training in pattern recognition, the inquisitive mind now immediately stumbles on the questions: &lt;span style="font-style: italic;"&gt;What then is "Major 2,1" and "Minor 2,1"?&lt;/span&gt; Easy:&lt;br /&gt;&lt;br /&gt;Major 2,1: 1 2 3 #4 5 6 b7 8&lt;br /&gt;Minor 2,1: 1 2 b3 4 b5 b6 b7 8&lt;br /&gt;&lt;br /&gt;Well, they're obviously not modes; Minor 2,1 to me is Locrian with an undiminished 2nd - scaled back to Ionian that's a #1 and that's an &lt;a href="http://theinfiniteguitar.blogspot.com/2007/05/avoid-notes.html" target="_new"&gt;Avoid Note&lt;/a&gt; in my book. I'm not so sure about that with respect to Major 2,1. Without any experience, I guess the 2 could work as a &lt;a href="http://en.wikipedia.org/wiki/Nonchord_tone#Passing_tone" target="_new"&gt;Passing Note&lt;/a&gt; on V (Mixo) - I might have to try that...&lt;br /&gt;&lt;span style=" font-weight: bold;font-family:courier new;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-6712068223142222322?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/6712068223142222322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2011/05/memorizing-modes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/6712068223142222322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/6712068223142222322'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2011/05/memorizing-modes.html' title='Memorizing Modes'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-4060648120741623731</id><published>2011-05-02T05:26:00.000-07:00</published><updated>2011-05-03T20:13:26.317-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cassandra'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Setting up Cassandra under Ubuntu and VMWare</title><content type='html'>Nope! Not the Greek mythical figure; Apache &lt;a href="http://cassandra.apache.org/"&gt;Cassandra&lt;/a&gt;, the "Distributed Database". Let's see how that works...&lt;br /&gt;&lt;br /&gt;The issue is that I'm not sure if this beast runs together with OpenJDK, the web seems to be positive about the issue, but you never know (seems to become this year's catch phrase).&lt;br /&gt;&lt;br /&gt;As fas as I know, two disks are better than one. So, create another virtual disk under VMWare for this VM and check if it works:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo fdisk -l&lt;/span&gt;&lt;br /&gt;Yep! Shows up with "&lt;span style="font-family:courier new;"&gt;Disk /dev/sdb doesn't contain a valid partition table&lt;/span&gt;" - we should be able to change that...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo fdisk /dev/sdb&lt;/span&gt; - then "&lt;span style="font-family:courier new;"&gt;n&lt;/span&gt;" (new), "&lt;span style="font-family:courier new;"&gt;p&lt;/span&gt;" (primary), "&lt;span style="font-family:courier new;"&gt;1&lt;/span&gt;" and accept all settings, exit with "&lt;span style="font-family:courier new;"&gt;w&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Check back with "&lt;span style="font-family:courier new;"&gt;sudo fdisk -l&lt;/span&gt;" - it's &lt;span style="font-family:courier new;"&gt;dev/sdb1&lt;/span&gt; now. All as planned!&lt;br /&gt;&lt;br /&gt;Create an ext3 file system with "&lt;span style="font-family:courier new;"&gt;sudo mkfs.ext3 /dev/sdb1&lt;/span&gt;" (check!)&lt;br /&gt;&lt;br /&gt;Give it a nice name:&lt;span style="font-family:courier new;"&gt; sudo e2label /dev/sdb1 hd2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thank you... next!&lt;br /&gt;&lt;br /&gt;Downloaded the latest version of Cassandra from the website - I think there's also a way to use apt for that, but I'd really like to make sure I got the latest version (0.7.5).&lt;br /&gt;&lt;br /&gt;Unpack the archive into my home folder - I'm not in the mood to deal with permissions at this stage; it's going to be difficult enough. So, here's what we have:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/bin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/conf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/interface&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/javadoc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/lib&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and a couple of well-know readme, license etc. files.&lt;br /&gt;&lt;br /&gt;Check the readme: Tells you how to unpack the file (little late for that, but thanks anyway) and how to set up the logs. Let's do that!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo mkdir -p /var/log/cassandra&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo chown -R `whoami` /var/log/cassandra&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo mkdir -p /var/lib/cassandra&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo chown -R `whoami` /var/lib/cassandra&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next dreaded issue: ports. The&lt;a href="http://wiki.apache.org/cassandra/FAQ"&gt; Cassandra Wiki&lt;/a&gt; is clear about that:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;By default, Cassandra uses 7000 for cluster communication, 9160 for clients (Thrift), and 8080 for JMX. These are all editable in the configuration file or bin/cassandra.in.sh (for JVM options). All ports are TCP.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;8080, of course! As if there's no other choice of ports; everybody and his brother listens on 8080. Just joking - I know that makes sense!&lt;br /&gt;&lt;br /&gt;Change that in &lt;span style="font-family:courier new;"&gt;conf/cassandra-env.sh&lt;/span&gt; under the Cassandra install directory:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;JMX_PORT="8080"&lt;/span&gt; changed to &lt;span style="font-family:courier new;"&gt;JMX_PORT="10036"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now - last for this session - check if it responds to the CLI:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;~/apache-cassandra-0.7.5/bin/cassandra-cli&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yep! Something happens...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[default@unknown] connect localhost/9160;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Did I mention I very much dislike a prompt like "default@unknown"?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Connected to: "Test Cluster" on localhost/9160&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enough success for one night... More later!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-4060648120741623731?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/4060648120741623731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2011/05/setting-up-cassandra-under-ubuntu-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/4060648120741623731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/4060648120741623731'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2011/05/setting-up-cassandra-under-ubuntu-and.html' title='Setting up Cassandra under Ubuntu and VMWare'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-8543234159785729894</id><published>2011-04-29T04:43:00.000-07:00</published><updated>2011-04-30T16:46:42.202-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><category scheme='http://www.blogger.com/atom/ns#' term='glassfish'/><category scheme='http://www.blogger.com/atom/ns#' term='natty'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='openjdk'/><title type='text'>Finally back</title><content type='html'>Semester's almost over - grading almost done. Now for some fun: brand new toys!&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;24 inch monitor&lt;/li&gt;&lt;li&gt;Ubuntu Natty Narwhal (11.04) under VMWare Player&lt;br /&gt;&lt;/li&gt;&lt;li&gt;OpenJDK&lt;/li&gt;&lt;li&gt;Libre Office&lt;br /&gt;&lt;/li&gt;&lt;li&gt;NetBeans 7.0&lt;/li&gt;&lt;li&gt;GlassFish 3.1&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Life can be good! Now: setting up NetBeans under Natty. First attempt to run it all under Open JDK - it should work; let's see.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Install Open JDK: &lt;span style="font-family: verdana;font-family:lucida grande;" &gt;sudo apt-get install open-jdk-6-jkd&lt;/span&gt; (check!)&lt;/li&gt;&lt;li&gt;Run NetBeans 7 installer: sh netbeans-7.0-ml-linux.sh (don't sudo! - check!)&lt;/li&gt;&lt;li&gt;Add Tomcat - you never know!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Make a note about the locations: all under mu home directory (you never know!)&lt;/li&gt;&lt;li&gt;Open NetBeans, program "Hello, world!" (check!)&lt;/li&gt;&lt;li&gt;Set up the GlassFish server: ~/glassfish-3.1 does it&lt;/li&gt;&lt;li&gt;Start it, start admin console - it's running on 4848 (check!)&lt;/li&gt;&lt;li&gt;Will do Tomcat later - enough to play with GlassFish for the moment.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-8543234159785729894?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/8543234159785729894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2011/04/finally-back.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/8543234159785729894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/8543234159785729894'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2011/04/finally-back.html' title='Finally back'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-1100889711841012181</id><published>2009-07-30T09:46:00.000-07:00</published><updated>2009-07-30T09:47:20.247-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IP'/><category scheme='http://www.blogger.com/atom/ns#' term='RFC'/><title type='text'>RFC 2549 - IP over Avian Carriers with Quality of Service</title><content type='html'>&lt;a href="http://tools.ietf.org/html/rfc2549"&gt;RFC 2549 - IP over Avian Carriers with Quality of Service&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pfft - and 10 years later?? Nothing has been done! Nothing!&lt;br /&gt;&lt;br /&gt;Oh well&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-1100889711841012181?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/1100889711841012181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/07/rfc-2549-ip-over-avian-carriers-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/1100889711841012181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/1100889711841012181'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/07/rfc-2549-ip-over-avian-carriers-with.html' title='RFC 2549 - IP over Avian Carriers with Quality of Service'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-5598356012591640724</id><published>2009-07-28T06:04:00.000-07:00</published><updated>2009-07-28T06:04:52.601-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activeperl'/><category scheme='http://www.blogger.com/atom/ns#' term='iis7'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Running Perl on IIS 7 : Wade Hilmo : The Official Microsoft IIS Site</title><content type='html'>&lt;a href="http://blogs.iis.net/wadeh/archive/2009/04/13/running-perl-on-iis-7.aspx"&gt;Running Perl on IIS 7 : Wade Hilmo : The Official Microsoft IIS Site&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After hours getting ActivePerl to run on my 64-bit Vista IIS7, finally that's the thing that did it.&lt;br /&gt;&lt;br /&gt;Important: download the 32 bit version!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-5598356012591640724?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/5598356012591640724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/07/running-perl-on-iis-7-wade-hilmo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/5598356012591640724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/5598356012591640724'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/07/running-perl-on-iis-7-wade-hilmo.html' title='Running Perl on IIS 7 : Wade Hilmo : The Official Microsoft IIS Site'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-8808270771396734333</id><published>2009-07-15T20:04:00.000-07:00</published><updated>2009-07-15T20:21:07.618-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='photoshop'/><category scheme='http://www.blogger.com/atom/ns#' term='rule of thirds'/><title type='text'>100 in 100: The Rule of Thirds from Adorama Learning Center</title><content type='html'>&lt;a href="http://www.adorama.com/ALC/Article.aspx?id=8331"&gt;100 in 100: The Rule of Thirds from Adorama Learning Center&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7k1fcmL0KAQ/Sl6ZGZ9sgVI/AAAAAAAAA30/38G9hr2G1-I/s1600-h/thirds.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 216px;" src="http://2.bp.blogspot.com/_7k1fcmL0KAQ/Sl6ZGZ9sgVI/AAAAAAAAA30/38G9hr2G1-I/s320/thirds.jpg" alt="" id="BLOGGER_PHOTO_ID_5358888941945389394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Reminds me of something I learned some time ago - well, during an exhibition and some pro seminars, actually.&lt;br /&gt;&lt;br /&gt;Sometimes the RoT really doesn't work too well, like in this image which used some Photoshop to create this slightly strange appearance of a street portrait. I somehow liked the proportions and the idea - the man with his back to the main scene showing a detached attitude, so that's all very much ok. Problem: No "power point" on any thirds!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7k1fcmL0KAQ/Sl6aVundr5I/AAAAAAAAA38/scxMgK3Vbdk/s1600-h/thirds1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_7k1fcmL0KAQ/Sl6aVundr5I/AAAAAAAAA38/scxMgK3Vbdk/s320/thirds1.jpg" alt="" id="BLOGGER_PHOTO_ID_5358890304698953618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;What the speakers at the seminar did was obvious once someone tells you: You place the image into a mat via Photoshop (or Gimp, works just as well) in a way that now a power point of the whole print is on a third. Of course, that means the image is matted asymmetrically, but that gives it another unusual "twang".&lt;br /&gt;&lt;br /&gt;Finally, here's the result without the aux lines - it's set for a 3x2 ratio, changing that would of course mean to reposition the main image, but that shouldn't be too difficult.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7k1fcmL0KAQ/Sl6bOyEhPYI/AAAAAAAAA4E/Uk-_2IgBOMU/s1600-h/portrait1a.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_7k1fcmL0KAQ/Sl6bOyEhPYI/AAAAAAAAA4E/Uk-_2IgBOMU/s320/portrait1a.jpg" alt="" id="BLOGGER_PHOTO_ID_5358891284878671234" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-8808270771396734333?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/8808270771396734333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/07/100-in-100-rule-of-thirds-from-adorama.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/8808270771396734333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/8808270771396734333'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/07/100-in-100-rule-of-thirds-from-adorama.html' title='100 in 100: The Rule of Thirds from Adorama Learning Center'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7k1fcmL0KAQ/Sl6ZGZ9sgVI/AAAAAAAAA30/38G9hr2G1-I/s72-c/thirds.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-2336945352905303774</id><published>2009-06-16T10:07:00.000-07:00</published><updated>2009-06-16T10:08:54.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='twitter iran'/><title type='text'>Twitter / Search - #iranelection</title><content type='html'>&lt;a href="http://twitter.com/#search?q=%23iranelection"&gt;Twitter / Search - #iranelection&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looks like Twitter is in full swing! Smartmobs are rallying again...  Let's see if this will work!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-2336945352905303774?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/2336945352905303774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/06/twitter-search-iranelection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/2336945352905303774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/2336945352905303774'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/06/twitter-search-iranelection.html' title='Twitter / Search - #iranelection'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-3911207743712309276</id><published>2009-05-14T05:03:00.000-07:00</published><updated>2009-05-14T05:06:47.089-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wolfram alpha'/><title type='text'>Wolfram|Alpha Launch</title><content type='html'>Looks like &lt;a href="http://www.wolframalpha.com/"&gt;Wolfram|Alpha&lt;/a&gt; will go live on Friday, May 15 @ 7p.m. CDT. A life transmission is going to be seen &lt;a href="http://www.justin.tv/wolframalpha"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-3911207743712309276?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/3911207743712309276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/05/wolframalpha-launch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/3911207743712309276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/3911207743712309276'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/05/wolframalpha-launch.html' title='Wolfram|Alpha Launch'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-3118538348691863646</id><published>2009-05-11T16:20:00.000-07:00</published><updated>2009-05-11T16:31:19.377-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Say Hi to Hagrid</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7k1fcmL0KAQ/Sgiy9ICUOtI/AAAAAAAAAlA/pz7YemyrYXE/s1600-h/hagrid.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 253px; height: 253px;" src="http://3.bp.blogspot.com/_7k1fcmL0KAQ/Sgiy9ICUOtI/AAAAAAAAAlA/pz7YemyrYXE/s320/hagrid.jpg" alt="" id="BLOGGER_PHOTO_ID_5334710521819314898" border="0" /&gt;&lt;/a&gt;Indeed, now's the time to introduce the new kid: &lt;span style="font-weight: bold;"&gt;Hagrid &lt;/span&gt;- an old and wise former WinXP machine, now revitalized to run &lt;a href="http://www.ubuntu.com/products/WhatIsUbuntu/serveredition"&gt;Ubuntu Server 9.04&lt;/a&gt;, just in time to study &lt;a href="http://httpd.apache.org/"&gt;Apache httpd &lt;/a&gt;and &lt;a href="http://tomcat.apache.org/"&gt;Apache Tom&lt;/a&gt;&lt;a href="http://tomcat.apache.org/"&gt;cat&lt;/a&gt; in more depth.&lt;br /&gt;&lt;br /&gt;As a rule, all machines in our household are named after movie characters from Scrat - a long-gone laptop - over Yoda - my trusty Thinkpad - to Falkor, the Quad Core.&lt;br /&gt;&lt;br /&gt;And now Hagrid.&lt;br /&gt;&lt;br /&gt;Looks like Server installed fine, Gnome now sitting on top of it all - which might be not such a great idea, because it makes some updates really a bit troubling, but we'll see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-3118538348691863646?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/3118538348691863646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/05/say-hi-to-hagrid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/3118538348691863646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/3118538348691863646'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/05/say-hi-to-hagrid.html' title='Say Hi to Hagrid'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7k1fcmL0KAQ/Sgiy9ICUOtI/AAAAAAAAAlA/pz7YemyrYXE/s72-c/hagrid.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-7888534717569210242</id><published>2009-04-25T19:41:00.000-07:00</published><updated>2011-05-05T06:45:02.869-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dng. gimp. picasa'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe'/><title type='text'>Using DNG safely</title><content type='html'>&lt;a href="http://www.barrypearson.co.uk/articles/dng/safety.htm"&gt;Using DNG safely&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Interesting development, and I missed most of that, I admit. It looks like the only pieces of my software that can read this is Picasa 3 and (interestingly enough!) GIMP via UFRaw.&lt;br /&gt;&lt;br /&gt;For the moment, it doesn't look like a must to convert from my various RAWs into &lt;a href="http://www.adobe.com/products/dng/"&gt;DNG&lt;/a&gt;, but I'll play around with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-7888534717569210242?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/7888534717569210242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/04/using-dng-safely.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/7888534717569210242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/7888534717569210242'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/04/using-dng-safely.html' title='Using DNG safely'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-7618594520752214480</id><published>2009-04-02T17:26:00.000-07:00</published><updated>2009-04-02T17:46:33.324-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='smalltalk'/><title type='text'>More about Ruby - Briefly</title><content type='html'>Ok, I'm also training some gifted students at UWF to be competitive programmers, that means that I need to find some nice problems to solve, solve them myself and see how it goes.&lt;br /&gt;&lt;br /&gt;Let's try something fancy - The &lt;a href="http://www.cut-the-knot.org/ctk/Water.shtml"&gt;&lt;/a&gt;Problem of having two jugs with different integer capacities and a target volume that has to be reached by filling/emptying jugs or pouring the content of one jug into the other - with the minimum number of operations, of course!&lt;br /&gt;&lt;br /&gt;It's important to know how to do that, in case you have to &lt;a href="http://www.imdb.com/title/tt0112864/"&gt;prevent a bomb from exploding&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;In principle it's clear how to do it with Jugs with an arbitrary capacity (&gt; 0) and an arbitrary target value: Exhaustive search (breadth-first) through all the states and hope for the best.&lt;br /&gt;&lt;br /&gt;The actual implementation is a bit nasty, because you need to "ariadne-thread" all the states together to their immediate predecessors before placing them in the queue, so let's come up with a Queue class first.&lt;br /&gt;&lt;br /&gt;Ok! There actually is one, but it's always nice to check how you would do that in your host language - let's base it on arrays then:&lt;br /&gt;&lt;pre&gt;class Queue&lt;br /&gt; def initialize&lt;br /&gt;   @a = []&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt; def enqueue(x)&lt;br /&gt;   @a &lt;&lt; x  &lt;br /&gt; end&lt;br /&gt;&lt;br /&gt; def dequeue&lt;br /&gt;   @a.delete_at(0)&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt; def empty?&lt;br /&gt;   @a.empty?&lt;br /&gt; end&lt;br /&gt;end &lt;/pre&gt;Looks quite simple! These Ruby arrays are pretty flexible. If I could only remember to place this pesky ampersand in front of my instance variables! How may run-time errors did I get by omitting that.&lt;br /&gt;&lt;br /&gt;I'm not really crazy about static typing, so I think most errors are not really type-related in reality (well, maybe one or two a year).&lt;br /&gt;&lt;br /&gt;I love how Smalltalk lets you deal with identifiers: you have to declare them and there's no way I can sneak in a variable by misspelling the name! In Ruby I find such a problem at run-time, but I guess that's how you're supposed to learn it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-7618594520752214480?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/7618594520752214480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/04/more-about-ruby-briefly.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/7618594520752214480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/7618594520752214480'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/04/more-about-ruby-briefly.html' title='More about Ruby - Briefly'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-2447372136391402525</id><published>2009-03-25T16:18:00.000-07:00</published><updated>2009-03-25T16:31:17.332-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><title type='text'>Gmail - Settings</title><content type='html'>&lt;a href="http://mail.google.com/mail/?hl=en&amp;amp;tab=wm#settings/labs"&gt;Gmail - Settings&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Little did we know what we can actually do with Gmail. If you have a Gmail account the Gmail Labs offers some interesting ideas to use in your settings. Yes, I'm technically a &lt;a href="http://www.mozillamessaging.com/en-US/thunderbird/"&gt;Thunderbird &lt;/a&gt;affcionado, but Gmail offers a couple of things in the meantime that make it an interesting alternative.&lt;br /&gt;&lt;br /&gt;I know, Gmail is a bit "intrusive" to say the least, but apart from viable privacy concerns there are a couple of idea I really like:&lt;br /&gt;&lt;br /&gt;&lt;span class="rc"&gt;&lt;span style="font-weight: bold;"&gt;Undo Send&lt;/span&gt;: That's the main reason for looking into this a bit deeper - triggered by a &lt;a href="http://www.cnn.com/2009/TECH/03/25/gmail.labs.email/index.html"&gt;CNN article&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span class="rc"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mark as Read Button&lt;/span&gt;: Interesting it's not in the Gmail standard, sometimes I like to keep a message&lt;/span&gt; even without reading it; maybe I'll look at it later.&lt;br /&gt;&lt;br /&gt;&lt;span class="rc"&gt;&lt;span style="font-weight: bold;"&gt;Forgotten Attachment Detector&lt;/span&gt;:&lt;/span&gt; A heavenly idea! I'm famous for announcing attachments and not attaching them - mostly followed by an "Oops! I forgot to attach the attachment", in most cases with the attachment attached. I'm just waiting to make this blunder to see it it really works.&lt;br /&gt;&lt;br /&gt;I think I'll try some more, maybe there are some that are more useful than they sound.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-2447372136391402525?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/2447372136391402525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/03/gmail-settings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/2447372136391402525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/2447372136391402525'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/03/gmail-settings.html' title='Gmail - Settings'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-3433333939982570882</id><published>2009-03-15T09:08:00.000-07:00</published><updated>2009-03-15T09:12:18.567-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='retro chess'/><category scheme='http://www.blogger.com/atom/ns#' term='chess'/><category scheme='http://www.blogger.com/atom/ns#' term='mating problems'/><title type='text'>Mate in One</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7k1fcmL0KAQ/Sb0oI7YlW-I/AAAAAAAAADc/hGm4ergL6Z0/s1600-h/matein1.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://4.bp.blogspot.com/_7k1fcmL0KAQ/Sb0oI7YlW-I/AAAAAAAAADc/hGm4ergL6Z0/s320/matein1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5313447269211921378" /&gt;&lt;/a&gt;&lt;br /&gt;Gosh! I just found this little piece somewhere on an old old old website I created back in 2001 or so... White to move and mate!&lt;br /&gt;&lt;br /&gt;Oh, well... White mates with 1. a5xb6 e.p. &lt;br /&gt;&lt;br /&gt;Yes! Black's last move must have been b7-b5!&lt;br /&gt;&lt;br /&gt;Why? Think about it...&lt;br /&gt;&lt;br /&gt;Cheers&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-3433333939982570882?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/3433333939982570882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/03/mate-in-one.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/3433333939982570882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/3433333939982570882'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/03/mate-in-one.html' title='Mate in One'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7k1fcmL0KAQ/Sb0oI7YlW-I/AAAAAAAAADc/hGm4ergL6Z0/s72-c/matein1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-7777789923051133874</id><published>2009-03-13T06:08:00.000-07:00</published><updated>2009-03-13T09:36:34.877-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='object orientation'/><title type='text'>From Java to Ruby 1</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ruby-lang.org/images/logo.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 331px; height: 119px;" src="http://www.ruby-lang.org/images/logo.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;All right! After dabbling around in Java for more than a decade now, working in C++, Lisp and Smalltalk even before that, it's now time to expand the horizon a bit and get my hands on Ruby.&lt;br /&gt;&lt;br /&gt;It's promised to make things easier, faster and to speed up the development process significantly.&lt;br /&gt;&lt;br /&gt;Assuming you have some deeper knowledge about object-orientation in general and in Java in particular, let's start with a simple example: A trivial Java class vs. its version in Ruby.&lt;br /&gt;&lt;br /&gt;Here it is in Java - I won't use comments to save some space:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;public class Person {&lt;br /&gt; private String name;&lt;br /&gt; private int age;&lt;br /&gt;&lt;br /&gt; public Person(String name, int age) {&lt;br /&gt;     this.name = name;&lt;br /&gt;     this.age = age;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getName() {&lt;br /&gt;     return name;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public int getAge() {&lt;br /&gt;     return age;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setAge(int age) {&lt;br /&gt;     this.age = age;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String toString() {&lt;br /&gt;     return "A person named " + name + " aged " + age;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Nothing special here, just two instance fields, "name" is read-only (just a get method) and "age" is read/write (both get and set method).&lt;br /&gt;&lt;br /&gt;In Ruby this seems to be a bit more condensed:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;class Person&lt;br /&gt;  attr_reader :name, :age&lt;br /&gt;  attr_writer :age&lt;br /&gt;  def initialize(name, age)&lt;br /&gt;    @name = name&lt;br /&gt;    @age = age&lt;br /&gt;  end&lt;br /&gt;   def to_s&lt;br /&gt;    "A person named #{@name} aged #{@age}"&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Yep! It is more "condensed". Two reasons: No &lt;a href="http://en.wikipedia.org/wiki/Static_typing#Static_typing"&gt;static typing&lt;/a&gt; (I love that!) and the nice idea of declaring the accessibility of a variable directly (attr_reader means read access, attr_writer means write access).&lt;br /&gt;&lt;br /&gt;Also nice: Disambiguating instance fields by the "@" prefix - makes is optically clear you're referring to the instance field and not any old identifier that suddenly "slipped into the scope".&lt;br /&gt;&lt;br /&gt;Mains and stuff: next post.&lt;br /&gt;&lt;br /&gt;CU&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-7777789923051133874?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/7777789923051133874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/03/from-java-to-ruby-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/7777789923051133874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/7777789923051133874'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/03/from-java-to-ruby-1.html' title='From Java to Ruby 1'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-3840122704140618761</id><published>2009-03-11T06:20:00.000-07:00</published><updated>2009-03-11T06:21:05.416-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wearable computing'/><title type='text'>Pattie Maes demos the Sixth Sense | Video on TED.com</title><content type='html'>&lt;a href="http://www.ted.com/index.php/talks/pattie_maes_demos_the_sixth_sense.html"&gt;Pattie Maes demos the Sixth Sense | Video on TED.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oh yes! This seems to be one of the more fascinating ideas of the last time... Ultimate wearablity!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-3840122704140618761?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/3840122704140618761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/03/pattie-maes-demos-sixth-sense-video-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/3840122704140618761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/3840122704140618761'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/03/pattie-maes-demos-sixth-sense-video-on.html' title='Pattie Maes demos the Sixth Sense | Video on TED.com'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-7437634609849842410</id><published>2009-03-07T05:51:00.000-08:00</published><updated>2009-03-07T06:08:59.381-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='polaroid'/><title type='text'>A quick polaroid effect with the GIMP</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7k1fcmL0KAQ/SbJ8Cd99aKI/AAAAAAAAADU/vkIHYeCMrSk/s1600-h/polaroid.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 289px;" src="http://3.bp.blogspot.com/_7k1fcmL0KAQ/SbJ8Cd99aKI/AAAAAAAAADU/vkIHYeCMrSk/s320/polaroid.jpg" alt="" id="BLOGGER_PHOTO_ID_5310443292469323938" border="0" /&gt;&lt;/a&gt;That's just an outline - good thing I can use this blog to take notes rather than having this all stores in my little brain or in some obscure text files.&lt;br /&gt;&lt;br /&gt;The idea is to create a polaroid effect with GIMP, like shown here. Many ideas are out to do this in photoshop, the work in GIMP is similar.&lt;br /&gt;&lt;br /&gt;It's not as tricky as it sounds; some transparency issues are somewhat made easier in the meantime. So let's see&lt;br /&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Create a new image, here it's 300x300&lt;/li&gt;&lt;li&gt;In the selection tool select rounded corners with 5px radius&lt;/li&gt;&lt;li&gt;Copy the selection&lt;/li&gt;&lt;li&gt;Paste as new image&lt;/li&gt;&lt;li&gt;In the "Filters" menu, select Light and Shadow, then Drop Shadow. Make both offsets 5px. This filter creates the necessary Alpha layer - else it would take some work to do that!&lt;/li&gt;&lt;li&gt;Lock pasted image and drop shadow layer (just for safety reasons, in case you want to move them around)&lt;/li&gt;&lt;li&gt;Load the image you want to paste into the picture&lt;/li&gt;&lt;li&gt;Rescale to 250 pixels by whatever it produces&lt;/li&gt;&lt;li&gt;You might consider an "Unsharpen Mask" with 1 pixel&lt;/li&gt;&lt;li&gt;Select all of the picture, copy it.&lt;/li&gt;&lt;li&gt;Back to the frame: Paste as new layer&lt;/li&gt;&lt;li&gt;Place the caption, maybe rotate the text layer&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Save as .gif&lt;/li&gt;&lt;/ol&gt;That's it, I guess&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-7437634609849842410?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/7437634609849842410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/03/quick-polaroid-effect-with-gimp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/7437634609849842410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/7437634609849842410'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/03/quick-polaroid-effect-with-gimp.html' title='A quick polaroid effect with the GIMP'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7k1fcmL0KAQ/SbJ8Cd99aKI/AAAAAAAAADU/vkIHYeCMrSk/s72-c/polaroid.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-2741419243451028250</id><published>2009-03-05T10:57:00.000-08:00</published><updated>2009-03-05T15:43:09.839-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='abstract data types'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='complexity'/><title type='text'>Abstract data types</title><content type='html'>Interesting topic - I used to follow the definition not unlike given here: &lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Abstract_data_type"&gt;Abstract data type - Wikipedia, the free encyclopedia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But somehow I'm not so sure anymore. The reason is that the separation of interface and implementation - which is a very good idea, don't get me wrong! - makes it difficult to do a thorough complexity analysis of an algorithm that uses this particular ADT. &lt;br /&gt;&lt;br /&gt;This cannot be done correctly, unless the operations of the ADT can be analyzed in terms of their intrinsic complexity, at least aymptotically.&lt;br /&gt;&lt;br /&gt;Obviously, this depends on the well-hidden implementation of the ADT. E. g. a "Priority Queue" can be implemented in a way that insertion and removal have a complexity of O(log n) or in a way that one of them is O(n) and the other is O(1).&lt;br /&gt;&lt;br /&gt;This also raises the question of how to perform an average-case analysis of the surrounding algorithm - would you need to specify the average complexity of the ADT operations as well (e. g. as amortized costs).&lt;br /&gt;&lt;br /&gt;Let me see what's around on the subject - there's a 1980 paper by Ehrig and Mahr. Just need to get a hold of it.&lt;br /&gt;&lt;br /&gt;Until then&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-2741419243451028250?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/2741419243451028250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/03/abstract-data-types.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/2741419243451028250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/2741419243451028250'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/03/abstract-data-types.html' title='Abstract data types'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-8132633016257432201</id><published>2009-03-03T04:35:00.001-08:00</published><updated>2009-03-03T05:22:21.871-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='legal'/><title type='text'>Photography Legality</title><content type='html'>&lt;a href="http://www.krages.com/phoright.htm"&gt;Bert P. Krages Attorney at Law Photographer&amp;#39;s Rights Page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/berndok/316903603/" title="Paris Streets 2 by BerndOK, on Flickr"&gt;&lt;img style="float:left;;margin-bottom:8px; margin-right:8px" src="http://farm1.static.flickr.com/122/316903603_3aedd330d1_m.jpg" width="240" height="160" alt="Paris Streets 2" /&gt;&lt;/a&gt; As a photographer it looks like you're living on the edge a bit if you're taking pictures of anything else but the eight feet tall sunflower in your backyard.&lt;br /&gt;&lt;br /&gt;Bert Krages has put together a leaflet that helps to assess the process of &lt;strong&gt;taking&lt;/strong&gt; pictures and it seems that under United States law this process is relatively liberal in favor of the photographer (I just wonder who will now take on this law - after I used this term "liberal").&lt;br /&gt;&lt;br /&gt;It does &lt;strong&gt;not&lt;/strong&gt; address the issue of "publishing" yet - i. e. it seems you can take hundreds of pictures in public places (I do that a lot), but you might be supposed to let them rot in your binders, drawers or on your hard drive.&lt;br /&gt;&lt;br /&gt;I think I'll explore more of this issue, especially the role of "Model Releases" in a later post.&lt;br /&gt;&lt;br /&gt;Cheers&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-8132633016257432201?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/8132633016257432201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/03/photography-legality.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/8132633016257432201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/8132633016257432201'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/03/photography-legality.html' title='Photography Legality'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/122/316903603_3aedd330d1_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2988881835967653892.post-2134316867378931392</id><published>2009-03-02T20:20:00.000-08:00</published><updated>2009-03-02T21:04:08.820-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='photoshop'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>GIMP - The GNU Image Manipulation Program</title><content type='html'>&lt;a href="http://www.gimp.org/"&gt;GIMP - The GNU Image Manipulation Program&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let's face it: Photoshop still is the standard, but&lt;br /&gt;the GIMP is slowly catching up in terms of power and popularity. &lt;br /&gt;&lt;br /&gt;Yes: Photoshop is still my tool of choice, but more and more tasks are pushed over to GIMP, because once you're getting into the learning curve with it - even coming from Photoshop - it starts to grow on you.&lt;br /&gt;&lt;br /&gt;Guess, I'll talk a bit more about both in the coming weeks, probably by first outlining the various sources of information and then going into some slightly more advanced ideas to work out in GIMP.&lt;br /&gt;&lt;br /&gt;It's worth it, it seems...&lt;br /&gt;&lt;br /&gt;Until then&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2988881835967653892-2134316867378931392?l=berndok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://berndok.blogspot.com/feeds/2134316867378931392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://berndok.blogspot.com/2009/03/gimp-gnu-image-manipulation-program.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/2134316867378931392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2988881835967653892/posts/default/2134316867378931392'/><link rel='alternate' type='text/html' href='http://berndok.blogspot.com/2009/03/gimp-gnu-image-manipulation-program.html' title='GIMP - The GNU Image Manipulation Program'/><author><name>Bernd OK</name><uri>http://www.blogger.com/profile/13141104398997100251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-PeINOWNLa1U/TcDGLoWeUxI/AAAAAAAABfg/zMtgm5zY_RA/s220/me4.jpg'/></author><thr:total>0</thr:total></entry></feed>
