david mosher http://blog.davemo.com personal and semi-professional opinions of a web designer and developer living in saskatoon, sk, canada posterous.com Sun, 15 Jan 2012 22:04:46 -0800 Emojii http://blog.davemo.com/emojii http://blog.davemo.com/emojii
Emojii.m4a Listen on Posterous

Rough scratch track with some ideas I'd like to expand on later in higher fidelity. Done completely with iPhone 4S and an Acoustic Guitar. :)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher -
Mon, 21 Nov 2011 13:27:00 -0800 The SCNA 2011 Narrative : Suitability, Capability, Anarchy and Propaganda http://blog.davemo.com/the-scna-2011-narrative-suitability-capabilit http://blog.davemo.com/the-scna-2011-narrative-suitability-capabilit

I attended Software Crafstmanship North America in Chicago this weekend and came away feeling much differently than I thought I would. I tweeted a summary of my thoughts last night:

@dmosher: I find it interesting that the talks I agreed with most at #scna were predominantly against established "agile" principles … :|

Twitter is a horrible medium for expressing ideas that are packed with meaning; this post is intended to unpack my tweet and experience at SCNA 2011 by focusing on the 3 talks I found the most valuable and how they formed a cohesive and powerful narrative in my mind.

Suitability vs Capability

Gary Bernhardt gave a wonderful talk entitled "Expansion & Contraction". I think he should have titled it "Suitability vs Capability" but it was a brilliant talk and the one I considered the best of the conference. Here's my best attempt at paraphrasing it:

Programming Language and Technology go through a constant ebb and flow of expanding and contracting over time. During expansion, these solutions are "Capability" solutions; that is, they are capable of solving problems but they are not yet suitable. Eventually there is a contraction that happens and "Suitability" solutions emerge.

Java first emerged as a Capability Solution during an expansion in the post C/C++ era. Time passed and a contraction occurred in which Java matured into a Suitability Solution for developing software.

A few times during his talk Gary mentioned that JavaScript and NodeJS are currently in the realm of Capability Solutions. At first this rubbed me the wrong way but I think that's because I wasn't really listening to what he was saying objectively. NodeJS is absolutely in the realm of Capability and not Suitability at the moment, but that doesn't mean you can't create something useful with it.

Thinking more about the heart of Gary's talk I find myself glad that it was on Day 1 because I found that it framed my thinking for the rest of the conference.

Programmer Anarchy

Agile best practices are often framed as things we "must do" in order to be successful but I think it would behoove us to frame them in terms of suitability and capability.

Fred George gave a talk in the breakout room on Day 2 entitled "Programmer Anarchy". His ideas might seem radical to some but I think they are an appropriate response based on an evaluation of suitability/capability for his specific situation. It's important to understand that the following decisions derive from a company that is continually investing in new ways to make money by building very small applications. Here's the gist:

Agile prescribes many best practices like Kanban, Scrum, XP, Pairing, Continuous Integration, Unit Testing... the list goes on.

In the waterfall era the power to determine how systems get built lies squarely with the customer. Up-front design docs and requirements specifications dictate how developers should build a system to achieve success. Through waterfall, systems are often built completely wrong. As a result customer trust is lower, developer happiness decreases, and success is not realized.

In the agile era the power to determine how systems get built is shared between the customer and developers but there is a gap in trust because of the past failures of waterfall. Agile is an attempt to bridge the trust gap by building things faster and with less bugs. Through agile, systems are also built wrong but they fail faster which mitigates risk and decreases the cost of change.

In the era of Programmer Anarchy the power to determine how systems are built lie directly with developers.

  • non-developer roles like architects, project manager, scrum-master, team lead, delivery lead, hr people and tester are completely eliminated from teams
  • developers are empowered to build software using whatever technology they choose and with whatever tools they choose
  • applications and systems are extremely small (100-300 lines of code) so unit-tests, acceptance tests, and continuous integration are eliminated entirely
  • teams are encouraged to write and re-write applications using whatever they want, including capability solutions (Clojure, NodeJS, Cassandra, Hadoop, etc..)

