<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Posts on RomanT.net</title><link>https://www.romant.net/posts/</link><description>Recent content in Posts on RomanT.net</description><generator>Hugo -- 0.164.0</generator><language>en</language><copyright>This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International License.</copyright><lastBuildDate>Wed, 02 Jan 2019 15:03:09 +1100</lastBuildDate><atom:link href="https://www.romant.net/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>New Year's Start</title><link>https://www.romant.net/2019/01/new-years-start/</link><pubDate>Wed, 02 Jan 2019 15:03:09 +1100</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2019/01/new-years-start/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/0.8.9/jquery.csv.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.core.min.js"></script>

<canvas id="heart" width="800" height="500"></canvas>

<script>
    var rawCSV = 'heart.csv'

    var data, labels, dataPoints;
    var config;

    function drawCanvas() {
        config = {
            type: 'line',
            scaleFontColor: 'red',
            data: {
                labels: labels,
                datasets: [{
                    label: 'Recorded HR Value',
                    pointStyle: "circle",
                    data: dataPoints,
                    backgroundColor: "rgba(255, 99, 132, 0.5)",
                    borderColor: "rgba(255, 99, 132, 0.5)",
                    showLine: false,
                    lineTension: 0,
                    borderWidth: 0,
                    pointRadius: 7,
                    pointHoverRadius: 13,
                }],
                borderWidth: 1
            },
            options: {
                responsive: true,
                legend: {
                    display: true,
                    labels: {
                        fontColor: 'rgb(255, 99, 132)'
                    },
                    position: "bottom"
                },
                hover: {
                    mode: 'index'
                },
                scales: {
                    xAxes: [{
                        type: 'time',
                        time: {
                            displayFormats: {
                                second: 'HH:mm:ss',
                                minute: 'HH:mm:ss',
                                hour: 'HH:mm'
                            }
                        },
                        display: true,
                        gridLines: {
                            display: false
                        },
                        ticks:
                        {
                            fontColor: "#c6cddb"
                        }
                    }],
                    yAxes: [{
                        display: true,
                        gridLines: {
                            color: '#c6cddb5d'
                        },
                        ticks:
                        {
                            fontColor: "#c6cddb"
                        }
                    }]
                },
                title: {
                    display: true,
                    text: 'First Day of Data From the Apple Watch in 2015',
                    fontColor: "#c6cddb"
                }
            }
        };

        var ctx = document.getElementById('heart').getContext('2d');
        window.myLine = new Chart(ctx, config);
    };

    function obtainData() {
        $.ajax({
            type: "GET",
            url: rawCSV,
            dataType: "text",
            success: function (response) {
                data = $.csv.toObjects(response);
                labels = _.map(data, 'endDate');
                dataPoints = _.map(data, 'value');

                drawCanvas();
            }
        });
    };

    $(document).ready(function () {
        obtainData();
    });

    window.onload = function () {

    };

</script>
<p>According to the blog&rsquo;s <a href="https://www.romant.net/2007/04/in-the-beginning/">first post</a> - I began in 2007. Vast majority of the published ( and those that died in draft form ) were a result of trying to fix things I came upon, and the associated learnings: be it automating WebSphere deployment 😜 or a GPS logger&rsquo;s integration with Lightroom.</p>
<p>Here are a few new things I learnt week.</p>
<h2 id="wordpress-migration">Wordpress Migration<a href="#wordpress-migration" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>I killed my WP hosting sometime in early &lsquo;18, and just archived the content. Upon a number of conversations early on with <a href="https://twitter.com/grantorchard">Grant</a> - I contemplated a conversion to Jekyll. But did not have the drive at the time to make the leap. So the WP archive to Jekyll &lsquo;.md zip&rsquo; sat there for ~6 months.</p>
<p>A few days ago over lunch I had a quick perusal of static generators, and their associated ecosystem trajectories. Picked Hugo as the path forward.</p>
<p><strong>The Good</strong></p>
<ul>
<li>Hugo&rsquo;s build, and validation is ⚡️ FAST, and Go&rsquo;s Templating Language reminds me of HandlebarsJS. Fact that Hugo has limited theming &amp; customisations is a boon to focus and productivity</li>
<li>Markdown everywhere 😍</li>
</ul>
<p><strong>The <del>Broken</del> Still In Limbo</strong></p>
<ul>
<li>Hugo&rsquo;s Customisation
<ul>
<li>Albeit limited in themes and out of the box iintegrations ( a matter of time ) means in some instances like SEO, when you hit roadblocks - you have to design or add them yourself. Plus I really should have got the redirects sorted out prior to changing the structure</li>
</ul>
</li>
<li>Authoring Experience
<ul>
<li>Should not have match the quality, and fidelity of what Medium.com has created - but it has set the standard of what is possible in the browser for content creation and curation</li>
</ul>
</li>
<li>Decisions on Image optimisation
<ul>
<li>ie. LQIP, Progressive JPEG re-encoding</li>
<li>CDNs vs DAMs vs localised imagemagick</li>
</ul>
</li>
<li>LD-JSON content extension and integration</li>
<li>Figuring out when to stop.. do I really need to write a custom Hugo shortcode to display Apple Watch HR data ?</li>
</ul>
<h2 id="netlify">Netlify<a href="#netlify" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>Immediately upon stumbling across <a href="https://netlify.com">Netlify</a>, they piqued my interest. They have some notable pedigree from Github, Docker, Serverless but most importantly I love the user experience of their product: a streamlined barebones application platform. They have thought through the <a href="https://medium.com/netlify/how-netlifys-deploying-and-routing-infrastructure-works-c90adbde3b8d">landscape of customer demands</a>, competitors&rsquo; ability, and are now navigating accordingly. Just when you started to think that application hosting, and delivery is a done deal with same set of tools throughout, Netlify re-applies the pattern atop a highly optimising storage, and service coupling back-end to provide a very differentiated out of the box experience.</p>
<h2 id="tmux--kubernetes">tmux &amp; Kubernetes<a href="#tmux--kubernetes" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>After an immersive week of Kubernetes deployments, and some <a href="http://wavefront.com">Wavefront</a>, it was starting to be a pain to easily monitor the K8s state whilst trying to script several scaling and failover scenarios. Constant Terminal.app switching was inevitable. Jetisoning my love of <code>screen</code> it was time to adjust.</p>
<p>After a little bit of prodding tmux with panels for logs, hosts, deployments, services .. ugh ..</p>
<p>or I could have just used <a href="https://github.com/astefanutti/kubebox">kubebox</a> 🤷‍♂️</p>
<p><img src="kubebox.png" alt=""></p>
<h2 id="visualising-apple-health-data">Visualising Apple Health Data<a href="#visualising-apple-health-data" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<h3 id="tldr-version">TL;DR Version<a href="#tldr-version" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>Add <a href="https://gist.github.com/romant/e7262a5b9e2f3b9e2bc0ac8c46a1282e">chart.html</a> to your <code>layouts/shortcodes</code> folder.</p>
<p>Within your content use:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="p">{{</span><span class="o">&lt;</span> <span class="nx">chart</span> <span class="nx">id</span><span class="o">=</span><span class="s2">&#34;meh&#34;</span> <span class="nx">width</span><span class="o">=</span><span class="s2">&#34;800&#34;</span> <span class="nx">height</span><span class="o">=</span><span class="s2">&#34;500&#34;</span> <span class="nx">title</span><span class="o">=</span><span class="s2">&#34;keh&#34;</span> <span class="nx">data</span><span class="o">=</span><span class="s2">&#34;heart.csv&#34;</span> <span class="o">&gt;</span><span class="p">}}</span>
</span></span></code></pre></div><h3 id="the-step-by-step">The Step-by-Step<a href="#the-step-by-step" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>After a quite poor run with <a href="https://twitter.com/james65535">James</a>, I decided to see how I went on the trusty phone, since Apple ⌚ tracks all movement. Quickly realised this is an opportunity for a post-dinner mini project.</p>
<p>Lets walk through how to create the headline graphic with <a href="https://www.chartjs.org/">ChartJS</a> in Hugo.</p>
<h3 id="get-the-data">Get The Data<a href="#get-the-data" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>The team at <a href="http://www.tdda.info/in-defence-of-xml-exporting-and-analysing-apple-health-data">Test-Driven Data Analysis</a> does an excellent job of showing how you can get the data off the watch, but most importantly convert it from XML to something more usable.</p>
<p>The fun starts once you have the CSVs.</p>
<p>Listing the generated <code>apple_health_export</code> at this point should present you with :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c" data-lang="c"><span class="line"><span class="cl"><span class="mf">1.3</span><span class="n">G</span> <span class="n">export</span><span class="p">.</span><span class="n">xml</span>
</span></span><span class="line"><span class="cl"><span class="mi">385</span><span class="n">M</span> <span class="n">export_cda</span><span class="p">.</span><span class="n">xml</span>
</span></span><span class="line"><span class="cl"><span class="mi">318</span><span class="n">M</span> <span class="n">ActiveEnergyBurned</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">189</span><span class="n">M</span> <span class="n">BasalEnergyBurned</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">140</span><span class="n">M</span> <span class="n">DistanceWalkingRunning</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">89</span><span class="n">M</span> <span class="n">HeartRate</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">72</span><span class="n">M</span> <span class="n">StepCount</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">17</span><span class="n">M</span> <span class="n">AppleExerciseTime</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mf">7.9</span><span class="n">M</span> <span class="n">DistanceCycling</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mf">4.1</span><span class="n">M</span> <span class="n">FlightsClimbed</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">397</span><span class="n">K</span> <span class="n">HeartRateVariabilitySDNN</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">79</span><span class="n">K</span> <span class="n">SwimmingStrokeCount</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">77</span><span class="n">K</span> <span class="n">DistanceSwimming</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">63</span><span class="n">K</span> <span class="n">RestingHeartRate</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">62</span><span class="n">K</span> <span class="n">WalkingHeartRateAverage</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">12</span><span class="n">K</span> <span class="n">VO2Max</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mf">5.3</span><span class="n">K</span> <span class="n">convert</span><span class="p">.</span><span class="n">py</span>
</span></span><span class="line"><span class="cl"><span class="mi">971</span><span class="n">B</span> <span class="n">BodyMass</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">940</span><span class="n">B</span> <span class="n">UVExposure</span><span class="p">.</span><span class="n">csv</span>
</span></span><span class="line"><span class="cl"><span class="mi">497</span><span class="n">B</span> <span class="n">Height</span><span class="p">.</span><span class="n">csv</span>
</span></span></code></pre></div><h3 id="create-the-hugo-chart-js-layout-shortcode">Create the Hugo Chart JS Layout Shortcode<a href="#create-the-hugo-chart-js-layout-shortcode" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>The inside of HeartRate.csv looks like this the following, multipled by hundreds of thousands of rows. So pick a subsection.</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">sourceName</th>
					<th style="text-align: center">endDate</th>
					<th style="text-align: center">more</th>
					<th style="text-align: right">value</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left">Roman&rsquo;s Apple Watch</td>
					<td style="text-align: center">2015-05-22 13:05:21 +1100</td>
					<td style="text-align: center">..</td>
					<td style="text-align: right">81</td>
			</tr>
			<tr>
					<td style="text-align: left">Roman&rsquo;s Apple Watch</td>
					<td style="text-align: center">2015-05-22 13:43:56 +1100</td>
					<td style="text-align: center">..</td>
					<td style="text-align: right">65</td>
			</tr>
	</tbody>
</table>
<p>Charts themselves are quite straight forward, but you will need to map the data first</p>
<p>Recommended some dirty cut or awk magic, and cleanup if you&rsquo;re going to be sharing / exporting, as naturally it does have your Watch&rsquo;s identifier included.</p>
<p>Using lodash, map it to distinct <code>dataPoints</code>, and <code>labels</code> Arrays for injestion by ChartJS.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="cl"><span class="nx">data</span> <span class="o">=</span> <span class="nx">$</span><span class="p">.</span><span class="nx">csv</span><span class="p">.</span><span class="nx">toObjects</span><span class="p">(</span><span class="nx">response</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nx">labels</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="s1">&#39;endDate&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nx">dataPoints</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="s1">&#39;value&#39;</span><span class="p">);</span>
</span></span></code></pre></div>]]></content></item><item><title>Stage Lessons from Technical Demos</title><link>https://www.romant.net/2018/12/stage-lessons-from-technical-demos/</link><pubDate>Thu, 27 Dec 2018 14:57:22 +1100</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2018/12/stage-lessons-from-technical-demos/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><img src="techsummit-general.jpg" alt=""></p>
<p>What works for brown-bag &amp; &ldquo;throw your screen up&rdquo;-type demo-versations does not always translate onto a stage in front of hundreds &amp; thousands of people.</p>
<p><img src="techsummit-stages.jpg" alt=""></p>
<p>Together with some brilliant technologists earlier this year, we had the privilege of showcasing VMware&rsquo;s ability to enrich and accelerate the app development lifecycle at our yearly TechSummit&rsquo;s Keynote.</p>
<blockquote>
<p>What constitutes steps <em>towards</em> a half-decent technical demo ?</p>
</blockquote>
<p>Arguably many of the below thought spurs can and should be applied to smaller spaces and any presentation. Yet the &rsquo;theatre&rsquo; on the stag necessitates considerations which in some case make it difficult to impossible to compare to its coffee table or Meetup brethren.</p>
<h1 id="feedback-from-theroom">Feedback from the room<a href="#feedback-from-theroom" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<p>Outside of few, very vocal seated individuals, there is little presenter-audience interaction.</p>
<p>The near blinding flood-lit stages, although at first disorienting - they do a great job of disconnecting you from the audience. And if executed well, provide the feeling of being alone on that stage; great for those with nerves 👋, but not so good for getting body language queues from the audience. Especially since you&rsquo;re no longer presenting to individuals but to a single crowd.</p>
<p><img src="techsummit-1.jpg" alt=""></p>
<p>You cannot compress preparation time. Rehearse, rehearse, rehearse, yet be cautious of balancing the content rehearsal, without maiming the personalities. As with all presentations .. do enjoy them.</p>
<p>Validate the entire run-through with those :</p>
<ul>
<li>In the auditorium that are able to provide some honest and pointed course correction. Have them sit and provide feedback, whether they follow your story-line and and aren&rsquo;t getting dizzy with scrolling confused with all the window changes.</li>
<li>That are colourblind</li>
<li>That represent your target audience - ie technologists, to validate the narrative so you can do any necessary fine tuning</li>
</ul>
<h1 id="dress-the-content-for-theroom">Dress the content for the room<a href="#dress-the-content-for-theroom" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<p>Dark or white background, typeface selection to match eligibility, aesthetics and again - intended audience. Be cautious and selective about each, and screen whether each window and click is aiding the immediate narrative and goal of the presentation.</p>
<h1 id="cli--shell-demonstrations">CLI &amp; Shell Demonstrations<a href="#cli--shell-demonstrations" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<p>Aside from this being a topic deserving its own post, you should  need a really GOOD reason to dive into command-line during a presentation - and it better be legible. What is a simple scroll on your screen, translates to terminal velocity at a distance.</p>
<blockquote>
<p>Upon typing a number of commands - the output will dominate the screen as the cursor is now at the bottom. Ask - are those in the back still able to see what you are narrating ? Try and keep to 1–2 commands per terminal screen invocation. <code>CTRL + L</code> is your friend here.</p>
</blockquote>
<p>Later in the day, during lunch - I had a Solutions Architect from the US, thank me for using the <a href="https://github.com/adobe-fonts/source-code-pro">same font</a> whenever any <code>code</code> was shown on the screen. Wait - someone paid attention to that ?</p>
<p>From the slides, to the terminal to the text editor font size - the night prior, during ( our first rehearsal with all participants ), all of those were adjusted specifically to fit with the room, and the distance people would sit away from the screens. Perhaps a little 😅 OCD, but not only was the work justified after the comment from our stateside comrade, but these small, seemingly inconsequential changes and mannerisms make an enormous difference to helping people follow and understand what is being shown.</p>
<figure>
  <img src="techsummit-grant.jpg">
  <figcaption>night before rehearsal | Grant - 'I have not slept for these many nights preparing this demo'</figcaption>
</figure>
<h1 id="challenge-the-audience-withrespect">Challenge the Audience - with Respect<a href="#challenge-the-audience-withrespect" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<p>Paraphrasing <a href="https://www.linkedin.com/in/bruce-davie/">Bruce</a>&rsquo;s frequent advice to the team - &lsquo;do not forget the origins&rsquo;. Effectively - try, and design the presentation flow with an explanation of the fundamentals first.</p>
<p><img src="techsummit-ooda.png" alt=""></p>
<p>We often fall prey to our own wishes to push forward, and dig into the <em>perceived</em> most exciting, important and relevant topics, only to discover that we left the audience at a disadvantage. Name the changes, highlight the shift, and always point out the <strong>reason</strong> of why significant &amp; relevant changes enhance their world.</p>
<p>Only by explaining the history, will the majority be able to truly appreciate and respect the delta of any advances.</p>
<h1 id="limit-the-scope-focus">Limit the Scope &amp; Focus<a href="#limit-the-scope-focus" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<p>&ldquo;Would it not be great if we could .. &quot; was not a good start. One of the inherent limitations to larger stages is the time constraint of making sure you finish on time. This requires the team to be able to say &rsquo;no&rsquo; to many opportunities to add more material.</p>
<blockquote>
<p>Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.</p>
</blockquote>
<blockquote>
<p> - Antoine de Saint-Exupery</p>
</blockquote>
<p><img src="techsummit-macaque.jpg" alt=""></p>
<p>James&rsquo; pragmatism always brought us back to our focal area - &ldquo;at the end of this session we wish to demonstrate&rdquo; :</p>
<ul>
<li><strong>what</strong> - pitfalls exist in a development process</li>
<li><strong>how</strong> -  an increasing level of feedback improves quality and project velocity</li>
<li><strong>products</strong> - across VMware&rsquo;s Software Defined Datacentre portfolio that can enable Application Platform Capabilities within an enterprise</li>
</ul>
<figure>
  <img src="techsummit-lifecycle.png">
  <figcaption>a showcase of how to stop error propagation</figcaption>
</figure>
<p>When a topic is dear to your heart, it is easy to go too deep or off on a tangent - especially with some over excited adrenal glands. This is where having gone through the rehearsals you create muscle memory of triggers for the story line and bring you back on point.</p>
<p>Whatever you do, try not to come up with an analogy on the spot that you think will resonate or humorous. // guilty</p>
<h1 id="preparation--live-vsrecorded">Preparation | Live vs. Recorded<a href="#preparation--live-vsrecorded" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<p>There comes a time ( hopefully early ) where you must decide whether you will be doing a live demonstration, narrating a recording or as with some &lsquo;click throughs&rsquo; try and fake live usage.</p>
<p>Literally upon landing in Hong Kong, two days before showtime - David discovered that the entire environment around which we built the demos around has carked itself. After spending some time in debug mode ( read : laptop being taken to a bar ), it was decided to just redeploy the entire showcase to another provider all together. Given the flexibility today in defining everything through code from underlying infrastructure, to application infrastructure like Kubernetes deployments to entire CI / CD pipelines which include Wavefront Dashboards.. made the whole ordeal so much more manageable.</p>
<p> - </p>
<p>Erring on the side of a technical audience, and whenever am watching - I prefer to spend copious amounts of time preparing for live delivery over recorded. James - the voice of reason, asked for recorded demos to be available during the keynote, so at the very least, the night prior we did the screen captures.</p>
<h1 id="wrap-up">Wrap Up<a href="#wrap-up" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<p>The whole team travels quite a bit. It was not a dramatisation of us doing for the first time the complete physical rehearsal the night before. There were days we would hear nothing from some of the members, but when they came to the checkpoint meetings - they brought the goods. 
What this experience has taught me, through the ebbs and kicks of technological dependancies, relying on the right team that has a sense of purpose of what and why they&rsquo;re doing something - allows for exceptional experiences.</p>
<p>With that, an enormous THANK YOU to <a href="https://www.linkedin.com/in/james-mcafee-38a3814b/">James McAfee</a>, <a href="https://www.linkedin.com/in/grantorchard/">Grant Orchard</a>, <a href="https://www.linkedin.com/in/davlloyd/">David Lloyd</a> and <a href="https://www.linkedin.com/in/clementw/">Clement Wong</a> for delivering an outstanding session with many lessons that we can all take into the future.</p>
<h1 id="the-team">The Team<a href="#the-team" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<figure>
  <img src="techsummit-team.png">
  <figcaption>the team</figcaption>
</figure>
<h1 id="references">References<a href="#references" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<ul>
<li>Macaque -<a href="http://www.4apes.com/de/news/item/1376-http-www-bbc-com-earth-story-20150818-chimps-living-in-the-stone-age-ocid-ww-social-link-twitter">Mark MacEwen/NPL</a></li>
<li>OODA Loop - <a href="https://www.digitalistmag.com/cio-knowledge/2017/12/27/machine-learning-manufacturing-production-ooda-loop-05679010">D!gitalist</a></li>
</ul>
]]></content></item><item><title>Is a Business School, a foie gras Factory?</title><link>https://www.romant.net/2014/10/is-a-business-school-a-foie-gras-factory/</link><pubDate>Thu, 30 Oct 2014 17:39:49 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2014/10/is-a-business-school-a-foie-gras-factory/</guid><description>the pursuit of an MBA reveals a hidden lesson in the corporate education schemes</description><content type="text/html" mode="escaped"><![CDATA[<h2 id="situation">Situation<a href="#situation" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>Aside from Betteridge’s law for the headline, one of the reasons for which I embarked on pursuing an Executive MBA is that I wanted to bridge my engineering and technical background with that of commerce, economics, corporate finance, considerations for strategy and its implications on building an enterprise; ‘the business fruit salad’ … I wanted to learn.</p>
<p><img src="/images/2014/10/i-robot-2004-42-g1.jpg" alt=""></p>
<p>Having now completed a few courses, for me, the old adage of “perception equals reality” is not a truism across all courses (more on this next time). I will preface that the following experiential verbiage may be different to that of other schools, but anecdotally via colleagues, friends, and people that I met whilst studying on planes and airport lounges that offered their advice / experience — the issues am about to describe are de rigueur for an MBA education here in Australia.</p>
<h2 id="problem">Problem<a href="#problem" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>The most prominent disconnect is between original thought and espoused validity of the content being delivered. But first lets understand the structure and workflow of the quasi-learning process that Australian Executive MBA’s look to provide.</p>
<p>At the beginning of each course, you are couriered an A4 binder, dense enough that were it dropped from a metre above ground, it would result in instant death for any medium sized pet playing catch underneath. Not to get too captain-Greenpeace here, but many many trees are hurt in the description of Porter’s model; and I believe anyone investing $4,050 AUD per subject, would have the IQ and bank reserves to be able to print portions of the material if necessary. Opening the said binder, undoubtedly provides much glee to the course coordinators who meticulously foraged the latest licensed articles from Harvard Business School’s — HBR for remotely sounding affiliations with their subject, with carefully centre-justified quotes whose longevity would be more impressive as cursive tattoos just above the derriere; and whilst good curation is a valuable skill, mere copy+paste regurgitation of another business school’s collateral is not.</p>
<blockquote>
<p>In lies the crux. Beyond paraphrasing (well referenced of-course) business tabloid thinking of matrix organisations, conflict resolution, team norming mantra and adding page numbers .. very little original thought is actually added to these class notes.
The learning methodology employed here is loosely wrapped around the following formula:</p>
</blockquote>
<h1 id="grade--assignments--class-15h-per-week--workshop-5h--exam-3h">Grade = Assignments + Class (1.5h per week) + Workshop (5h) + Exam (3h)<a href="#grade--assignments--class-15h-per-week--workshop-5h--exam-3h" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<p>Using the binder as the guide, you typically end up spending around 10-15 hours per week per subject. Which I believe is very reasonable.</p>
<figure>
  <img src="/images/2014/10/unsw_desks.jpeg">
  <figcaption>Last Exam • Managing of People & Organisations</figcaption>
