<?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>Victus Spiritus &#187; Books</title>
	<atom:link href="http://www.victusspiritus.com/tag/books/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.victusspiritus.com</link>
	<description>a blog by Mark Essel on web technology, startups and design philosophy</description>
	<lastBuildDate>Mon, 30 Jan 2012 19:33:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/><cloud domain='www.victusspiritus.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>I&#8217;m having way too much fun reading a programming book &#8211; Beginning Scala</title>
		<link>http://www.victusspiritus.com/2009/10/31/im-having-way-too-much-fun-reading-a-programming-book-beginning-scala/</link>
		<comments>http://www.victusspiritus.com/2009/10/31/im-having-way-too-much-fun-reading-a-programming-book-beginning-scala/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 12:46:07 +0000</pubDate>
		<dc:creator>Mark Essel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.victusspiritus.com/?p=2026</guid>
		<description><![CDATA[<h1 style="font-size: 2em;">What&#8217;s so special about Beginning Scala by Dave Pollack?</h1>
<p><a href="http://www.amazon.com/gp/product/1430219890?ie=UTF8&#38;tag=dream06-20&#38;linkCode=as2&#38;camp=1789&#38;creative=390957&#38;creativeASIN=1430219890">Beginning Scala</a> is a fairly recently published introductory Scala book (2009). It has made learning about coding and design with Scala thus far a pleasure. While I&#8217;ve been aware of Scala &#8230;</p>]]></description>
			<content:encoded><![CDATA[<h1 style="font-size: 2em;">What&#8217;s so special about Beginning Scala by Dave Pollack?</h1>
<p><a href="http://www.amazon.com/gp/product/1430219890?ie=UTF8&amp;tag=dream06-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1430219890">Beginning Scala</a> is a fairly recently published introductory Scala book (2009). It has made learning about coding and design with Scala thus far a pleasure. While I&#8217;ve been aware of Scala for a few months now (when I started web programming), I&#8217;ve been very busy with high priority task juggling and hadn&#8217;t made time to experience the language (or read the book). My first memory of Scala is hearing about how twitter switched over much of their Ruby on Rails to a Scala framework to improve performance. Since then I&#8217;ve sampled <a href="http://www.victusspiritus.com/2009/10/28/14-million-ways-to-skin-a-cat-web-programming/">14 million other web technologies</a> <img src='http://www.victusspiritus.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<span id="more-2026"></span></p>
<h2>why I&#8217;m loving the book</h2>
<p>After the intro and background (who developed scala: Martin Odersky and why: Java needed a successor &#8211; ty <a href="http://www.reddit.com/user/sisyphus">sisyphus</a>) Dave shows us sample code which is exactly how I prefer to learn something. When I want to learn about a topic, I prefer to dive in head first. I want to experience it for myself, to really understand it, and make it my own. I like to cut to the chase, and then back track to fill in the knowledge gaps fueled by the curiosity that naturally arises by going through something interesting the first time. If it&#8217;s not interesting, I can drop it with minimal time lost. This is precisely how I feel about Scala, and Dave Pollack gets it. Even in his first real sample program we get a line by line description of some syntax covering a nice range of functionality and syntax. Here&#8217;s an excerpt from the book (from chapter 2).</p>
<p>Listing 2-1. Sum.scala</p>
<p><img class="alignnone size-full wp-image-2034" title="ScalaSnippet_Sum" src="http://www.victusspiritus.com/wp-content/uploads/2009/10/ScalaSnippet_Sum1.jpg" alt="ScalaSnippet_Sum" width="480" height="280" /></p>
<p style="padding-left: 30px;">
<p style="padding-left: 30px;"><span style="color: #0000ff;">Let’s go through this file in detail.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Importing Stuff</span></p>
<p style="padding-left: 60px;">
<p style="padding-left: 30px;"><span style="color: #0000ff;">The import scala.io._ code imports all the classes from the scala.io package. This is the same as Java’s import scala.io.*;. Scala uses the _ rather than the * as a wildcard. Coming from Javaland, it takes a little getting used to, but it’ll soon make sense.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Parsing a String to an Int</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Next, we define the toInt method, which takes a single parameter called in. That parameter has the type String:</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">def toInt(in: String): Option[Int] =</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">In Scala, method definitions begin with the def keyword. The method name follows, along with the method’s parameter list. In this case, the toInt method takes one parameter: in, whose type declaration follows it rather than precedes it. In some cases, the Scala compiler can figure out or infer the type of a variable or the return type of a method. You need to declare the parameter types for a Scala method, but we may omit the return type if the return type can be inferred and the method is not recursive.2 We declare the return type as Option[Int]. In general, if the return type is not immediately obvious, it’s an act of kindness and good citizenship to your fellow programmers and your future self to declare the return type.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">What’s Option and what are those funky square brackets around Int? Option is a container that holds one or zero things. If it holds zero elements, it’s None, which is a singleton, which means that only one instance of None. If the Option holds one element, it’s Some(theElement). The funky square brackets denote the type of thing that’s held by the Option. In this case, the Option holds an Int. In Scala, everything is an instance of a class, even Int, Char, Boolean, and the other JVM primitive types. The Scala compiler puts primitive types in instance boxes (boxing) only when necessary. The result is that you can treat all classes uniformly in Scala, but if your primitive data does not require boxing, you’ll see the same program performance you see using primitives in Java. If your primitive does require boxing, the Scala compiler does all the boxing and unboxing for you, and it even does null testing when it unboxes—nice and polite.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">So, Option[Int] is a container that holds zero or one Int value. Using Option is one of the ways that Scala lets you avoid null pointer exceptions and explicit null testing. How? You can apply your business logic over all the elements in the Option. If the Option is None, then you apply your logic over zero elements. If the Option is Some, then you apply your business logic over one element. Option can be used and nested in the for comprehension. We’ll explore Option in more depth in Chapter 3.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">When I’m writing code, I return Option from any method that, based on business logic, might return some value or might return none. In this case, converting a String to an Int might succeed if the String can be parsed or might fail if the String cannot be parsed into an Int. If the String cannot be parsed, it is not something that’s worthy of an exception because it’s not an exceptional situation. It is merely a calculation that has no legal value, thus it makes sense to return None if the String cannot be parsed. This mechanism also avoids the Java patchwork of sometimes returning null when there’s no legal value to return and sometimes throwing an exception.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Speaking of exceptions, that’s exactly what Integer.parseInt does when it cannot parse the String into an Int. So, in our code, we wrap a try/catch around</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Some(Integer.parseInt(in.trim)).</span></p>
<p style="padding-left: 60px;">
<p style="padding-left: 30px;"><span style="color: #0000ff;">If the Integer.parseInt method succeeds, a new instance of Some will be created and returned from the toInt method. There’s no explicit return statement as the last expression evaluated in the method is its return value.</span></p>
<p style="padding-left: 60px;">
<p style="padding-left: 30px;"><span style="color: #0000ff;">2. A recursive method is a method that calls itself.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">3. Option[Int] is a “variant type” or “sum type” with None as one variant and Some[Int] as the other.</span></p>
<p style="padding-left: 60px;">
<p style="padding-left: 30px;"><span style="color: #0000ff;">Neither None nor Some[Int] is the same as Int, but if you’re working with an Option[Int] that happens to be of the variant Some[Int] then you can extract the actual Int from it by calling the get method. If Integer.parseInt throws an exception, it will be caught by the catch block. The catch block looks different from Java’s catch. In Scala, there’s a single catch and a series of patterns to match the exception. Pattern matching is a language-level Scala construct, and it’s uniformly applied across the language. In this code, we have</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">case e: NumberFormatException =&gt; None</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">This pattern matches the exception to NumberFormatException and returns the expression None, which is the last expression in the method. Thus toInt will return None if parseInt throws a NumberFormatException. To summarize: toInt takes a String and attempts to convert it to an Int. If it succeeds, toInt returns Some(convertedValue), otherwise it returns None.</span></p>
<p style="padding-left: 60px;">
<p style="padding-left: 30px;"><span style="color: #0000ff;">Summing Things Up</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Next, let’s tackle the sum method. We define our method:</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">def sum(in: Seq[String]) = {</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">We don’t declare the return type for sum because the compiler can figure it out and the method is short enough that a quick glance at the code shows us that the return type is an Int. The in parameter is a Seq[String]. A Seq is a trait (which is like a Java interface) that is inherited by many different collections classes. A Seq is a supertrait to Array, List, and other sequential collections. As Option[Int] is an Option of Int, Seq[String] is a sequence of String elements.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">A trait has all the features of the Java interface construct. But traits can have implemented methods on them. If you are familiar with Ruby, traits are similar to Ruby’s mixins. You can mix many traits into a single class. Traits cannot take constructor parameters, but other than that they behave like classes. This gives you the ability to have something that approaches multiple inheritance without the diamond problem (http://en.wikipedia.org/wiki/ Diamond_problem). The first line of the sum method transforms the Seq[String] to Seq[Int] and assigns the result to a val named ints:</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">val ints = in.flatMap(s =&gt; toInt(s))</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">This maps and flattens each element by calling the toInt method for each String in the sequence. toInt returns a collection of zero or one Int. flatMap flattens the result such that each element of the collection, the Option, is appended to the resulting sequence. The result is that each String from the Seq[String] that can be converted to an Int is put in the ints collection.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">In Scala, you can declare variables as assign-once or assign-many. Assign-once Scala variables are the same as Java’s final variables. They are identified with the val keyword. Assign-multiple variables in Scala are the same as Java variables and are identified with the var keyword. Because I’m not changing the value of ints after I set it, I chose the val keyword. I use val in my programs unless there’s a compelling reason to use var, because the fewer things that can change, the fewer defects that can creep into my code.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Another fancy thing that we’ve done is create a function that calls the toInt method and passes it to the flatMap method. flatMap calls the function for each member of the sequence, in. In our example, we defined a function that takes a single parameter, s, and calls toInt with that parameter. We pass this function as the parameter to flatMap, and the compiler infers that s is a String. Thus, an anonymous function is created, and an instance of that function is passed to the flatMap method. Additionally, Scala sees that the return type of toInt is an Option[Int], so it infers that the ints variable has the type Seq[Int]. So, you’ve done your first bit of functional programming. Woo-hoo! The next line sums up the Seq[Int]:</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">ints.foldLeft(0)((a, b) =&gt; a + b)</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">foldLeft takes a seed value, 0 in this case, and applies the function to the seed and the first element of the sequence, ints. It takes the result and applies the function to the result and the next value in the sequence repeatedly until there are no more elements in the sequence. foldLeft then returns the resulting accumulated value. foldLeft is useful for calculating any accumulated value. In math, sum, prod, min, max, and so on can be implemented easily with foldLeft. In this case, we defined a simple function that takes two parameters, a and b, and returns the sum of those parameters. We did not have to declare the types of a or b, because the Scala compiler infers that they are both Ints. The foldLeft line is the last expression in the method, and the sum method returns its results.</span></p>
<p style="padding-left: 60px;">
<p style="padding-left: 30px;"><span style="color: #0000ff;">Program Body</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">The following defines the input variable:</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">val input = Source.fromInputStream(System.in)</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Its type is Source, a source of input, which wraps the JVM’s System.in InputStream. In this case, we didn’t have to do anything fancy to access a Java class. We used it just as we might have from a Java program. This illustrates the awesome interoperability between Scala and Java.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">The next line gets the lines from our source and collects them into a Seq[String]:</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">val lines = input.getLines.collect</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Finally, we print a message on the console with the sum of the lines with parsible integers on them:</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">println(&#8220;Sum &#8220;+sum(lines))</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">To run the program, type</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">&gt; scala Sum.scala</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">When you’re prompted, enter some lines with numbers. When you’re done, press Ctrl-D (Unix/Linux/Mac OS X) or Ctrl-C (Windows), and the program will display the sum of the numbers.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Great, you’ve written a Scala program that makes use of many of Scala’s features including function passing, immutable data structures, and type inference. Now, let’s look more deeply into Scala’s syntax.</span></p>
<h2><strong>what&#8217;s special about scala</strong></h2>
<p>It&#8217;s a software language designed to match object oriented and functional paradigms. We are guided to think (and code) differently when writing libraries versus generating specific applications. Martin Odersky describes the design goals of the language best in this interview on scalazine, <a href="http://www.artima.com/scalazine/articles/goals_of_scala.html">the Goals of Scala</a>:</p>
<p style="padding-left: 30px;"><strong><span style="color: #0000ff;">Martin Odersky</span></strong><span style="color: #0000ff;">: The first thing we cared about was to have as clean an integration of functional and object-oriented programming as possible. We wanted to have first-class functions in there, function literals, closures. We also wanted to have the other attributes of functional programming, such as types, generics, pattern matching. And we wanted to integrate the functional and object-oriented parts in a cleaner way than what we were able to achieve before with the Pizza language. That was something we deeply cared about from the start.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Later on, we discovered that this was actually very easy, because functional languages have a fixed set of features. They had been well researched and well proven, so the question was only how to best integrate that in object-oriented programming. In Pizza we did a clunkier attempt, and in Scala I think we achieved a much smoother integration between the two. But then we found out that on the object-oriented side there remained lots of things to be developed. Object-oriented programming, at least when you throw in a static type system, was very much terra incognita. There was some work we could look at and use, but almost all languages that we found had made a lot of compromises.</span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">So as we developed Scala, we started to discover how we could mix objects together with traits and mixin composition, how we could abstract the self types, how we could use abstract type members, and how we could let this all play together. Up to then there had been a couple of research languages that addressed a few of these aspects in specialized ways, but there wasn&#8217;t much in terms of mainstream languages that covered the whole spectrum of making it all work. In the end it turned out that the main innovations in Scala were on the object-oriented side, and that&#8217;s also something we really cared about.</span></p>
<h2>what&#8217;s special about Dave Pollack</h2>
<p>He&#8217;s an active developer that&#8217;s designed and built <a href="http://liftweb.net/">lift</a> with the help of a great open source group. This is a full featured web framework built with scala but focused on developing web applications fast and effectively. Here&#8217;s Dave&#8217;s <a href="http://blog.lostlake.org/">personal blog</a>. From the liftweb site:</p>
<p style="padding-left: 30px;"><span style="color: #0000ff;">Lift is an expressive and elegant framework for writing web applications. Lift stresses the importance of security, maintainability, scalability and performance, while allowing for high levels of developer productivity. Lift open source software licensed under an </span><a style="font-size: 13px; text-decoration: none;" href="http://www.apache.org/licenses/LICENSE-2.0.html"><span style="color: #0000ff;">Apache 2.0 license.</span></a></p>
<p>I first discovered Dave passionately describing why he preferred Scala&#8217;s static typing to his development time with Ruby on Rails (and heavy type testing cost) on <a href="http://lambda-the-ultimate.org/node/2147">Lambda the Ultimate</a>. You&#8217;ll get a good feel for Dave&#8217;s thinking, and some incredible cross evaluation and discussion from other group members.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://tech.slashdot.org/story/09/08/18/1725217/Scala-a-Statically-Typed-Functional-O-O-Language?from=rss">Scala, a Statically Typed, Functional, O-O Language</a> (tech.slashdot.org)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/eacb22b3-b929-42e1-bf45-c259bff8e41c/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=eacb22b3-b929-42e1-bf45-c259bff8e41c" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<div style="float:right;margin:0px 0px 0px 0px;"><a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="small-count" data-url="http://www.victusspiritus.com/2009/10/31/im-having-way-too-much-fun-reading-a-programming-book-beginning-scala/"></a><script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.victusspiritus.com/2009/10/31/im-having-way-too-much-fun-reading-a-programming-book-beginning-scala/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ignore Everybody &amp; the Dip, double feature book review</title>
		<link>http://www.victusspiritus.com/2009/10/12/ignore-everybody-the-dip-double-feature-book-review/</link>
		<comments>http://www.victusspiritus.com/2009/10/12/ignore-everybody-the-dip-double-feature-book-review/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 13:20:25 +0000</pubDate>
		<dc:creator>Mark Essel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[inspiration]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://www.victusspiritus.com/?p=1815</guid>
		<description><![CDATA[<h1>Ignore Everybody</h1>
<p>Hugh Macleod gathered his manifesto <a href="http://gapingvoid.com/2004/07/25/how-to-be-creative/">How to be Creative</a>, and weaved together his creative insights on how best to develop our genuine creativity in <a href="http://www.amazon.com/gp/product/159184259X?ie=UTF8&#38;tag=dream06-20&#38;linkCode=as2&#38;camp=1789&#38;creative=390957&#38;creativeASIN=159184259X">Ignore Everybody</a>.</p>
<p><span id="more-1815"></span></p>
<p>The history unfolds with Mr. Macleod&#8217;s background as a young &#8230;</p>]]></description>
			<content:encoded><![CDATA[<h1>Ignore Everybody</h1>
<p>Hugh Macleod gathered his manifesto <a href="http://gapingvoid.com/2004/07/25/how-to-be-creative/">How to be Creative</a>, and weaved together his creative insights on how best to develop our genuine creativity in <a href="http://www.amazon.com/gp/product/159184259X?ie=UTF8&amp;tag=dream06-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=159184259X">Ignore Everybody</a>.</p>
<p><span id="more-1815"></span></p>
<p>The history unfolds with Mr. Macleod&#8217;s background as a young advertiser. One of his observations that slightly frustrated me was the &#8220;watercoolies&#8221; a nickname he and his former coworker John gave to the older folks that were getting squeezed by the industry. The water cooler folks were burnt out by the advertising system, and were identified by complaints about everything under the sun. I was a little miffed by Hugh&#8217;s thoughts of his friend John joining the ranks of the watercoolies. Why can&#8217;t we find value in what other folks share? After all, they have been through the wringer and between complaints there are moments of miraculous appreciation and truth. Yeah they may not be wildly successful or rich, but you can&#8217;t take it with you anyway. Your mindset and outlook is what defines your &#8220;life wealth&#8221; in my book. A penniless guy or gal who appreciates all their life has provided them, is far wealthier than one who is filthy rich, but is paranoid and angry at every penny lost.</p>
<p>Hugh let&#8217;s us know that Ignore Everybody isn&#8217;t an absolute statement:</p>
<blockquote><p>When I say, &#8220;Ignore Everybody,&#8221; I don&#8217;t mean, Ignore all people, at all times, forever. No, other people&#8217;s feedback plays a very important role. Of course it does. It&#8217;s more like, the better the idea, the more &#8220;out there&#8221; it initially will seem to other people, even people you like and respect. So there&#8217;ll be a time in the beginning when you have to press on, alone, without one tenth the support you probably need.</p></blockquote>
<p>For my own path, I greedily soak in every comment, reply and morsel of feedback. Witnessing the social dynamic changes of Internet publishing, old corporate structures failing, all firsthand is like a personal gift from time and space. To be alive at this time, in this place, allows us all to observe a transformation of value creation the world has never before seen. Perceived value is just now becoming recognized as an ultra personalized measure for each person. Groups and communities are nearly self organizing from diverse slices of society.</p>
<ol>
<li>social media shares for real connections (information filtering, conversations, observations)</li>
<li>open source repositories for hackers/coders/developers</li>
<li>crowd funded social programs to kick start entrepreneurs in low income areas</li>
</ol>
<h1>the Dip</h1>
<p>Seth Godin concentrates his marketing insight towards knowing when to quit and when to stick with something in <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26x%3D0%26ref%255F%3Dnb%255Fss%26y%3D0%26field-keywords%3D%2526%252334%253Bthe%2520dip%2526%252334%253B%2520seth%2520godin%26url%3Dsearch-alias%253Dstripbooks&amp;tag=dream06-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=390957&quot;&gt;Name Your Link&lt;/a&gt;&lt;img src=">the Dip</a>. It&#8217;s a rebellious but very quick jaunt (80pages, thanks for focusing it down Seth) through some simple curves that match much of our life&#8217;s activities. <em>The Dip</em> is characterized by a process that initially starts out wonderful entertaining, then becomes a chore, terrifically challenging, but eventually pays off when we attain mastery of a field.  For Seth, super focusing meant quitting everything that wasn&#8217;t a Dip like function (he calls the flat line reward functions  Cul-de-sacs, and dead ends are Cliffs). Cul-de-sacs are local optimals, which we psychologically cling onto, but coast along within. Without challenging ourselves or those around us we degrade and cease to improve our skills and knowledge. There is no end game mastery where we can reap great rewards, and provide superb value to society at large. The final curve Seth maps to life are Cliffs. These type of self feeding habits make it nearly impossible to quit, until something drastic happens and the entire system collapses. Cigarettes, and other addictive substances fall into this category, but as fortune would have it most of life&#8217;s challenges are either Dips or Cul de sacs.</p>
<p>For someone who has diversified interests in many different areas, I felt some conflict with Seth&#8217;s proposal. I have a great fondness for sharing and know that blogging will be party of my daily activities for as long as I&#8217;m able. But there are so many fascinating things I can be apart of that are outside of blogging, which in fact fuel my desire and value of my writing. Novel Internet software design solutions and entrepreneurship are key areas of concern for me. The building of value in our society, and those who risk everything to make abstract concepts concrete are of profound importance to my curiosity. Serendipity find&#8217;s those who are open to it&#8217;s marvels by connecting disparate data (observations). The ultra focused masters of their domains may miss out on the splendor of a balance between our passions, and our other needs/hobbies.</p>
<p>Seth leaves us with a statement near the end of the Dip which encourages and challenges us:</p>
<blockquote><p><strong>You&#8217;re Astonishing</strong></p>
<p>How dare you waste it.</p>
<p>You and your organization have the power to change everything. To create remarkable products and services. To over deliver. To be the best in the world.</p>
<p>How dare you squander that resource by spreading it too thin.</p>
<p>How dare you settle for mediocre just because you&#8217;re busy coping with too many things on your agenda, racing against the clock to get it all done.</p>
<p>The lesson is simple: If you&#8217;ve got as much as you&#8217;ve got, use it. Use it to become the best in the world, to change the game, to set the agenda for everyone else. You can only do that by marshaling all of your resources to get through the biggest possible Dip. In order to get through that Dip, you&#8217;ll need to quit everything else. If it&#8217;s not going to put a dent in the world, quit. Right now. Quit and use that void to find the energy to assault the Dip that matters.</p>
<p>Go ahead , make something happen. We&#8217;re waiting!</p></blockquote>
<p>Ok Seth, I get the message. I can cut back on my World of Warcraft hours to spend a few more hours a week working towards creating something of real long term value.</p>
<p><strong>Related articles by Zemanta</strong></p>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.victusspiritus.com/2009/10/09/a-purple-cow-joins-forces-with-a-gaping-void-only-greatness-results/">A Purple Cow joins forces with a Gaping Void, only greatness results</a> (victusspiritus.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.gothamgal.com/gotham_gal/2009/10/hugh-macleod-the-gaping-void.html">Hugh MacLeod, The Gaping Void</a> (gothamgal.com)</li>
<li class="zemanta-article-ul-li"><a href="http://stephendann.com/2009/07/01/heresy/">Heresy in the church of the latent entrepreneur</a> (stephendann.com)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/038b1e30-1827-48c5-92a5-2189264f8fef/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=038b1e30-1827-48c5-92a5-2189264f8fef" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<div style="float:right;margin:0px 0px 0px 0px;"><a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="small-count" data-url="http://www.victusspiritus.com/2009/10/12/ignore-everybody-the-dip-double-feature-book-review/"></a><script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.victusspiritus.com/2009/10/12/ignore-everybody-the-dip-double-feature-book-review/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Jonathan Mead Generously Share&#8217;s His Message, &#8220;Reclaim Your Dreams&#8221;</title>
		<link>http://www.victusspiritus.com/2009/04/24/jonathan-mead-generously-shares-his-message-reclaim-your-dreams/</link>
		<comments>http://www.victusspiritus.com/2009/04/24/jonathan-mead-generously-shares-his-message-reclaim-your-dreams/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 17:55:10 +0000</pubDate>
		<dc:creator>Mark Essel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[inspiration]]></category>

		<guid isPermaLink="false">http://www.victusspiritus.com/?p=21</guid>
		<description><![CDATA[<div style="text-align: center;"><a style="display: inline;" href="http://messel.typepad.com/.a/6a0111688fdbcb970c0115704c83c3970b-pi"></a></div>
<p>I&#8217;m two chapters in and loving it so far.  Thanks to Jonathan for taking the time and effort to organize his thoughts and develop a cogent and effective strategy to <a href="http://www.illuminatedmind.net/reclaim-your-dreams/">Reclaim our Dreams</a>.<span id="more-21"></span></p>
<p>Here are selected high points during &#8230;</p>]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;"><a style="display: inline;" href="http://messel.typepad.com/.a/6a0111688fdbcb970c0115704c83c3970b-pi"><img class="at-xid-6a0111688fdbcb970c0115704c83c3970b" title="Ebookdreamcover-194x300" src="http://messel.typepad.com/.a/6a0111688fdbcb970c0115704c83c3970b-800wi" border="0" alt="Ebookdreamcover-194x300" /></a></div>
<p>I&#8217;m two chapters in and loving it so far.  Thanks to Jonathan for taking the time and effort to organize his thoughts and develop a cogent and effective strategy to <a href="http://www.illuminatedmind.net/reclaim-your-dreams/">Reclaim our Dreams</a>.<span id="more-21"></span></p>
<p>Here are selected high points during my reading experience:</p>
<p style="margin-bottom: 0in;">Jonathan engages the readers with<br />
a series of questions to get them thinking about their own paths from the very<br />
beginning.  It quickly becomes evident this is not a guided tour but simply a tool kit to aid oneself in their own quest for rediscovering their true calling.</p>
<p style="margin-bottom: 0in;">He muses &#8220;Why do you live?&#8221; … Jonathan reached<br />
an answer for himself: &#8220;The point of living is to enjoy life&#8221;, and finds it to be a commonality among those he has personally observed.  Each of our lives has central themes which we can learn from and find nourishment.</p>
<p style="margin-bottom: 0in;">Then he proceeds to ask common concerns we share:</p>
<p style="margin-bottom: 0in;">&#8220;We have questions such as these:</p>
<ul>
<li>
<p style="margin-bottom: 0in;">What happens if doing what I love<br />
isn&#8217;t practical?</li>
<li>
<p style="margin-bottom: 0in;">What happens if I can&#8217;t make any<br />
money with my passion?</li>
<li>
<p style="margin-bottom: 0in;">What happens if I&#8217;m not good at<br />
following my heart?</li>
<li>
<p style="margin-bottom: 0in;">I don&#8217;t seem to have time for the<br />
things I love. How do I make time?&#8221;</li>
</ul>
<p style="margin-bottom: 0in;">By bringing light to these barriers to self development he forces us to to see that they are merely perceived obstacles and excuses not to follow our inner nature.</p>
<p style="margin-bottom: 0in;">In chapter 1, &#8220;unbrainwashing or creating room<br />
for your dreams to grow&#8221; I was reminiscent of the Jedi training words of<br />
Yoda, “you must unlearn what you have learned”.  Jonathan warns that many of us become a prisoner of our own ingrained thought processes.  “Instead of owning your thoughts,<br />
your thoughts own you. You start to identify with your thoughts, and<br />
pretty soon the conflict in your mind is too much. It&#8217;s always<br />
judging, always brooding about something.”  This causes us harm because we are comparing our current state of being with one that is unachievable or impossible.  “Constantly comparing yourself<br />
against an image of perfection causes you to search for something<br />
you&#8217;ll never have and strive to become someone you&#8217;ll never be. It<br />
doesn&#8217;t exist”.  I believe what he is describing is a differentiation from our creativity and analytical minds, which is based on holding possible choices in opposition (juxtaposition), and our true selves.</p>
<p style="margin-bottom: 0in;">For chapter 2 we are coached to &#8220;Stop Caring&#8221;.  I was particularly impressed with the warning signs of &#8220;toxic caring&#8221;:</p>
<p style="margin-bottom: 0in;">“Some Symptoms of toxic caring<br />
include:</p>
<ul>
<li>
<p style="margin-bottom: 0in;">We value productivity and<br />
accomplishments more than what makes us come alive</li>
<li>
<p style="margin-bottom: 0in;">We give more merit to the bullet<br />
points on our resumes than the contents of our character</li>
<li>
<p style="margin-bottom: 0in;">We care more about the size of our<br />
bank accounts than the fulfillment of our passions</li>
<li>
<p style="margin-bottom: 0in;">Efficiency and getting things done<br />
becomes more important than how much we enjoy what we&#8217;re doing”</li>
</ul>
<p>Once again I humbly thank Jonathan Mead for taking the time and energy to orchestrate his powerful message and giving each of us a chance to <a href="http://www.illuminatedmind.net/reclaim-your-dreams/">&#8220;Reclaim Your Dreams&#8221;</a>.</p>
<div style="float:right;margin:0px 0px 0px 0px;"><a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="small-count" data-url="http://www.victusspiritus.com/2009/04/24/jonathan-mead-generously-shares-his-message-reclaim-your-dreams/"></a><script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.victusspiritus.com/2009/04/24/jonathan-mead-generously-shares-his-message-reclaim-your-dreams/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