Fred talked a lot about his company and how they have a lot of trust in their developers to be able to turn ideas into money. The first thing they do on any project is write the business metrics code to be able to verify whether something they produce can be tied back to business value. This is an absolutely critical point that needs to be understood. Most of the time, my dissatisfaction in the work I do is related to not knowing whether something I build will actually have value. If I had metric and monitoring code in place that was able to tell me what I created is making money and can be considered successful my job satisfaction would increase greatly.

Unit tests weren't suitable for Fred's teams because they were writing such small applications, so they eliminated them. Traditional "Agile" roles weren't suitable because he empowered developers to make decisions on what to use, how to use it and which developers would be best suited to building it, so they eliminated them. I think you can see the pattern.

I found it interesting that Fred's teams got rid of things many in the Agile movement consider to be not only suitable but essential to building good software. It was also fascinating that he actively pushed his teams to use capability solutions like Clojure, NodeJS, Cassandra and Hadoop, which proved wildly successful.

Whether you agree with the decisions or not is irrelevant; Fred's team made a judgement call about the suitability of all the typical "Agile" best practices and cut away all the things that weren't suitable. Good teams find ways to eliminate waste by evaluating whether the things they do are capable and suitable and eliminating things that aren't.

Propaganda, Indoctrination, Fanbois, and Education

I believe there to be a significant difference between a "Big 'A' Agile" and "Little 'a' agile". The religion of "Agile" is often touted as the one single way to build software. The number of roles and processes prescribed by "Agile" is excessive, however, this is due to a failure to evaluate things in terms of whether they are suitability solutions or capability solutions for a given project/team.

It was probably surprising to people in the software craftsmanship movement that Zed Shaw was invited to speak, but his talk on "Propaganda, Indoctrination, Fanbois, and Education" was the most thought provoking talk at SCNA 2011. Here's my translation:

Anyone who tells you that they have found the "one true way" to build software is a con-artist trying to sell you something.

If you aren't writing code, you aren't a programmer. Programmers build software, everything else is just marketing spin.

Indoctrination happens when you're convinced to think something is the only way. Education gives you options and lets you make choices. Don't be indoctrinated, be educated.

Agile and all the related buzzwordy ideas can be boiled down to these 3 simple ideas:

  • Make a list of stuff to do.
  • Do that stuff. 
  • Automate the heck out of everything.