</figure>
<p>The classes, and workshops are driven by a facilitator, but as expected, unfortunately not all are made equal. Some compliment the material with their successful experience and insightful points on framing topics and their application whilst others use it as a soap box for their acute, ‘one size fits all’ approach.</p>
<p>I queried the studying of not simply the past and the forcing of various industries into very specific moulds, but new and counter-routine ways in which some businesses are being structured today, i.e. holacracy, relevance of Porter to co-opetition…, these were immediately dismissed. It was made clear that only successful and valid opinion that has experienced academic rigor is to be discussed, not some quack notions; which I do, honestly believe is a very fair argument. Yet my bringing up of ideas outside the curriculum was not to simply anoint the latest trend as the “right” way and be a thorn in the facilitators proverbial, but to leverage the intellectual power of the immediate class and discuss what they will face when finishing their MBA, and note issues that will inevitably creep into their workplaces in the near future.</p>
<p>After a heated exchange, I was unequivocally told that the :</p>
<blockquote>
<p>purpose of the class is not to view and analyse existing and possible future approach to business thinking, but to “enable me to pass the exam”.</p>
</blockquote>
<p>Surprised, I asked whether “…this is an educational facility, or a business of generating tick-box MBA’s”. Perhaps naïve, or marketed-to well, I wholeheartedly hoped it was the former, but the lack of an audible response and a stern gaze from the facilitator clearly signalled otherwise.</p>
]]></content></item><item><title>So… I started an MBA</title><link>https://www.romant.net/2013/10/so-i-started-an-mba/</link><pubDate>Sun, 20 Oct 2013 00:00:13 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2013/10/so-i-started-an-mba/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><img src="/images/2013/10/Screen-Shot-2013-10-20-at-00.42.36-.png" alt=""></p>
<p>Not a light (… or cheap) decision.</p>
<p>Took a few years to think about it - but finally made the leap. Am now enrolled in the Executive MBA at <a href="http://www.asb.unsw.edu.au/futurestudents/postgraduate/agsmmba/mbaexecutive/Pages/default.aspx">AGSM</a>. This will immediately not be a review of their programme, but will morph into it as the months ( and years ) progress.</p>
<p>After numerous talks with friends and colleagues that have gone through an MBA, those that started and some that bailed. It was imperative for me to understand the reasons behind each decision.</p>
<p>Contrary to majority of those with whom I&rsquo;ve spoken, and a number of those in the current class, am not doing it to change my job. I love what I did yesterday and what I do today. To me it is simple. As the few posts here would indicate, coming from an engineering background, I found it important to not be so obtusely focused on technology alone. But rather the manner in which I can help make it as transparent to those consuming and interacting with services underpinned by it.</p>
<p>The greatest value of the MBA so far has been a concoction of several attributes:</p>
<ul>
<li>Discipline of attendance and the need to learn new things. Some call it study, but for me that has a negative, wrote-learning connatation, that I highly discourage. Studying ≠ learning</li>
<li>Group discussions - whoa! I&rsquo;ve arranged flights around my classes so that I can learn through osmosis and where I can, add back. These are the best and most vital in my opinion opportunities to get an insightful view from someone elses experience</li>
</ul>
<h2 id="school">School<a href="#school" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>There&rsquo;s a plethora of brainwashed prestige-orientated school rankings available from <a href="http://rankings.ft.com/businessschoolrankings/rankings">FT</a>, <a href="http://www.economist.com/whichmba/full-time-mba-ranking">Economist</a> and <a href="http://www.businessweek.com/bschools/rankings">Businessweek</a> as well as many others. Criteria that were important to me were:</p>
<ul>
<li><strong>no GMAT exam</strong> - say what you will, but am not sitting again for the HSC, or equivalent</li>
<li><strong>location</strong> - am not always in Sydney, so an ability to attend a class elsewhere is important. Make sure that the institution you pick, provides a facility to walk into a class that is most likely to be in a location you&rsquo;ll be traveling to often. This is easier said than done, especially if your role requires you to cover a wide geographic region</li>
<li><strong>flexibility</strong> - for the times that you&rsquo;re unable to attend  class at all, you want to make sure that you have access to all content that is possibly going to be covered</li>
<li><strong>your experience</strong> - one of the reasons I held back from starting the MBA earlier is that I couldn&rsquo;t add much to the class that I would be attending. Inversely, I too would be getting very little from it; as the course-work is a framework for your experience</li>
<li><strong>experience of attendees / pedigree</strong> - as I mentioned earlier, you will learn more from those around you, than you will from pure notes. This is where it really matters of who is in your class, and where the prestige/ranking unfortunately matters</li>
<li><strong>digital acceptance and leadership</strong> - not all schools are alike. This is one area where AGSM is not just behind the eight-ball but significantly lacking, and I didn&rsquo;t realise how badly until I started. This will require its own post, but in summary - AGSM believes that supplying all material for study as PDF&rsquo;s is ticking the  &lsquo;flexibility&rsquo; and &lsquo;quality&rsquo; boxes</li>
</ul>
<h2 id="tips">Tips<a href="#tips" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>This won&rsquo;t carry too much weight, as at the time of writing this, am just half-way through the first subject. But having seen a number of other successful students and how they take to the course coupled with what&rsquo;s worked for me:</p>
<ul>
<li><strong>study group</strong> - yup. The gatherings of the un-cool. Do it. Organise one immediately after orientation day. Make sure it has a good cross-section of ages, opinions and importantly - roles. If you are an engineer, and there&rsquo;s another one looking for a study group - run immediately in the opposite direction. I started the MBA to get an understanding of the breadth of business dynamics and its applications. Not to see your favourite gcc argument combo.</li>
<li><strong>time management</strong> - perhaps the most obvious one. Put away at least an hour each night not for catching up on House of Cards but to cover off material and anything raised during class discussions / study sessions</li>
<li><strong>be ahead</strong> - whatever you do, don&rsquo;t fall behind. Chances are, you&rsquo;ll be working at the same time, and you never know when your job will kick you in the nuts. Be ready for it, as study will be the first thing to take the back seat in importance. Have the ability to take a week off, without being affected</li>
</ul>
<p>The point I made above which relates to the cost, please don&rsquo;t think of it as purely financial. There&rsquo;s a significant personal commitment of time, energy and sacrifices you&rsquo;ll have to make with personal relationships to see it through. I settled on AGSM, as it stood out more than the others in the vicinity mapped to what I needed from the University. So far, not bad.</p>
<p>That&rsquo;s it for tonight.</p>
]]></content></item><item><title>How AWS taught SSD's to sprint the marathon with DynamoDB</title><link>https://www.romant.net/2012/07/how-aws-taught-ssds-to-sprint-the-marathon-with-dynamodb/</link><pubDate>Mon, 02 Jul 2012 19:18:45 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2012/07/how-aws-taught-ssds-to-sprint-the-marathon-with-dynamodb/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><a href="https://twitter.com/bortoelnino">Graham</a> spends a lot of his time tuning and finding the cause of performance issues on some of the largest WebSphere Portal installations. Inevitably during our recent conversation we turned the topic to SSD&rsquo;s, and performance considerations of database workloads atop.</p>
<p>Interestingly the most visible SSD proponent and database service is none other than Amazons AWS service DynamoDB. Launched earlier this year, a database service which can be scaled at the turn of the knob, whilst offering performance, availability and the NoSQL feature-set. Considering the whole premature klonking-out with small-block, highly-randomised IO that hits the SSD controllers, you&rsquo;d think a very ambitious undertaking.</p>
<p>SSD&rsquo;s are great, but not a panacea for all workloads, <em>in their raw state</em>; especially for write-skewed database workloads. One of the largest causes of headaches for SSD Controller manufacturers and those looking to optimize workloads on SSD&rsquo;s is Write Amplification, otherwise known as the variable amount of operations or re-writes of the original size that have to occur before a write is actually processed / stored by the disk.</p>
<p>The conversation reminded me of a post by <a href="http://highscalability.com/blog/2012/5/14/dynamodb-talk-notes-and-the-ssd-hot-s3-cold-pattern.html">Todd Hoff</a> who attended an AWS session of &ldquo;DynamoDB for Developers&rdquo;, and wrote :</p>
<blockquote>
<p>Initially they ran into performance problems due to SSD garbage collections cycles</p>
</blockquote>
<p>This is inevitable. In my <a href="http://www.slideshare.net/tarnavski/ssd-101">VMUG talk</a> from last week, I refer to the Controller, and rather its FTL (Flash Translation Layer) as the black box of the device, where all the secret sauce of the unit lives. This isn&rsquo;t by mistake, as all the IP around the type of algorithms to use for wear levelling, garbage collection or any internal process resides within.</p>
<figure>
  <img src="/images/2012/07/flash-controller.png">
  <figcaption>• SSD controller</figcaption>
</figure>
<p>A single SSD within a single host, can cope with a lot of write-abuse, as given even a few minutes of &lsquo;idle&rsquo; time, can effectively &ldquo;defragment&rdquo; its block + page layouts, and thus provide a buffer for the next onslaught. Although en-masse, where AWS operates, this simply will not work. As you will have many thousands of users and transactions in the hundreds of millions (+speculation), the drive will not have time to rest and carry out the vital to its survival, levelling and Garbage Collection.</p>
<p>As the folk over at Tintri have shown, when SSD&rsquo;s are pummelled to a point of saturation OR effectively outside the boundary of when the internal algorithms perform cleanup, the performance or rather the predictability of said performance is significantly diminished. Below you can see latencies of nearly 300ms for an SSD device.</p>
<figure>
  <img src="/images/2012/07/tintri.png">
  <figcaption>• tintri latency - source: tintri blog</figcaption>
</figure>
<p>When you&rsquo;re operating a on a significant scale, you can&rsquo;t have &ldquo;unknown&rdquo; hold you back, so that&rsquo;s why (+speculative mode) Amazon worked directly with the manufactures of their SSD suppliers to have a say in:</p>
<ul>
<li>When and how GC kicks in</li>
<li>RAID design across individual cells (similar to vRAID within Violin)</li>
<li>Granularity of block mapping
<ul>
<li>How blocks are read+cached+written, and aligned DIRECTLY for DynamoDB&rsquo;s block-sized, in order to not necessarily alleviate, but minimise re-writes</li>
</ul>
</li>
<li>Locality of writes</li>
</ul>
<p>The last being most interesting, and I believe an absolute <em>must</em> for the future of SSD to have an enduring life in the enterprise. Applications, or rather file-systems and thus API&rsquo;s should allow for the ability to direct or at least specify the inter-relationship of data being written. Simply dumping blocks and forgetting about them is simple, but has dire consequences for the life of the storage medium in this case. Surrounding writes, or data operations with meta about them allows for solutions such as DynamoDB to exist and flourish. This requires a very tight integration between the software and hardware. There&rsquo;s a reason Apple is one of the largest NAND / SSD suppliers (direct to consumer) out there, and why they bought Anobit, the Flash-controller firm last year. Go ponder.</p>
]]></content></item><item><title>Cloud Bursting, a reality check</title><link>https://www.romant.net/2012/04/cloud-bursting-a-reality-check/</link><pubDate>Wed, 18 Apr 2012 13:52:17 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2012/04/cloud-bursting-a-reality-check/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><img src="/images/2012/04/cloud-unicorn.png" alt=""></p>
<blockquote>
<p>Not saying it&rsquo;s impossible, but uploading, converting, VMDK/ OVF/AMIs, starting them, adding IP&rsquo;s to loadbalancers… brr - is a joke at best.</p>
</blockquote>
<blockquote>
<p>— Roman Tarnavski (@romant) <a href="https://twitter.com/romant/status/192191309010833408">April 17, 2012</a></p>
</blockquote>
<p>Working with a heavily enterprise-led customer base, I was excited to see an article looking specifically at how large corporates can extend their workloads into the cloud, within the industry this is commonly referred to as cloud bursting and unicorn spotting.</p>
<p>Last night I read a post by Aditya over at Savvis that looks at &ldquo;horizontal application scaling into the cloud&rdquo;, and what such a <a href="http://blog.savvis.com/2012/04/cloud-burst-three-steps-for-enterprise-scaling.html">solution</a> will encompass.</p>
<p>I take an issue not with the article, but the concept itself in the current incarnation when its applied to the area of enterprise applications.</p>
<hr>
<p>In order for a workload to be able to &lsquo;burst&rsquo;, and as helped by the dictionary it must be able to &ldquo;break open or apart suddenly and violently&rdquo;. When was the last time you&rsquo;ve seen the tightly-coupled layers of any application be able to be broken apart without induced downtime? There are interdependencies not only surrounding applications but the infrastructure supporting them.</p>
<p>The utopia that seems to dominate the cool-aid drinking cloud echo-chamber is an all-public consumption model, where public-only / single-provider is the method for all IT service delivery. Reality is, in privacy, process and control-centric government and enterprise environments <em>some</em> data will always remain in a highly controlled and self-managed environments.</p>
<p>For me, CB&rsquo;s most realistic use-case is going from logical-local or private premises to an external provider, what Forrester terms &lsquo;virtual-private&rsquo;.</p>
<p>In order for CB to be possible, I see two camps developing:</p>
<ol>
<li>The interface between infrastructure, management and monitoring must be very clearly defined to allow for tight integration between all components and thus provide a higher awareness of actions being carried out. Such as performance re-balancing, or disaster mitigation process instantiation</li>
</ol>
<ul>
<li>This is where over the last 2 years we&rsquo;ve seen companies playing the converged infrastructure card, and spend copious $&rsquo;s on R&amp;D, integration, testing and product delivery</li>
</ul>
<ol>
<li>Applications must be designed with an &ldquo;expect-to fail&rdquo; approach - a discussion which if memory serves right was between <a href="http://twitter.com/reillyusa">@reillyusa</a> and <a href="http://twitter.com/mreferre" target="_blank">@mreferre</a>. In summary, by taking care of failure at a higher layer, specific to the knowledge of your application, it&rsquo;s cheaper than having to design an extensive-feature-rich, all use-case covering container</li>
</ol>
<ul>
<li>Single most potent poster-child of this is Netflix with their Chaos Monkey, and continual &amp; purposeful destruction of systems to test, and thus prevent un-expected failures</li>
</ul>
<p>Both have their merits in todays market, and for shops which are not tech-savvy and have extensive legacy baggage or who&rsquo;s main purpose isn&rsquo;t IT differentiation, the first choice is a step in the right direction. On the other hand, if you are developing applications for the new world, creating scalable services and are full of zeal to produce the best possible architecture in your niche, then the latter choice is IMO a good approach.</p>
<p>Whatever the correct choice for your bussiness, one constant remains, you need to begin at the application.</p>
]]></content></item><item><title>NAND is dead, long live NAND</title><link>https://www.romant.net/2012/03/nand-is-dead-long-live-nand/</link><pubDate>Tue, 27 Mar 2012 23:05:43 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2012/03/nand-is-dead-long-live-nand/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>A question was raised internally the other night, specifically looking at the balance between performance and reliability of NAND devices; asked as a result of a paper titled &ldquo;The Bleak Future of NAND Flash Memory&rdquo;. I must admit, sensationalism and geek link-bait executed to perfection.</p>
<figure>
  <img src="/images/2012/03/endurance-performance-ftl.png">
  <figcaption>• Endurance vs Performance vs FTL Capability</figcaption>
</figure>
<p>The paper, written by Laura M. Grupp, John D. Davis and Steven Swanson does make some very valid points, and more importantly it is backed with empirical data - which I adore.</p>
<h4 id="in-summary">in summary<a href="#in-summary" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>The <strong>latency</strong> will be affected by the diminishing size of the manufactured die, and as we approach 12nm, the performance as measured in read response time will increase from being ~20µs to ~25µs, or have a delta of 0.005ms.</p>
<p>Most significant write <strong>throughput</strong> decrease has already occurred between the NAND addressable capacity increasing to 256GB. When you start looking at 1TB to 4TB transition, we&rsquo;re losing less than 250MB/s. Easily alleviated with multiple smaller cards.</p>
<p>Most evident sentence which should be used to ground the academic nature of the article is:</p>
<blockquote>
<p>fastest hard drives can sustain no more than 200 IOPs, and the slowest SSD configuration we consider achieves over 32,000 IOPs</p>
</blockquote>
<p>So if I were to lose say 15/20 or even 30% of that performance in IOPS per addressable card, and the response time was a hideous 30µs even … am not sure that&rsquo;s quite such a bad trade-off for a 4TB of NAND love.</p>
<h4 id="clusters-to-the-rescue">clusters to the rescue<a href="#clusters-to-the-rescue" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>The gloom was very well painted at the beginning of the paper, but as you get beyond prophetic statements and consider the generational shifts that have appeared between tape, myriad of rotating disk, and now Flash for primary storage; you start to realise a single constant. Flash technology is not here to replace spinning disk, but to augmented the delivery of application IO.</p>
<p>As an application stands today, it still hasn&rsquo;t changed its consumption model of the underlying block IO, so for the time-being, fundamental principles of smaller, purpose-chosen storage-devices working as part of a larger RAID-set will continue to result in a significant performance uplift. There are a number of Flash drive and array manufacturers today already designing clusters at not only intra-device at the chip-level, but also across multiple cards in the OS. Each with its own benefits, and each surpassing the metrics Laura et. al claim will slow the adoption of Flash.</p>
<p>For those that read The Innovator&rsquo;s Dilemma may remember that &ldquo;performance oversupply is an important factor driving the transition&rdquo; - which we&rsquo;re flooded with on a monthly basis with IOPS records. Only difference now, with excess idle computational capability within the arrays, coupled with smarts around Hierarchical Storage Management (HSM), we can deliver that IO faster than ever before with Flash, but also tap the blended sets of primary storage based on <em>old</em> variations of spinning disk. All provided to the application as a single, seamless stream of superfast bytes.</p>
<p>Lets not split hairs, Flash is here to stay, and in its current incarnation will continue to evolve, reduce latency to microseconds, and drive throughput beyond what a practical amount of duct-taped-together spinning disk can amass.</p>
<h5 id="references">References<a href="#references" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h5>
<ol>
<li>The Bleak Future of NAND Flash Memory - <a href="http://cseweb.ucsd.edu/users/swanson/papers/FAST2012BleakFlash.pdf">link</a></li>
</ol>
]]></content></item><item><title>Measuring NAND Longevity</title><link>https://www.romant.net/2012/03/measuring-nand-longevity/</link><pubDate>Sat, 03 Mar 2012 10:13:11 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2012/03/measuring-nand-longevity/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>No secret that NAND/Flash/SSD drives are fundamentally different to their spinning cousins. Yet given the relative lack of high-visibility maturity of NAND technologies within the enterprise, adoption of standards has yet to proliferate. Specifically around the determination of failure rate.</p>
<p>When we start looking at availability of mechanical drives or most components inside a server, we first refer to the MTBF.</p>
<figure>
  <img style="background-color: silver; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);" src="/images/2012/03/6e8c6ffd43a244835fb4c9b6a58d10c2.png">
  <figcaption>• My helpful screenshot</figcaption>
</figure>
<p>The consumer-grade disks are generally rated at several thousand hours, whereas enterprise-grade drives typically see 1.3million+ hours of operation.</p>
<blockquote>
<p>Due to the differences between spinning and SSD disk, it isn&rsquo;t always appropriate to use MTBF as a measurement of the drives availability.</p>
</blockquote>
<p>The NAND memory cell within the SSD doesn&rsquo;t act in the same fashion as a spinning-disk block-abstraction. It must first be erased, prior to a write being carried out; unlike the spinning medium where a simple overwrite is possible.</p>
<p>The bits within a NAND cell are registered by electrons moving through a membrane/tunnel-oxide. It is responsible for keeping those electrons in check.</p>
<p><img src="/images/2012/03/floating-oxide.png" alt="Program / Erase Cycle"></p>
<p>Gradually, over many program/erase operations the oxide starts to wear out. It is this event that should be avoided, as it will slowly start to cause single-bit errors, and cell locations that expect a 0 will be met with a friendly 1.</p>
<p>For this reason, the Flash Transformation Layer, responsible for all the internals of NAND management &amp; carries out wear-leveling operations which evenly spread the load across hopefully all NAND cells.</p>
<p>Whilst looking at SSDs, there are SLC, MLC, and recently eMLC based flash memory. Difference being the amount of bits that are stored in the individual NAND cells. SLC has a single, whilst MLC/eMLC store two bits. In a lot of cases they&rsquo;re actually exactly the same physical die, and what separates SLC from MLC/eMLC is the aforementioned FTL, amount of reserved space for the load balancing, and capability of the onboard ECC. This results in tunnel oxide in an SLC-rated drive having a typical life of around 100,000 program/erase cycles and 10,000 for MLC.</p>
<p>Now that you can see, that -most- of the wear on the drive occurs during cells actually being written to, and not idle time, given lack of moving components. With nothing changing, the larger the drive coupled with better FLT, the longer the drive will endure.</p>
<p><img src="/images/2012/03/endurance-size.png" alt=""></p>
<p>The reality check comes in the form of manufacturing processes, and as AnandTech points out, with the reduction in die size, results in extra sensitivity required to read each bit - there&rsquo;s an inevitable hit in individual endurance of the cells. Yet the performance has been clearly increasing with each generation of die-size reduction, which is a result of the gain achieved in the controller power and thus any ECC coupled with greater reserved capacity on the disk has a net effect of - higher performance, and <em>total</em> better longevity.</p>
<h2 id="nand-endurance">NAND Endurance<a href="#nand-endurance" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>Instead of looking at a mechanical, time-driven metric, the best way to calculate endurance of the drive is stress the oxide tunnel, and see how many times it can be trespassed, which translates to the amount of bits that can be written.</p>
<p>A standard that only several manufacturers have started to adopt is the JESD218 which gives an Endurance Rating in Terabytes Written (TBW). It also nicely classes client vs enterprise workloads where something as simple as the Power on state is measured (among others… see references).</p>
<h3 id="client">Client<a href="#client" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<ul>
<li>40ºC</li>
<li>8hrs/day</li>
</ul>
<h3 id="enterprise">Enterprise<a href="#enterprise" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<ul>
<li>55ºC</li>
<li>24hrs/day</li>
</ul>
<blockquote>
<p>based on a use scenario in which the SSDs are actively used for some period of time during which the SSDs are written to their endurance ratings</p>
</blockquote>
<p>Most importantly the standard is not using just time as a function by which to measure, but the actual endurance level. Therefore when you see a 20PB &ldquo;TBW Enterprise&rdquo; rating on a drive, you can quickly determine that the endurance of the drive over a 5 year period offers an ability to write 11 Terabytes per day [20*1024/(5*365)].</p>
<p>Next time you&rsquo;re picking a drive, be weary of the correct metric being used to show you how long the unit will actually last. Knowing that each application is different, with its own workload profile - you will be able to easily figure out how long the said drive will last.</p>
<h2 id="references">References<a href="#references" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<ol>
<li>
<p><a href="http://storagecommunity.org/blogs/stephenfoskett/archive/2011/11/22/ssd-is-not-the-best-way-to-use-flash-memory-in-storage.aspx">SSD is Not the Best Way To Use Flash Memory in Storage</a></p>
</li>
<li>
<p><a href="http://www.anandtech.com/show/4043/micron-announces-clearnand-25nm-with-ecc">Micron&rsquo;s ClearNAND: 25nm + ECC, Combats Increasing Error Rates</a></p>
</li>
<li>
<p><a href="www.jedec.org/sites/default/files/docs/JESD218.pdf">Solid-State Drive (SSD) Requirements and Endurance Test Method</a></p>
</li>
<li>
<p><a href="https://tech.ebu.ch/docs/techreview/trev_2011-Q3_ssd_poijes.pdf">SSDs heaven or hell? The pros and cons of using NAND flash memory</a></p>
</li>
</ol>
]]></content></item><item><title>Lima, a day with zë Germans</title><link>https://www.romant.net/2011/10/lima-a-day-with-ze-germans/</link><pubDate>Sun, 09 Oct 2011 12:52:09 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/10/lima-a-day-with-ze-germans/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>That wonderful feeling of someone rummaging within the room when you&rsquo;re trying to sleep is further enhanced by small whispers in a foreign language. None other than the smoothest to the ear, like a broken chainsaw - German.</p>
<p>As my eyes were pried open, I uttered a somewhat able &lsquo;hola&rsquo; to the newly found adjacent bunk-bed companions. To which one of them nicely reciprocated - &ldquo;You look damaged&rdquo;. Now that&rsquo;s how you say &ldquo;hello&rdquo;!</p>
<p>All started with having nearly missed the flight in Buenos Aires, it was a pleasure to embark on a long-ish flight to Lima. The service was superb, food enticing, and surprising of all - metal cutlery. It also helps when the flight crew is pleasant to look at. Arrival at the hostel was post the mandatory airport-taxi haggling. Another pleasant surprise awaited; the Kokopelli hostel is situated in the Miraflores district, which for the un-initiated is one of the largest tourist traps and entertainment areas within Lima or as I refer to as cleaner version of &ldquo;Sydney&rsquo;s &lsquo;Cross&rdquo;. The whole place was alive with music and energy as a result of a few thousand back-packers; with fitting entertainment within an area not larger than a square kilometre.</p>
<p>The first stop was a pizza-sponsored dinner. Upon walking through the little street of restaurants and clubs, the abundant maître d&rsquo;s from each establishment do their best to hustle you inside. Having had the pleasure of enjoying a so-called &lsquo;pizza&rsquo; in Buenos Aires, I was hesitant to subject myself to it again, to be fair, if you want 3cm of nothing but a cheese with an oil volcano on the plate, then Argentina has the best pizza in the world. Fortunately Peru didn&rsquo;t miss the memo on the preparation, and appropriate calorie level of this fine culinary specimen, and delivered on a somewhat passable pizza.</p>
<p>Following destination was a salsa club, about 5 doors down. Here I witnessed feats of impressive flexibility and gracefulness of middle-aged men dancing with such zeal, that it was simply a pleasure to watch. Some time has passed, during which further blood dilution occurred, which had a direct correlation with my self-confidence, and supposed ability to perform same moves. The locals were very helpful in instructing a gringo in the art of the Salsa for the duration of the stay. The bed-crash at the hostel occurred at an estimated 5am.</p>
<hr>
<p>Meet Christoph, the transport economist and Nora, the dental explorer. Once Chris explained to me what he does, whereby he deals with a branch of economics with a mixture of civil and economy-incentive engineering, I simply wished our own CityRail employed these &lsquo;German Efficiency Engineers&rsquo;. Chris, how about you come to work in Oz? Our government needs you.</p>
<p>Nora on the other hand, spent the morning picking the most minute flaws in my teeth. It was a great way to incentivise me not to open my mouth for the rest of the day.</p>
<p>Once the ritual of breakfast was concluded, we all banded together to have lunch; so we headed into the city. Being easily impressed, I was delighted that the bus into town, didn&rsquo;t have to share the same road as the rest of the horn-loving, lane-ignorant road citizens of Peru. The bus got its own, dedicated lane, separated by median strips; a simple way of guaranteeing QoS. For lunch, we had the famous raw-fish Ceviche, some ill-hydrated urine looking warm beverage that was quite sweet, and surprisingly tasty. Whilst everyone went for the safe bet, chicken + rice, I ended up having some what I later discovered not overly well cooked local octopus.</p>
<figure>
![](/images/2011/10/MG_7986.jpg)
<figcaption>
• Ceviche - marinated fish. Tasty! •
</figcaption>
</figure>
<p>Now that we had some sustenance to go on, we proceeded to walk about town. Having decided to spend a small fortune of Peru Sol&rsquo;s on some tramp stamps also known as material country flags for being vagrants in other lands, we then had a democratic discussion as to the location of each flag upon our bags, especially the USA one, perhaps I can stitch it out of sight, to the bottom.</p>
<p>We witnessed a holy day celebration of Our Lady of Mercy outside the local church, and officially marked it a success and concluded the day with a 1 Sol wine tasting session amidst some underwear displays.</p>
<figure>
![](/images/2011/10/MG_7990.jpg)
<figcaption>
• cheap wine consumption •
</figcaption>
</figure>]]></content></item><item><title>Meat me at the Torres refugio on a horse</title><link>https://www.romant.net/2011/09/meat-me-at-the-torres-refugio-on-a-horse/</link><pubDate>Wed, 21 Sep 2011 08:58:35 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/09/meat-me-at-the-torres-refugio-on-a-horse/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><img src="/images/2011/09/MG_7341.jpg" alt=""></p>
<p>According to the local coffee shops raggy edition of the Lonely Planet’s “Chile”, Torres Del Paine has approximately 100,000 flower tramplers per year. An astounding number of wide-eyed gringos for any destination.</p>
<p>Especially if you consider that the main walk[s] consist of half a dozen variations to a set track, the paths themselves in most places are no more than 1m in width. Pushing through a hundred smelly backpackers as you traverse the peaks of this beautiful terrain would be a horrible horrible thing … that’s why the best time to visit is pre-season! (shh. . don’t tell anyone)</p>
<hr>
<p>There exist many pros on which I’ll concentrate first - in exploring the Torres Del Paine Mountain range pre-season. First is the lack of Germans with their walking poles behind every bush. History has shown, its never good to have them band together and march great distances through a foreign land.</p>
<p>The next really depends on how luxuriously you wish your stay to be. There’s a number of hotel$ (privately owned), camping sites at literally every trek intersection, as well as a small number of <em>refugios</em>. Which are nothing more than … well, a bed, roof, kitchen, + fireplace to air out your socks, these are also privately owned although the stay is malleable starting at $30odd USD per person. Simple benefit for the pre-seasoned traveller is <em>space</em>. In a typical high-season, bookings seem to be essential due to the firehose of willing participants. We ended up staying in a bunk-bedded room with a Korean gentleman who I can only assume was full of Godly praise for his 2-minute-noodles as he devoured them slurpingly and Roman-awakedly.</p>
<p>First night we stayed at the campsite alongside Hosteria Las Torres, as they wanted to charge over $300USD for the night, per person. Not to be put off, the campsite is well trimmed and looked after, so spending the night away beneath the Torres was actually very comfortable. By venturing into the Las Hosteria for a sip of the local brew, we met Ignacio, the “Aussie Lover”. Formerly a stock broker from Santiago, followed by oyster shucker in Broom, and resident of Bondi; is now a guide within Torres Del Paine.</p>
<p>The first days trek of the W-course is around 11km by foot, we elected for a different approach. Horses! Throughout the ‘off-season’ the Gauchos (people who beat these beautiful animals into submission, aka cowboys) let the horses roam free throughout the park. They started collecting them only days prior to our arrival. It would be remiss of me to not refer to them as ‘rock climbing horses’ or as Rob put it “mountain ponies”. The feats these wonderful beasts performed were incredible. Throughout the ‘horses-only’ trek, which is closer to the edge of the river, and in my opinion a significantly better view than achieved by plebs on foot; our companions were able to scale near perfectly flat rock faces of nearly 30º (I had a protractor with me…) with surprising ease. Have never seen a horse do anything remotely close, mind you, this was officially my second ever horse ride.</p>
<figure>
  <img src="/images/2011/09/MG_7375.jpg">
  <figcaption>• rockclimbing pony
