<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tim Berglund &#187; presentation</title>
	<atom:link href="http://www.augusttechgroup.com/tim/blog/category/presentation/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.augusttechgroup.com/tim/blog</link>
	<description></description>
	<lastBuildDate>Fri, 27 May 2011 18:26:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Oh, The Methods You&#8217;ll Compose</title>
		<link>http://www.augusttechgroup.com/tim/blog/2011/05/12/oh-the-methods-youll-compose/</link>
		<comments>http://www.augusttechgroup.com/tim/blog/2011/05/12/oh-the-methods-youll-compose/#comments</comments>
		<pubDate>Thu, 12 May 2011 15:45:48 +0000</pubDate>
		<dc:creator>tlberglund</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[ignite]]></category>
		<category><![CDATA[implementation]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[poem]]></category>

		<guid isPermaLink="false">http://www.augusttechgroup.com/tim/blog/?p=287</guid>
		<description><![CDATA[When I read Kent Beck&#8217;s Implementation Patterns a few years ago, what struck me was not merely its detailed advice on how to write handsome methods and pick good names for things, but rather a deeper insight that it offers. The central argument of the book is that it is both more difficult and more [...]]]></description>
			<content:encoded><![CDATA[<p>When I read Kent Beck&#8217;s <em><a href="http://www.amazon.com/dp/0321413091">Implementation Patterns</a></em> a few years ago, what struck me was not merely its detailed advice on how to write handsome methods and pick good names for things, but rather a deeper insight that it offers. The central argument of the book is that it is both more difficult and more valuable to write code for humans to understand, rather than machines. Coding a spec is usually easy; reading and understanding somebody else&#8217;s code is hard.</p>
<p>Pondering that, I decided to do my most recent Ignite talk on this topic. You&#8217;ll note I&#8217;ve stretched the Ignite form a little bit—it&#8217;s supposed to contain 20 slides, each on a 15-second auto-advance, which I didn&#8217;t do. Instead I opted to use video, so there aren&#8217;t really any slide boundaries, but I kept the five-minute hard limit intact so I&#8217;d have some grounds for calling it an Ignite talk. Here it is in its full 720p glory (you&#8217;ll have to go full-screen to get the HD controls):</p>
<p><iframe width="560" height="349" src="http://www.youtube.com/embed/3QbheQitF74" frameborder="0" allowfullscreen></iframe></p>
<p>The text, if you are interested, is here:</p>
<p>When a coder sits down to start banging out code<br />
The first thing to start crowding his cognitive load<br />
Is whether his program will do what it should<br />
Correctness, he says, is what makes my code good</p>
<p>It&#8217;s the function that captures the coder&#8217;s attention<br />
Behaviors and inputs and outputs are mentioned<br />
As if the one good that a coder can bring<br />
Is to spin the right wheels on some Turing machine</p>
<p>And compiling and linking and running are great<br />
(We need to do these to put food on our plate!)<br />
But the shocker that might leave you scratching your head<br />
Is that actual code is less written than read</p>
<p>We spend more of our time in maintaining our stuff<br />
Than we ever spend writing the simplest of cruft<br />
Which means that unless you&#8217;ve got something the matter<br />
You&#8217;ll try to learn just a few code style patterns</p>
<p>So coders and countrymen, lend me your ears<br />
As I teach you some lessons won hard through the years<br />
From that Beckian book about implementation<br />
And patterns that derail code suckification</p>
<p>A classical problem is how to name things<br />
(Oh, the anger and fights and dissension this brings!)<br />
Like off-by-one-errors and cache expiration<br />
A permanent answer&#8217;s beyond expectation</p>
<p>But a class should be named to describe its intent<br />
Not its implementation, though that&#8217;s how were bent<br />
A superclass name should be pithy and short<br />
And the subclass&#8217;s name a more detailed retort</p>
<p>When you look at the name of a class you should find<br />
The idea that hatched in the first coder&#8217;s mind<br />
And just what is the thing this class wanted to do?<br />
And what should you be thinking when first you call &#8220;new?&#8221;</p>
<p>When you can&#8217;t find a name for a class, it&#8217;s a sign<br />
That the metaphor&#8217;s actually escaping your mind<br />
A good metaphor helps more than comments or training<br />
To inform other coders just what you are saying</p>
<p>The next thing we&#8217;ll consider together is state<br />
(Which wouldn&#8217;t be bad if it wouldn&#8217;t mutate)<br />
The functional people may think that they profit<br />
But objects we code will change state; we can&#8217;t stop it</p>
<p>It&#8217;s not just concurrency where it can bite us<br />
Although many suffer from thread-lock-wait-itis<br />
The way that we organize pieces of state<br />
Can make all the difference between good and great</p>
<p>Group similar state close together and see<br />
Just what happens in time to your code quality<br />
If you think of the reason your data is altered<br />
Your sense of the meaning will be less assaulted</p>
<p>The things that are changing together should be<br />
Very close to each other, viewed all on one screen<br />
The data whose purpose is common? Same thing.<br />
If they all work together, keep&#8217;em all in one scene</p>
<p>Remember the scopes an imperative language<br />
Gives to you to gather together your baggage<br />
The method, the instance, the class scope are able<br />
To keep you from having too much on the table</p>
<p>The changing of state is a serious problem<br />
And I think that we&#8217;re starting to locate the bottom<br />
But as long as assignment is part of our ken<br />
We&#8217;ve got try hard to keep data reigned in</p>
<p>See, the coder who&#8217;s reading this pile of junk<br />
Is bounded in what he can think of at once<br />
Don&#8217;t make him scroll all up and down every file<br />
To find and recall every identifier</p>
<p>Now the methods we write can get out of control<br />
When we make the one reading them scroll, scroll, scroll, scroll<br />
A method that&#8217;s long and meandering is bad<br />
But a method that&#8217;s short and composed makes us glad</p>
<p>To compose a good method, just think of the scope<br />
Of the things that it does, and with that you can hope<br />
To keep all of its actions around the same level<br />
Or else its abstractions will leave you disheveled</p>
<p>A method composed by a coder who tries<br />
Will read like a story with just one plot line<br />
Each part of the story it tells is the same<br />
As the rest of the method, with all the same aim</p>
<p>To understand just what composing&#8217;s about<br />
Imagine a story of when you went out<br />
And started the night by first changing your clothes<br />
Then switching to tell me the distance you drove</p>
<p>Then up and describing the way you shift gears<br />
And a long, pointless tale about your rear-view mirror<br />
Then changing your story to cover the dinner<br />
And how it was cooked and how long the sauce simmered</p>
<p>Then skipping ahead to the movie you saw<br />
But not telling me even one detail at all<br />
Now what would you think of this crazy approach?<br />
My mental disturbance would be hard to broach!</p>
<p>It&#8217;s the very same thing when we factor a method<br />
Each one should stay small with its purpose embedded<br />
In a series of readable sub-method calls<br />
And inside those methods go all their details</p>
<p>When people are learning, they sometimes prefer<br />
First to know all the details and from them infer<br />
All the concepts producing the detailed design<br />
Either concept or detail can govern the mind</p>
<p>When composing your methods, keep this fact in mind<br />
And please think of the coder who&#8217;s struggling to find<br />
The whole shape of the picture zoomed all the way out<br />
Or the flipping of bits when that&#8217;s what it&#8217;s about</p>
<p>I think if you&#8217;ve listened a little to me<br />
You might start to catch what I want you to see<br />
It&#8217;s good when we write code that passes its tests<br />
But mere functionality isn&#8217;t our best</p>
<p>It&#8217;s the human who sits down to work with our code<br />
Our ideas we want to this one to be showed<br />
So remember this saying, to the best that you&#8217;re able<br />
The reason you write code is to love your neighbor</p>
]]></content:encoded>
			<wfw:commentRss>http://www.augusttechgroup.com/tim/blog/2011/05/12/oh-the-methods-youll-compose/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SDC 2011</title>
		<link>http://www.augusttechgroup.com/tim/blog/2011/04/13/sdc-2011/</link>
		<comments>http://www.augusttechgroup.com/tim/blog/2011/04/13/sdc-2011/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 16:24:22 +0000</pubDate>
		<dc:creator>tlberglund</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gothenburg]]></category>
		<category><![CDATA[sdc]]></category>
		<category><![CDATA[sdc2011]]></category>
		<category><![CDATA[sweden]]></category>

		<guid isPermaLink="false">http://www.augusttechgroup.com/tim/blog/?p=262</guid>
		<description><![CDATA[A week ago I had the privilege of speaking at the 2011 Scandinavian Developer Conference. This was my second year at the show. The Friday before the conference, Matthew McCullough and I put on a one-day public Git training workshop in Gothenburg, which was very well received. It&#8217;s always fun sharing the stage with Matthew. [...]]]></description>
			<content:encoded><![CDATA[<p>A week ago I had the privilege of speaking at the <a href="http://scandevconf.se/">2011 Scandinavian Developer Conference</a>. This was my second year at the show. The Friday before the conference, <a href="http://ambientideas.com/blog/">Matthew McCullough</a> and I put on a one-day public Git training workshop in Gothenburg, which was very well received. It&#8217;s always fun sharing the stage with Matthew.</p>
<p>My wife also came along with me this time. Gothenburg isn&#8217;t known as a tourist town, but it&#8217;s still got a lot to offer a couple of Americans who tend to enjoy just about any European city. We enjoyed walking around town and getting outside town a little bit. She took a few hundred beautiful pictures as usual.</p>
<p>I gave three talks: NoSQL Smackdown, Database Refactoring with Liquibase, and HTML5: The JavaScript Parts. NoSQL Smackdown was standing room only, with probably 150 people in the room, which is always gratifying. It&#8217;s a hot topic, and the talk explains the landscape fairly well.</p>
<p>The bad part about attending conferences is that I can&#8217;t really <em>attend</em> them. There are paying work and writing projects that demand attention, so I can&#8217;t go to all the sessions I want. I did attend one, though, given by <a href="http://www.scandevconf.se/2011/conference/speakers/anna-herting/">Anna Herting</a>. Her talk, essentially an extended urge to remain calm about the awesomeness of Agile and focus instead on pragmatic ways to be successful, was excellent. She made two points about the perils of small teams that resonated with me in particular, mostly because I knew I&#8217;ve been guilty of both in the past.</p>
<p>First, Anna explained that a small team can freeload on the efficiencies of being small and get away with low-grade engineering practices while still delivering good results. For instance, the team might never refactor and never write tests, but they all know the code so well that they remain fairly  happy and deliver value to customers anyway. This sounds a lot like Joel Spolsky&#8217;s <a href="http://www.joelonsoftware.com/items/2009/09/23.html">Duct Tape Programming</a>, which I was never convinced was a good idea. To be fair, meeting human needs (or &#8220;creating business value&#8221; as we often prefer to say) is the proximate goal of our vocation, and code craft is a close second, but this kind of entrenched sloppiness remains an accrued liability that will move disastrously from the balance sheet to the cash flow statement some sad day when the team grows or undergoes turnover. I&#8217;ve been there before, so Anna&#8217;s words stung a bit. In a good way.</p>
<p>Second, she talked about how a small team with lots of direct customer contact is in danger of becoming more aligned with the customer than the business. If customers constantly present critical issues directly to a small team of developers—with the customer-developer contact presented as high-touch service, or some such soothing excuse—then those developers may begin to make decisions that benefit the customer first and the business second. Again, this might not seem so bad, and to be fair, one might come to the conclusion that the customer&#8217;s benefit is always the business&#8217;s benefit. However, I&#8217;m pretty sure one would be wrong in that case.</p>
<p>There were great insights, and deserve to be spread wider. There was more to the talk than that, of course, but this is what hit me the most. I hope Anna keeps looking for opportunities to speak, even if she isn&#8217;t going to become an insane globe-trotting conference monger like Some People I Know.</p>
<p>In summary, the show was great, the food was great, the city was great, the people were great. It&#8217;s always a treat to catch up with old friends (although I definitely didn&#8217;t get to spend enough time with <a href="http://www.scandevconf.se/2011/conference/speakers/rik-arends/">certain</a> <a href="http://www.scandevconf.se/2011/conference/speakers/lieke-arends/">people</a>) and make new ones. I certainly hope to be back in Gothenburg next year.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.augusttechgroup.com/tim/blog/2011/04/13/sdc-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Berserker Always Dies</title>
		<link>http://www.augusttechgroup.com/tim/blog/2010/10/08/the-berserker-always-dies/</link>
		<comments>http://www.augusttechgroup.com/tim/blog/2010/10/08/the-berserker-always-dies/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 23:40:14 +0000</pubDate>
		<dc:creator>tlberglund</dc:creator>
				<category><![CDATA[presentation]]></category>
		<category><![CDATA[beowulf]]></category>
		<category><![CDATA[berserker]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[hero]]></category>
		<category><![CDATA[ignite]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.augusttechgroup.com/tim/blog/?p=233</guid>
		<description><![CDATA[This past Tuesday, I gave an Ignite-style talk at DOSUG. I recorded the audio and combined it with the slides (with their prescribed timing) and uploaded the finished product to Vimeo. (It turns out 20 slides of 15-second auto advance works out to be more like 5:06 than 5:00, but who&#8217;s counting?) The talk is [...]]]></description>
			<content:encoded><![CDATA[<p>This past Tuesday, I gave an <a href="http://ignite.oreilly.com/">Ignite</a>-style talk at <a href="http://denveropensource.org">DOSUG</a>. I recorded the audio and combined it with the slides (with their prescribed timing) and uploaded the finished product to Vimeo. (It turns out 20 slides of 15-second auto advance works out to be more like 5:06 than 5:00, but who&#8217;s counting?)</p>
<p>The talk is an exploration of the hero culture in software development, with lessons drawn from the epic poem <em>Beowulf</em>. Beowulf is, the consensus of medieval scholars notwithstanding, a parable about software teams gone bad. We ignore its lessons at our personal and collective peril.</p>
<p><iframe src="http://player.vimeo.com/video/15674432" width="400" height="300" frameborder="0"></iframe>
<p><a href="http://vimeo.com/15674432">The Berserker Always Dies</a> from <a href="http://vimeo.com/user4918731">Tim Berglund</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.augusttechgroup.com/tim/blog/2010/10/08/the-berserker-always-dies/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Complex Workshops in a Conference Setting</title>
		<link>http://www.augusttechgroup.com/tim/blog/2010/09/12/complex-workshops-in-a-conference-setting/</link>
		<comments>http://www.augusttechgroup.com/tim/blog/2010/09/12/complex-workshops-in-a-conference-setting/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 22:26:08 +0000</pubDate>
		<dc:creator>tlberglund</dc:creator>
				<category><![CDATA[presentation]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[intelligence]]></category>
		<category><![CDATA[machine]]></category>
		<category><![CDATA[nfjs]]></category>
		<category><![CDATA[Talend]]></category>
		<category><![CDATA[virtual]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://www.augusttechgroup.com/tim/blog/?p=222</guid>
		<description><![CDATA[The typical conference session is a 50- or 60-minute lecture backed by slides. No Fluff Just Stuff, where I do most of my speaking, extends that to 90 minutes. Some creative speakers think of group activities to supplement the otherwise-non-stop bloviating, but those are generally limited to soft skills and process-oriented sessions. If you want [...]]]></description>
			<content:encoded><![CDATA[<p>The typical conference session is a 50- or 60-minute lecture backed by slides. No Fluff Just Stuff, where I do most of my speaking, extends that to 90 minutes. Some creative speakers think of group activities to supplement the otherwise-non-stop bloviating, but those are generally limited to soft skills and process-oriented sessions. If you want to talk about code, getting people to get their hands on a keyboard at a conference is a tough problem. I&#8217;ve been wanting to solve it.</p>
<p>Two weeks ago in Raleigh, I retooled my open source business intelligence talks to include a hands-on workshop. The talks had been two 90-minute lecture sessions covering the basics of ETL, reporting, and analytics on a conceptual basis with a brief demo of relevant tooling, including some elaboration on using the <a href="http://www.pentaho.com/products/analysis/">Pentaho Analytics Platform</a>. The retooled version is comprised of one part lecture covering the basic concepts, plus a 90-minute, hands-on training session building an ETL job in <a href="http://www.talend.com/products-data-integration/talend-open-studio.php">Talend Open Studio</a>.</p>
<p>A working Talend installation has a few moving parts: a Java runtime, a database, sample application data, a sample data warehouse schema, and Talend itself. Asking 15 or 20 people to install all these things by themselves and get them talking is at least an hour of work by itself, and my goal is to provide a valuable workshop experience in 90 minutes. I tried the install-your-own approach at ÜberConf in June, and it wasn&#8217;t a terrible experience, but it was clear that it could be improved.</p>
<p>My new approach is to create a VM and distribute it to attendees before the session. So far this is working much, much better. There are some frustrations in the first few minutes of the session, but I&#8217;m able to get people&#8217;s hands on a tool that requires a fairly complex runtime environment. Here are some lessons I&#8217;ve learned and problems I&#8217;m still working on:</p>
<ul>
<li>Try to keep the VM as small as possible. Right now I&#8217;ve got one that takes just over 8GB while running, but zips up to just under 2GB. This seems like an easily achievable minimum.</li>
<li>When creating the VM (using VMWare), be sure to check the box that splits the disk image files into 2GB chunks. Chunks greater than 2GB will not unzip on Windows machines, seemingly no matter what client you use. Windows users will not remember you in song (at least not the kind of songs you want).</li>
<li>Find some way to distribute the VM image ahead of time. Otherwise it will take several minutes to copy and unzip, burning up valuable workshop time. In my case, the workshop follows a 90-minute lecture session which is but required as a prerequisite, so I pass around thumb drives during that session. Attendees can copy the image and unzip it while they listen to the dulcet tones of my voice. It&#8217;s a win-win.</li>
<li>Note that your more enterprisey attendees may have laptops whose thumb drive capability has been crippled by their corporate masters. I have yet to devise a fallback plan for this. Perhaps I could burn a DVD with the requisite files on it; I will be thinking about this and other options. (I&#8217;ve chosen thumb drives to make it easy to update the image and other support files on a regular basis, as the talk evolves.)</li>
<li><em>Distribute a player with the VM image</em>. No, seriously. Twice now I&#8217;ve asked attendees to download the VMware player at the start of the session, since I&#8217;m not formally allowed to distribute it myself. This is a big fail. I may switch to VirtualBox to get around this problem.</li>
<li>When distributing an operating system image with a database installed on it, be sure to document the usernames and passwords of all OS and database accounts. I&#8217;ve made the decision to use a single, simple password for all accounts, favoring user experience over security in this sandbox OS.</li>
<li>When providing instruction on a visual tool like Talend, distribute screenshots of each step of the procedure you want attendees to do. That way, if someone gets behind, he or she has a shot at getting caught up by following the slides.</li>
</ul>
<p>So far I&#8217;m getting positive feedback on the session. People really enjoy getting their hands on a tool and are mostly ending up with the satisfied feeling of having learned <em>and done</em> something new. I&#8217;m still working out the kinks, but I think this is going to become a staple of my stable of talks. I&#8217;d love to hear your ideas on how to improve it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.augusttechgroup.com/tim/blog/2010/09/12/complex-workshops-in-a-conference-setting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaZone 2010 &#8211; Oslo</title>
		<link>http://www.augusttechgroup.com/tim/blog/2010/09/12/javazone-2010-oslo/</link>
		<comments>http://www.augusttechgroup.com/tim/blog/2010/09/12/javazone-2010-oslo/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 19:15:49 +0000</pubDate>
		<dc:creator>tlberglund</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[javazone]]></category>
		<category><![CDATA[norway]]></category>
		<category><![CDATA[oslo]]></category>

		<guid isPermaLink="false">http://www.augusttechgroup.com/tim/blog/?p=201</guid>
		<description><![CDATA[I was privileged to present at JavaZone in Oslo, Norway this week. JavaZone is Norway&#8217;s major Java-centered conference, and drew around 2,500 people this year. It&#8217;s a high-energy show with well-known and impressive marketing. There were seven tracks of presentations from regional and international speakers and a busy exhibition floor, mostly populated (in my extremely [...]]]></description>
			<content:encoded><![CDATA[<p>I was privileged to present at <a href="http://jz10.java.no/">JavaZone</a> in Oslo, Norway this week. JavaZone is Norway&#8217;s major Java-centered conference, and drew around 2,500 people this year. It&#8217;s a high-energy show with <a href="http://jz10.java.no/java-4-ever-trailer.html">well-known and impressive marketing</a>. There were seven tracks of presentations from regional and international speakers and a busy exhibition floor, mostly populated (in my extremely unscientific sample) with Norwegian consulting and technology companies.</p>
<p><div id="attachment_203" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/javazone-floor.jpg" rel="lightbox[201]"><img src="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/javazone-floor-300x190.jpg" alt="JavaZone Exhibition Floor" title="JavaZone Exhibition Floor" width="300" height="190" class="size-medium wp-image" /></a><p class="wp-caption-text">The JavaZone exhibition floor.</p></div><br />
<div id="attachment_204" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/speakers-speaking.jpg" rel="lightbox[201]"><img src="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/speakers-speaking-300x143.jpg" alt="Speakers Speaking With One Another" title="Speakers Speaking With One Another" width="300" height="143" class="size-medium wp-image" /></a><p class="wp-caption-text">Speakers speaking with one another. Note my mother-in-law at center right, who happily accompanied me on this trip.</p></div></p>
<p>I gave one lightning talk in the first session of the day on Wednesday. It was a ten-minute variant of my now well-rehearsed <a href="http://www.slideshare.net/tlberglund/then-our-buildings-shape-us-10-minutes">Then Our Buildings Shape Us: Form And Content in Software Development</a>. JavaZone lightning talks are ten minutes in length, so I had to expand on the Ignite-style format the talk currently has. Turns out I expanded too much, and I didn&#8217;t quite finish in time, despite the fact that my rehearsals indicated that I&#8217;d finish 10-15 seconds early. I think being in front of a live audience encourages a speaker to elaborate on the script just a bit, which this very constrained form doesn&#8217;t really allow. Lesson learned.</p>
<p>Around lunchtime on Thursday, I gave <a href="">Decision Making in Software Teams</a>. The talk was well-received, eliciting good feedback on Twitter and&mdash;better yet&mdash;in person. JavaZone, showing their class as a conference, rewarded me with a bottle of red wine, which will be shared with Mrs. Berglund later in the week.</p>
<p>Oslo offers no shortage of incredible opportunities for tourists, and fortunately I was able to take two days before the show and enjoy some of those sites. On Monday we visited the Viking Museum, which is a collection of first millennium Viking artifcats centered around a few more or less complete longboats.</p>
<div id="attachment_209" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/viking-ship.jpg" rel="lightbox[201]"><img src="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/viking-ship-300x141.jpg" alt="Longboat" title="Longboat" width="300" height="141" class="size-medium wp-image" /></a><p class="wp-caption-text">A 1000-year-old Viking longboat.</p></div>
<p>Later that day, we walked around the National Palace, a beautiful building surrounded by some first-class gardens.</p>
<div id="attachment_210" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/oslo-palace.jpg" rel="lightbox[201]"><img src="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/oslo-palace-300x126.jpg" alt="Norwegian National Palace" title="Norwegian National Palace" width="300" height="126" class="size-medium wp-image" /></a><p class="wp-caption-text">The Norwegian National Palace.</p></div>
<p>Our hotel, which wasn&#8217;t situated in a particularly historic part of town, still offered beautiful views from the window.</p>
<div id="attachment_212" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/oslo-hotel-view-afternoon.jpg" rel="lightbox[201]"><img src="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/oslo-hotel-view-afternoon-300x153.jpg" alt="Oslo Hotel View (Afternoon)" title="Oslo Hotel View (Afternoon)" width="300" height="153" class="size-medium wp-image" /></a><p class="wp-caption-text">The view from our hotel room in the afternoon.</p></div>
<div id="attachment_213" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/oslo-hotel-view-evening.jpg" rel="lightbox[201]"><img src="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/oslo-hotel-view-evening-300x154.jpg" alt="Oslo Hotel View (Evening)" title="Oslo Hotel View (Evening)" width="300" height="154" class="size-medium wp-image" /></a><p class="wp-caption-text">The view from our hotel room in the evening.</p></div>
<p>No tourist visit to Oslo could possibly be complete without a visit to the <a href="http://en.wikipedia.org/wiki/Vigeland_Sculpture_Park">Sculpture Park</a>, a sprawling garden on the west end of the city build around a number of stone sculptures depicting various kinds of human relationships in various phases of development. I won&#8217;t elaborate on it here, except to say that if you take your time and pay attention to the art, it&#8217;s a deeply moving experience.</p>
<div id="attachment_214" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/sculpture-garden.jpg" rel="lightbox[201]"><img src="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/09/sculpture-garden-300x297.jpg" alt="From the Oslo Sculpture Park" title="From the Oslo Sculpture Park" width="300" height="297" class="size-medium wp-image" /></a><p class="wp-caption-text">A man and a woman dreaming (from the Oslo Sculpture Park).</p></div>
<p>There was more to the show and to the trip, but the best travelogue is the shortest. Schedule permitting, I&#8217;ll certainly be sending proposals to JavaZone in 2011. If you&#8217;re a speaker, I encourage you to do the same.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.augusttechgroup.com/tim/blog/2010/09/12/javazone-2010-oslo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gaelyk at the New York City Java SIG</title>
		<link>http://www.augusttechgroup.com/tim/blog/2010/08/28/gaelyk-new-york-city-java-sig/</link>
		<comments>http://www.augusttechgroup.com/tim/blog/2010/08/28/gaelyk-new-york-city-java-sig/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 22:26:12 +0000</pubDate>
		<dc:creator>tlberglund</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[gaelyk]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[nfjs]]></category>
		<category><![CDATA[nyc]]></category>
		<category><![CDATA[sig]]></category>

		<guid isPermaLink="false">http://www.augusttechgroup.com/tim/blog/?p=183</guid>
		<description><![CDATA[I had the immense pleasure of traveling to New York City last week to speak at the NYC Java SIG to promote the upcoming No Fluff Just Stuff show in Jersey City. The Java SIG is what most people call a JUG, but in world class cities, they have a bit more flexibility in setting [...]]]></description>
			<content:encoded><![CDATA[<p>I had the immense pleasure of traveling to New York City last week to speak at the <a href="http://javasig.org">NYC Java SIG</a> to promote the upcoming <a href="http://www.nofluffjuststuff.com/conference/jersey_city/2010/10/home">No Fluff Just Stuff show in Jersey City</a>. The Java SIG is what most people call a JUG, but in world class cities, they have a bit more flexibility in setting their own conventions. You&#8217;re going to call it a SIG, and you know what? You&#8217;re still going to love it.</p>
<p><a href="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/08/IMG_1028.jpg" rel="lightbox[183]"><img src="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2010/08/IMG_1028-300x224.jpg" alt="The building where the NYC Java SIG meets" title="11 Madison Avenue" width="300" height="224" class="aligncenter size-medium wp-image-185" /></a></p>
<p>I&#8217;ve driven through and around Manhattan before, but I&#8217;ve never really been <em>in</em> the city. I had a scant 20 hours to enjoy the place, which I did with some abandon. I&#8217;m fundamentally a man of the suburbs, but I love the city, and lovers of the city are truly bound to enjoy Midtown. I will certainly be back at my earliest opportunity.</p>
<p>The JUG—or rather, the SIG—is led by the redoubtable Frank Greco, CEO of <a href="http://www.crossroadstech.com/">Crossroads Technologies</a> (<a href="http://godfather.wikia.com/wiki/Frank_Greco">no relation</a>). I gave my talk on <a href="http://gaelyk.appspot.com">Gaelyk</a>, shown here:</p>
<div style="width:425px" id="__ss_4535006"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/tlberglund/gaelyk-lightweight-groovy-on-the-google-app-engine" title="Gaelyk: Lightweight Groovy on the Google App Engine">Gaelyk: Lightweight Groovy on the Google App Engine</a></strong><object id="__sse4535006" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gaelyk-100618071644-phpapp01&#038;stripped_title=gaelyk-lightweight-groovy-on-the-google-app-engine" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4535006" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gaelyk-100618071644-phpapp01&#038;stripped_title=gaelyk-lightweight-groovy-on-the-google-app-engine" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/tlberglund">Tim Berglund</a>.</div>
</div>
<p>There was lively discussion about Gaelyk&#8217;s very lightweight structure as a framework, and the limitations imposed by that structure. Many of the SIG attendees are Enterprise developers in the classical sense, so a product like this was understandably strange to them. And to be sure, I would never commend it for use in anything of even moderate complexity. However, for sites so simple you don&#8217;t want to incur the cognitive cost of dealing with a larger framework, and for which any kind of sophisticated hosting would be overkill, Gaelyk is a perfect fit. Interaction with the audience moved delightfully to a discussion of the way our tools shape the way we solve problems, and even the kinds of problems we consider tractable. Winston Churchill was quoted. Neal Postman was referenced. <a href="http://www.amazon.com/dp/0393072223/">Nick Carr&#8217;s latest book</a> was commended. Win, win, and win.</p>
<p>All in all, an enjoyable trip and a solid talk with a first-class JUG. Thanks to Jay Zimmerman and the NYC Java SIG for the experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.augusttechgroup.com/tim/blog/2010/08/28/gaelyk-new-york-city-java-sig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Talend Open Studio at DOSUG</title>
		<link>http://www.augusttechgroup.com/tim/blog/2009/03/04/talend-open-studio-at-dosug/</link>
		<comments>http://www.augusttechgroup.com/tim/blog/2009/03/04/talend-open-studio-at-dosug/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 15:49:28 +0000</pubDate>
		<dc:creator>tlberglund</dc:creator>
				<category><![CDATA[presentation]]></category>
		<category><![CDATA[dosug]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[Talend]]></category>

		<guid isPermaLink="false">http://www.augusttechgroup.com/tim/blog/?p=62</guid>
		<description><![CDATA[I had a great time speaking at <a title="Denver Open Source User Group" href="http://www.denveropensource.org">DOSUG</a> last night on <a href="http://www.talend.com/products-data-integration/talend-open-studio.php">Talend Open Studio</a>, the eponymous open-source ETL product by the French start-up. I realize ETL doesn't exactly capture most developers' imaginations the way cool dynamic languages or cutting-edge web frameworks might, but I think we had fun. The attendees were engaged and had many good comments and questions.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.talend.com"><img class="alignright size-full wp-image-65" style="border-left: 1em none;" title="logo-talend-small" src="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2009/03/logo-talend-small.png" alt="logo-talend-small" width="297" height="112" /></a><br />
I had a great time speaking at <a title="Denver Open Source User Group" href="http://www.denveropensource.org">DOSUG</a> last night on <a href="http://www.talend.com/products-data-integration/talend-open-studio.php">Talend Open Studio</a>, the eponymous open-source ETL product by the French start-up. I realize ETL doesn&#8217;t exactly capture most developers&#8217; imaginations the way cool dynamic languages or cutting-edge web frameworks might, but I think we had fun. The attendees were engaged and had many good comments and questions. I suspect at least a couple of them know the ETL landscape a lot better than I do, but they seemed happy to know there&#8217;s a credible open-source product in the marketplace.</p>
<p>I had two main examples to show. The first was a simple (and contrived) transformation of an OPML file into an Excel spreadsheet and a text file. The Excel file contained a list of the names and URLs of all my feeds in a human-readable format. The text file was supposed to contain a list of the unique link types (hint: they were all &#8220;rss&#8221;), but that part of the demo actually didn&#8217;t work properly due to some fault of mine. This being an occupational hazard in live coding not to be dwelt upon when your audience is patiently waiting, I dropped it and moved on.</p>
<p>After the first demo, I talked about basic data warehousing principles a little bit as outlined in <a href="http://www.amazon.com/Data-Warehouse-ETL-Toolkit-Techniques/dp/0764567578">The Data Warehouse ETL Toolkit</a> by Kimball and Caserta. This kind of thing is tricky with a diverse audience, because the speaker runs the dual risks of insulting the informed and not informing those new to the subject. Brevity is usually the best policy.</p>
<p>The second demo showed a real-life transactional schema from a start-up I had been involved with a few years back. (The <a title="My Former Employer!" href="http://www.intellidata.net">present custodians</a> of the data were kind enough to share a sanitized copy of it with me for this demo.) I showed a few transformations of transactional data of varying levels of complexity into the relevant fact and dimension tables, including some look-ups from external text files and one or two interesting joins on the transactional inputs. Mind you, I didn&#8217;t proceed to show any neat analytical tools running on the newly minted warehouse, but the OLAP world is your oyster once the ETL job runs to completion. Relatively speaking.</p>
<div id="attachment_66" class="wp-caption aligncenter" style="width: 554px"><img class="size-full wp-image-66" title="talend-job" src="http://www.augusttechgroup.com/tim/blog/wp-content/uploads/2009/03/talend-job.png" alt="A Talend job showing the creation of an order line item dimension." width="544" height="353" /><p class="wp-caption-text">A Talend job showing the creation of an order line item dimension.</p></div>
<p>I was frank about Talend&#8217;s weaknesses. There are a few tutorial screencasts on the web site, but other than that I don&#8217;t consider the getting-started documentation to be particularly smooth. The Business Modeler is a confusing addition to the product—a third-rate drawing program that distracts the newcomer and adds no discernable value to the suite. The lack of credible Mac support is as disappointing as it is surprising, given that the tool is entierly Eclipse-based. However, I still see the tool as an option very much worth evaluating if you have needs in the space.</p>
<p>All in all, I&#8217;m happy with how the talk went, and I&#8217;d like to put the tool to use in a production environment at some point soon. I hope to be able to make a few upgrades to the talk and give it at some other local groups as the opportunity arises. I&#8217;ll update with a link to Slideshare as soon as I get the deck upgraded.</p>
<p>Another thing: as <a href="http://twitter.com/tlberglund/status/1272070199">threatened on Twitter</a>, I did wear all black to the talk. And yes, Matthew McCullough did play a <a href="http://en.wikipedia.org/wiki/I%27ve_Been_Everywhere">Johnny Cash song</a> just before the meeting got started. See <a title="Denver Dev on Denver Open Source" href="http://ambientideas.com/blog/index.php/2009/03/ipc-and-talend-at-the-dosug-march-meeting/">his post on the event</a> for another account of how it went.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.augusttechgroup.com/tim/blog/2009/03/04/talend-open-studio-at-dosug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.341 seconds -->