(note: these things don't have to be done in any particular order)

While he's abrasive and rubs a lot of people the wrong way, Zed Shaw has done a lot of good for the software craftsmanship movement. He's trying to put the focus back on learning programming instead of "Super XP Double Pairing Kanban Scrum Sauce" and all the rest of the "Agile" marketing spin. His "Learn Code the Hard Way" series is wildly successful and is actually teaching people how to program. Somebody at the conference asked him:

"So what do you think about Unit Testing and Continuous Integration and all that stuff then?"

His response was pretty down to earth:

I've worked for big consulting companies doing every one of those things in the past. I've written tests, done TDD, used pivotal tracker blah-de-bloo or whatever you're using. Those things aren't bad but anyone who is trying to tell you those things are the "one true way" to build software is a con-artist trying to sell you something. If you believe that stuff you've got a mind-virus. You don't want a mind-virus.

I used to change my thinking drastically all the time. I'd go to conferences and experience a lot of hype and get infected with a mind-virus that led me to adopt ideas that I would later on discard. This isn't a healthy thing to do. Nothing I experienced at SCNA 2011 was radical enough to make me change my thinking drastically, but what I did experience will help me to be much more objective about the things I let influence me going forward.

Where do we go from here?

It's important to be objective. It's important to question the value of things we do, especially when we do them because somebody has told us they will solve all our problems.

To me, the most important narrative of SCNA 2011, and the thoughts behind my tweet are these:

  • Don't buy into all the propaganda, don't get indoctrinated. Get educated.
  • Learn to objectively evaluate the tools, processes, and ideas we use in terms of suitability and capability
  • Let go of suitability solutions if they don't give you any value. 
  • Embrace capability solutions because you might be surprised by their value.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Mon, 30 May 2011 13:58:00 -0700 Not Afraid http://blog.davemo.com/not-afraid http://blog.davemo.com/not-afraid

I've been working on a song for a little while, this is a really choppy incomplete version with some absolutely horrible vocal recording (being sick and trying to record vox sucks). Still have to tie it all together, but I'm liking where it's headed so far.

Not_Afraid.mp3 Listen on Posterous

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher -
Fri, 27 May 2011 10:07:00 -0700 Immersed in Agile http://blog.davemo.com/immersed-in-agile http://blog.davemo.com/immersed-in-agile

I started working as an independent contractor for Pillar Technology over 6 months ago (Nov 1, 2010). At the time, I had no idea what was in store for me; looking back now I think I've hit a new point from which to grow in my career so it seems time to engage in a retrospective on the last year.

Some History

Prior to working with Pillar I spent just over 2 years working on a number of projects at VendAsta Technologies. I grew a lot in those 2 years but mostly in a technical capacity. Things like continuous integration, build configuration, and (briefly) unit testing were introduced to me. It was enlightening to get a taste of the technical goodness offered by those things but ultimately I felt like there was no one there who could guide me in the underlying principles that necessitate them. At the same time I was introduced to many of the core concepts of this thing people in the software development community call "Agile". Coming out of VendAsta in 2010 I thought I knew what Agile was. I thought it was Scrum, XP, TDD, continuous integration and a whole host of other technical terms.

Looking back at where I've come in the last 7 months I don't think I can say I know what Agile is even now, because it is an ephemeral thing that seems to be constantly evolving. What I can say is that I know a lot more about the core of what's important in software development: delivering business value and earning the trust of those you work with.

Trust and Value over Working Software

My first 6 months with Pillar were served working on a client project for Gordon Food Services out of Grand Rapids, MI. I worked remotely for those 6 months out of an office in my basement that Tanys and I built the week before I started. A brief note on working remotely: it opened my eyes up to a key thing that's required to be successful in life; self-discipline. I had my doubts about how effective I could be remotely but I decided it was worth the challenge and committed to myself that I would do what it took. Getting up at 7 am to make standup in the morning (hello, 2 hour time zone difference), pushing myself to keep lines of communication open, and pouring my heart and soul into building trust with the client; these are the things I did over those 6 months. And it paid off. I grew in my technical knowledge but also in my ability to cultivate good business relationships.

The people at both the client and Pillar have been great, providing much in the way of the mentoring and leadership around the principles of good software development that I had craved for such a long time. In 6 months working for GFS the team I was part of a team that produced software faster, with less defects, and with more value than any other project I've been on. The experience was energizing and opened my eyes to the power of building trust and constantly delivering value all while adhering to solid software craftsmanship principles.

Beyond TDD

Prior to joining Pillar I thought I had a pretty good grasp on the technical concepts surrounding "Agile". 7 months later my eyes have been opened to how much more than technicality Agile really is. At its heart, Agile is a way of thinking that promotes accountability, integrity, quality, and value oriented thinking. I used to think writing tests was something you did after writing production code to verify the behaviour you had crafted. Now I understand that "The fundamental conundrum of software development: I can code fast when I have a good design but I can't design until I've coded slowly." (Kent Beck).

A good design is achieved by thinking out architecture by writing tests first. I've also learned that tests can act as documentation by example, so it's important to continually curate test code so that it doesn't grow stagnant. Most importantly of all I've seen the power of having a codebase with 95%+ test coverage and how that acts as a safety net to making change. This last point can't be overstated; the freedom experienced through red/green/refactor makes change cheap and development incredibly enjoyable. At the core of my change here from 7 months ago is a paradigm shift in the way I think about developing: I don't feel responsible writing production code until I have a failing test.

The Best Way To Learn

Something I've always felt positive about is my ability to teach. I feel I have the heart of a teacher, which means that I can empathize with people to understand the pain they feel. (I've felt the pain too, which always helps). In the last 7 months I've been devoting myself to studying more effective ways to promote craftsmanship in front-end development. One of those ways is to teach more. This has not been easy; front-end development has historically been treated as a second class citizen. (I could write a whole other blog post about that alone, but that's a topic for another time). Breaking down barriers between front-end and back-end developers requires a certain amount of grace and poise that I didn't have 7 months ago. Being able to effectively communicate solid engineering principles to back-end oriented developers requires empathy, compassion, and the ability to communicate using language they understand.