</figcaption>
</figure>
<p>The vistas available within this part of the route (Las Torres -&gt; Los Cuernos) spoilt us considerably as for the hours after dismounting, the rain and wind conspired together, and decided to test our gear; everything held up extremely well, apart from my atrociously designed Salomon Cosmic 4D GTX. Bad bad shoe. They&rsquo;re very pretty, just don’t buy them, at least not if you want to actually use them.  Having finished the walk, the views available on this leg were still the best part of the whole week. Make sure you spend considerable time, and camera memory here. Unfortunately I couldn’t hand hold my camera, whilst attempting to detract my four-legged “sure-foot” (name credit to Rob) from sniffing the butt of the horse ahead, and not smacking me into the lower branches of trees. Photography-wise, the plebs win here.</p>
<p>By the time we arrived at Campento Italiano, I could have cooked several packets of spaghetti from the water in my shoes. Mainly this is a campsite, with a single wooden shack with a dirt floor, to shelter the pilgrims on their way through the park. We found a very friendly, fast talking, brightly coloured (I thought my jacket was bad!) French-man with A.D.D., we proceeded to borrow a bunsen burner he had in hope of heating up some canned ravioli, to somewhat offset the cold gust of wind and now splattering of rain.</p>
<p>Upon drying my socks on the rocks next to a fire, and clamouring into the tent before the next wave of ice-cold water deluge from the trees hit me, I rested.</p>
<figure>
  <img src="/images/2011/09/MG_7571.jpg">
  <figcaption>• please send help … soon •</figcaption>
</figure>
<p>The stormy night, was followed by a more impressive morning. Donning the daypack filled with camera gear, we rushed up to Mirador Frances, to see remnants of a glacier from the lookout, although after witnessing the mighty Perito Morino the week prior, it quickly underwhelmed. Am not sure as to why it bears ‘French’ in the name of the valley; there is not as much dirt, didn’t see any dog faeces or foreigner-disapproving, baguette-wielding locals pretending not to speak English as you ask them for help at 2am… but I digress. Even the French-man from the night before was unimpressed.</p>
<p>It is said that during the bloom of the season, the French Valley is one of the most beautiful sights due to its microcosm of flora from around the park.</p>
<p>Continuing along the path, this time towards Refugio y Compamento Pehoé, we were once again greeted by some of the friendly wind. Upon arrival, only slightly wet this time, we found solace in seeing walls, and an actual floor, a roof and to further top it off - a fireplace! It appears about 10 more people were sold on the same idea at $35USD, so an evening of pasta, tuna, chocolate, and sharing of travel stories with the fellow wet-feeters ensued.</p>
<figure>
  <img src="/images/2011/09/MG_7756.jpg">
  <figcaption>• windy day •</figcaption>
</figure>
<p>The W-trek can be started at either side, right-&gt;left, or in reverse. At the end of our W, was the administration building; highly discouraged by other travellers due to being a trip of boredom, although quite an easy 18km walk.</p>
<p>As we left the protection of the refugio, en route to the administration, we spent over an hour within about 100 metres of the refugio itself; the weather finally turned, even if for only two hours, to let us capture some of the beautiful landscapes that exist within the park. Most notably right near the refugio; the owners sure know how to pick a good spot!</p>
<figure>
  <img src="/images/2011/09/MG_7660.jpg">
  <figcaption>• outside the refugio •</figcaption>
</figure>
<p>Arriving at Administracion CONAF, the wind almost pushing us out from the park. Continued to belt at full strength. Lack of open-season, resulted in this case the local hotel/hostel to be shut, with the only option 2mm of nylon + polyester tent to protect us at night from the whistles and face-shredding wind.  Had no choice, but to whore ourselves out to passing cars making way in the direction of Puerto Natales. Luckily for other 99,998 gringos that will visit Torres Del Paine this year, not only are the local drivers, but other tourists also happy to give you a lift. Unfortunately hardly anyone is travelling in the same direction, and duration. After just over 40 minutes of excitedly running up to stopping cars, with eyes of a 6 week-old hungry puppy; finally managed to snag a lift - on the back of a ute. Not only was the owner driving his whole family, but he still slowed down, and helped us. I take my many hats off to the driver.</p>
<figure>
  <img src="/images/2011/09/MG_7805.jpg">
  <figcaption>• back of the ute; dust-filled road back to Puerto Natales •</figcaption>
</figure>
<p>Those are some of the more positive things about coming to the park before the season officially opens. What any visitor has to realise is that one of the most unpredictable parts, is the weather. Not only overnight, but within 30 minutes can go from postcard-like scenery to clouds that attempt to ruin the holiday by pelleting strategically placed rain drops into the open crevices within your poorly designed hiking boots. Other point to consider is food. If you visit when none of the refugios nor hotels are open, you will have to carry enough to sustain your ever-eager metabolism over the duration of the trek.</p>
<hr>
<p>As an aside, the day following our return to Puerto Natales, was the Chilean Independence day. Complete with a parade, BBQ’s at every corner, and festivities for kids within the fire station. It was great to retreat to one of what became the warmest place to lunch when in town, Cafe Toore with its own “<a href="http://www.patagoniaconsultant.com/">Patagonian Consultant</a>”, Sergio, and as you can see in the photo, his daughter.</p>
<figure>
  <img src="/images/2011/09/MG_7845.jpg">
  <figcaption>• our friendly travel consultant Sergio and his daughter •</figcaption>
</figure>
<p>Consuming meat for breakfast, lunch and dinner at every opportunity, Dieciocho (Chile National / Independence Day) on September 18th was close to my stomach. Devouring a couple anticuchos, followed by some Mote con huesillo, it was an amazing conclusion to the first leg of this South American adventure.</p>
<figure>
  <img src="/images/2011/09/anticucho.jpg">
  <figcaption>• mmm … local food tucker - anticucho and mote con huesillo •</figcaption>
</figure>]]></content></item><item><title>Sh-t I took</title><link>https://www.romant.net/2011/09/sh-t-i-took/</link><pubDate>Wed, 14 Sep 2011 08:22:40 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/09/sh-t-i-took/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<figure>
  <img src="/images/2011/09/DSCN0369.jpg">
</figure>
<p>The journey around Torres Del Paine, and adjoining parks is to take nearly two weeks. The vast majority of them will be on foot, thus consideration must be given to the weight of the total pack(s), as there are (unfortunately) going to be no sherpas.</p>
<p>Weather report for this time of year, idled within 2-3ºC below 0 for the night, and a few degrees higher for daytime. Which necessitated the number of thermals throughout the trip, coupled with the self-imposed weight restriction as well as possible lack of showers; more thermals = less smelly experience.</p>
<p>There are many lists online of what people have managed to bring with them along for their trek. To add to the noise, I wanted to provide an OCD technologist&rsquo;s view.</p>
<p>Main pack is the Genesis 70, which comes with a very useless daypack, or one you can use to place your hopes and wishes into. Hence you see me bringing the Kata bag instead. Not only is the latter going to be used for housing the camera equipment + laptop, but also re-purposed as a daypack.</p>
<p>Here’s the complete list of the crap thats coming with me. Most is self-explanatory:</p>
<h2 id="containers">Containers<a href="#containers" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<ul>
<li>backpack 1 - MacPac Genesis 70</li>
<li>backpack 2 - Kata Sensitivity V</li>
<li>medical kit</li>
<li>2-man Tent</li>
<li>Mattress</li>
<li>Sleeping bag - Mountain Hardwear Phantom</li>
</ul>
<h2 id="clothes">Clothes<a href="#clothes" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<ul>
<li>1 x Merino - 280 GSM Midlayer</li>
<li>2 x Merino - 150 GSM Underlayer</li>
<li>3 x Merino Long-johns</li>
<li>1 x compression socks (for flights)</li>
<li>8 x sets of thin socks</li>
<li>8 x undies</li>
<li>1 x Goretex wind/water jacket</li>
<li>1 x REI Waterproof pants</li>
<li>1 x glove inserts (for warmth)</li>
<li>1 x gloves, thin but water + wind <em>resistant</em></li>
<li>1 x boardies</li>
<li>2 x bonds top</li>
<li>1 x jeans</li>
<li>1 x t-shirt</li>
<li>Boots, Salamon Cosmic 4D GTX</li>
<li>Runners, Ascics</li>
<li>Sandals, Keen</li>
<li>1 x Bose QC 15 (not for the hike itself…)</li>
<li>Polarised glasses &amp; hard case</li>
<li>2 x Pocket Handwash - Sea To Summit</li>
<li>1 x Body Wash - Sea To Summit</li>
<li>Sunblock &amp; Insect Repellent in one - Sawyer</li>
<li>Multifunction Knife - Leatherman Kick</li>
<li>Firestarter - exotac nanoSTRIKER</li>
<li>20m Parachute cord</li>
<li>Katadyn MyBottle</li>
<li>1 x Micro-fibre Towel</li>
<li>25L waterproof bag - <em>used to house all the clothes inside the backpack</em></li>
<li>6 x Gladwrap sandwich bags for waterproofing some electronics</li>
<li>1 x QuickDraw Set</li>
<li>1 x Whistle (hey… you never know)</li>
<li>1 x Washable Electric Shaver - Braun 7 - highly recommend it</li>
</ul>
<h2 id="technology">Technology<a href="#technology" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<ul>
<li>2 x HDD 320GB iomega</li>
<li>2 x HDD 500GB Western Digital Passport</li>
<li>1 x HDD OCZ Vertex 2 SSD, great for the Lightroom catalog, and currently working-on photos
<ul>
<li>Workflow:
<ol>
<li>Each evening, the photos from my and Rob’s cameras get copied to one of the marked hard-drives</li>
<li>Then copied onto the replica drive</li>
<li>Only then are the CF / SD cards cleared within the cameras</li>
<li>Any work, sorting, adjusting of photos is then done in Lightroom against one of the drives</li>
<li>Upon completion, the drives are once again synchronised</li>
<li>The two drives remain completely separate from there on, at no point do they sit in a single backpack, or room (apart from when I’m there)</li>
<li>Fortunate to have a base in Buenos Aires to go back to, so the iomega’s get dumped to the WD’s upon return. One of the WD’s gets taken with, other remaining</li>
</ol>
</li>
<li>No one likes losing photos, especially me</li>
</ul>
</li>
<li>USB Cables 2.0 + 3.0 (+duplicates of all)</li>
<li>Power cables (+duplicates of all)</li>
<li>Power adapter (AUS-&gt;US)</li>
<li>Apple Charger
<ul>
<li>One trick is to get rid of the standard two-prong cable, or extension from the brick, and re-use the one that comes with all the Canon battery chargers (<em>… as long as you get a duplicate!</em>).</li>
</ul>
</li>
<li>MacBook Air 13”, i7, 250GB SSD</li>
<li>1 x USB-&gt;RJ45 (Ethernet adapter for the MBA)</li>
<li>1 x iPhone cable</li>
<li>Headlamp</li>
<li>3 x BL-5c, GPS Logger QStar BT-1000P - <a href="https://www.romant.net/2008/08/fantastic-gps-logger-a-field-report-for-bt-1000p/">reviewed it here</a></li>
</ul>
<h3 id="batteries">Batteries<a href="#batteries" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<ul>
<li>4 x Canon Batteries, LP-E6</li>
<li>LP-E6 Charger</li>
<li>2 x 4 x AA</li>
<li>2 x 2 x AAA</li>
</ul>
<h3 id="camera">Camera<a href="#camera" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<ul>
<li>Canon 50mm f/1.4 USM</li>
<li>Canon 17-40 f/4 USM</li>
<li>Canon 70-200 f2.8 IS USM MKII — <em>heavy!!</em></li>
<li>Canon 5D MKII</li>
<li>Canon 430EX II Flash</li>
<li>Off-Shoe Flash Cord, OC-E3</li>
<li>Sigh-Ray Filters</li>
<li>1 x ND-2G-HS</li>
<li>1 x ND 2G-SS</li>
<li>1 x ND-3 Rev. Graduated</li>
<li>1 x ND-3G-SS</li>
<li>LEE Filter holder</li>
<li>Lens cleaning solution</li>
<li>Lens &amp; Screen cloth</li>
<li>LENSPEN</li>
<li>Lens cleaning tissue paper</li>
<li>4 x 8GB CF, SanDisk Extreme III</li>
<li>1 x 72mm Circular Polariser, Hoya HD</li>
<li>1 x 72mm ND400, Hoya</li>
<li>GorillaPod - <em>had to leave my Manfrotto 055-XPROB at home, as I didn’t feel it could accompany me comfortably. Suggestions welcome for a light and manoeuvrable tripod for trekking</em></li>
<li>Black Rapid RS-4 camera strap</li>
<li>Book, The Last Don by Mario Puzo - <em>during those down times such as airport transfers, and lunch breaks. Would happily replace it with a Kindle if I had one - only due to the weight of course!</em></li>
</ul>
<p>Then add food, water and toiletries and you end up with a very nice ~20kg pack.</p>
]]></content></item><item><title>Big slab of ice</title><link>https://www.romant.net/2011/09/big-slab-of-ice/</link><pubDate>Wed, 14 Sep 2011 05:59:53 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/09/big-slab-of-ice/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><img src="/images/2011/09/MG_6744.jpg" alt=""></p>
<p>Growing up in Ukraine, I&rsquo;ve seen my fair share of snow, blizzards, and every temperature from -40ºC through to 40ºC, although upon arriving in El Calafate, which is a small town in the Patagonian region of Argentina (that should be oft-described as a tourist trap… - on that later) - the first stop was to be the famous Perito Moreno Glacier which is a magnificent spectacle that is difficult to explain and take in.</p>
<p>Interestingly enough, the best view is far away from the the glacier itself, and on one of the Los Glaciares National Park&rsquo;s viewing platforms.</p>
<figure>
  <img src="/images/2011/09/IMG_9161.jpg">
  <figcaption>• Perito Moreno Glacier</figcaption>
</figure>
<p>By far the most enjoyable part of the journey to the glacier was donning some crampons and spending just under two hours walking around and having the history, growth spurts and inevitable &lsquo;shock&rsquo;-stories being told by our guide Diego.</p>
<figure>
  <img src="/images/2011/09/MG_6704.jpg">
  <figcaption>• tad chilly </figcaption>
</figure>
<p>After the completion of the walk, we were surprised to be greeted by a table full of glasses, some local chocolate, and a bottle of whiskey. To top it off, the ice for the tumbler, was chipped from the glacier itself.</p>
<figure>
  <img src="/images/2011/09/MG_6782_together.jpg">
  <figcaption>• best ice for your drink </figcaption>
</figure>]]></content></item><item><title>Out of Office</title><link>https://www.romant.net/2011/09/out-of-office/</link><pubDate>Sat, 03 Sep 2011 03:42:48 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/09/out-of-office/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><img src="/images/2011/08/planning.png" alt=""></p>
<p>I love to travel.</p>
<p>Am fortunate enough that in <a href="http://www.linkedin.com/in/tarnavski" target="_blank">my role</a> am able to do two awesome things: talk about technology and see new places. Yet exploration goes beyond taxis, hotel rooms and new office blocks; and has not been towards Argentina in detail.</p>
<p>Every now and then, the need to re-charge, or in this case deplete the batteries is an absolute must. I will be heading to South America for a total of 52 days with my mate - <a href="https://www.facebook.com/profile.php?id=218301083">Rob</a> and of the places I wish to visit, many have commented that I require at least 6 months to do it &ldquo;properly&rdquo;, I completely agree. The last thing I want to do, is to turn it into the trip many post-pubescent Australian&rsquo;s take; the Contiki tours. 1-2 days in a city, get mashed, throw-up over self and some historic statues, then back on the bus, to do it all again and share the Australian &lsquo;spirit&rsquo; with yet another unsuspecting European city.</p>
<p>I have two goals for this trip to be a success. First is visit Patagonia. Ever since spending a month in Buenos Aires in 2002, I&rsquo;ve wanted to go further south, and see the glaciers, sleep in the mountains and hopefully, paddle through one of the lakes in a kayak. Lastly, drive through the Salt Flats in Bolivia, and a recent addition has been to do some mountainbiking around La Cumbre to Coroico. Anything else in between is a bonus.</p>
<p>Now to finish off the packing process. Although I can&rsquo;t find too much space for socks and sweaters am certain that I will find a number of mountains in Patagonia that have never had a MacBook Air visit them.</p>
]]></content></item><item><title>Presentation Blues</title><link>https://www.romant.net/2011/06/presentation-blues/</link><pubDate>Fri, 24 Jun 2011 23:28:01 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/06/presentation-blues/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><img src="/images/2011/06/roman_tarnavski_emc_inform.jpg" alt=""></p>
<p>All began a couple of months ago, with EMC Inform on the horizon, I had two sessions in front of me, one a pure technology play - &lsquo;EMC/VMware Integration&rsquo;, and second being significantly business oriented - &lsquo;Hybrid Cloud &amp; Workload Federation&rsquo;.</p>
<p>Personally prefer to be sitting in the front row of any presentation, I seek validation of a technology, process or an idea, and for someone on stage to be able to explain it, and more importantly demonstrate it; as a <a href="http://www.twitter.com/davlloyd">colleague</a> likes to say, the &ldquo;proof is in the pudding&rdquo;.</p>
<p>I put this out to the twitter follow-ship:</p>
<blockquote>
<p>Working on a presentation for next week. As a PARTICIPANT, do you prefer live or recorded demos? Leaning towards the former.</p>
</blockquote>
<blockquote>
<p>@romant - <a href="https://twitter.com/romant/status/72940475706908672">24th May, 2011</a></p>
</blockquote>
<p>… which after all the responses, was kind enough to offer absolutely no definitive answer.</p>
<p>Really wanted to <em>show</em> instead of just tell; after-all, if you are in the audience, as both <a href="https://twitter.com/morentin/status/73009437517942784">Eric</a> and <a href="https://twitter.com/dmendis/status/73160106832953344">Damian</a> point out - how do you really know something works, and there isn&rsquo;t some recorded-voodoo going on? Given <a href="https://twitter.com/aginsburg/status/72941028251942912">Adam</a>&rsquo;s feedback though, anything that takes considerable processing or wait time, would record, everything else - live.</p>
<p>The hardware off which I was to show off my touch-typing skills resided in Sydney. The conference spanned 3 cities, connectivity was provided in only a single location - Wellington. Un-surprisingly, it worked, even across the pond. Two remaining cities, had to be covered off with a bluetooth-tethered iPhone. In Melbourne&rsquo;s convention centre, the connectivity was flawless, and the demo portion of the talk didn&rsquo;t skip a single beat.. over 260 happy souls.. confidence for the largest venue, Sydney, was at an all-time high. What I didn&rsquo;t realise, is that Sydney&rsquo;s Exhibition Centre is built like a quasi-&lsquo;Faraday Cage&rsquo;; which really helps if you&rsquo;re after reaching the world through 3G.</p>
<p>Unfortunately, after 20 minutes of pure slides, a realisation dawned, that the mobile provider wasn&rsquo;t up to scratch to make everything look as seamless as was planned. I had to revert to some miming and a description of pixels that would be drawn on screen had things progressed as planned.</p>
<p>The inability to attain more than 2 bars of reception love on the iPhone, rendered the experience simply unbearable.. back to the slides.</p>
<p>Regardless, all up, it was a great event. was able to get through most of the message in Sydney, and for the rest had some canned videos &lsquo;just in case&rsquo;, which covered the necessary points.</p>
<p>After the presentation, I was asked whether a live demo would ever be attempted again, the answer is simple - yes. Obviously the problem will be differently approached next time, with significant pre-checks in all locations, specifically around connectivity, and having an alternate telephony provider if necessary.</p>
<p>Of the sessions I was able to attend, my favourite presentations were by far, <a href="http://www.linkedin.com/profile/view?id=8403680">David Lloyd&rsquo;s</a> on &lsquo;UIM and what it can do around the managements of standardized infrastructure&rsquo; - namely Vblock, there was standing-only room left., and the Q&amp;A from <a href="http://www.linkedin.com/profile/view?id=9287509">Michael Bookey</a>&rsquo;s session on &lsquo;VMware + Mission Critical Apps&rsquo;. Not only was he able to bring some personality and zest to a typically mundane topic, but every question thrown to him, he answered with incredible depth.</p>
<p>At the end of it, enjoyable, and glad to have participated.</p>
]]></content></item><item><title>Why Enterprises aren't ready for Cloud</title><link>https://www.romant.net/2011/06/why-enterprises-arent-ready-for-cloud/</link><pubDate>Mon, 13 Jun 2011 16:12:18 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/06/why-enterprises-arent-ready-for-cloud/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>According to IDC, the mere growth of virtual private cloud services by 2014, will be in excess of 230% from a base of 2010, or be worth $46USD billion as an industry. This referring to the homogeneous, logical environment that will span public + private and be isolated for an organisation. Of the current public cloud providers supporting this, how many can actually take your existing environment and extend it into their own to allow you to use their capacity as needed?</p>
<figure>
  <img src="/images/2011/06/growth_cisco_idc_smo_2010.png">
  <figcaption>Source: IDC 2010 SMO Analysis | repurposed</figcaption>
</figure>
<p>It is important to note that within a discussion on cloud, several attributes are always considered: trust, availability, flexibility, inevitably - cost; but most importantly the vital tenant, scale.</p>
<p>Arguably most of these are actually better catered for within the cloud-sphere. You have complete stateful, and migratory capability of a security policy which can reflect business rules and be as dynamic as required. Technologies like VMware&rsquo;s HA, and FT can provide guarantees around operational state of the OS, integration with Intel&rsquo;s TXT can further provide assurances around <a href="http://en.wikipedia.org/wiki/Governance,_risk_management,_and_compliance">GRC</a> and around execution on foreign tin; thus introducing capability the original OS + App need-not design and maintain. Lastly, through significant consolidation and utilization adjustment, an organisation can drive significant cost savings to a pure hardware-OS-app stack. How do we then grow this environment?</p>
<p>The problem of scale within an enterprise is normally solved vertically with mainframes, and horizontally with oft-too-expensive clustered approach. What happens to all your old apps that are mission critical? How do you &lsquo;cloudify&rsquo; them? Typical <a href="https://twitter.com/samj/status/79885807808294912">response</a> is re-architect. Reality is that the lifecycle of a typical enterprise-grade application is around 15-20 years (or considerably more if you look at Sabre). Thus any suggested changes to these monoliths will undoubtedly not be greeted with open arms by the application and business owners.</p>
<p>Therefore re-architecture is simply not an option. We have designed an elegant abstraction for each of these silos, called Virtual Machines. Which transform the old and senile into something more malleable and agile, or so you would think.</p>
<p>At the end of the day, we&rsquo;ve just injected some functionality into the sarcophagus of an ever-decaying technological silo. Now we have to figure out a way to move it around. How do we optimize this further? How do we migrate these workloads and expand the stacks&rsquo; capability? Surely there are service providers out there that can help?!</p>
<p>There do exist &ldquo;cloud-providers&rdquo; that can cater for, and ingest your applications to be run within their own DC&rsquo;s. Whether you&rsquo;re moving to or from their premises, they will support you; in a very manual fashion. Herein lies the issue, under the guise of &lsquo;cloud&rsquo;; they&rsquo;re no more than a hosting service provider with a brand new brochure.</p>
<p>In order for a provider to be truly cloud-enabled, and allow for Enterprises to scale outside their physical boundary. They must support the same abstraction-architecture as you use internally, and federate your application and data in a seamless and live manner, thus delivering on &rsquo;true-cloud&rsquo; promise, and not the same way that you have always attacked this by replication without state.</p>
<p>Technically, the problem of migrating live workloads across distances has been solved. We encapsulate the OS+App within a VM, all networks and their configuration for a group of VM’s that is further packed within a vApp; is provided through vShield. Inter-DC communication can be achieved with Cisco’s OVT or stretched L2 networks (ugh), thus giving us the mobility of the state. Lastly, the moving of the storage can be facilitated through with VPLEX by further abstracting the underlying storage arrays to achieve the fully virtualized, completely federated, live workload migration.</p>
<blockquote>
<p>The unfortunate state of affairs is that whilst we continue to have the baggage of old-school applications, for a solution to be Enterprise-ready, <strong>it must provide for &lsquo;warts and all&rsquo; encapsulation and transmission</strong>. Until that is the case, and organisations as well as the service providers standardise on a mechanism and technological cocktail, we can&rsquo;t really be calling some clouds, clouds.</p>
</blockquote>
]]></content></item><item><title>A prediction . . .</title><link>https://www.romant.net/2011/04/a-prediction-.-.-./</link><pubDate>Sat, 02 Apr 2011 18:34:37 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/04/a-prediction-.-.-./</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><img src="/images/2011/04/foundation.jpg" alt=""></p>
<p>Amazon did a great job of not calling it &lsquo;amazon cloud services&rsquo; when it first launched, this way they stay away from having to define it [cloud]. Once we remember that &lsquo;cloud&rsquo; is really an abstraction of abstractions (even from definitions), we soon realise that apps written for tomorrows consumption don&rsquo;t have to be tied to processor architecture or even a specific OS to run.</p>
<p>Now AWS are going up the stack and developing their platform play atop the IaaS they already have. Most importantly not concentrating purely on a single facet as performance (like the freshly announced Australian startup OrionVM), but useability and management through an extensive set of API&rsquo;s. The differentiator is a little further up from a mere hypervizor.</p>
<p>Along the same path of execution in the past year we&rsquo;ve seen VMware reach … up, and look to fill the gaps in Virtual Infrastructure Management+awareness solutions through vSM/Request-Manager for vCD, and more recently vCenter Operations.</p>
<p>The wonderful thing about technology is that by focusing on the value-add, and services further up, you can actually replace the foundation without the need to take down and rebuild the whole offering; as Apple did with Rosetta in their migration away from PowerPC to Intel, shows us you can provide a platform which negates the tight-coupling of CPU &gt; OS &gt; App of the yesteryear. In the current incarnation of cloud deployments across all worthwhile platforms, we can see a single constant - base compute.</p>
<p>. . . just throwing this out there, but it is not only possible, but most probable that within 24 months, not only AWS but other players will launch an Atom or even ARM-based service publicly, which will do away with offering infrastructure services and concentrate from the get-go on platform; all through the same management interface.</p>
]]></content></item><item><title>PGP WDE vs. Lion Disk Encryption</title><link>https://www.romant.net/2011/03/pgp-wde-vs.-lion-disk-encryption/</link><pubDate>Sat, 05 Mar 2011 20:54:19 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/03/pgp-wde-vs.-lion-disk-encryption/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Beyond the veil of security, and sense of calm I get when leaving my laptop in the car or airport lobbies; the next most important thing to me is performance (after all, running my VMware lab on a laptop with a single drive isn&rsquo;t exactly cheap). Thus mid last year I invested in a 240 GB OCZ Vertex 2 SSD drive, to run inside my i7 MBP. Encrypting your drive absolutely kills performance, so I did some very un-scientific tests today upon my upgrade to Lion that I wish to share. Below are several Xbench results for HDD performance only, covering &lsquo;fresh&rsquo; HDD, and encrypted. Within Snow Leopard (10.6) with PGP WDE, and in Lion (10.7) with the inbuilt Disk Encryption.</p>
<p><img src="/images/2011/03/p_fresh.png" alt=""></p>
<p><img src="/images/2011/03/p_enc.png" alt=""></p>
<p>First up as you can see we have the fresh install, and nicely enough, with just an OS upgrade, there&rsquo;s an increase in the disk throughput. More importantly though, is the encrypted performance. Averaging out PGP vs Lion, we witness a doubling of the MB/s capability within the latter. On the one hand, its a shame I have a license for PGP that I spent ~$175AUD, on the other, it served its purpose, and is now going to be replaced by something that comes free with the OS, and performs better. Symantec has a talent for buying dying horses.</p>
]]></content></item><item><title>Extending vShield</title><link>https://www.romant.net/2011/02/extending-vshield/</link><pubDate>Sun, 13 Feb 2011 11:45:28 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/02/extending-vshield/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><img src="/images/2011/02/stickman_puzzle.jpg" alt=""></p>
<h2 id="what">What<a href="#what" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>At its core vShield Edge is a very lightweight appliance mostly based on LinuxFromScratch and the rest comes from VMware&rsquo;s BlueLane acquisition.</p>
<p>If you want to skip the verbosity, skip straight to <a href="#how">How</a></p>
<p>We are hearing more about vShield recently, because it is a prerequisite component of vCloud Director. It facilitates the critical piece that makes virtual datacenters work; network connectivity. Unfortunately it is still a young product, and as such feature-poor.</p>
<p>In the last two posts I covered two preludes. The first is how to bake your own NAT forwarding router and use it inplace of vShield within the App Network. Second being how to get inside the vSE appliance.</p>
<p>… which is where we&rsquo;ll start today.</p>
<h2 id="why">Why<a href="#why" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>The unfortunate repercussion of &lsquo;rolling-your-own&rsquo; is that it simply doesn&rsquo;t scale, and that&rsquo;s what vCD + Cloud is all about. I simply can&rsquo;t deploy my own NAT solution with every vApp, and have it integrate with vCloud API&rsquo;s. So I started at the other end. Customizing vShield Edge itself.</p>
<p>For this piece, I wanted to add only two extra features</p>
<ol>
<li>
<p>DNS resolution
Simply put, this will allow for local DNS resolution within each vApp/Organization. More importantly can be made to work with the currently unused DNS Suffix, when creating networks.</p>
</li>
<li>
<p>Dynamic DNS Registration
I have a dream… that one day, when you deploy a resource, it will be able to resolve and &lsquo;see&rsquo; others within the same vApp/Organization or vSE &lsquo;Network Boundary&rsquo;.</ol></p>
</li>
</ol>
<h2 id="how">How<a href="#how" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<h3 id="summary">Summary<a href="#summary" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<ul>
<li>Get inside vShield Manager</li>
<li>Search for vShieldEdge.ovf</li>
<li>Modify it until you&rsquo;re satisfied</li>
<li>You&rsquo;re done</li>
</ul>
<pre tabindex="0"><code>/common/em/components/zones/vShield.ovf
/common/em/components/ni/ovf/vshield-ni-infra.ovf
/common/em/components/edge/vShieldEdge.ovf
</code></pre><p>Note that the other vShield products are also available to you.</p>
<blockquote>
<p>Am not going to go through every command required to get this to work. If you&rsquo;re stuck at any point whilst attempting this, feel free to drop me a line.</p>
</blockquote>
<p>First, lets fix the <code>dhcpd.conf</code> generating file - <code>/root/vSEdge/vse_dhcp_config.pl</code></p>
<p>Search for <code>&quot;ad-hoc&quot;</code> and replace that line with:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="nv">$cmd</span> <span class="o">=</span> <span class="s2">&#34;include \&#34;/etc/rndc.key\&#34;;\nddns-update-style interim;\nddns-updates on;\nddns-domainname \&#34;wcm.lab\&#34;;\nddns-rev-domainname \&#34;in-addr.arpa\&#34;;\n&#34;</span><span class="p">;</span>
</span></span></code></pre></div><p>This will do several things for us:</p>
<ul>
<li>Setup trust between the dhcp and named daemons via the <code>rndc.key</code></li>
<li>Set the zone names and allow dhcpd to update them</li>
</ul>
<p>For <code>bind/named</code> itself - since we&rsquo;re dealing with LinuxFromScratch, you can get the code from the LFS <a href="http://www.linuxfromscratch.org/blfs/view/6.3/server/bind.html">project page</a></p>
<p>Compiling <code>named</code> is done via:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">./configure --prefix<span class="o">=</span>/usr --sysconfdir<span class="o">=</span>/etc --localstatedir<span class="o">=</span>/var --enable-threads --with-libtool --disable-shared <span class="o">&amp;&amp;</span> make
</span></span></code></pre></div><p>You can then find the executable in <code>./bin/named/named</code></p>
<p>Unfortunately I haven&rsquo;t been able to figure out how to get it to work with the current libraries present within vShield, so you&rsquo;ll also have to copy some libs across as well.</p>
<p>On vShield:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">$ mkdir -p /var/named /named_libs
</span></span></code></pre></div><p>On your compiling machine:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">$ scp /lib/<span class="o">{</span>ld-2.5.so,ld-linux.so.2,libc.so.6,libnsl.so.1,libpthread.so.0<span class="o">}</span> root@vse:/named_libraries
</span></span></code></pre></div><p>Once that is all set and done, you&rsquo;re just left with having to configure named like on any other machine, which means you will require at the very least:</p>
<ul>
<li>named.conf</li>
<li>named.ca</li>
<li>rndc.conf + key</li>
<li>zone files</li>
</ul>
<p>I will be using the ones I&rsquo;ve prepared earlier for other projects.</p>
<p>… and execute it using:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">$ /named_libs/ld-2.5.so --library-path /named_libs/ /usr/sbin/named -g -c /etc/named.conf
</span></span></code></pre></div><p>I wrapped the above and placed it into <code>/etc/inittab</code>.</p>
<p>After you&rsquo;re done, you overwrite the <code>vShieldEdge.ovf</code> within the manager VM, and have vSE Manager provision your own, custom vShield Edge appliance.</p>
<p>The above is meant for those that like to get their fingers a little dirty trying to improve things, this sometimes will break expected functionality.</p>
<p>Some gotchas, and debugging tips:</p>
<ul>
<li>If for some reason vSE isn&rsquo;t starting, and by looking at the console, you can see that <code>ifconfig</code> doesn&rsquo;t return any interfaces with an IP, run <code>/root/vSEdge/edge_configure.pl</code> - this will nearly always tell you where you went wrong in your <code>vse_ script</code> modifications</li>
<li>To find linked libraries for any other packages you wish to inject, use <code>export LD_DEBUG=&lt;type&gt;</code> before running a binary where the <code>&lt;type&gt;</code> is referring to <code>[versions | files | libs]</code></li>
<li>Don&rsquo;t forget to disable/modify <code>iptables</code>, otherwise you&rsquo;ll have trouble getting inside vSE</li>
<li>For anything else, there&rsquo;s my contact page</li>
</ul>
]]></content></item><item><title>By Example: Enabling SSH in vShield Edge</title><link>https://www.romant.net/2011/01/by-example-enabling-ssh-in-vshield-edge/</link><pubDate>Fri, 07 Jan 2011 21:54:10 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/01/by-example-enabling-ssh-in-vshield-edge/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>I wanted to learn more about how vShield Edge + Manager appliance works under the covers. By default, no inbound SSH capability exists. In the video I show you how you can enable it, so that you can extract the innards of the appliance, and hack away to create something beautiful.</p>
<p>Initially started writing this as a static blog-post, unfortunately too many screenshots + and explanations would be required. Hence I simply recorded some of the steps.</p>

			<div
					style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
				<iframe
					src="https://player.vimeo.com/video/18527859?dnt=0"
						style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allow="fullscreen">
				</iframe>
			</div>

<h1 id="caveats">Caveats<a href="#caveats" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h1>
<ul>
<li>There is no possibility that this is in any way supported by our VMware friends, please don&rsquo;t raise SR&rsquo;s on a vSE that you&rsquo;ve Roman&rsquo;ed up!</li>
<li>In the last step, I replace the <code>root</code> user password. Be sure to restore it from the backup immediately upon ssh&rsquo;ing back in. As vCloud Director uses that password to interact with vSE, and will be unable to do so.</li>
</ul>
]]></content></item><item><title>Exception: Error creating Edge VM</title><link>https://www.romant.net/2011/01/exception-error-creating-edge-vm/</link><pubDate>Thu, 06 Jan 2011 11:20:35 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/01/exception-error-creating-edge-vm/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Upon trying to create a NAT-Routed network within vCD, you can be faced with a</p>
<blockquote>
<p>&ldquo;Error creating Edge VM&rdquo;</p>
</blockquote>
<p>If you look within the debug logs, the excerpt of the stack-trace will look something like this:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">com</span><span class="p">.</span><span class="na">vmware</span><span class="p">.</span><span class="na">ssdc</span><span class="p">.</span><span class="na">util</span><span class="p">.</span><span class="na">LMException</span><span class="p">:</span><span class="w"> </span><span class="n">Error</span><span class="w"> </span><span class="n">creating</span><span class="w"> </span><span class="n">Shield</span><span class="w"> </span><span class="n">network</span><span class="w"> </span><span class="n">appliance</span><span class="p">.</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">...</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">at</span><span class="w"> </span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Thread</span><span class="p">.</span><span class="na">run</span><span class="p">(</span><span class="n">Thread</span><span class="p">.</span><span class="na">java</span><span class="p">:</span><span class="n">619</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">Caused</span><span class="w"> </span><span class="n">by</span><span class="p">:</span><span class="w"> </span><span class="n">com</span><span class="p">.</span><span class="na">vmware</span><span class="p">.</span><span class="na">ssdc</span><span class="p">.</span><span class="na">util</span><span class="p">.</span><span class="na">LMException</span><span class="p">:</span><span class="w"> </span><span class="n">Error</span><span class="w"> </span><span class="n">creating</span><span class="w"> </span><span class="n">Edge</span><span class="w"> </span><span class="n">VM</span><span class="p">.</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">...</span><span class="w"> </span><span class="n">17</span><span class="w"> </span><span class="n">more</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">Caused</span><span class="w"> </span><span class="n">by</span><span class="p">:</span><span class="w"> </span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">NullPointerException</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">...</span><span class="w">
</span></span></span></code></pre></div><figure>
  <img src="/images/2011/01/Error-creating-Edge-VM.png">
</figure>
<p>The cause is a misconfigured ESX Host that is sitting in the same resource pool as others connected to the dVS against which vCD is trying to create the network group.</p>
<p>Solution being to either remove the host, or alternatively verify that all hosts are connected EQUALLY to the dVS. This is where Host Profiles come in very handy.</p>
<p>I apologise for the lack of a vCD screenshot, I fixed the problem before realising that it was one; at least there will always be logs. Once you do see this again, feel free to send in a screenie.</p>
<p><strong>Related Local Files</strong> - <code>logs/vcloud-container-debug.log</code></p>
]]></content></item><item><title>By Example - Networks in vCloud Director</title><link>https://www.romant.net/2011/01/by-example-networks-in-vcloud-director/</link><pubDate>Wed, 05 Jan 2011 17:31:08 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2011/01/by-example-networks-in-vcloud-director/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>In order to demonstrate to some customers, partners and colleagues that haven&rsquo;t had a chance to enjoy vCloud Director yet, I&rsquo;ve recently prepared some videos which demonstrate how you setup a network within an Organization on top of vCD. They&rsquo;re designed to be completely self-sufficient, so the &lsquo;intro&rsquo; is re-used.</p>
<h4 id="direct-network">Direct Network<a href="#direct-network" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>This is by far the most … straight forward way of providing your VM&rsquo;s with an outside connection.</p>

			<div
					style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
				<iframe
					src="https://player.vimeo.com/video/18452797?dnt=0"
						style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allow="fullscreen">
				</iframe>
			</div>

<h4 id="routed-network">Routed Network<a href="#routed-network" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>The elegance of vShield Edge allows you to configure DHCP, Firewall, and NAT IP Mapping through an easy to click-through UI. Be it for your Organization or vApp. Here I&rsquo;ll show you how to setup a NAT-Routed vShield backed internal network.</p>

			<div
					style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
				<iframe
					src="https://player.vimeo.com/video/18452976?dnt=0"
						style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allow="fullscreen">
				</iframe>
			</div>

<h4 id="customish-vapp-network">Custom&rsquo;ish vApp Network<a href="#customish-vapp-network" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>There are environments that have already invested a lot in customizing their own DHCP server rules, Dynamic DNS registrations, reverse lookups, firewalls… the list goes on. In essence, here I can show you how you can re-use your current soft-router, and have it used within the vCloud realm.</p>

			<div
					style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
				<iframe
					src="https://player.vimeo.com/video/18453095?dnt=0"
						style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allow="fullscreen">
				</iframe>
			</div>

]]></content></item><item><title>vCloud Director Not Starting</title><link>https://www.romant.net/2010/12/vcloud-director-not-starting/</link><pubDate>Tue, 21 Dec 2010 14:26:23 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/12/vcloud-director-not-starting/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Attempted to bring up vCD and saw the following in <code>vcloud-container-debug.log</code></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">ERROR</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Start</span><span class="w"> </span><span class="n">Level</span><span class="w"> </span><span class="n">Event</span><span class="w"> </span><span class="n">Dispatcher</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">StartupUtils</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Error</span><span class="w"> </span><span class="n">starting</span><span class="w"> </span><span class="n">application</span><span class="p">:</span><span class="w"> </span><span class="n">Could</span><span class="w"> </span><span class="n">not</span><span class="w"> </span><span class="n">bind</span><span class="w"> </span><span class="n">network</span><span class="w"> </span><span class="n">port</span><span class="p">:</span><span class="w"> </span><span class="n">80</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">host</span><span class="w"> </span><span class="n">address</span><span class="p">:</span><span class="w"> </span><span class="n">172</span><span class="p">.</span><span class="na">16</span><span class="p">.</span><span class="na">225</span><span class="p">.</span><span class="na">131</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">java</span><span class="p">.</span><span class="na">net</span><span class="p">.</span><span class="na">BindException</span><span class="p">:</span><span class="w"> </span><span class="n">Cannot</span><span class="w"> </span><span class="n">assign</span><span class="w"> </span><span class="n">requested</span><span class="w"> </span><span class="n">address</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">at</span><span class="w"> </span><span class="n">java</span><span class="p">.</span><span class="na">net</span><span class="p">.</span><span class="na">PlainSocketImpl</span><span class="p">.</span><span class="na">socketBind</span><span class="p">(</span><span class="n">Native</span><span class="w"> </span><span class="n">Method</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">at</span><span class="w"> </span><span class="n">java</span><span class="p">.</span><span class="na">net</span><span class="p">.</span><span class="na">PlainSocketImpl</span><span class="p">.</span><span class="na">bind</span><span class="p">(</span><span class="n">PlainSocketImpl</span><span class="p">.</span><span class="na">java</span><span class="p">:</span><span class="n">365</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">...</span><span class="w">
</span></span></span></code></pre></div><p>One of these days I&rsquo;ll allocate some static IP&rsquo;s to my whole Fusion-bound vLab. Until then - I will put up with DHCP assigned IP&rsquo;s.</p>
<p>To fix, first stop vCD with <code>vmware-vcd stop</code>, then modify <code>cloud-director/etc/global.properties</code> to reflect the IP changes for:</p>
<pre tabindex="0"><code>vcloud.cell.ip.primary  
consoleproxy.host.https
vcloud.cell.ips 
</code></pre><p>.. or anywhere you have the old address[es]. Some love from <code>sed</code> will do the trick here</p>
]]></content></item><item><title>First week as a vSpecialist</title><link>https://www.romant.net/2010/08/first-week-as-a-vspecialist/</link><pubDate>Fri, 20 Aug 2010 22:01:40 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/08/first-week-as-a-vspecialist/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<h4 id="vblock-training">Vblock Training<a href="#vblock-training" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>The timing couldn&rsquo;t have been better. My first three days on the job, I spent in Vblock training with personnel across the VCE alliance. My background not being in networking, and having heard great things about those with CCIE certs, it was a pleasure to witness these guys in action.</p>
<figure>
  <img src="/images/2010/08/bike.png">
  <figcaption>•</figcaption>
</figure>
<h4 id="cisco-ucs">Cisco UCS<a href="#cisco-ucs" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h4>
<p>The first time I saw one was at vForum 2009 in Sydney, an ugly piece of semi-gray/teal enclosure with several blades packed to the rafters full of RAM. Dismissed it immediately because it seemed like an immature solution for a company that didn&rsquo;t have the pedigree of building servers.</p>
<p>On my second day of training we started an overview of the chassis, fabrics, blades themselves… something clicked (no, not just <a href="http://twitter.com/romant/status/21410459242">kool-aid</a>). Problem is, when procuring hardware and you have a choice of vendor, you decide on the &lsquo;immediate bang for buck&rsquo;, hence inevitably look at Memory + CPU configuration before all else, without giving much consideration to something just as important if not more, &rsquo;ease of management&rsquo; and deployment &lsquo;at scale&rsquo;. Thus is the racking + stacking of a single blade in a single chassis as simple as doing it across 40 chassis and 320 blades?</p>
<p>There are some stunning features within UCS Manager for scalability. Most notably service profiles, which capture things like SAN+LAN connectivity as well as BIOS+Firmware levels into a quasi-template. Simply put, you can define a policy filter for a certain workload that is to be performed by the blade, and UCS Manager will tell you which blades comply in Memory, Connectivity, CPU and IO-Cards and which can be easily configured to the profile with the push of a button. Some great videos which distill some of the configuration + management benefits are <a href="http://www.youtube.com/watch?v=amLXLWn2qOQ">here</a>.</p>
<p>After those initial three days in training on EMC Storage such as CLARiiON + Symmetrix families, UCS and VMware to see how it all fits within the Vblock offering, I only had two days in the office. In that time I attempted to digest the email firehose of Vblock configurations, customer requests and explanations. My manager promptly and kindly offered my services to help break down some vSphere 4.1 features around core-mapping. As any new starter, then had to spend time on setting up phones, VPNs, cards and travel - have you heard about this VMworld thing? 🤞</p>
<blockquote>
<p>• adapted from flickr user <a href="http://www.flickr.com/photos/striatic">striatic</a></p>
</blockquote>
]]></content></item><item><title>Unsupported element 'VirtualSystemCollection' + how to split an OVA</title><link>https://www.romant.net/2010/07/unsupported-element-virtualsystemcollection-how-to-split-an-ova/</link><pubDate>Sun, 11 Jul 2010 04:23:38 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/07/unsupported-element-virtualsystemcollection-how-to-split-an-ova/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>A colleague recently stumbled upon this beautiful error when trying to import an OVA to an ESX and ESXi host:</p>
<figure>
  <img src="/images/2010/07/unsupported_element.png">
  <figcaption>Unsupported element 'VirtualSystemCollection'</figcaption>