I've often had to put aside my idealism and promote compromise. I've also had to become humble and admit that sometimes the front-end is not the place where everything should live. (But I still think there's a whole lot of logic on the server that shouldn't be there. Again, another topic for another post). The benefit to engaging developers across architectural boundaries and striving to teach is that I've been able to learn a lot. I've learned how to effectively test drive JavaScript (/hattip @searls), how to build scalable, object-oriented CSS/HTML, how to achieve an appropriate separation of concerns on the front-end, and how to translate n-tier architecture principles from the server-side to my client-side code. Being at a company like Pillar has provided a rich environment in which to grow; it's something I'm very grateful for.

The Path to Agility

Many of my co-workers attended the #pathtoagility conference in Ohio this week. I wasn't able to attend but I think it's fitting to end a post about my own personal "path to agility" with some forward looking thoughts that can help you (and me) to continue on that path. Software development is evolving and changing; set yourself up for success by being willing to evolve and change right along with it. Agility is more than process or technical solutions; it involves integrity, accountability and a fundamental paradigm shift in your way of thinking. Continue to look for ways you can shift your thinking. Be open-minded. Teaching is a powerful exercise in self examination and growth; try to spend time teaching those around you, it's worth the investment.

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Tue, 29 Mar 2011 22:37:00 -0700 Sad Country Rock Jam http://blog.davemo.com/sad-country-rock-jam http://blog.davemo.com/sad-country-rock-jam

SadCountryRockJam.m4a Listen on Posterous

 

Spent some time with the Alesis DM10 Studio kit I rented from Long & McQuade this past weekend. Didn't do a whole lot of cleanup on the track (there's some pop and hiss when recording via my X3 Live in Garageband that I can't sort out). Anyways, this was about 90 minutes of playing around with the drum kit and my other instruments, here's the full list of tools used:
Hoping I can get some more time learning how to eliminate some of the pop/hiss but so far I'm pretty happy with the ability to record demo quality stuff with this setup :)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher -
Sat, 19 Mar 2011 17:17:44 -0700 iPad vector drawing http://blog.davemo.com/ipad-vector-drawing http://blog.davemo.com/ipad-vector-drawing Andy and I spent about 30 minutes collaborating on this drawing in the Ink Pad app on my iPad. He was the "creative director". I asked him what to draw and he said "snowman!". Then nearing completion it was determined the art direction required an icicle sword and pirate hat to complete the vision. Who am I to argue with the creative director! :)

Drawing

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Fri, 11 Mar 2011 19:50:00 -0800 Spacey Acoustic Groove http://blog.davemo.com/spacey-acoustic-groove http://blog.davemo.com/spacey-acoustic-groove

spacey_guitar_groove.m4a Listen on Posterous
Even though I only have a first generation iPad i can still rock it out with garage band. What a cool little app, I put this together in about an hour just playing around. Super fun :)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher -
Fri, 05 Nov 2010 23:00:00 -0700 Front End Web Debugging Techniques : Isolation http://blog.davemo.com/front-end-web-debugging-techniques-isolation http://blog.davemo.com/front-end-web-debugging-techniques-isolation

I must be getting older. My idea of "fun" on a Friday night is to go downstairs and write a blog post with some of the ideas that have been percolating in my brain for the last few months. I am disappoint. Oh well, my impending senility is your benefit! That is of course if you're into front end web development at all.

So, I've been talking with a few friends lately about this idea of "good habits" with regards to front end web development and I started stewing on a bunch of ideas on how I could write about something like that in an effective way. Sorry to say that this blog post will not be about good habits relating to code but rather as they relate to debugging front end code. I think the latter is valuable and you'll still get a decent idea of some good habits to work with going forward. Enough rambling, onward!

Isolation, Your First Stop

You've just fired up your browser and checked out an existing application from your repository of choice. You get the app running and go to take a look at the state of the front end because you have a bug to fix. A nice shiny red bug sitting there in front of you. Eager to dig in you open Firebug / Webkit Inspector and find yourself looking at no less than 50 separate CSS files and 40 javascript files. YIKES!

The bug card you have says some buttons aren't appearing properly in IE7 and the latest Chrome. So you dive in with your front end tweaker and start disabling styles dynamically hoping you can affect some change in the cascade that will fix the bug live in the browser right there in front of you. Bam! Looks good in Firefox/Chrome and then you open IE and things go to hell. Sound familiar?

It's at this point that you should really stop what you're doing and try to isolate the problem. I've spent more than enough time hacking in this way to know that it's a lost cause and infinitely frustrating to boot. The best way to fix a rendering issue in a case like this is to isolate your problem so you can control the number of variables you are testing.

Here's how I like to break down my isolation debugging process:

1. Create a Test Case

Open a new html file in Textmate or your favorite code editor and create a brand new HTML page. I like to keep a skeleton page so I can do this quickly. This page should have no stylesheets or scripts loaded.

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>Skeletons Are Scary</title>
</head>
<body>
    
</body>
</html>

2. Replicate the Environment

Bring the HTML in question into your sample page as it appears in your production code. Also bring only the CSS that applies to those elements and put them in a style block in the head of your sample page.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>Form Float Isolation!</title>
    <style type="text/css">
        div { /** Basic Scaffolding **/
            border: 1px solid #ccc;
        }
        
        .control-group {
            height: 50px;
        }
        
        .content {
            height: 200px;
        }
        .right { /** BAD :P **/
            float: right;
        }
    </style>
</head>
<body>
    
    <h1>A test to see how form controls float cross browser</h1>
    
    <div class="control-group">
        <div class="right">
            <select id="createList_listType" name="listType">
                <option value="QUOTE_LIST">Quote List</option>
                <option value="INVOICE_COMPARISON">Invoice Comparison</option>
                <option value="WEEKLY_PRICE">Weekly Price</option>
                <option value="ORDER_GUIDE">Order Guide</option>
            </select>
            <button id="createListButton">Create List</button>
            <button id="manualUpdater">Update</button>
        </div>
    </div>
    
    <div class="content"></div>
    
</body>
</html>

3. Verify

You probably have some assumptions about what you think the problem is, this is the step where you verify that. Open your sample page in the browsers you want to test in and see what kind of results you get. The goal here is to eliminate the thousands of lines of other CSS and JavaScript that might be altering the way your markup is displayed.

4. Refactor

Once you've verified things are behaving the way you want you should probably refactor that HTML and CSS to contain less presentation in your markup. Often markup from legacy applications has been touched by many different people with varying interpretations about how to write HTML; that's ok but given you spent the time to isolate this problem you may as well do some cleanup.

5. Verify ... Again

You've made changes, run your test page through the browsers you are testing for again. Repeat step 4 and 5 until you've got a good baseline to work with. It's also good to remember the answer to http://dowebsitesneedtolookexactlythesameineverybrowser.com at this point. :)

6. Integrate