</figure>
<p>The cause is that the packaged OVA is actually a vApp extract from vCenter, and standalone hosts (not under management of a vCenter) are not able to accomodate vApp.</p>
<p>From <a href="http://www.vmware.com/products/cloud-os/application.html">VMware</a></p>
<blockquote>
<p>vApps: Ensuring seamless application movement and choice between clouds</p>
</blockquote>
<p>It seems a single host isn&rsquo;t &ldquo;cloud&rdquo;-enough. 😉</p>
<p>An OVA that is extracted from vCenter which contains only a single VM is extremely close in its structure to the OVF apart from a tuple called … *drum roll* … <code>&lt;VirtualSystem ovf:id=&quot;cake&quot;&gt;</code> in the single, and <code>&lt;VirtualSystemCollection ovf:id=&quot;cake&quot;&gt;</code> in one that encompasses multiple machines. So a hosts ability is limited to not being able to parse this collection of machines and discriminate between their properties, that&rsquo;s why you need to spend $ on vCenter!</p>
<p>This is all great, but my colleague is now stuck half-way around the world with a set of machines that need to be deployed on a single host, and all of them are saved within this OVA.</p>
<p>An OVA is just a wrapper for an OVF (think VMX) and some VMDK&rsquo;s {anyone VM/OVconfused yet?}.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">$ tar tf cake.ova
</span></span><span class="line"><span class="cl">cake.ovf
</span></span><span class="line"><span class="cl">cake-disk1.vmdk
</span></span><span class="line"><span class="cl">cake-disk2.vmdk
</span></span><span class="line"><span class="cl">cake-disk3.vmdk
</span></span><span class="line"><span class="cl">cake-disk4.vmdk
</span></span><span class="line"><span class="cl">cake-disk5.vmdk
</span></span><span class="line"><span class="cl">cake.mf
</span></span></code></pre></div><p>We can see there&rsquo;s a collection of VMDK&rsquo;s, the manifest which inside looks like this:</p>
<pre tabindex="0"><code>SHA1(cake.ovf)= 03AD765EC45B90E13BC22D0115088F08021F2AE5
SHA1(cake-disk1.vmdk)= 92BB519FD1926D4F3C170C727C037E2D5D79775B
</code></pre><p>… and more importantly the OVF, which describes the OVA motherload.</p>
<p>My thoughts were at first to just create a VMX for each of the VMDKs and then I can go to bed. Unfortunately one of the machines has two disks, so the first issue is with figuring out how the OVF nests the <code>rasd</code> - Resource Allocation Setting Data (as per the <a href="http://www.dmtf.org/standards/published_documents/DSP0243_1.1.0.pdf">DMTF OVF Specification V1.1</a>).</p>
<p>Thanks to <a href="http://linux.die.net/man/1/xmlindent">Mr. Pekka</a> for writing <code>xmlindent</code> or you could just use the <a href="http://xmlindent.com/">online</a> version</p>
<p>I was quickly able to see to which VM disks 3+4 belonged to, and create the appropriate VMX skeleton. Now if only there was a parser…</p>
]]></content></item><item><title>Configuring NAT on ESX and ESXi</title><link>https://www.romant.net/2010/07/configuring-nat-on-esx-and-esxi/</link><pubDate>Sun, 11 Jul 2010 02:35:22 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/07/configuring-nat-on-esx-and-esxi/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>ESX doesn&rsquo;t have NAT inbuilt, so here&rsquo;s how to configure it with the help of a VMware appliance called <a href="http://www.pfsense.com/">pfSense</a> (an Open Source firewall/router).</p>
<p>There are three components in this setup:</p>
<ol>
<li>Host</li>
<li>router/pfSense</li>
<li>NAT Client</li>
</ol>
<h2 id="host">Host<a href="#host" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<blockquote>
<p>A great read for beginners and those refreshing is the VMware Virtual Networking Concepts <a href="http://www.vmware.com/files/pdf/virtual_networking_concepts.pdf">whitepaper</a></p>
</blockquote>
<p>Now lets create a network that our NAT&rsquo;ed VMs will be using.
<img src="/images/2010/07/Step2.png" alt=""></p>
<p>When prompted under Connection Type, select a &lsquo;VM Network&rsquo;, as this is for the typical traffic within the Virtual Machine (not IO or management of your machines).</p>
<p>Lets create a vSwitch that doesn&rsquo;t connect to anything, a dud, a blankie. This will be our NAT&rsquo;ed environment. It&rsquo;s quite important that you <strong>DON&rsquo;T</strong> connect a network card to this vSwitch to prevent any inadvertent DHCP leakage. Make sure you have nothing selected.</p>
<p><img src="/images/2010/07/Step3_121.png" alt=""></p>
<p>Give it a name to differentiate.</p>
<p><img src="/images/2010/07/Step3_13.png" alt=""></p>
<p>Once you&rsquo;re done, click finish and you will have something two network available to your VMs:</p>
<ul>
<li>VM Network</li>
<li>NAT Network</li>
</ul>
<p><img src="/images/2010/07/Step_last_summary_2.png" alt=""></p>
<p>Time to setup pfSense. Once you&rsquo;ve downloaded and extracted it. You have the option of either copying it directly to your datastore and then adding directly to inventory, or importing via the <a href="http://www.vmware.com/products/converter/">Standalone Converter</a>. I find the latter is always faster.</p>
<h2 id="routerpfsense">router/pfSense<a href="#routerpfsense" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<blockquote>
<p>Incase you&rsquo;re converting pfSense first (like I did whilst re-doing it for this post), I recommend you disable the network interfaces until you&rsquo;ve finished setting up the host networks. We&rsquo;ll enable these in a later step.</p>
</blockquote>
<figure>
  <img src="/images/2010/07/pfsense_convert_precaution.png">
  <figcaption>Disabled interfaces</figcaption>
</figure>
<p>Once the conversion is complete, time to configure our virtual router. pfSense is provided with two NICs out of the box. One for the WAN interface (which is your internal LAN), and one for &lsquo;its&rsquo; LAN - the one on which it will be servicing DHCP requests.</p>
<p>Mark down the last 4 digits of the MAC address, these will help to validate the following step.</p>
<figure>
  <img src="/images/2010/07/Step_last.png">
  <figcaption>Configuring pfSense NICs</figcaption>
</figure>
<p>Start the pfSense VM. You will be guided through the mapping of the interfaces, and just to make sure - check to see the MAC addresses matching to the VM Network (in my case 67:3c) and NAT Network (67:46).</p>
<figure>
  <img src="/images/2010/07/pfsense_config_2.png">
</figure>
<p>Upon following the wizard, and if you&rsquo;ve followed everything accordingly (or rather I documented the steps properly) you will be shown the interfaces within pfSense, their mapping (WAN vs LAN) and IP addresses.</p>
<p><img src="/images/2010/07/pfsense_summary.png" alt=""></p>
<h2 id="nat-clients">NAT Client[s]<a href="#nat-clients" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>You are now ready to assign clients on this host to the NAT Network and have them pick up addresses dished out by your shiny new appliance.</p>
<p><img src="/images/2010/07/client_network.png" alt=""></p>
<p>The whole setup takes just under 5 minutes from start to finish to complete.</p>
]]></content></item><item><title>The state of private cloud</title><link>https://www.romant.net/2010/06/the-state-of-private-cloud/</link><pubDate>Fri, 25 Jun 2010 07:16:25 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/06/the-state-of-private-cloud/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<figure>
  <img src="/images/2010/06/cloud-complexity.jpg">
  <figcaption>•</figcaption>
</figure>
<p>When you look at the mostly fragmented cloud and ancillary services market, who do you pick?</p>
<p>Amazon, the incumbent in providing no-frills, pay as you go raw crunch-power has carved out the niche over the last few years with its EC2 offering which has been very popular with corporates dipping their toes in the cloud space. Due to the non-exhaustive list of governance, privacy, flexibility, compliance and classification - organisations are finding it difficult to dive completely in, thus the &lsquo;private cloud&rsquo; model is cast.</p>
<p>In order to partake in the race to the bottom within cost of IT operations and service agility so well presented by the cloud pundits, organisations (the more intelligent ones at least) started to re-think internal infrastructure. The simple question was posed - &ldquo;how do we make what we have now - <em>better</em> ?&rdquo;. First step with any problem worth solving is to break it down into its elementary components: as such organisations by their very nature will have numerous divisions, departments, sub-organisations and overhead associated with managing not only the division of these business entities, but mainly their computational dependence - this stuff is COMPLEX!</p>
<p>… or is it?</p>
<p>With what Amazon has achieved within the IaaS and Salesforce in S/PaaS in the recent years is a testament to the fact that true multi-tenanted solutions that can scale and be at face value simple to interact-with and build-atop are possible. The only problem is that to date, no one has managed to do this effectively within the confines of an enterprise.</p>
<p>In a recent <a href="http://vpivot.com/2010/06/24/private-clouds-people-consolidation-and-chargeback/" target="_blank">article</a> Scott Drummonds talks about the necessity in transparency of costs associated with spending between various Lines of Business in the organisation. I wish to see that taken further, and not only must transparency exist in consumption, but also in design and most importantly management of the core infrastructure and the systems that uphold the business.</p>
<p>From Citrix, VMware, Microsoft, Oracle or RedHat - there is still not a single public offering which allows you to manage, automate, delegate and provision datacenter technologies on the fly. The best means to competitively differentiate private cloud vendors will not be done in the hypervisor, but within the middleware. You can wheel as many CloudBursts (am looking at you IBM) or Vblocks (VCE) into an the datacenter and try and call it &ldquo;cloud&rdquo;, but when it comes to true agility with the various datacenters something is missing.</p>
<p>In comes Nimbula, the love child between two former EC2 executives and a development team in South Africa. The aim of the unreleased product is to &ldquo;combines the flexibility, scalability and operational efficiencies of the public cloud with the control, security and trust of today’s most advanced data centers&rdquo; - sounds great! The Nimbula Director is slated for general availability in Q4 2010. What is most interesting is that one of the investors is … *drum roll please* - VMware. They haven&rsquo;t even started, and already have an exit. Wow.</p>
<p>According to <a href="http://searchcloudcomputing.techtarget.com/news/article/0,289142,sid201_gci1513441,00.html" target="_blank">TechTarget</a>, VMware themselves are coming out with a Service Director product, which aims to do exactly what Nimbula just announced.</p>
<p style="direction: ltr;">
  Given Nimbula's pedigree they will be going with the Xen hypervisor, and building their management suite on top. Coupled with the fact that VMware is now one of the main stakeholders provides us with some assurance of compatibility and hopefully a solution that is truly hypervisor agnostic.
</p>
<p style="direction: ltr;">
  Let the management games begin!
</p>
<blockquote>
<p>• adapted from flickr users <a href="http://www.flickr.com/photos/maisonbisson">maisonbisson</a> | <a href="http://www.flickr.com/photos/dominik99">dominik99</a> | <a href="http://www.flickr.com/photos/zeno77">zeno77</a></p>
</blockquote>
]]></content></item><item><title>VSI_NODE_net_tcpip_plumb when adding Ports</title><link>https://www.romant.net/2010/06/vsi_node_net_tcpip_plumb-when-adding-ports/</link><pubDate>Sat, 05 Jun 2010 08:50:32 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/06/vsi_node_net_tcpip_plumb-when-adding-ports/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<figure>
  <img src="/images/2010/06/VSI_NODE_net_tcpip_plumb.png">
  <figcaption>Exception when adding a network</figcaption>
</figure>
<p>Adding a new port (i.e. a vMotion interface) to a vSwitch on vSphere/ESX leads to this lovely error message. If you check your <code>vpxd.log</code> you&rsquo;ll see something the image verbalised.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="o">[</span><span class="n">2010</span><span class="o">-</span><span class="n">06</span><span class="o">-</span><span class="n">04</span><span class="w"> </span><span class="n">15</span><span class="p">:</span><span class="n">30</span><span class="p">:</span><span class="n">52</span><span class="p">.</span><span class="na">411</span><span class="w"> </span><span class="n">03152</span><span class="w"> </span><span class="n">info</span><span class="w"> </span><span class="err">&#39;</span><span class="n">App</span><span class="err">&#39;</span><span class="o">]</span><span class="w"> </span><span class="o">[</span><span class="n">VpxLRO</span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="n">ERROR</span><span class="w"> </span><span class="n">task</span><span class="o">-</span><span class="n">54417</span><span class="p">;</span><span class="w"> </span><span class="n">host</span><span class="o">-</span><span class="n">36589</span><span class="p">;</span><span class="w"> </span><span class="n">vim</span><span class="p">.</span><span class="na">host</span><span class="p">.</span><span class="na">NetworkSystem</span><span class="p">.</span><span class="na">updateNetworkConfig</span><span class="p">:</span><span class="w"> </span><span class="n">vim</span><span class="p">.</span><span class="na">fault</span><span class="p">.</span><span class="na">PlatformConfigFault</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="n">vim</span><span class="p">.</span><span class="na">fault</span><span class="p">.</span><span class="na">PlatformConfigFault</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">dynamicType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&lt;</span><span class="n">unset</span><span class="o">&gt;</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">faultCause</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">vmodl</span><span class="p">.</span><span class="na">MethodFault</span><span class="p">)</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w">  
</span></span></span><span class="line"><span class="cl"><span class="n">text</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;SysinfoException: Node (VSI_NODE_net_tcpip_plumb) ; Status(bad0017)= Out of resources; Message= Instance(0): Input(4) if=0 portset=VMkernel macaddr=00:50:56:76:16:67 tsomss=65535 &#34;</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&#34;Error during the configuration of the host: SysinfoException: Node (VSI_NODE_net_tcpip_plumb) ; Status(bad0017)= Out of resources; Message= Instance(0): Input(4) if=0 portset=VMkernel macaddr=00:50:56:76:16:67 tsomss=65535 &#34;</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w"> 
</span></span></span></code></pre></div><p>Key here is the <code>Out of resources;</code> message. The reason for this is none other than the default number of ports for the vSwitch on ESX is 24, and if you have VM&rsquo;s or other interfaces using up ports (such as AppSpeed probes), you will quickly run out. Switch this easily by going to Configuration -&gt; Networking -&gt; Properties [for the vSwitch in question] and up the value up to and including your growth requirements for the future.</p>
<p><img src="/images/2010/06/step1_2-1.png" alt="">
<img src="/images/2010/06/step3_4.png" alt="">
<img src="/images/2010/06/step_final.png" alt=""></p>
<h2 id="note">Note<a href="#note" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>After you setup a new host, set it to more ports than you require, as you&rsquo;ll need to restart the host for the ports to be provisioned; best to do this immediately after installation.</p>
<p>I think a better message would be to explicitly say <em>&ldquo;Out of available ports on vSwitch - [blah]&rdquo;</em>; instead of the semi-cryptic one presented.</p>
]]></content></item><item><title>Creating bootable ISO : Linux, Solaris, Windows</title><link>https://www.romant.net/2010/05/creating-bootable-iso-linux-solaris-windows/</link><pubDate>Mon, 31 May 2010 12:44:54 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/05/creating-bootable-iso-linux-solaris-windows/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Whenever you&rsquo;re automating OS deployments, you will at one point require to build a custom ISO, with your own kickstart, jumpstart or an OEM folder with apps and instructions to boot.</p>
<p>Here are three <code>mkisofs</code> commands that you can use for each OS, and to ease your search a little.</p>
<blockquote>
<p>You will require to be in the <code>root</code> of each ISO directory
Remember the lone period &ldquo;.&rdquo; at end of each statement</p>
</blockquote>
<h2 id="linux">Linux<a href="#linux" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">mkisofs -q -V VOLUME_NAME -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size <span class="m">4</span> -boot-info-table -R -J -T -o /LinuxISO.iso .&lt;br /&gt;
</span></span></code></pre></div><h2 id="solaris">Solaris<a href="#solaris" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">mkisofs -b boot/grub/stage2_eltorito -c .catalog -no-emul-boot -boot-load-size <span class="m">4</span> -boot-info-table -relaxed-filenames -l -ldots -r -N -d -D -V VOLUME_NAME -o /SolarisISO.iso .&lt;br /&gt;
</span></span></code></pre></div><h2 id="windows">Windows<a href="#windows" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>The <code>Bootable_NoEmulation.img</code> normally lives in the [BOOT] folder. I tend to move it.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">mkisofs -q -b Bootable_NoEmulation.img -no-emul-boot -boot-load-seg <span class="m">1984</span> -boot-load-size <span class="m">4</span> -iso-level <span class="m">2</span> -J -joliet-long -l -D -relaxed-filenames -N -V VOLUME_NAME -o /WindowsISO.iso .&lt;br /&gt;
</span></span></code></pre></div>]]></content></item><item><title>Slipstream VMware Video Drivers into Windows</title><link>https://www.romant.net/2010/05/slipstream-vmware-video-drivers-into-windows/</link><pubDate>Sun, 09 May 2010 18:21:45 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/05/slipstream-vmware-video-drivers-into-windows/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Am currently working on automating WebSphere Portal install on Windows. I do not want Windows restarting the first time it comes up, whether its for installing VMware Tools, or any of its drivers.</p>
<p>What I require is to add the VMware Video drivers to the base Windows installation. This will work for XP/Windows 2003. You can easily integrate the drivers once you&rsquo;ve found them with the use of nLite. The trick is in finding them.</p>
<p>First thing you&rsquo;ll need is the <a href="/2010/04/where-to-find-vmware-tools-on-the-esx-host/">VMware Tools ISO</a> that we discovered a couple posts back.</p>
<figure>
  <img src="/images/2010/05/exploded_iso.png">
  <figcaption>Exploded VMware Tools ISO</figcaption>
</figure>
<p><strong>NOTE</strong>: I rename <code>VMware Tools[64].msi</code> to <code>vtools[64].msi</code></p>
<p>The next step is to extract the <code>vtools64.msi</code> which you can accomplish with:</p>
<pre tabindex="0"><code>msiexec /a vtools64.msi /qb TARGETDIR=c:\driver\
</code></pre><figure>
  <img src="/images/2010/05/Screen-shot-2010-05-09-at-5.50.52-PM.png">
  <figcaption>Extracting VMware Tools</figcaption>
</figure>
<p>After a few seconds, you&rsquo;re done. By navigating to the Common64\VMware\Drivers\Video folder, you will find the vmx_svga.inf that you need for nLite as well as the vmx_svga.sys which is the driver. When it comes to nLite - just point it to the directory.</p>
<h2 id="vmware-video-directory-listing">VMware video directory listing<a href="#vmware-video-directory-listing" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<pre tabindex="0"><code>vmwogl32.dll	  
vmwogl64.dll	  
vmx_fb.dll	  
vmx_mode.dll	  
vmx_svga.cat	  
vmx_svga.inf	  
vmx_svga.sys
</code></pre>]]></content></item><item><title>ESX 4.x kickstart and booting from SAN</title><link>https://www.romant.net/2010/05/esx-4.x-kickstart-and-booting-from-san/</link><pubDate>Sat, 08 May 2010 20:39:04 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/05/esx-4.x-kickstart-and-booting-from-san/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Kickstarts are wonderful. Simple and effective. The ability to automate the mundane installations for *nix all about. In my case, I need to automate the installation of hosts that will be booting from SAN.</p>
<p>We have an admin that once installed a couple of ESX hosts atop other host&rsquo;s boot LUNs. It&rsquo;s pointless blaming the admin, as there&rsquo;s a basic rule that must be followed at all times that will prevent this from happening.</p>
<p><strong>Note</strong> - Don&rsquo;t let the host see boot LUNs for any other host than itself.</p>
<figure>
  <img src="/images/2010/05/Untitled.png">
  <figcaption>ESX Dedicated Boot LUNs</figcaption>
</figure>
<p>This can be accomplished with:</p>
<ul>
<li>LUN Masking (on the host HBA)</li>
<li>SAN Zoning (on your fabric)</li>
<li>Port Grouping (on your storage)</li>
</ul>
<p>Horror story aside, lets have a look at a basic kickstart for the ESX. When you install ESX by hand, it creates a <code>ks.cfg</code> file in root&rsquo;s home. Inside you will find the host configuration at the time of install.</p>
<blockquote>
<p>ASSUMPTION: You have already provisioned the necessary space on your array for your host, and have mapped the host access to that LUN.</p>
</blockquote>
<p>After a few modifications and some cleanup, I ended up with the following</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">accepteula
</span></span><span class="line"><span class="cl">keyboard us
</span></span><span class="line"><span class="cl">auth  --enablemd5 --enableshadow
</span></span><span class="line"><span class="cl"><span class="c1">#this will work on all &#39;fresh&#39; LUNs. If you want to an</span>
</span></span><span class="line"><span class="cl"><span class="c1">#existing vmfs store, then add --overwritevmfs</span>
</span></span><span class="line"><span class="cl">clearpart --firstdisk
</span></span><span class="line"><span class="cl">install cdrom
</span></span><span class="line"><span class="cl">rootpw --iscrypted <span class="nv">$1$MoIxblff$td1t5Oe4Kq8KZqyByh5Bc1</span>
</span></span><span class="line"><span class="cl">timezone --utc <span class="s1">&#39;Australia/Sydney&#39;</span>
</span></span><span class="line"><span class="cl">network --addvmportgroup<span class="o">=</span><span class="nb">true</span> --device<span class="o">=</span>vmnic0 --bootproto<span class="o">=</span>dhcp
</span></span><span class="line"><span class="cl">part <span class="s1">&#39;/boot&#39;</span>  --fstype<span class="o">=</span>ext3 --size<span class="o">=</span><span class="m">1100</span>  --onfirstdisk
</span></span><span class="line"><span class="cl">part <span class="s1">&#39;none&#39;</span>  --fstype<span class="o">=</span>vmkcore --size<span class="o">=</span><span class="m">110</span>  --onfirstdisk
</span></span><span class="line"><span class="cl">part <span class="s1">&#39;HOSTNAME_boot&#39;</span>  --fstype<span class="o">=</span>vmfs3 --size<span class="o">=</span><span class="m">9232</span> --grow  --onfirstdisk
</span></span><span class="line"><span class="cl">virtualdisk <span class="s1">&#39;esxconsole&#39;</span> --size<span class="o">=</span><span class="m">8232</span> --onvmfs<span class="o">=</span><span class="s1">&#39;HOSTNAME_boot&#39;</span>
</span></span><span class="line"><span class="cl">part <span class="s1">&#39;swap&#39;</span>  --fstype<span class="o">=</span>swap --size<span class="o">=</span><span class="m">1228</span> --onvirtualdisk<span class="o">=</span><span class="s1">&#39;esxconsole&#39;</span>
</span></span><span class="line"><span class="cl">part <span class="s1">&#39;/var/log&#39;</span>  --fstype<span class="o">=</span>ext3 --size<span class="o">=</span><span class="m">2000</span> --onvirtualdisk<span class="o">=</span><span class="s1">&#39;esxconsole&#39;</span>
</span></span><span class="line"><span class="cl">part <span class="s1">&#39;/&#39;</span>  --fstype<span class="o">=</span>ext3 --size<span class="o">=</span><span class="m">5000</span> --grow --onvirtualdisk<span class="o">=</span><span class="s1">&#39;esxconsole&#39;</span>
</span></span><span class="line"><span class="cl">%post --interpreter<span class="o">=</span>bash
</span></span><span class="line"><span class="cl"><span class="c1"># ntp settings</span>
</span></span><span class="line"><span class="cl">esxcfg-firewall --enableService ntpClient
</span></span><span class="line"><span class="cl">chkconfig ntpd on
</span></span><span class="line"><span class="cl">cat &gt; /etc/ntp.conf <span class="s">&lt;&lt;EOF
</span></span></span><span class="line"><span class="cl"><span class="s"># ---- ntp.conf ----
</span></span></span><span class="line"><span class="cl"><span class="s">restrict default kod nomodify notrap nopeer noquery
</span></span></span><span class="line"><span class="cl"><span class="s">restrict -6 default kod nomodify notrap nopeer noquery
</span></span></span><span class="line"><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="cl"><span class="s">#replace with your ntp server address
</span></span></span><span class="line"><span class="cl"><span class="s">server x.x.x.x
</span></span></span><span class="line"><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="cl"><span class="s">hostname HOSTNAME
</span></span></span><span class="line"><span class="cl"><span class="s">sed -i -e &#34;s/PermitRootLogin.*/PermitRootLogin yes/g&#34; /etc/ssh/sshd_config
</span></span></span><span class="line"><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="cl"><span class="s">EOF</span>
</span></span></code></pre></div><p>I set out to install onto the FIRST available drive. In my case, thats always LUN 0, and if by some accident there&rsquo;s already a VMFS on it - installation will cease (you can accomplish a force through by adding <code>--overwritevmf</code> to the <code>clearpart</code> line.</p>
<figure>
  <img src="/images/2010/05/Screen-shot-2010-05-08-at-8.14.24-PM.png">
  <figcaption>ESX Kickstart Installation</figcaption>
</figure>
<p>Once the setup completes you will be greeted with a &ldquo;Press &lt;enter&gt; to reboot&rdquo; - in a normal RedHat install you can get around this by adding <code>reboot --eject</code> just before the <code>%post</code> statement. Unfortunately this doesn&rsquo;t seem to work for ESX. I&rsquo;ll update the post once I find a way.</p>
<p>You may notice that I keep referring to <code>HOSTNAME</code> - that&rsquo;s because the <code>ks.cfg</code> is part of another script which puts together a custom ISO for each of our blades.</p>
]]></content></item><item><title>Where to find VMware tools on the ESX host</title><link>https://www.romant.net/2010/04/where-to-find-vmware-tools-on-the-esx-host/</link><pubDate>Wed, 28 Apr 2010 14:06:10 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/04/where-to-find-vmware-tools-on-the-esx-host/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Whenever you update your host, there&rsquo;s a chance that VMware tools have been updated.</p>
<p>To get them, head over to &ldquo;/vmimages/tools-isoimages&rdquo; on the host and you&rsquo;ll be greeted with:</p>
<figure>
  <img src="/images/2010/04/esxhost_vmware_tools_location.png">