You were able to eliminate a bunch of redundant CSS selectors and redundant markup. Great! Now it's time to inject your newly refactored code back into the mess of 50 CSS and 40 javascript files. This can be challenging based on how many dependencies you touched in your refactoring but at least you have a baseline of what to expect now.

Integration is going to result in some more rendering anomalies but now you have a core set of solid CSS/HTML that you know will work. What you do now is go through Firebug/Webkit Inspector and start disabling styles in the cascade that also affect your elements until you get the result you are looking for.

Conclusions

You will probably still have to fiddle but at least you will have eliminated a significant amount of frustration by isolating the problem and proving out your assumptions about how the markup and css will behave in other browsers. Of course you could avoid a significant amount of this cross browser troubleshooting by using something like Compass and SASS, but that's a topic for another blog post ;)

I hope this was helpful to you and I wish you luck on improving your front end debugging process and reducing the amount of frustration experienced.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Sun, 12 Sep 2010 22:17:00 -0700 My first foray into Minecraft multiplayer, joined a random server and this is what I see, epic :) http://blog.davemo.com/27990294 http://blog.davemo.com/27990294

Screen_shot_2010-09-12_at_11

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Wed, 01 Sep 2010 20:40:00 -0700 Focus is the Glue http://blog.davemo.com/focus-is-the-glue http://blog.davemo.com/focus-is-the-glue

Basketball

(image courtesy StuSeeger, Flickr).

I've been playing a lot of basketball at work these days on lunch and coffee breaks. As a programmer who sits most of the day, it's nice to have a place to go to spend some energy. I've been keeping track of my progress in shooting free throws and my percentage has been steadily improving. I think I shot 80% last week (using a general warmup and then 10 in a row as my benchmark). I had what I like to call a "micro-epiphany" the other day when I went out to shoot baskets.  I started thinking about what it takes to be successful at basketball and realized that there are two primary areas of skill required: mechanics and focus.

To succeed in putting the ball through the hoop you have to be solid in your mechanics. Your guide hand needs to support, but not influence, the weight of the ball on your shooting hand. The ball should be positioned in your shooting hand in front of your head and not above it. When you release the ball you need to have a proper follow-through that directs and puts the proper amount of spin on it. The amount of weight you put into your shot is also influenced by the usage of your legs and the proportion of force you exert with your arms. When you break it all down from a mechanics point of view there are lots of things going on in a shot. Add in other variables like juking defenders, shooting from the triple-threat position, jump-shots and you can see how the number of points of failure in the mechanics of a shot can grow exponentially. In order to combine all the elements of a successful shot you require an understanding of all these mechanics; more importantly you need to have focus.

Focus is like the glue that holds all the pieces together. When I was learning to shoot in high school we would do many drills that broke down each of the components of a shot into the basic parts. It's necessary to break things down when you are working with complex processes because people, by nature, develop bad habits. I haven't played ball competitively since the end of grade 12 and it was surprising to me how bad my shot had become when I first picked it up again almost 6 weeks ago. Luckily I had a solid foundation of skills and the knowledge of how to do "corrective surgery" on my shot techniques that I was able to improve significantly and bring my shooting percentage up. (It remains to be seen if I can still perform under the pressures of defense and actually shoot well when playing against other players). However, even if I was perfect in all of the mechanics I would fail to make my shots count if I didn't have a focus on what I was doing. It's hard to describe it accurately so I'll attempt to convey a brain dump in words of what goes on inside my head during a shot when I'm attempting to focus.

"Ok, setting up for a shot, feet are planted, I know what I'm going to do."
"The ball is going to go in the hoop, I'm aiming for the back of the rim because historically that's where I hit a higher percentage of my shots"
"Good leg extension, I need to followthrough with my hand and point to the rim. Don't forget to reach for the cookies".
"The ball is going to go in, I aimed for the back of the rim."
"Release felt good, that shot is going in."

I don't know if that accurately conveys what happens in nearly a microsecond, but it's roughly what goes on in my head during a successful shot. The things I've bolded are what I believe to be the most important parts of making that shot. Here's the breakdown as I can categorize it:
  1. Have a plan.
  2. Reiterate the plan.
  3. Reinforce good habits I know.
  4. Express confidence in the plan. Reiterate again.
  5. Celebrate victory upon execution.
Having a plan is important. It helps focus my energy into a consistent framework that I know has worked in the past. Reiterating things helps me to re-focus if distractions start to creep into my mind. Talking to myself about the good habits I've developed helps me to avoid falling into the bad ones. Expressing confidence solidifies the action I'm about to take and removes any doubt in my mind that what I'm about to do will be successful. And claiming victory, which may seem unimportant, is crucial to seeing that ball go through the hoop. The last few moments before the ball leaves my hand are a critical point in the timeline of the shot. Everything up to that point has been mechanics but once the ball leaves my hand I can't let down in my mental focus. It's almost as if I will the ball to go through the hoop and my mental concentration is just the final exclamation point, the stamp of approval, on the entire process.

"Swish. The ball went into the net. I knew it would. That was a great shot!"

Once execution is complete and I can see the results of all my hard work I find it helps to reflect on what went well and give myself a pat on the back. Positive reinforcement of this kind works much better than beating myself up over the few mistakes I may have made in the process of taking the shot.

I'm sure there are many parallels that can be drawn between what I've talked about here and other facets of life, but I'll leave that up to you the reader to do. 

All I know is that it feels good to play ball again. It feels good to focus :)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Thu, 01 Jul 2010 00:59:00 -0700 Yes man. http://blog.davemo.com/yes-man-25 http://blog.davemo.com/yes-man-25

I haven't written anything here in a while. Life's full of seasons just like the planet; I guess it's been winter on the blog while it's been summer outside (if you can call the torrential downpour "summer"). I have a friend who went through an interesting experience recently. I don't want to get into the details because they aren't important, what's important is the lessons learned through my friend. I'll try and relate what I've learned through some stories.

When I was in elementary school there was a certain hierarchy in place: the bullies intimidated the people who were weaker minded or easily influenced into supporting them in their cause. They would surround themselves with these people, the "yes men", and form what appeared to be an invincible force of fear and intimidation. Bullies do this for many reasons but the most fundamental is that they want to get their way. I was involved with many altercations with the bullies because I refused to align myself with what they wanted. I chose to stand up for what I believed in and didn't feel like having someone else dictate how I could or couldn't act. I'll be honest, standing up for what I believed in caused me a lot of pain and grief. I got into fights, was picked on and made fun of, and generally seen as one of the unpopular kids as a result. But I didn't compromise what I believed in; I didn't stand for someone influencing what I believed or what I could do. I wasn't a yes man then.

During the transition period between elementary and high school (grade 8 - grade 9) I noticed some interesting things about the relationship between the bullies and the yes men; they broke down. Part of it may be because of the size difference in our elementary schools (a few hundred) and the high school (almost 2000) but I think it was also due to the summer when most kids are on vacation or go out of town. The bullies didn't have their yes men around to back them, nor did they have a steady stream of kids to pick on so I think they had to find other things to do to scratch the "bully" itch, whatever that is. High school was also a change for me, it afforded me the opportunity to not be on the bottom of the pecking order, so to speak. The bullies weren't in my classes and the circle of yes men they had built up in elementary was disbursed throughout various course selections, timetables and schedules. Without the bullies and their yes men around I developed self confidence, I wasn't afraid to voice opinions in class and contribute to the discussion around me. I developed my own sense of direction in life, the things I felt were important, what I valued and what I wanted to do with my future. I wasn't a yes man then either.