</figure>
<p>If you&rsquo;re just after the <code>rpm</code> then rip open the ISO and you&rsquo;re done.</p>
<p><img src="/images/2010/04/vmware_tools_iso.png" alt=""></p>
]]></content></item><item><title>Migrating vCenter as a Virtual Machine</title><link>https://www.romant.net/2010/01/migrating-vcenter-as-a-virtual-machine/</link><pubDate>Mon, 25 Jan 2010 21:40:57 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/01/migrating-vcenter-as-a-virtual-machine/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>The caveats of running vCenter within a VM has been written about to death. So I will mention only what I never found in those posts that is relevant to the environment within which I work:</p>
<h5 id="greater-virtual-performance-over-physical">greater virtual performance over physical<a href="#greater-virtual-performance-over-physical" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h5>
<p>Not every environment is large enough to dedicate a whole 8/12/40/96 GB of RAM Blade to a vCenter. Its simply a waste; the premise on which people dive into virtualisation is that green feeling, saving the environment or the saving the USD.</p>
<p>So businesses tend to &lsquo;donate&rsquo; a physical box that will be the nucleus of their virtual offering. Yet this tends to be an underpowered, not-far from decommission door stopper.</p>
<p>As a Virtual Machine, you&rsquo;re able to utilize the benefit of prompt resizing of the hardware, and at the ability to easily place it on higher-powered machines.</p>
<p>That&rsquo;s the benefit, although what REALLY happens when you decide to move your vCenter around?</p>
<p>vMotion Mission Statement:</p>
<blockquote>
<p>Storage VMotion lets you relocate virtual machine disk files between and across shared storage locations while maintaining <strong>continuous service availability</strong> and complete transaction integrity.</p>
</blockquote>
<p>To me, that reads - &ldquo;stuff will happen while we move your data&rdquo;.</p>
<p>Unfortunately that isn&rsquo;t always the case. Here&rsquo;s the scenario.</p>
<p>Host</p>
<ul>
<li>
<p>DS1</p>
</li>
<li>
<p>DS2</p>
</li>
<li>
<p>DS3</p>
</li>
</ul>
<p>vCenter was living on DS1 (slow-LUN), and I wanted to put it across to DS2. Since vCenter is very important, it&rsquo;s continuous service availability is crucial. Read: {perfect candidate for svMotion}.</p>
<figure>
  <img src="/images/2010/01/vsphere_reconnecting.jpg">
  <figcaption>The message that never went away</figcaption>
</figure>
<p>What happened next is counterintuitive to the credo. The vSphere client freezes, and no new connections can be made to vCenter. If you start monitoring the datastores (kudos to VMware) the VM is actually being transferred.</p>
<p>Once the migration completed, the first time I had to reconnect the vSphere Client; I wasn&rsquo;t happy with this outcome. So I attempted a DS2-&gt;DS3 (both fast-LUNs). Not only did my connection to vCenter not drop this time, but the whole process was seamless and worked as advertised.</p>
<figure>
  <img src="/images/2010/01/Screen-shot-2010-01-25-at-9.21.31-PM.png">
  <figcaption>vCenter Migration</figcaption>
</figure>
<p>I ended up moving the VM in which I house SQL Server (vCenterDB) in the same fashion to the faster LUNS, and everything proceeded to operate as designed.</p>
<p>Lesson learnt: get decent storage.</p>
]]></content></item><item><title>Inconsistency in ESX consuming large LUNs</title><link>https://www.romant.net/2010/01/inconsistency-in-esx-consuming-large-luns/</link><pubDate>Sun, 24 Jan 2010 14:40:46 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/01/inconsistency-in-esx-consuming-large-luns/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>… go with me here.</p>
<p>You are going to have black caviar (highly recommended). You were provided with 50 grams; you figure you can fit at most 45 grams onto the piece of that delicious dark-rye. So what do you do? Do you disregard and thus throwout the 5 grams? … Well it&rsquo;s not important what YOU would do, its important what VMware does!</p>
<p>Mr. ESX tends to look at the excruciatingly expensive, sustenance-providing caviar, and throws out the majority that it can&rsquo;t handle, and opts for the remains in the hard-to-reach crevices of the jar.</p>
<p>What does this all mean for the geek?</p>
<p>There&rsquo;s a decrepit limit of 2TB minus 512 bytes for each LUN that you can present to ESX. Anything larger, it has no love for. So if you were to present it with a 4TB LUN, you would naïvely assume that you would get the bastardised version of 2TB and the rest would be lost in the ether. I guess that would be somewhat logical.</p>
<p>Lets try it:</p>
<figure>
  <img src="/images/2010/01/capacity_available.jpg">
  <figcaption>Capacity vs. Available Space</figcaption>
</figure>
<p>There you have it. Instead of actually using up as much as ESX&rsquo;ly possible (~2TB) from a LUN that has been allocated, VMware chose to only pick up the left-overs (~500GB).</p>
]]></content></item><item><title>Re-Installing vCenter with new DSN credentials</title><link>https://www.romant.net/2010/01/re-installing-vcenter-with-new-dsn-credentials/</link><pubDate>Wed, 13 Jan 2010 12:57:56 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2010/01/re-installing-vcenter-with-new-dsn-credentials/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>If you&rsquo;re ever in a situation where you&rsquo;ve moved the vCenter database, and have actually changed the login details for the database that the DSN points to, and you&rsquo;re using SQL Server. Then upon re-installing vCenter, you will be greeted with:</p>
<blockquote>
<p>&ldquo;Database job [Past day stats rollupvcenter] was created by another user. Please use the same user to setup your DSN or remove the job. ODBC Error: [Microsoft][SQL Native Client][SQL Server]The specified @job_name (&lsquo;Past Day stats rollupvcenter&rsquo;) does not exist.</p>
</blockquote>
<figure>
  <img src="/images/2010/01/vCenter_Install.png">
  <figcaption>Source: IDC 2010 SMO Analysis | repurposed</figcaption>
</figure>
<p>When vCenter is first installed, it schedules jobs with the help of the system DB - MSDB. What&rsquo;s left to do, is just remove the jobs created by the previous dbo of your vCenter data. You achieve this by first listing what jobs are created on the SQL Server.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">SELECT</span><span class="w"> </span><span class="p">[</span><span class="n">job_id</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">originating_server_id</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">name</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">enabled</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">description</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">start_step_id</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">category_id</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">owner_sid</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">notify_level_eventlog</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">notify_level_email</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">notify_level_netsend</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">notify_level_page</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">notify_email_operator_id</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">notify_netsend_operator_id</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">notify_page_operator_id</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">delete_level</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">date_created</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">date_modified</span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">[</span><span class="n">version_number</span><span class="p">]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">FROM</span><span class="w"> </span><span class="p">[</span><span class="n">msdb</span><span class="p">].[</span><span class="n">dbo</span><span class="p">].[</span><span class="n">sysjobs</span><span class="p">]</span><span class="w">
</span></span></span></code></pre></div><p><img src="/images/2010/01/sql_server.png" alt=""></p>
<p>As you can see, four scheduled operations exist. Thankfully you don&rsquo;t have to worry about just clearing this table, as there&rsquo;s a stored procedure that comes within MSDB → <code>sp_delete_job</code></p>
<p>Run it for each of the jobs, and you&rsquo;ll be ready to continue installing vCenter.</p>
]]></content></item><item><title>SOAP wrapper for LabManager written in PHP</title><link>https://www.romant.net/2009/09/soap-wrapper-for-labmanager-written-in-php/</link><pubDate>Wed, 30 Sep 2009 23:49:30 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2009/09/soap-wrapper-for-labmanager-written-in-php/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>LabManager is a great product for when you have to deal with provisioning of images in a hands-off fashion from the IT team. If you&rsquo;re already a vSphere shop, users don&rsquo;t need access to a vSphere client and can manage the lifecycle of their machines through the browser (Windows only though for the console).</p>
<p>For what I&rsquo;m building, I needed access to the API provided by VMware, and unfortunately, it is only provided as a SOAP interface. The documentation is a given, although it is of quite a poor standard. Since case-sensitivity is a must, not to mention <a href="http://twitter.com/romant/status/4496796125">correct parameters</a>.</p>
<p>So how do we go about creating an easy to use PHP page which would consume the .NET WebService?</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="cl"><span class="nv">$namespace</span> <span class="o">=</span> <span class="s2">&#34;http://vmware.com/labmanager&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$soap_dat</span><span class="p">[</span><span class="s2">&#34;username&#34;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&#34;user&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$soap_dat</span><span class="p">[</span><span class="s2">&#34;password&#34;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&#34;password&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$soap_dat</span><span class="p">[</span><span class="s2">&#34;organizationname&#34;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&#34;org&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$soap_dat</span><span class="p">[</span><span class="s2">&#34;workspacename&#34;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&#34;cake&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$client</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">SoapClient</span><span class="p">(</span><span class="s2">&#34;https://server_name/LabManager/SOAP/LabManager.asmx?wsdl&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nv">$header</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">SOAPHeader</span><span class="p">(</span><span class="nv">$namespace</span><span class="p">,</span> <span class="s1">&#39;AuthenticationHeader&#39;</span><span class="p">,</span> <span class="nv">$soap_dat</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nv">$client</span><span class="o">-&gt;</span><span class="na">__setSoapHeaders</span><span class="p">(</span><span class="nv">$header</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nv">$config</span><span class="p">[</span><span class="s2">&#34;configurationType&#34;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&#34;1&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$result</span> <span class="o">=</span> <span class="nv">$client</span><span class="o">-&gt;</span><span class="na">ListConfigurations</span><span class="p">(</span><span class="nv">$config</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nx">print_r</span><span class="p">(</span><span class="nv">$result</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre></div><p>After using some of the methods, I decided to write a wrapper for the LabManager&rsquo;s API, so I could use it within other applications we develop inhouse. You can then call this directly from the command line, and integrate it with your bash/perl - and not have to re-invent the wheel.</p>
<p>As such - I present to you <a href="http://code.google.com/p/phlabmanager">phLabManager</a> - &ldquo;Simple, lightweight wrapper for LabManager 4.0 SOAP API&rdquo; written in PHP.</p>
<p>Once you&rsquo;ve grabbed the labmanager.php, you can write quite succinct calls directly to the methods, without worrying about the implementation. There&rsquo;s an <a href="http://code.google.com/p/phlabmanager/wiki/HowTo">example</a> on usage available.</p>
<p>I haven&rsquo;t finished implementing all the methods, and in the coming days will endeavour to do so, alternatively - you can do it, and commit into the tree. It would be great to get some help in optimizing my rough implementation.</p>
]]></content></item><item><title>vSphere Client - Unexpected end of file has occurred</title><link>https://www.romant.net/2009/08/vsphere-client-unexpected-end-of-file-has-occurred/</link><pubDate>Sun, 23 Aug 2009 17:10:17 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2009/08/vsphere-client-unexpected-end-of-file-has-occurred/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>In the unfortunate scenario that the machine you use to run your vSphere client ever crashes (unfortunately VMware doesn&rsquo;t make an OSX Client), you may wish to start up the client, and click the performance tab. You may be greeted with the following when selecting the &ldquo;Performance&rdquo; tab:</p>
<figure>
  <img src="/images/2009/08/vSphereClient_Unexpected.png">
  <figcaption>Unexpected end of file has occurred. The following elements are not closed</figcaption>
</figure>
<p>This is due to a file which hosts all the chart settings (an XML-based key value pair collection) becomes corrupt, and is actually cut off.</p>
<p>Its quite easily found at : <code>c:\Documents and Settings\user_name\Application Data\VMware\server_name-charts.xml</code></p>
<p>From here, you have several choices:</p>
<ul>
<li>revert to a backup</li>
<li>delete it</li>
<li>clear it (just place <code>&lt;ChartSettings /&gt;</code> inside of it)</li>
</ul>
<p>That&rsquo;s all there is to it. Happy vSphere&rsquo;ing</p>
]]></content></item><item><title>CLI Wizard for WebSphere Portal CumulativeFix Management</title><link>https://www.romant.net/2009/08/cli-wizard-for-websphere-portal-cumulativefix-management/</link><pubDate>Sat, 08 Aug 2009 22:40:00 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2009/08/cli-wizard-for-websphere-portal-cumulativefix-management/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>The unfortunate side-effect of any enterprise-grade software is that it is difficult to manage. There are at least two reasons that I see for this:</p>
<ol>
<li>Training + certification revenue</li>
<li>Tools that are clobbered together over years of being driven by big-customer requests/demands, and not a defined architectural vision.</li>
</ol>
<p>One such example is installing and uninstalling cumulative fixes for WebSphere. My first step was to download the PUI, followed by its extraction and then I had to load the extremely cumbersome and slow Java GUI. Then to use it, I either dropped into X11 forwarding the session from my Mac, or for my unfortunate colleagues - they have to start a VNC session first and then use the client. Stupid (not the colleagues).</p>
<p>So I came up with something that wrapped the <code>updatePortal.sh</code> in between a purpose built interface, accessible from the command line. I bring you, the CLI Wizard for Portal CF&rsquo;s.</p>
<p>Lets disassemble the necessary steps first, and start with uninstalling.</p>
<p>Portal places all the CF definitions into <code>PortalServer/version/PK{number}.efix</code>, these are just xml files which describe the PK. What we need is the PK number and the description.</p>
<p>After a few lines of bash, on a server with several CF&rsquo;s installed the output will look similar to this:</p>
<p><img src="/images/2009/07/PK_list_installed.png" alt=""></p>
<p>Not very useful though, yet. So we now allow for actually selecting one of the CF&rsquo;s through the great bash <code>select</code> statement.</p>
<p>Having the PK number, we are easily able to cut/awk and pass this to the trusty <code>updatePortal.sh</code> to do its uninstalling deed.</p>
<p>The installation is much the same, although you must first obtain the PK jar. In the office we have a build server that spits them out in (in zips with the readme). So the script first of all gives a listing of available CF&rsquo;s to install, and then when you choose the appropriate zip, it will download it and install.</p>
<p>You can download the complete script <em>(no longer available)</em>, and let me know if you have any issues. I thought of distributing this on Google Code, so others that deal with Portal can extend it, as Portal&rsquo;s Java GUI leaves much to be desired.</p>
]]></content></item><item><title>How to virtualize your office - without their knowledge</title><link>https://www.romant.net/2009/07/how-to-virtualize-your-office-without-their-knowledge/</link><pubDate>Sat, 25 Jul 2009 19:46:29 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2009/07/how-to-virtualize-your-office-without-their-knowledge/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>People complain that they don&rsquo;t have enough machines, and when they need servers, they&rsquo;re available. Two of the problems that were prevalent in my workplace. I set out to attempt to rectify this by firstly measuring the utilization rate on some of our busiest servers.</p>
<p>Instead of installing and managing software that monitored CPU/Memory/HDD/Network utilization,  I merely converted the whole machine to a virtual one - and offered it as a replacement under the same IP to all the users. This was done with a quick P2V conversion of the server into a VMware image pushed to a dedicated IBM Blade server running ESX 4.0 - which had far more grunt than the originating server. A few tweaks on the DHCP server to assign the right IP to the new born, and we were away. NOTE: the usage shown is of the machine running on the Blade, not on its original hardware; I&rsquo;ll come back to this later in the post.</p>
<figure>
  <img src="/images/2009/07/cpu.png">
  <figcaption>CPU Usage - 1 Machine</figcaption>
</figure>
<figure>
  <img src="/images/2009/07/disk.png">
  <figcaption>Disk Usage - 1 Machine</figcaption>
</figure>
<figure>
  <img src="/images/2009/07/memory.png">
  <figcaption>Memory Usage - 1 Machine</figcaption>
</figure>
<p>Before I continue, I&rsquo;ll just tell you more about the software stack that is deployed on this specific machine. There is WebSphere + AppServer as well as a local instance of DB2. Mostly as you can see, its Java based, so memory usage will be fairly straight forward as it all gets eaten up on app start, and the variations that we see are from DB2. (I could use a remote DB and alleviate the memory variation all-together, which is something I will be doing with all deployments from now on).</p>
<p>Firstly now, the CPU Usage, throughout the day with constant use of the machine, averaged out to ~5%. Am certain this isn&rsquo;t unheard of, for those that actual look at their data centres and the individual/un-optimized servers. Disk usage, aligns quite nicely with the Memory footprint, which once again points to DB2 doing its job.</p>
<p>So what can I improve here? -  I can do several things:</p>
<ol>
<li>remove local DB, and deploy into a contained VM cluster, or just point it at a dedicated machine (which will also be a VM)</li>
<li>if I offload the DB, I can increase the heap size within WebSphere for increased startup time, and overall performance</li>
<li>put <strong><em>more</em></strong> machines onto this single Blade</li>
</ol>
<p>Realising the first two points only after looking at the graphs (to write this post), I still haven&rsquo;t implemented them. I did though - do the third.</p>
<figure>
  <img src="/images/2009/07/cpu_3.png">
  <figcaption>CPU Usage - 3 Machines</figcaption>
</figure>
<figure>
  <img src="/images/2009/07/disk_3.png">
  <figcaption>Disk Usage - 3 Machines</figcaption>
</figure>
<figure>
  <img src="/images/2009/07/memory_3.png">
  <figcaption>Memory Usage - 3 Machines</figcaption>
</figure>
<p>Very quickly you realise that although there&rsquo;s an abundance of processing power, there&rsquo;s <em>just</em> not enough RAM on the host blade. The ration of Ghz to Gbyte&rsquo;s of RAM is about 3:1, instead it should be at the very least 1:1. Keep this a consideration next time have to put a new purchase order for more machines.</p>
<p>In the beginning of the post, I mentioned that the current blade host although more powerful than the original home of this software stack, it is far more scalable, and that is one of the reasons why I wanted to transfer and consolidate the numerous x345&rsquo;s we have onto several blades. Most of the x345&rsquo;s that were hosting servers are now turned off, the remaining few, I&rsquo;m building a storage cluster with, to act as a iSCSI target server for the ESX&rsquo;ed Blades.</p>
<p>What was satisfying was some people commenting on how fast the servers responded, little did they know that they were virtualized. Lesson: don&rsquo;t buy 20 cheap and nasty servers, but a blade centre and start populating it as your budget permits.</p>
]]></content></item><item><title>VMWare Converter fails to publish a split-sparse image to ESX</title><link>https://www.romant.net/2009/04/vmware-converter-fails-to-publish-a-split-sparse-image-to-esx/</link><pubDate>Mon, 20 Apr 2009 14:38:05 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2009/04/vmware-converter-fails-to-publish-a-split-sparse-image-to-esx/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<pre tabindex="0"><code>&#34;FAILED: The object or item referred to could not be found&#34;
</code></pre><p>.. is the extremely helpful message that VMWare converter displays when it fails.</p>
<p><img src="/images/2009/04/vmware-conversion-status.jpg" alt=""></p>
<p>Digging deeper, within the logs we can see that there are multiple instances of</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="s2">&#34;Warning: failed to create directory&#34;</span>
</span></span></code></pre></div><p>and</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="s2">&#34;Warning: failed to clone directory tree&#34;</span>.
</span></span></code></pre></div><p>The simple work-around is to convert the vmdk disk to a monolithic-sparse.</p>
<p>You can do this by issuing:</p>
<p><code>$ vmware-vdiskmanager -r original.vmdk -t 0 destination.vmdk</code></p>
<p>This will clone the disk image as well as modify it from being composed of 2GB files for the entirety of your VM to a single vmdk referred to as a &lsquo;monolithic-sparse&rsquo; (merely referring to the fact that it will increase in size automatically to encompass the the VM partition).</p>
<p>After completing the cloning process, you should have no problems in restarting the conversion process, and it should complete as advertised.</p>
]]></content></item><item><title>Empty iPhone Emails - Solved</title><link>https://www.romant.net/2008/08/empty-iphone-emails-solved/</link><pubDate>Mon, 25 Aug 2008 21:51:28 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2008/08/empty-iphone-emails-solved/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>iPhones Firmware update 2.1, seems to have gotten rid of the problem. If now only Apple would fix the damn <a href="http://twitter.com/romant/statuses/918985782">calendar bug</a></p>
<p>Have you recently sent an email from your beloved iPhone and have it delivered - empty? Then when you look at the sent on your phone you get the lovely: &ldquo;This message has no content&rdquo;.</p>
<p><img src="/images/2008/08/img-0007.png" alt=""></p>
<p>It was simple - the problem was my signature. Which constituted of a simple &lsquo;•&rsquo;. An elevated full-stop, also known as bullet-point.</p>
<p>There appears to be a bug in the iPhone that is as follows:</p>
<ul>
<li>If you send an email with a • as the LAST character, your sending bar at the bottom of Mail.app will continually say &lsquo;Sending&rsquo;, and the email will not even show up in your sent</li>
<li>If you send an email with words, then • and then some more words - not a problem - it will be delivered</li>
</ul>
<p>If I didn&rsquo;t know better, I&rsquo;d say that upon Unicode conversion upon sending, the email becomes corrupt through a rogue parser.</p>
<p>Quite an oversight on Apple&rsquo;s behalf, and has only appeared since the 2.0.2 update.</p>
<p>Moral of the story - don&rsquo;t have a bullet point as the last character in your emails, let alone your signature.</p>
<p>Have you noticed any strangeness in your iPhones behaviour?</p>
<p>•</p>
]]></content></item><item><title>Paperless office - the story of the S510M</title><link>https://www.romant.net/2008/08/paperless-office-the-story-of-the-s510m/</link><pubDate>Sun, 24 Aug 2008 01:28:39 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2008/08/paperless-office-the-story-of-the-s510m/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Going green? Or going neat? Get rid of that paper!</p>
<figure>
  <img src="/images/2008/08/post-it.jpg">
  <figcaption>Paper stack. Source: flickr{bookgrl}</figcaption>
</figure>
<p>Think of all the bills, invoices, warranty cards, tax refunds and bank statements that you file away, day after day. The problem here is that paper is bulky, and takes up a lot of physical space, especially if you’re an owner of a filing cabinet.</p>
<p>My hope for this task was to achieve a state where I can be light on my feet, so should I require to move places or send off a tax returns, I can now do so within a few minutes and not hours, and perhaps even to save myself a bit of sanity</p>
<h2 id="goals">Goals<a href="#goals" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<ul>
<li>quick - no one wants to spend 5 minutes processing each document that comes in the mail</li>
<li>searchable - putting in an account number of any kind, should bring up ALL the relevant document. So OCR here is a must</li>
<li>manageable and easy - I don’t want to wade through hundred of folders to get the document that I want. Plus should I wish to group a set of files together for a submission, that should also be easily achieved</li>
</ul>
<p>What will you need:</p>
<ul>
<li>document scanner</li>
<li>OCR software</li>
<li>some time to plan-out your storage strategy</li>
</ul>
<h3 id="quick">Quick<a href="#quick" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>Speed is an important factor when deciding on picking the right document scanner. I looked at several brands, but being an Apple user, am unfortunately limited to a certain domain of equipment with drivers that will work with OSX. I went with a Fujitsu ScanSnap S510M. The ‘M’ n the model denoting ‘Mac’, so naturally the only difference between that and the non-mac version is that its white and comes with apple drivers. Fortunately for me and you, it competes very well against the competition such as Canon DR 2050C</p>
<h3 id="searchable">Searchable<a href="#searchable" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<figure>
  <img src="/images/2008/08/yep-papers-devonthink-comparison.jpg">
  <figcaption>Yep Devon Papers software Comparison</figcaption>