Fast forward 20 years or so later and I've got a house, a beautiful wife, two amazing children, a dog who wears a tie ( ask me later :), a job and responsibilities. Those all sound like pretty great things; you might even say after reading this far that the relative level of success I've achieved has been because I wasn't a yes man. The thing is, I've been a part time yes man for a while. Sometimes I stand up for what I think is right and sometimes I just keep my mouth shut. The bullies aren't around anymore like they were in school, they don't beat me up or call me names or get their friends to throw rocks at me, however there are new bullies and they aren't always people. Ideas can be bullies, things you read on the internet, things you listen to on the radio, books you read... they all call you to make some sort of choice when they engage you. Money can be a bully, we always want more of it yet often getting more truly never satisfies us; being a yes man to the money bully ends up in nothing but grouchiness in my experience. We can also be bullies. We try and surround ourselves with yes men who will make us feel validated about our decisions and justify the things we do. 

The thing I've realized is that whether you're the bully or the yes man either way it sucks. The people in life who are the most successful are those who don't compromise what they believe to conform to a certain standard. They stand up for what's true and good and noble and what drives them to be the kind of people they are. They stay true to their convictions.

I'm done being a yes man.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Fri, 11 Jun 2010 18:28:46 -0700 Nerds http://blog.davemo.com/nerds-99 http://blog.davemo.com/nerds-99

A family of nerds :)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Tue, 08 Jun 2010 16:46:10 -0700 Post op. http://blog.davemo.com/post-op-32 http://blog.davemo.com/post-op-32

Image

via tweetie

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Sun, 30 May 2010 19:25:29 -0700 First Mate Milkbeard enjoying the spoils of a successful plundering of the local DQ. #kids http://blog.davemo.com/first-mate-milkbeard-enjoying-the-spoils-of-a http://blog.davemo.com/first-mate-milkbeard-enjoying-the-spoils-of-a

Image

via tweetie

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Tue, 11 May 2010 08:56:59 -0700 Last day in the UK. Went to Guitar Guitar in New Castle and got a PRS Custom SE! w00t \m/ http://blog.davemo.com/last-day-in-the-uk-went-to-guitar-guitar-in-n-0 http://blog.davemo.com/last-day-in-the-uk-went-to-guitar-guitar-in-n-0

Image

via tweetie

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Tue, 11 May 2010 08:56:57 -0700 Last day in the UK. Went to Guitar Guitar in New Castle and got a PRS Custom SE! w00t \m/ http://blog.davemo.com/last-day-in-the-uk-went-to-guitar-guitar-in-n http://blog.davemo.com/last-day-in-the-uk-went-to-guitar-guitar-in-n

Image

via tweetie

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Thu, 15 Apr 2010 23:51:27 -0700 Extreme close up? (he's 3 feet away!) #will.i.am #chirp #yesthispartyisnuts http://blog.davemo.com/extreme-close-up-hes-3-feet-away-william-chir http://blog.davemo.com/extreme-close-up-hes-3-feet-away-william-chir

Image

via tweetie

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Thu, 15 Apr 2010 23:45:31 -0700 A better shot of Will.I.Am at the #chirp after party. Did I mention this party is nuts? :) http://blog.davemo.com/a-better-shot-of-william-at-the-chirp-after-p http://blog.davemo.com/a-better-shot-of-william-at-the-chirp-after-p

Image

via tweetie

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Thu, 15 Apr 2010 23:41:57 -0700 Will.I.Am at #chirp. This party is nuts. http://blog.davemo.com/william-at-chirp-this-party-is-nuts http://blog.davemo.com/william-at-chirp-this-party-is-nuts

Image

via tweetie

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher
Wed, 14 Apr 2010 08:41:37 -0700 The live screen in the @chirp lobby. Registration was a snap! #chirp http://blog.davemo.com/the-live-screen-in-the-chirp-lobby-registrati http://blog.davemo.com/the-live-screen-in-the-chirp-lobby-registrati

Image

via tweetie

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/74298/davatar.jpg http://posterous.com/users/1bbS36GPVaV David Mosher dmosher David Mosher