</figure>
<p>The ability to find a scanned document by varying characteristics such as tags and creation dates and not merely by the hierarchy of parent folders, I find quite a necessity. Several applications that I looked at, had each their good points and down-right annoying.</p>
<p>DEVONthink Pro Office apart from the dated interface, lack of tagging ability {think folders}, <strong>$150 dollar price tag</strong> - is quite a lot like Lightroom for your documents. It has a lot of nice features, such as word occurrence calculators, which helps you pick out the most unique descriptions for each document. Devon keeps a database that you must also backup, of all the structure and data that you enter about each of the documents, so not the most agile of concepts.</p>
<p>Yep by Ironic Software is one of the more popular solutions. Thanks in-part to their clean design and ability to tag each document. It too relies on an database {XML-based plist} for the storage of its own meta-data. After spending quite a bit of time with Yep, I very much like the speed and almost ‘freshness’ of the app. Its drawbacks are also its strong points, it doesn’t have an OCR engine, which is great - since it leaves it up to you the user to figure out which one you wish to use. I tried both ABBY, and Acrobat; prefer the latter due to speed, and ability to do some compression with help of AppleScript before spitting out the resulting PDF.</p>
<p>I did notice a few bugs on first use</p>
<ul>
<li>by setting the ‘original document created’ field, the date doesn’t get saved to the file itself, and thus isn’t reflected in Finder’s ‘Info’.</li>
<li>ability to create multiple smart collections of documents with the same name {screenshot below}</li>
<li>when searching for tag occurrence within documents and you aggregate several tags together, an empty result-set is generated</li>
</ul>
<blockquote>
<p>I sent the above-mentioned issues to the developers, and I have yet to hear back from them. Will update this section when I get a reply.</p>
</blockquote>
<p>Despite the technical flaws, am a big fan of the workflow that Yep presents, yet their testing practices leave much to be desired.</p>
<p>Last but not least, Papers, an application that specializes in the storage and research of scientific papers. I would leave it at that, I didn’t find it useful for the task at hand, that’s not to say it isn’t good at what its designed for.</p>
<h3 id="manageable">Manageable<a href="#manageable" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>Although tightly related with the previous section, manageability of your documents is something that will underpin how well you’re able to search for items once you get all those documents into some sort of a repository.</p>
<p>Unfortunately all the applications I’ve looked at, keep their own database of the meta-data. This is unfortunate for two reasons:</p>
<ol>
<li><strong>Switching cost</strong> - between applications is increased, as you’re more likely to stay with an app once you’ve imported a copious number of documents and succumbed to the apps way of thinking.</li>
<li><strong>Backup</strong> - of not only the documents but also the database has to be thought of. This is where Devon makes it easy, by allowing you to place its database file into any location you desire, such as with your documents. What’s worse is that Yep doesn’t give you that freedom, and keeps its library within your Application Support folder. I received an email from ‘Ironic Support’ informs me that the only way to keep documents and data-store in one location, is if you keep all documents in your <code>Application Support/Yep</code> folder.</li>
</ol>
<h3 id="the-scanner">The Scanner<a href="#the-scanner" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>An important consideration for this whole task is the scanner itself. So what are you looking for in a document scanner? It doesn’t really matter what I say here, as price inevitably dictates peoples choice. Personally I saw the time it takes me to collate, organise, and file my .. err files extremely wasteful. It ended up being about how much my time is worth to me in the long run.</p>
<p>After doing some research the decision was between two models, the Fujitsu S310M and the S510M. The baby {given its diminutive size} of the two, S310M has one of the most attractive features in a document scanner, it can be powered merely off the USB ports on your laptop. So if you travel a lot, and its important to scan research papers {if not available in PDF-form already} or contacts, then you can’t go past the S310M. I chose to go with the S510M hoping that the extra $100 will result in a better quality scanning ‘head’ if I may call it that; so your choice should also depend on how many documents you’re going to be scanning. If you’re merely going to be doing a couple of pages a day, then grab the S310M alternatively if you are swamped with papers on a daily basis, or are going to be re-scanning your complete paper filing cabinet it might be an idea to go for the big brother S510M.</p>
<p>The shots below are to allow you to see comparatively how big or small this document scanner really is. I didn&rsquo;t want to use the metric system, nor the imperial system - to prevent confusion. So I picked a unit everyone is familiar with. So the scanner is about 1.3 iPhones tall, with a footprint of about 1.1 iPhones, with the length of just under 2.3 iPhones.</p>
<p><img src="/images/2008/08/Closed_Fujitsu_ScanSnap_S510M_t.jpg" alt="">
<img src="/images/2008/08/SIDE_Fujitsu_ScanSnap_S510M_t.jpg" alt="">
<img src="/images/2008/08/TOP_Fujitsu_ScanSnap_S510M_t.jpg" alt=""></p>
<p>Both scanners do duplex scanning, thus double sided documents are not a problem. What impressed me most is how well the paper feeder actually works. I’ve had the experience of working with a Canon DR 2050C and if you mis-align a page, or put something of obscure size, such as a shopping docket through - you were bound to get it jammed, not so with the S510M. I threw about a hundred sheets of A4, A5, dockets, scrunched receipts from the corner PC store, throughout the duration of the day and without a single twitch it generated a double-sided PDF for me; with the help of Acrobat 8.0 Professional and some AppleScript it OCR’ed and knocked out backgrounds for me too. In instances where I was a little eager and mis-aligned the paper, the software automatically corrected any skewing and rotated the page upright - nice!</p>
<h3 id="conclusion">Conclusion<a href="#conclusion" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>When I first embarked on setting myself free from dependence on the myriad of documents, I was very hesitant to lay down the $&rsquo;s for a scanner. Albeit since it arrived, it has been a blessing. As soon as I scan a document, back it up {on that in the next post}, I shred it. Hence to anyone that values their time, and ability to streamline some of the mundane tasks of paper management I couldn&rsquo;t recommend the idea of a paperless office more.</p>
<p>Have you made your office paperless?</p>
]]></content></item><item><title>Fantastic GPS Logger, a Field Report for BT-1000P</title><link>https://www.romant.net/2008/08/fantastic-gps-logger-a-field-report-for-bt-1000p/</link><pubDate>Fri, 15 Aug 2008 22:00:40 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2008/08/fantastic-gps-logger-a-field-report-for-bt-1000p/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>To add to the ever increasing arsenal of gadgets to never leave at home, comes the BT-1000P GPS Logger.</p>
<p>Having recently purchased the unit, especially for the purpose tagging all the photos for an upcoming trip, I flew away extremely happy, witnessing the outstanding performance of this little device. You can see a screenshot of Google Earth displaying the track below; its the takeoff from Sydney towards Tokyo.</p>
<figure>
  <img src="/images/2008/08/google-earth-romant-net-bt-1000p-sydney-thumb.jpg">
  <figcaption>Generated using Google Earth and BT-1000P</figcaption>
</figure>
<p>What sets this unit apart from other loggers and GPS units on the market, is its ability to not only acquire a signal within the boundaries of an airplanes fuselage, but keep that sync as the airplane is banking. This latter achievement is the result of the -158dBm sensitivity rating of the unit.</p>
<h2 id="geotagging">Geotagging<a href="#geotagging" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>In order to couple the <strong>data off the unit</strong> with your images, first of all you must make sure that the date+time is the same on both the unit, and your camera. Then based on the time of each point recorded and the time a photo was taken, the closest data point becomes the location of where the photo was taken.</p>
<p>There&rsquo;s nothing you can do about the GPS, since its sync&rsquo;ed with the satellites and stored in UTC. What is important though is to adjust the cameras time to the Time Zone of your location, this will save you much heartache later on when you have to adjust the times.</p>
<p>For my needs, I thought I&rsquo;d try out HoudahGeo, and GPSPhotoLinker. I very quickly dismissed HoudahGeo, because I was unable to try it &lsquo;properly&rsquo;. By which I mean use it unrestricted for a period of my journey. I don&rsquo;t believe its possible to evaluate certain software unless you can actually try your complete workflow with the software, and see if it fits, HoudahGeo unfortunately provides you with a handicapped version.</p>
<p>In comes GPSPhotoLinker, which is actually a free app, and gets the job done surprisingly well. What you&rsquo;ll notice is that once you combine your photos with the exported data from the GPS, it will actually look up the City and Suburb data as well and embed that into the EXIF along with the GPS location. This is extremely useful for my Lightroom catalog where I can pick things based on the City as looked up by GPSPhotoLinker - brilliant! This is extremely helpful when you&rsquo;re island-hopping, as is inevitable in Greece, or are merely in a new place.</p>
<figure>
  <img src="/images/2008/08/lightroom-screenshot-locations.jpg">
  <figcaption>Lightroom Screenshot Locations</figcaption>
</figure>
<p>As it stands, I think its a wonderful little unit that has served its purpose extremely well. I would highly recommend it, and will not be leaving the house without. It now lives at the top of my camera bag.</p>
]]></content></item><item><title>BT-1000P mini-review on a mac</title><link>https://www.romant.net/2008/06/bt-1000p-mini-review-on-a-mac/</link><pubDate>Thu, 12 Jun 2008 14:36:53 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2008/06/bt-1000p-mini-review-on-a-mac/</guid><description>After looking at the Sony GPS-CS1, Wintec WBT-100 and GlobalSat DG-100, I concluded that the BT-1000P is by far the best unit for my needs.</description><content type="text/html" mode="escaped"><![CDATA[<p>Am soon going away on a little trip, over to Europe, through Tokyo. Wishing to record my trip, as well as have some data for geocoding the photos, I went on a quest to find a GPS unit that allowed me to:</p>
<ul>
<li>log data to internal memory</li>
<li>make sure there&rsquo;s LOTS of memory</li>
<li>and lots of battery</li>
</ul>
<figure>
  <img src="/images/2008/06/bt-1000p-4.jpg">
</figure>
<p>After looking at the Sony GPS-CS1, Wintec WBT-100 and GlobalSat DG-100, I concluded that the BT-1000P is by far the best unit for my needs.</p>
<ul>
<li>First of all, the GPS chip supports up to 51-channels, with sensitivity down to -158dBm, which allows me to get a satellite lock even at the university concrete monstrosity of a car-park.</li>
<li>It has integrated bluetooth, so I can use it as a replacement for my ageing Holux-236.</li>
<li>Most importantly, it can log around 200,000 points, with my current configuration of strings, only 122,398 (@5 second intervals, that&rsquo;s 7 days of 24 hour logging before I have to clear it!)</li>
</ul>
<p>What pushed me to purchasing after looking at the specifications though is the battery.</p>
<ul>
<li>The same as you find in most Nokia phones [BL-5C], which can be picked up cheaply off eBay</li>
<li>Delivers a claimed 32 hrs of logging, although I was able to get 26 hours without any problems, before the little red battery starts to flash. Mind you - I didn&rsquo;t fully charge it, and just started running it soon after receiving it in the post.</li>
</ul>
<p>Now I needed the unit to work on a mac, which the BT-1000P doesn&rsquo;t do out of the box. The good news is that there&rsquo;s a project called <a href="http://bt747.wiki.sourceforge.net/">bt747</a> that lets you interact with the BT-1000P.</p>
<p><img src="/images/2008/06/bt-1000p-3.jpg" alt="">
<img src="/images/2008/06/bt-1000p-5.jpg" alt="">
<img src="/images/2008/06/bt-1000p-2.jpg" alt=""></p>
<p>Upon connecting the unit via USB the rest of the steps are quite simple:</p>
<ol>
<li>Download and install the USB-&gt;Serial <a href="http://www.silabs.com/tgwWebApp/public/web_content/products/Microcontrollers/USB/en/mcu_vcp.htm">driver</a></li>
<li>Download <a href="http://bt747.wiki.sourceforge.net/">bt747</a></li>
<li>Switch the BT-1000P to &lsquo;LOG&rsquo; mode</li>
<li>Copy <code>RXTXcomm.jar</code> and <code>librxtxSerial.jnilib</code> into <code>/Library/Java/Extensions</code></li>
<li>Run <code>run_rxtx.sh</code></li>
</ol>
<p>You should get an extremely ugly GUI</p>
<p><img src="/images/2008/06/bt747.jpg" alt="">
<img src="/images/2008/06/bt747_connected.jpg" alt=""></p>
<p>Just hit &lsquo;Connect Port Nbr&rsquo; and you&rsquo;re ready to go. You should get something similar to: After this, all you have to do, is run around the block a few times with your unit in LOG mode. Come back home, run the app again then: Under the &lsquo;File&rsquo; tab, set the Output directory to a location that has world write access, then hit &lsquo;Apply &amp; Set the above values&rsquo; Alternatively create a directory in your <code>/var</code> and <code>sudo chmod 777 &lt;directory&gt;</code>.</p>
<ol>
<li>Now -&gt; &lsquo;Log&rsquo; tab</li>
<li>Hit &lsquo;Get Log&rsquo; button {this might take a while, depending on how long your jog was}</li>
<li>After its complete, feel free to select the output format, either CSV, GPX or KML.</li>
</ol>
<p><img src="/images/2008/06/bt747_getting_log.jpg" alt=""></p>
<p>If you chose to export a KML, and you have Google Earth installed, you should get a nice looking track. Unfortunately it is evident that the BT-1000P doesn&rsquo;t filter its points prior to writing them out, resulting in data that isn&rsquo;t representative being recorded, hence you can observe the spike.</p>
<figure>
  <img src="/images/2008/06/picture-3.jpg">
  <figcaption>BT-1000P Google Earth</figcaption>
</figure>
<p>Now to get ready for my last exam tomorrow morning, and then to start packing for the trip. Once I&rsquo;m back, will report on how the unit goes in the field, and I&rsquo;ll include some geocoded images.</p>
<h3 id="update">UPDATE<a href="#update" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p><img src="/images/2008/06/bt-1000p.jpg" alt=""></p>
<p>Upon the comment below by Benn, I remembered a feature that this unit has, that every time you take a photo on your camera - you can also hit the big red button on the tom of the unit. This marks the POI in the data stream. Merely allows you to come back for any manual intervention and find interesting parts easier.</p>
]]></content></item><item><title>Get Nightly WebKit without SVN</title><link>https://www.romant.net/2008/04/get-nightly-webkit-without-svn/</link><pubDate>Sun, 13 Apr 2008 18:59:22 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2008/04/get-nightly-webkit-without-svn/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p><img src="/images/2008/04/webkit-icon.png" alt=""></p>
<p><a href="http://blogs.computerworld.com/safari_is_about_to_get_crazy_fast">Everyone</a> agrees that <a href="http://www.webkit.org/">WebKit</a> is the faster browser engine. Plus it&rsquo;s my favourite browser/engine in OSX</p>
<p>Problem is that it doesn&rsquo;t update itself automatically - and every night there&rsquo;s a beautiful new build that comes out - which I simply must have.</p>
<p>So in order to save you time - here&rsquo;s a little script that I put together this afternoon that will download the latest build at the push of a button.</p>
<p>Initially I wrote it with wget, but realised not everyone will have it installed - hence here&rsquo;s a version with curl</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="cl"><span class="c1">#  getWebKit.sh - Obtain the latest WebKit build</span>
</span></span><span class="line"><span class="cl"><span class="c1">#</span>
</span></span><span class="line"><span class="cl"><span class="c1">#  Created by Roman Tarnavski on 2008-04-13.</span>
</span></span><span class="line"><span class="cl"><span class="c1">#  For an updated version head to www.romant.net</span>
</span></span><span class="line"><span class="cl"><span class="c1">#</span>
</span></span><span class="line"><span class="cl"><span class="c1">#</span>
</span></span><span class="line"><span class="cl"><span class="c1">#  Distributed under a Creative Commons Attribution 3.0 License</span>
</span></span><span class="line"><span class="cl"><span class="c1">#  For more details on the license: http://creativecommons.org/licenses/by/3.0/</span>
</span></span><span class="line"><span class="cl"><span class="nv">var_dir</span><span class="o">=</span><span class="s2">&#34;/var/tmp/&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -n <span class="s2">&#34;Downloading WebPage ...&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">location</span><span class="o">=</span><span class="s2">&#34;http://nightly.webkit.org&#34;</span>
</span></span><span class="line"><span class="cl">curl http://nightly.webkit.org/index.html -o <span class="si">${</span><span class="nv">var_dir</span><span class="si">}</span>index.html &gt; .get_webkit.log 2&gt;<span class="p">&amp;</span><span class="m">1</span>
</span></span><span class="line"><span class="cl"><span class="nv">nightly</span><span class="o">=</span><span class="sb">`</span>cat <span class="si">${</span><span class="nv">var_dir</span><span class="si">}</span>index.html <span class="p">|</span> grep <span class="s2">&#34;.dmg&#34;</span> <span class="p">|</span> cut -d <span class="s1">&#39;&#34;&#39;</span> -f <span class="m">2</span> <span class="p">|</span> uniq<span class="sb">`</span>
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Done&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">filename</span><span class="o">=</span><span class="sb">`</span><span class="nb">echo</span> <span class="nv">$nightly</span> <span class="p">|</span> cut -d <span class="s1">&#39;/&#39;</span> -f 5<span class="sb">`</span>
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -n <span class="s2">&#34;Getting WebKit ...&#34;</span>
</span></span><span class="line"><span class="cl">curl <span class="nv">$location$nightly</span> -o <span class="nv">$var_dir$filename</span> &gt;&gt; .get_webkit.log 2&gt;<span class="p">&amp;</span><span class="m">1</span>
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;Done&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="o">[</span> <span class="nv">$?</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">	<span class="nb">echo</span> -n <span class="s2">&#34;Installing WebKit ...&#34;</span>
</span></span><span class="line"><span class="cl">	rm -rf /Applications/WebKit.app
</span></span><span class="line"><span class="cl">	hdiutil attach -quiet <span class="s2">&#34;</span><span class="nv">$var_dir$filename</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">	cp -R /Volumes/WebKit/WebKit.app /Applications/
</span></span><span class="line"><span class="cl">	hdiutil detach -quiet /Volumes/WebKit
</span></span><span class="line"><span class="cl">	<span class="nb">echo</span> <span class="s2">&#34;Done&#34;</span>
</span></span><span class="line"><span class="cl">	<span class="nb">exit</span> <span class="m">0</span>
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span><span class="line"><span class="cl"><span class="c1">#cleanup</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="o">((</span> <span class="nv">$?</span> <span class="o">))</span><span class="p">;</span> <span class="k">then</span> rm <span class="si">${</span><span class="nv">var_dir</span><span class="si">}</span>index.html <span class="o">&amp;&amp;</span> rm <span class="nv">$var_dir$filename</span> <span class="p">;</span> <span class="k">fi</span>
</span></span></code></pre></div><p>Let me know how you go</p>
<p> </p>
]]></content></item><item><title>OSX Not Colour Calibrated</title><link>https://www.romant.net/2008/03/osx-not-colour-calibrated/</link><pubDate>Thu, 20 Mar 2008 14:50:23 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2008/03/osx-not-colour-calibrated/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>It seems that Apple left one thing out of the equation for Safari 3.1 - colour adherence. With my new Dell 2408WFP, I was getting quite stroppy - as no matter how many times I would calibrate it - it would continually not show the correct colours as compared to my MacBook Pro screen [matte] - or so it seemed. I initially posted two photos on DPreview hoping to ascertain some unknown out of the crown. Here is the MacBook Pro screen with the &lsquo;correct&rsquo; colour.</p>
<h2 id="macbook-pro">MacBook Pro<a href="#macbook-pro" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<figure>
  <img src="/images/2008/03/mbp.jpg">
  <figcaption>MacBook Pro - Colour Calibrated</figcaption>
</figure>
<h2 id="dell-2408wfp">Dell 2408WFP<a href="#dell-2408wfp" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<figure>
  <img src="/images/2008/03/dell.jpg">
  <figcaption>Dell 2408WFP - Colour Calibrated</figcaption>
</figure>
<p>You can evidently see that the Dell shows a purple instead of a blue. Very disappointed was I to think that a screen on which I just dropped some hard earned, can&rsquo;t even display &ldquo;BLUE&rdquo;!</p>
<h2 id="and-then">and then..<a href="#and-then" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>I just thought I would open it up the images in Firefox - just to check.. and voila</p>
<p>![](/images/2008/03/safari_firefox colour calibration.jpg)</p>
<p>Unfortunately after a few more tests like the above - it seems across OSX is the same thing - ie. Finder when displaying the above photos - merely shows it in shades of purple as well.Now the only reason I even came across the fact that it could be an application specific error - is when I look at the photo in Lightroom 1.4, depending on which screen I have the image on - it changes the colours to suit the screen. So my question is - if Lightroom can do it - why can&rsquo;t OSX?</p>
<h2 id="update">Update<a href="#update" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>After re-calibrating both monitors with the Gretag Macbeth i1 Display 2, I have composed some windows together to show the difference between different applications and their adherence to the needed colour management.</p>
<p>The applications I used for this test, and in this specific order are:</p>
<ol>
<li>Safari3.1 (5525.13)</li>
<li>Lightroom 1.4</li>
<li>Firefox 3.0b4</li>
<li>Preview 4.1 (469.2.1)</li>
<li>Photoshop CS3</li>
</ol>
<h2 id="dell-2408wfp-1">Dell 2408WFP<a href="#dell-2408wfp-1" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<figure>
  <img src="/images/2008/03/safari_lightroom_firefox_preview_photoshop_dell%202408wfp_IMG_3580.JPG">
  <figcaption>Dell 2408WFP - Colour Calibrated</figcaption>
</figure>
<p>The peculiar thing about the Dell, is that Lightroom actually showed a very strong purple instead of blue, and then after about a minute - without me physically interacting with the computer - it simply changed to the correct colour. Which is depicted in the shot above.</p>
<h2 id="macbook-pro-1">MacBook Pro<a href="#macbook-pro-1" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<figure>
  <img src="/images/2008/03/safari_lightroom_firefox_preview_photoshop_mbp_matte_IMG_3581.JPG">
  <figcaption>MacBook Pro - Colour Calibrated</figcaption>
</figure>
<h2 id="analysis">Analysis<a href="#analysis" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>It seems that in the initial shot with the 2408WFP, Safari obviously does the worst, showing a blatantly purple where there should be blue. Other applications vary slightly in the shades of blue, but otherwise display a fairly closely matched colour.</p>
<p>When it comes to the MBP to display the same set of images, Safari, Lightroom, and Photoshop - all display a shade of purple instead of blue.</p>
<p>The annoying part is that whilst writing this - if leaving the  specific application on either screen - it adopts the correct colour profile, and displays the correct colour.</p>
<p>As such - I have no choice but to personally conclude that it seems that OSX isn&rsquo;t informing the application that it has been moved to another screen in a timely manner.</p>
<p>There have been reports that the Dell uses a new backlighting system that the i1 is finding difficult to actually meter, yet to me it seems there&rsquo;s more software problems at play here under the bonnet of OS more than anything else.</p>
]]></content></item><item><title>Neat Lightroom Shortcut</title><link>https://www.romant.net/2008/03/neat-lightroom-shortcut/</link><pubDate>Mon, 17 Mar 2008 22:18:20 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2008/03/neat-lightroom-shortcut/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Ever wanted to hide the left+right pane&rsquo;s within Lightroom without having either custom defined shortcuts, or modifying OS X keyboard preferences to enable function keys?</p>
<p>Can&rsquo;t believe I stumbled onto this shortcut, as its exactly what I wanted to do. You see, I didn&rsquo;t want to disable the multimedia keys as defined by default in OSX - as it would lead me to having to hold Fn to do one-key thing such as volume. So I went about pressing everything I could - and by mistake I came upon the following shortcut.</p>
<p><code>Fn + Tab</code></p>
<p>Which hides both - your left and right panes.</p>
<p>Quite useful for both development view [at least until Adobe decides to provide secondary monitor support], and grid view.</p>
<p>Before:</p>
<figure>
  <img src="/images/2008/03/lightroom-contracted.jpg">
  <figcaption>Lightrom - Expanded Panels</figcaption>
</figure>
<p>.. and After:</p>
<figure>
  <img src="/images/2008/03/lightroom-expanded.jpg">
  <figcaption>Lightrom - Contracted Panels</figcaption>
</figure>
]]></content></item><item><title>File Backup Strategy</title><link>https://www.romant.net/2008/01/file-backup-strategy/</link><pubDate>Tue, 15 Jan 2008 14:56:04 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2008/01/file-backup-strategy/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Photos are the most precious material possession anyone owns, and should be the first to be saved in the case of a fire.</p>
<p>So how does one provide the appropriate backup solution to safeguard their cherished memories? My general approach to backing up the photos is by no means simple, yet it does the job.</p>
<p>Just as a disclaimer - the main application that I use is unfortunately Windows only - although a similar setup can be achieved using rsync.</p>
<p>Here goes:</p>
<ol>
<li>Download the images off the camera using Lightroom, which simply stores them in the yyyy-mm-dd format</li>
<li>SyncBackSE then automatically mirrors the newly added images onto a separate hard drive in my T60’s expansion slot, for a pseudo RAID-1 solution</li>
<li>When I&rsquo;m at home there are two states for my laptop, either docked or free and about. In either case, my network drives get mounted. Once this occurs, the local SyncBackSE copies the images straight onto my server.</li>
<li>The server&rsquo;s two main backup drives are configured in a RAID-1, using Adaptec 1210SA adapter</li>
<li>I then have another copy of SyncBackSE installed on the server, which once a week copies all the files from the RAID-1 drive, onto a third drive within the server. This gives me some time to recover shots if I did delete any.</li>
<li>Once a month or there about – I also have an external drive which I merely copy manually and then store at a friends house.</li>
<li>As mentioned in the previous step, a third drive is given 1 week of lead time prior to being updated. Now in order to solve the geographic problem of having all the backups under the one roof - I have a Site-to-Site VPN with a relative, for whom I purchased a 500GB drive, onto which I then backup once a week.</li>
</ol>
<p>The great thing about this setup is that as soon as a file is added by me or I modify tags within Lightroom of a photo, the change is automatically replicated across 4 drives - just in case, and overall – each image exists in 8 places.</p>
<h2 id="pros">Pros<a href="#pros" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<ul>
<li>Quick and automated backup solution</li>
<li>When I’m travelling – I still utilize the complete backup cycle – by connecting via a VPN directly to the server using my laptop in an internet cafe – and provided they have enough UP bandwidth – I’m done uploading in 20-30 minutes, and my server then takes care of everything.</li>
</ul>
<h2 id="cons">Cons<a href="#cons" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<ul>
<li>This occurs within a one physical domain (provided my laptop is at home at the time) - so should a fire occur, the complete setup is futile - as everything is burnt.</li>
<li>There&rsquo;s a finite amount of space available on my laptop, and although it wasn&rsquo;t a problem when I shot JPEG with the 300D, now with the ease of RAW processing within Lightroom and ability to shoot it easily with my 40D - one days outing ends up being about 1-2 GB.</li>
</ul>
<p>Solution to the first problem is in the next step of my backup workflow, and to the second problem I’ll cover in a later post.</p>
<p>In order to help distinguish between my drives, I have a naming scheme for them. I grab the names out of Greek mythology, sometimes even attempting to match the name to the task of the drive.</p>
<p>Here&rsquo;s a diagram of a solution that works for me</p>
<figure>
  <img src="/images/2008/01/backup-strategy.jpg">
  <figcaption>Backup Strategy</figcaption>
</figure>
<p>If anyone finds this useful/too-much – am interested to hear your opinions. Feel free to share how you do it – and any suggestions you may have.</p>
]]></content></item><item><title>Renaming a Project in TFS</title><link>https://www.romant.net/2007/12/renaming-a-project-in-tfs/</link><pubDate>Fri, 21 Dec 2007 11:11:33 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2007/12/renaming-a-project-in-tfs/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>I’ve recently decided to try out Microsoft’s latest incarnation of Team Foundation Server; a document and code versioning, as well as defect tracking system for developers.</p>
<p>Since TFS manages source code, as well as documents, it is an extremely convenient repository of data for your projects; yet - by putting all your eggs in the one basket, you may be unpleasantly surprised when you decide to rename your project. In Team Foundation Server 2005, this ‘feature’ was absent, if you were hoping to find it in 2008 – stop looking, there are too many <a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2462725&SiteID=1">DB references</a> to update. We can only hope that Microsoft will bring about a tool to do this as part of a service pack.</p>
]]></content></item><item><title>ACR 4.2 Released and now Lightroom 1.2</title><link>https://www.romant.net/2007/09/acr-4.2-released-and-now-lightroom-1.2/</link><pubDate>Fri, 14 Sep 2007 14:32:17 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2007/09/acr-4.2-released-and-now-lightroom-1.2/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Many souls weren&rsquo;t happy that Adobe didn&rsquo;t support Canon&rsquo;s 40D when they got it, in ACR and consequently in Lightroom.</p>
<p>Now you can jump for joy - as right now <a href="http://www.adobe.com/products/photoshop/cameraraw.html">ACR</a> supports 40D</p>
<p>Also note that on the page it lists Lightroom 1.2 as available also, <s>yet this has been reportedly false.</s> which is available for download <a href="http://www.adobe.com/products/photoshoplightroom/">over at Adobe</a></p>
]]></content></item><item><title>Canon 40D + Lightroom Auto-Rotate</title><link>https://www.romant.net/2007/09/canon-40d-lightroom-auto-rotate/</link><pubDate>Sat, 01 Sep 2007 01:24:13 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2007/09/canon-40d-lightroom-auto-rotate/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Cameras these days record the orientation of the camera when you take a shot, and write this into EXIF which is embedded into the photo. There seems to be a new way in which the 40D does it.<img src="/images/2007/09/lightroom-import-40d.jpg" alt="Adobe Lightroom 40D Auto rotate"></p>
<p>If anyone has attempted to import from 40D into Lightroom, they might notice that all the images are rotated 180%.</p>
<p>Windows picks up the correct way up, yet Lightroom simply doesn&rsquo;t.</p>
<p>I hope Adobe will be quick to remedy this problem, as well as update the RAW converter to accommodate the 40D</p>
<h2 id="update">Update<a href="#update" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>Having a further look into it - I noticed this only occurs when you connect the camera directly to the computer, as opposed to extract the CF, and using it within a reader.</p>
<p>Also windows didn&rsquo;t automatically rotate the photos when looking at them through explorer, so possibly this is a Windows Vista problem, and not Lightroom.</p>
<p>If anyone in XP or OSX can reproduce this - do post.</p>
<h2 id="update-2">Update 2<a href="#update-2" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>After trying this with Lightroom 1.3 - the issue still persists.</p>
<p>Not fixed yet.</p>
]]></content></item><item><title>Canon EOS 40D - mini Review + Problems</title><link>https://www.romant.net/2007/09/canon-eos-40d-mini-review-problems/</link><pubDate>Sat, 01 Sep 2007 01:15:28 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2007/09/canon-eos-40d-mini-review-problems/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Am a happy owner of the Canon 40D.</p>
<p><img src="/images/2007/09/canon%2040d.jpg" alt=""></p>
<p>You can get plenty of complete previews/reviews off <a href="www.dpreview.com/previews/canoneos40d/">other sites</a></p>
<p>I will merely mention several things.</p>
<p>I purchased the kit, which included the 17-85mm f4-5.6 IS USM lens.</p>
<p>Initially I was considering of purchasing the 400D, although after having a handle of my friends 350D [which practically has the same physical dimensions] – I decided that the camera felt .. soft. Not the build of it, but more so that actual ‘lack-of’ grip. It was simply too small in my hand.</p>
<p>To overcome this – I thought of getting the battery grip, and upon a visit to the local CameraHouse – I didn’t like that either, as the seams of the battery grip didn’t meet up properly with the base of the 400D. This resulted in the camera simply not feeling right, plus it was smaller than my 300D!</p>
<p>Then I envisioned purchasing the 30D, but that thought quickly faded, as I’d be investing in old[er] technology. So I set my sights on the 40D.</p>
<p>Upon driving 90km to the store I ended up a happy camper. So how did it fare?</p>
<h3 id="body">Body<a href="#body" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>Holding this puppy makes me feel like Kim Jong-il with his finger on the button. The finish of the body can be described like Vista – without the sarcasm – “Wow”. It is quite solid, and I have yet to drop it, hopefully I won&rsquo;t be testing that feature.</p>
<p>The LCD is simply stunning, large [3.5″] and the LiveView is quite nice, if ever-so subdued and seemingly dull.</p>
<p>The buttons and their layout will be familiar to all previous Canon SLR users.</p>
<h3 id="lens">Lens<a href="#lens" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>The kit lens is nice and bulky so it has a right balance with the body. The USM is very quick to focus, and the IS helps you get those photos you previously discarded due to being too blurry.</p>
<p>One gripe, and the main gripe I have with the lens is its ability to focus. I hope I just got a bad copy of this beast, but it simply cannot focus properly. I end up with images that are way too soft to be appreciated. At first I thought it was the camera, yet upon donning the 50mm 1.8 II and seeing the exceptional images it produced I simply decided to take the lens back, which I’ll be doing once the store opens up on Monday.</p>
<p>So far – that is it. There are too many features to mention that this camera contains, which is most likely more than an S-Class Mercedes.</p>
<h3 id="overall">Overall<a href="#overall" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>Extremely happy with the camera, not so much with the kit lens.</p>
<h2 id="update">UPDATE<a href="#update" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h2>
<p>I did a few test shots, to outline what I believe is a pretty bad copy of the 17-85, or perhaps as some have suggested the new focusing mechanism in the 40D playing up with a lens that can&rsquo;t go f2.8..</p>
<h3 id="lens---50mm-18-ii">Lens - 50mm 1.8 II<a href="#lens---50mm-18-ii" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p><img src="/images/2007/09/img_0210.jpg" alt=""></p>
<p>Focal Length: 50mm</p>
<p>Exposure: 1/160</p>
<p>FStop: f/2.2</p>
<p><img src="/images/2007/09/img_0211.jpg" alt=""></p>
<p>Focal Length: 50mm</p>
<p>Exposure: 1/60</p>
<p>FStop: f/3.5</p>
<p><img src="/images/2007/09/img_0212.jpg" alt=""></p>
<p>Focal Length: 50mm</p>
<p>Exposure: 1/50</p>
<p>FStop: f/4.5</p>
<p><img src="/images/2007/09/img_0213.jpg" alt=""></p>
<p>Focal Length: 50mm</p>
<p>Exposure: 1/30</p>
<p>FStop: f/5.6</p>
<h3 id="lens-17-85-is-usm">Lens 17-85 IS USM<a href="#lens-17-85-is-usm" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p><small>NOTE: Check the focal length</small></p>
<p><img src="/images/2007/09/img_0217.jpg" alt=""></p>
<p>Focal Length: 17mm</p>
<p>Exposure: 1/60</p>
<p>FStop: f/4</p>
<p><img src="/images/2007/09/img_0218.jpg" alt=""></p>
<p>Focal Length: 17mm</p>
<p>Exposure: 1/30</p>
<p>FStop: f/5.6</p>
<p><img src="/images/2007/09/img_0219.jpg" alt=""></p>
<p>Focal Length: 17mm</p>
<p>Exposure: 1/13</p>
<p>FStop: f/9</p>
<p><img src="/images/2007/09/img_0220.jpg" alt=""></p>
<p>Focal Length: 35mm</p>
<p>Exposure: 1/50</p>
<p>FStop: f/5</p>
<p><img src="/images/2007/09/img_0221.jpg" alt=""></p>
<p>Focal Length: 35mm</p>
<p>Exposure: 1/30</p>
<p>FStop: f/6.3</p>
<p><img src="/images/2007/09/img_0223.jpg" alt=""></p>
<p>Focal Length: 53mm</p>
<p>Exposure: 1/40</p>
<p>FStop: f/5.6</p>
<p><img src="/images/2007/09/img_0224.jpg" alt=""></p>
<p>Focal Length: 53mm</p>
<p>Exposure: 1/25</p>
<p>FStop: f/6.3</p>
<p><img src="/images/2007/09/img_0226.jpg" alt=""></p>
<p>Focal Length: 85mm</p>
<p>Exposure: 1/25</p>
<p>FStop: f/5.6</p>
<p><img src="/images/2007/09/img_0227.jpg" alt=""></p>
<p>Focal Length: 85mm</p>
<p>Exposure: 1/15</p>
<p>FStop: f/7.1</p>
<p>As you can see, the lens simply isn&rsquo;t usable around 17mm, yet it does perform quite nicely at 35 and over. Understandably this isn&rsquo;t L glass, but I don&rsquo;t think it should be THIS soft. I will be returning the lens to Canon for re-calibration.</p></p>
]]></content></item><item><title>Music Everywhere</title><link>https://www.romant.net/2007/07/music-everywhere/</link><pubDate>Wed, 25 Jul 2007 00:54:31 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2007/07/music-everywhere/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>As with everything, it&rsquo;s always about the amount of time and money you&rsquo;re willing to put in, in order to get what you want.</p>
<p>I like music, and as someone that has a few computers around the house, coupled with a Vista Media Centre - I want to be able to have access to mood altering music throughout.</p>
<p>My music application of choice happens to be iTunes™. Understandably it isn&rsquo;t everyone&rsquo;s favourite, and I must admit - it does seem very sluggish on Windows™ compared to its OSX™ counterpart.</p>
<p>The point of this post is to setup streaming of music to iTunes™ utilising mt-daapd [aka <a href="http://www.fireflymediaserver.org/" title="Firefly">Firefly</a>], <a href="http://www.ubuntu.com" title="Ubuntu">Ubuntu</a>, <a href="http://www.vmware.com" title="VMWare">VMWare</a> and obviously the mp3&rsquo;s themselves - hosted on a Windows™ share.</p>
<p>Many people will have a &lsquo;server&rsquo; of some sort, be it for the hundred of gigabytes of family photos and videos, a common repository for house mates to exchange files or simply in my case - all of the above.</p>
<p>I have a server that runs Windows™ 2003 Server. My laptop synchronizes with it every time I dock it, thus providing me with a cheap NAS-like solution for my photos, university lectures and assignments.</p>
<p>Also, since Internet radio is something else I like to dabble in, and my ISP providing me a <a href="http://www.internode.on.net/radio/" title="nice list">nice list</a> free from bandwidth charges - and ultimately wishing to purchase a Wi-Fi enabled radio streamer, I decided to enable streaming of music across my house.</p>
<p>You might be asking your self - why am I running a VMWare Server + Linux in order to just stream music held on a Windows™ share? Well there are alternatives, and apps such as Tangerine that will run quite happily on Windows™ itself and serve music - but I do not want to run anything that isn&rsquo;t necessary on the server itself - I prefer to leave it to virtual machines, as it allows for a much quicker re-deployment, coupled with the fact that I need a few other services to run on the VM for the network.</p>
<p>So here&rsquo;s a guide on how to get streaming mp3&rsquo;s with the use of mt-daapd, linux and about 30 minutes of spare time.</p>
<p>I will use names for usernames and server configurations that I have used, change as needed.</p>
<p>On the Windows box</p>
<ol>
<li>
<p>Create a username &ldquo;buntu&rdquo; [assign a password]</p>
</li>
<li>
<p>Create a directory which will host the root of your music. So if it&rsquo;s present in H:\Backup\Files\Personal\Music, then share and make sure you share Music, thus it will be accessible via \quack\music [quack is the name of the server]</p>
<ul>
<li>Make sure the security as well as the sharing settings allow for &ldquo;buntu&rdquo; to have &lsquo;read-only&rsquo; access</li>
</ul>
</li>
<li>
<p>Download + Install <a href="http://www.vmware.com/download/server/">VMware Server</a></p>
</li>
<li>
<p>Download Ubuntu <a href="http://releases.ubuntu.com/7.04/">Desktop/Server</a> [or a distro of your choice - I will only run through Ubuntu, as it&rsquo;s based on my farourite Debian, only prettier + more user friendly]</p>
<ul>
<li>I recommend you download the *alternate* ISO, <em>ubuntu-7.04-alternate-i386.iso</em> as with VMWare server, you can get a &ldquo;no screens found&rdquo; error, and the <em>alternate</em> install will merely remove the GUI whilst installing Ubuntu.</li>
</ul>
</li>
</ol>
<p>If you&rsquo;re creating the VM - 2 things.</p>
<ol>
<li>When you&rsquo;re going through the &lsquo;New Virtual Machine Wizard&rsquo; - make sure you select &ldquo;Use Bridge Networking&rdquo;, as that way you&rsquo;re making it easier for your new virtual machine to have access to the current network and thus the network shares on another computer.</li>
</ol>
<figure>
  <img src="/images/2007/07/bridge.jpg">
  <figcaption>Use Bridge Network - Screenshot</figcaption>
</figure>
<ol start="2">
<li>Hard drive space allocation - if you&rsquo;re going to be using this for something <em>other</em> than just streaming, and have other services in mind for this VM - such as perhaps a dedicated development environment, you might consider giving it more than the default 8Gb.</li>
</ol>
<p>On with it.</p>
<p>Assign the ISO you download as the CD drive.</p>
<p>As I mentioned above,</p>
<p>Proceed through the menus and install Ubuntu, for most - just accept the defaults.</p>
<figure>
  <img src="/images/2007/07/installing.jpg">
  <figcaption>Installing Ubuntu - Screenshot</figcaption>
</figure>
<h3 id="optional">Optional<a href="#optional" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<p>In order to have the VM start when the host boots up, select the appropriate options after going to the VM Settings and under the Options tab - you will see - &ldquo;Startup/Shutdown&rdquo;, with the respective options being now open to you on the right hand side.</p>
<h3 id="then">Then<a href="#then" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<pre tabindex="0"><code>apt-get install smbfs
mkdir /music
mount -t smbfs -o username=buntu //quack/music /music
password:`
</code></pre><ul>
<li>The above should go through, if you have all the permissions set up correctly.</li>
<li>Now you have to make sure it is mounted on boot. Edit the /etc/fstab and append the following:</li>
</ul>
<blockquote>
<p>note the space between the source and the mount point</p>
</blockquote>
<pre tabindex="0"><code>//quack/music /music cifs username=buntu,password=music,user 0 0
</code></pre><h3 id="a-quick-check">A quick check:<a href="#a-quick-check" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
      stroke-linecap="round" stroke-linejoin="round" class="feather">
      <path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path>
      <line x1="8" y1="12" x2="16" y2="12"></line>
   </svg></a></h3>
<pre tabindex="0"><code>mount /music
ls /music
</code></pre><p>Should return no errors, and you will now have /music mounted each boot.</p>
<p>Time to set up the streaming.</p>
<pre tabindex="0"><code>apt-get install mt-daapd
/etc/init.d/mt-daapd start
</code></pre><p>Now if you installed something with X, launch your browser of choice [firefox], and point to: http://localhost:3689 (Default username:password -&gt; admin:mt-daapd)</p>
<p>or</p>
<p>alternatively modify the <code>/etc/mt-daapd.conf</code> manually</p>
<p>Here you are able to specify any parameters as well as monitor who&rsquo;s leeching [scratch] listening to your music.</p>
<p>At the very least, I recommend you modify (under Configuration on the site):</p>
<ul>
<li>Server Name [as per the file itself - &rsquo;the stuff that comes up in iTunes&rsquo;]</li>
<li>Admin password [used to log into the the site]</li>
<li>Music Folder, set it to &lsquo;/music&rsquo;</li>
<li>Hit &lsquo;Save&rsquo;</li>
</ul>
<p>Now on the status page, hit &lsquo;Start Scan&rsquo; - and you&rsquo;ll see the little counter for &lsquo;served&rsquo; increase quite rapidly. Any iTunes™ instance on the network, will be able to see Quack under shared music.</p>
<figure>
  <img src="/images/2007/07/itunes.jpg">
  <figcaption>iTunes Screenshot</figcaption>
</figure>]]></content></item><item><title>The Right Candidate</title><link>https://www.romant.net/2007/05/the-right-candidate/</link><pubDate>Sun, 27 May 2007 00:03:27 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2007/05/the-right-candidate/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Reading a blog I follow: David J. Anderson [<a href="http://www.agilemanagement.net/Articles/Weblog/WherestheLemon.html">Where&rsquo;s the Lemon ?</a>], got me thinking more about businesses choosing the right candidate for a particular role, and an experience I had with a Japanese gentleman once on a plane.</p>
<p>Within the Western society, it is the norm to go through the sifting process and hopefully end up still floating when HR finishes washing their lists, to make sure that the &lsquo;key words&rsquo; that they were after, are actually on your resume.</p>
<p>Now that you&rsquo;re up to stage two, you tend to go through several more:</p>
<hr>
<ol>
<li><strong>Meet HR</strong> - have them toy with you and get a feel for you.</li>
<li><strong>Technical Test</strong> - if you&rsquo;re going for a programming role, you&rsquo;ll once again be sifted until they make sure you know what OO is, and where you put a tilde to form your destructor.</li>
<li><strong>Group Excercise</strong>
Now that you&rsquo;ve passed the previous stage with flying colours, you&rsquo;re invited back into a group formation where you can be <s>studied like a primate</s> &ldquo;<em>assessed on your thinking ability, general knowledge, communication,argument structuring, confidence, presentation skills as well as creativity</em>&rdquo; (Lifted from Accenture Recruitment Guide)</li>
<li><strong>Meet the manager</strong>
At this point, as far as HR is concerned, you&rsquo;re as good as hired, since not many people make it to this stage - and the only reason you wouldn&rsquo;t pass is primarily due to your <del>lack of</del> personality . Here you are evaluated on your ability to actually &lsquo;fit in&rsquo;.</li>
</ol>
<hr>
<p>With this &ldquo;fool-proof&rdquo; system, every company still ends up with a multitude of useless workers that merely are able to meet the basic requirements, pass the aptitude test and now be a leech on the system. Chances are - it will cost the company more to support this worker that it would have been to spend more time to find the right candidate in the first place, especially considering the inflexibility of labour evidenced by the plethora of unfair dismissal lawsuits.</p>
<p>So back to the Japanese gentleman I sat next to on my flight to Frankfurt a few years ago. He informed me that the company he worked for, had an unwritten policy that if they&rsquo;re going to be spending over ¥10 million JPY - then the hiring manage must conduct a <em>careful analysis</em> of the person, which in this case meant - take them to a golf course for the day!</p>
<p>Wow, a whole day of playing golf and relaxing.. Well, not exactly. As through the day the manager is able to see your traits that you would normally leave out of an interview, such as how competitive you are, and how you actually deal with stress and your diplomatic ability.</p>
<p>These subtle hints which will provide the employer with a clearer image of the <em>real</em> person, is far more useful than a two hour psychometric test, that after 30 minutes you are just clicking on anything just to finish!</p>
<p>A day long interview - does it cost too much? Well if you want to employ someone for a few years at the least, and they are not there to clean the toilet or make a cup of crap coffee, then you simply can&rsquo;t afford not to spend the time.</p>
]]></content></item><item><title>Multiple Monitors, Vista, UltraMon 3 Beta</title><link>https://www.romant.net/2007/04/multiple-monitors-vista-ultramon-3-beta/</link><pubDate>Sun, 29 Apr 2007 18:35:01 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2007/04/multiple-monitors-vista-ultramon-3-beta/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>Am an avid supporter of multi-monitor set-ups. Once you end up using two or more screens - it&rsquo;s very hard to go back down to one.</p>
<hr>
<p>At the moment my set-up consists of:</p>
<p>2x <a href="http://www.samsung.com/au/products/monitors/tft/940b.asp">Samsung 940B</a>&rsquo;s</p>
<p>1x IBM/Lenovo <a href="http://www.thinkwiki.org/wiki/ThinkPad_Advanced_Mini_Dock">Advanced Mini Dock</a></p>
<p>1x T60 [<a href="http://ati.amd.com/products/MobilityRadeonx1400/index.html">ATI Mobility Radeon x1400</a>]</p>
<p>Works quite well, as soon as it&rsquo;s docked, it recognises the two monitors (one plugged in using VGA, other DVI), and off it goes.</p>
<hr>
<p>In Windows, it&rsquo;s quite simple - plug in another monitor, and through Display Settings - select where each screen is relatively to the others.</p>
<p>Unfortunately, even in Windows Vista - 5th Version of the monolithic, GUI - OS [95,98, 2000,XP, -&gt;Vista), it is has yet to cater for a spanning taskbar, one that would cross all monitors.</p>
<p>That and other shortcomings are fixed by a nice program called <a href="http://realtimesoft.com/ultramon/">UltraMon</a>. It allows for a multitude of features concerning multiple monitors. One&rsquo;s that I use:</p>
<ul>
<li>the spanning taskbar</li>
<li>Windows Title Bar</li>
</ul>
<blockquote>
<p>Puts icons near the close button of the window, that allow you to quickly with a click, move the windows to another monitor, or stretch it across all monitors</p>
</blockquote>
<ul>
<li>Wallpaper</li>
</ul>
<blockquote>
<p>Finally - a tool which looks at setting distinct wallpapers for each screen, that is easy to use, and is persistent across reboots as well as docking/undocking my T60</p>
</blockquote>
<p>Now with UltraMon 3 Beta - you can finally use it in Vista.</p>
<p>Several problems though:</p>
<ul>
<li>
<p>Docking the laptop - Causes multiple taskbars to be rendered on the secondary display</p>
</li>
<li>
<p>Freezing whenever some applications are launched - ie. <a href="http://filezilla.sourceforge.net/">FileZilla</a></p>
</li>
</ul>
<p>With all these, am still a hapy camper, and absolutely love the app. Just hope they hurry up, and release the final.</p>
]]></content></item><item><title>In the beginning</title><link>https://www.romant.net/2007/04/in-the-beginning/</link><pubDate>Sun, 22 Apr 2007 10:29:24 +0000</pubDate><author>Roman Tarnavski</author><guid>https://www.romant.net/2007/04/in-the-beginning/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped">&lt;p>After much heart-ache, I have decided to settle down with &lt;del>Word-Press&lt;/del> Hugo, hopefully this will be the start of a beautiful, long relationship.&lt;/p>
</content></item></channel></rss>