Extreme Ownership in Agile Teams

Reference: https://www.mindtheproduct.com/2018/10/escape-from-the-feature-roadmap-to-outcome-driven-development/

I think this article hit some really relevant notes for me today. I operate in a service oriented software business (for the most part) where we are given work by our clients to complete and hand off back to them. I’m still pretty green here, but as far as I know it is the norm that they give us a feature list to complete in the best way possible rather than a problem to solve. As an organization striving to do scrum well, and one I am encouraging to be extreme owners, we are having a disconnect here somewhere. We need to change the conversation, and change the value we are delivering. We DO deliver valuable features, but how much more value could we deliver if we were given some latitude to solve the problems rather than just follow marching orders.

I think there are two major hurdles to extreme ownership, and this may be a bit patronizing to say but: 1) The company offering the services needs to have a genuine culture of empowering their teams to fully own the relationship and 2) The client needs to hand over some degree of control and offer more transparency so that the service provider can know what problems to solve and have the room to solve them. For smaller nimble companies this is a lot easier as there is less risk and you are accountable to a smaller body. For large companies, this introduces a degree of risk… leaning more heavily on an outside party and giving them more “permissions” which could disrupt your usual business. These larger businesses are typically risk averse and want stability over innovation.

Why is that though? Should that be the norm? CEO’s are accountable to boards who are accountable to share holders who want a maximum return on their investment. Short term mindedness will mean a mild setback such as a bad deployment could result in a small stock drop. This happening repeatedly could result in lost confidence and a more long term irreversible change. If this were comparing apples to apples for delivery… you’d take the more stable approach and hold onto your slow but steady gains. But the deliverables in these two scenarios are not the same. One is an apple, and the other could be a cider mill, an apple pie stand, or a butter knife — something totally non-analogous but the “best” thing to do. The first iteration of that butter knife could be a flop, but the fifth version could be a game changer setting that company apart from its competitors. This can only be achieved if the engineers you pay dearly for are given the empowerment to solve the problems, to own the space, and to even pursue new experimental endeavors in that space for that client. THAT is where a service providing company can bring some REAL value. At that point, the business model might look a little different such as a joint venture or a licensing structure rather than a simple SOW contract. It might get more complicated, but the alternative means you won’t be innovating, you will eventually be cutout of the the picture by someone who is willing to innovate, or you’ll be beaten by attrition as the ambitious problem solvers leave your mundane company to go work directly for your clients who no longer need you.

Trendspotting: Zoomy Parallax

Here is a new twist on a widely used technique: zooming parallax. The basic parallax scrolling effect can be seen widely peppering the internet. The effect is now overused and abused unnecessarily. When used in moderation it can be a more subtle touch that adds value rather than take away from the user’s experience. At the heart of the effect is a good motive: to give the user a perception of depth… an experience that is more than flat images, flat text, or flat videos. As you scroll your mind interprets the different motion rates of the layers as depth… with one layer closer than the other. This was great the first time we saw it… and second… and third… but it gets old when its applied at every turn. I’m not the only one who is looking for other new avenues to evoke similar sensations. I’ve been noticing a new trend of using “zoom” instead of a different scroll rate to add dimension to a website. Here is a simple example showcasing the idea.

In this example, the zoom happens slowly and steadily whether the user is scrolling or not. I found it humorous and worthy of a nod.

So, when in Rome, do as the Romans do… just do it with a subtle twist and make it your own.

Inspiration: join.me

A new collection

Whether in evernote, browser bookmarks across 3 browsers and 4 computers, notes scratched on post it notes, or logged into my phones note app, I have a wide collection of inspiration sources that I rarely reference. ?Evernote is a great capturing tool, but I don’t use it to peruse some of my old thoughts visually or in a decently organized fashion– most likely because I haven’t taken the time to read the “manual” and just use it as a cloud note taking app.

Nevertheless, I will start collecting some inspiration tidbits from here and there and posting them here to my personal blog for myself and others to reference if you so desire. ?If nothing else it will be a catalog of my influences.

The Review:

First up is the join.me website. ?I haven’t yet used the service so I won’t be talking to that. ?Instead I am just digging the subtleties of the website’s landing page namely. ?It is using some “trendy” things that won’t last the test of time, but it is for the most part doing so in a subdued fashion that I appreciate. ?It just gives a nod to the trends, and doesn’t lean heavily on them to make up for a lack of good content.

Case in point: the parallax effect. ?They are using one and ONLY ONE instance of the parallax effect that is so prevalent today in many “modern” sites. ?It was pointed out to me recently that the parallax effect is actually quite old hat when it comes to webdesign– apparently there was an older implementation not using modern css that though much more complicated would have a similar effect (I could not find an old example so if you happen to know one let me know and I will post the link for others). ?I like that it is only used as sparingly as possible and it is simple.

The second trend I spotted of note is the right hand side bullet scroll navigation. ?I first saw this on the new apple website where they featured their new mac pro. ?I don’t think this hurts the site’s ui, other than adding visual clutter. ?It is not really useful as a click to get to x navigation as the user isn’t sure what bullet goes where until you hover over it, which is not very useful unless you already are very familiar with the site.

Lastly, they have a three tiered subscription model, and have displayed them as visual “step” with each step being a bit larger than the previous. ?Nothing extraordinary here, but just a nice touch to communicate visually that I don’t see very often.

Also of note is the vertical scroll button that scrolls you through the different section of the site. ?Fun to use, but most likely the designer is having way more fun with it than the end user. So a lesson I learn over and over can summarize the successes and stumbles of this site: Less > More

Startup Weekend Wichita #SWICT

Tonight is the first night for Startup Weekend Wichita and I am stoked. If you happen to come across this post within the next couple of days it is likely that you are doing so because I gave you my business card and you are therefore looking for a bit more info about me.

I am currently a full-time graphic designer with Spirit AeroSystems, where I have been for the past 2 years. My work there is primarily centered around web design and finding new solutions to old problems. Some projects I have done or am currently working on are: a new internal and global video delivery site using BrightCove API; a new automated process to take in online requests for commonly requested printed files (with client requested customizations)– using .net, C#, pdflib, and the usual suspects (html, css, js); a global labor map displaying our HR information in a nice UI for communicating our company’s global footprint as well as strengths/needs in each location, and last but not least — a new responsive web template for our CMS based intranet sites.

Unfortunately, all of my work (that I am willing to attach my name to) is on their private (proprietary) intranet and I therefore can not share it with the world.

Prior to Spirit, I was a web design intern for Media Refined where I did some graphic and web work on their cakephp based dietsinreview website (mostly small tweaks and whatnot).

And my first full-time design gig was with Bradley Paper where I did a variety of print design for all kinds of projects. You name it, I likely did it at least once (I even designed a custom gold medallion for a client– random right?).

If you would like to see some of my OLD work, that I am skittish to even share now, you can view my portfolio at www.vdubdesign.com. This is the portfolio site I built to showcase my work when I was looking for a full-time job 3 years ago. It is cringe worthy code for me now, but you should cringe at your old work otherwise you aren’t progressing enough.

In addition to my job at Spirit I am pursuing my second degree, Computer Science at WSU (I have a prior art degree from Emporia State). I also have a wife, a daughter, and a son that give me great joy.

If you want to know more, please just talk to me. I will be around all weekend!

SED – a journey through a stream without getting wet

So I am parsing some rather lengthy word documents into usable web formatting and rather than continuing to do them by hand, I have opted to use the command line to leverage a bit more efficient power.? However, there is a learning curve price to pay up front, but I am confident it will more than pay itself back later on.

Currently I am trying to get a better grasp of the sed command, sed stands for Stream EDitor.? It is possible that another kind of script using regex might be a better solution to this problem, but I picked up the “sed hammer” now every problem I see is going to look like a “sed nail”.? This is by choice to force me to become better versed with this tool before moving on to another.

My current problem requires reading multiple lines at once and then adding appropriate tags based on what is read in if a matching pattern is found.? Sed is not the best candidate for this as it typically will just read one line at a time.? However, with some specific commands it can get the job done, and do a fine job of it as well.

I am currently reading through a great sed “manual” at http://www.grymoire.com/Unix/Sed.html that covers all the details I need and I will highlight some of the more pertinent items as I come across them.

Since I will be performing several sed commands on the same document I should use the -e command described from the excerpt below:

Multiple commands with -e command

One method of combining multiple commands is to use a -e before each command:

sed -e 's/a/A/' -e 's/b/B/' <old >new

A “-e” isn’t needed in the earlier examples because sed knows that there must always be one command. If you give sed one argument, it must be a command, and sed will edit the data read from standard input.

The long argument version is

sed --expression='s/a/A/' --expression='s/b/B/' <old >new

Since I want to mimic grep’s behavior in some instances I will need to use the -n flag as detailed below:

sed -n: no printing

The “-n” option will not print anything unless an explicit request to print is found. I mentioned the “/p” flag to the substitute command as one way to turn printing back on. Let me clarify this. The command

sed  's/PATTERN/&/p' file

acts like the cat program if PATTERN is not in the file: e.g. nothing is changed. If PATTERN is in the file, then each line that has this is printed twice. Add the “-n” option and the example acts like grep:

sed -n 's/PATTERN/&/p' file

Nothing is printed, except those lines with PATTERN included.

The long argument of the -n command is either

sed --quiet 's/PATTERN/&/p' file


sed --silent 's/PATTERN/&/p' file

Also note:

Using ‘sed -n /pattern/p’ to duplicate the function of grep

If you want to duplicate the functionality of grep, combine the -n (noprint) option with the /p print flag:

sed -n '/PATTERN/p' file

Sed can act like grep by combining the print operator to function on all lines that match a regular expression:

sed -n '/match/ p'

which is the same as:

grep match

Reversing the restriction with !

Sometimes you need to perform an action on every line except those that match a regular expression, or those outside of a range of addresses. The “!” character, which often means not in UNIX utilities, inverts the address restriction. You remember that

sed -n '/match/ p'

acts like the grep command. The “-v” option to grep prints all lines that don’t contain the pattern. Sed can do this with

sed -n '/match/ !p' </tmp/b

Because I will be using multiple sed commands there are some available options to make this happen:

sed -f scriptname

If you have a large number of sed commands, you can put them into a file and use

sed -f sedscript <old >new

where sedscript could look like this:

# sed comment - This script changes lower case vowels to upper case

When there are several commands in one file, each command must be on a separate line.

The long argument version is

sed --file=sedscript <old >new

Also see here

sed in shell scripts

If you have many commands and they won’t fit neatly on one line, you can break up the line using a backslash:

sed -e 's/a/A/g' 
    -e 's/e/E/g' 
    -e 's/i/I/g' 
    -e 's/o/O/g' 
    -e 's/u/U/g'  <old >new

Because I may want to combine multiple files later to output a single file I am including:

Reading in a file with the ‘r’ command

There is also a command for reading files. The command

sed '$r end' <in>out

will append the file “end” at the end of the file (address “$).” The following will insert a file after the line with the word “INCLUDE:”

sed '/INCLUDE/ r file' <in >out

You can use the curly braces to delete the line having the “INCLUDE” command on it:

sed '/INCLUDE/ {
	r file

An important detail about the delete (‘d’) command:

The other subtlety is the “d” command deletes the current data in the pattern space. Once all of the data is deleted, it does make sense that no other action will be attempted. Therefore a “d” command executed in a curly brace also aborts all further actions. As an example, the substitute command below is never executed:

Because I want to insert tags before and after a matched pattern it might be convenient to use:

Append a line with ‘a’

The “a” command appends a line after the range or pattern. This example will add a line after every line with “WORD:”

sed '
/WORD/ a
Add this line after every line with WORD

You could eliminate two lines in the shell script if you wish:

sed '/WORD/ a
Add this line after every line with WORD'

I prefer the first form because it’s easier to add a new command by adding a new line and because the intent is clearer. There must not be a space after the “”.

Insert a line with ‘i’

You can insert a new line before the pattern with the “i” command:

sed '
/WORD/ i
Add this line before every line with WORD

Adding more than one line

All three commands will allow you to add more than one line. Just end each line with a “:”


sed '
/WORD/ a
Add this line
This line
And this line




Debugging Tips:

Displaying control characters with a l

The “l” command prints the current pattern space. It is therefore useful in debugging sed scripts. It also converts unprintable characters into printing characters by outputting the value in octal preceded by a “” character. I found it useful to print out the current pattern space, while probing the subtleties of sed.

Working in OSX terminal behind a proxy

I am still a noob when it comes to the terminal so I am still trying to get a lay of the land.? Fortunately for me I have some friends from Upfront Wichita who are much more advanced and have all kinds of tips and tricks to inspire and challenge me.

One of the biggest challenges I run into is that I have to work through a proxy at my work computer.? I am on a mac using the terminal and often can’t use the same exact commands my compatriots can due to said proxy.? I am going to document the various cases that I run into periodically for posterity and to possibly help someone else who finds themself in the same boat.

Case 1:? Trying to install tmux following the instructions found here, but can’t run a simple curl command.? Here is my failed attempt output:

mac:build user$ curl -OL http://downloads.sourcforge.net/tmux/tmux-1.5.tar.gz
% Total??? % Received % Xferd? Average Speed?? Time??? Time???? Time? Current
Dload? Upload?? Total?? Spent??? Left? Speed
0???? 0??? 0???? 0??? 0???? 0????? 0????? 0 --:--:--? 0:00:17 --:--:--???? 0^C

I need to go THROUGH the proxy to download this file, but currently curl doesn’t know to do that.? I am sure there are several ways to do this, but this is the one I found and it works:

mac:build user$ curl -x -OL http://downloads.sourcforge.net/tmux/tmux-1.5.tar.gz
% Total??? % Received % Xferd? Average Speed?? Time??? Time???? Time? Current
Dload? Upload?? Total?? Spent??? Left? Speed
100? 7936? 100? 7936??? 0???? 0? 12467????? 0 --:--:-- --:--:-- --:--:-- 12497

You can read more about the -x option by typing ‘man curl’ in the terminal.? Man is just short for manual for all my noob comrades.

Bonus tip: Even better than the option listed above is setting up a proxy variable to be used every time curl is run.? To do so, go to your home directory by typing: cd ~/
Next create a new file with your text editor of choice (I will use vim) by typing: vim .curlrc

Note: the .curlrc is a hidden file that holds a set of run commands to be run when the program starts up every time.? Its like priming the engine of a lawn mower so it is ready to go when you yank the cord.? In this case we are making it “ready to go” by defining the proxy so we don’t have to every time the command is run.

Next in you text editor type this and save: proxy = <–Except of course you need to replace the 9’s with your actual proxy address.? Don’t forget to set the appropriate port denoted by my ‘:9999’ at the tail of the address.

I believe a similar setup can work for other commands where you run into similar proxy issues.? I will each case as I come upon them and if an instance occurs that differs I will be sure to document my solution.


So I was unable to follow the later instructions listed above as I tried to unpack the tar.bz files I received errors and couldn’t resolve.?? I found another set of instructions that required homebrew first…which has a whole set of other issues in itself, but I have encountered this brew command enough times I thought I would give it a shot.

So far, its a no go with my proxy.? Here is my input command and the output that follows:

mac:local user$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
==> This script will install:
Press ENTER to continue or any other key to abort
==> Downloading and Installing Homebrew...
error: Could not resolve host: github.com; nodename nor servname provided, or not known while accessing https://github.com/mxcl/homebrew/info/refs?service=git-upload-pack
fatal: HTTP request failed
Failed during: git fetch origin master:refs/remotes/origin/master -n
mac:local user$

So… git needs to be configured for the proxy as well.? Type the following line to setup the proxy:

$ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080

…and for https…

$ git config --global https.proxy https://proxyuser:proxypwd@proxy.server.com:8080

Of course you will need to replace the proxy address with your own.? In my case it is an ip address so I use the schema and I do not need to include my username or proxy– perhaps because this is already setup in my mac network settings?

Once that is set, then I just type:

brew install tmux

And BOOM!? Done!


So I have run into yet another issue with my proxy and another subtle variation in how to deal with it:
I went to install tmuxinator using the following command:

mac:Safety-Concerns user$ gem install tmuxinator

But this resulting in a timeout.? So after some reading, I found that I have to set another http_proxy setting up as follows:
I tried: mac:~ user$ set HTTP_PROXY= –but this didn’t work.
Then I found: mac:~ user$ export http_proxy= — and that was the ticket!

After that I did one more command and installed tmuxinator succesfully:

mac:~ user$ sudo gem install tmuxinator
Thank you for installing tmuxinator

Good luck!

Arduino 101 Challenge

I attended an event by MakeICT this past Saturday where they went through the basics of using Arduino Uno R3 micro-controller–which is basically a tiny computer device that you can program to do certain things depending on the devices you might attach to it.? It is especially interesting because it is a really user friendly way of bringing the digital world of coding into the physical world where the output of your code is made visible in one fashion or another.

At the conclusion of the workshop they presented a challenge and I thought it might be of interest to someone, or even for just my own reflection later on, to see my thought process of how I tackled the task at hand.? The challenge is this:

Develop a mock solution using the arduino to simulate a 4-way intersection light traffic control situation.? As an added bonus challenge, incorporate the use of a pedestrian crosswalk request button.

At first glance, this really seems pretty easy, just a bit of busy work to organize the logic, but a fun little challenge to tackle.? I also want to try to see if there is a way I can push it a bit further– perhaps incorporate a new idea that isn’t yet the norm–like a traffic light sensor that can detect if an emergency vehicle is approaching with its lights on and direct traffic accordingly, or perhaps achieving the objective in the fewest lines possible.? Something like that.? First, I will work to achieve the primary objective and then come back and revisit my own added twists if time permits.

So, my first step is to dissect the problem at hand and break it up into bite size pieces, get it really granular and put everything on the table so I can see how the pieces might fit together best.? Then I will have a checklist to help guide my coding strategy.

  • “Camera Sensors” (I will substitute a camera sensor with a light sensor while working with the arduino) will detect traffic from all four directions.? Eight camera sensors in all–two pointing in each direction–one for traffic continuing straight or turning right and one for traffic turning left.
  • Two buttons at each corner will detect? if a pedestrian desires to cross a particular street in a particular direction.
  • The camera detecting traffic going straight or left need to check if there has been a car waiting for a set amount of time and thus requires the light to change to continue on.? The alternate scenario would be if there was a car turning right who had to wait momentarily, but then was able to continue on without the need for the light to change.
  • Another consideration would be the preferred default state of the light.? This would only take effect if there was no detected traffic for a given period of time.? If no traffic is present, the light will default to green for the most commonly traveled direction, thereby decreasing the amount of stopping for the average commuter.
  • Switch to a default program if one of the cameras is not working.
  • Find some way to test if all the sensors are working, if it is determined that one is not working, then an warning signal needs to be set off and the “backup” program needs to take effect.
  • Also need to work out the actual setup and timing of the light colors switching…green, then yellow for x seconds, then red, wait y seconds, then change the perpendicular street’s lights to green…

On my next post I will draw a diagram of the sensors and lights layout and write out the logic for the steps/considerations listed above.

Some other things that might be considered for critical cross sections, but I won’t consider for this test: Additional cameras


In yet another workplace conversation, the subject of automation was brought up.? Specifically the automation of “production art” that is repeatedly requested.

See, I work for a 12,000+ company, which though not gigantic is quite large.? We have our own in house design team that handles everything from fully produced high quality training videos down to signs that will be posted on the bathroom directing people where to aim (okay that last one was made up, but we do work all the time that is just as mundane).? Several of the jobs we have on a daily basis are extremely repetitive, such as headline boards of a set font-size, color scheme, and height.? The only thing that changes is the width.? Another item is best described as portrait cards, which are essentially employee trading cards that can be Velcroed to a carpeted wall just as fast as the employees they represent enter and exit their new positions.? The latter scenario is what sparked the conversation.

Ever since I hired on, I saw the possibility of automating such tasks based on a user filled out form: [Who do you want a picture of],[What size do you need],[How many do you need],[When do you need them by]…I however haven’t had the time or green light to tackle it until now.? As I approach this I know we first need to standardize the way our portraits are captured so that I can in turn safely crop and scale down into the various requested sizes with some degree of consistency.? ENTER UNIONIZED PHOTOGRAPHER

I say unionized, not because this individual is a union member, but because he embodies the flaws I see in modern day unions and why they are dying.? This coworker, we will cal “Pat”, was adamant that we couldn’t introduce automation of current work because that would in turn be displacing work that is currently being done by another one of our coworkers.? I countered that yes, that is exactly right, but that our coworker would then be freed up from this mindless drudgery to do more sophisticated and higher value work at no additional cost to the company, thereby increasing the perceived and real value of our Creative Group to the corporation as a whole.? I was and still am baffled that he would stand in the way of such a legitimate innovation.? Thankfully my manager has the foresight to see what is coming and what is demanded of us, that he supported the effort and we are moving forward.? In a stream, stagnation only breeds fungus, algae, and decay, but movement, though it will change the historical path of the stream, will provide fresher, cleaner waters for use to all downstream.

Creative Genes or Creative Jeans?

I was riding along in the car today with a friend of mine who is? an aerospace engineer– probably the coolest kind of engineer.? What is better than making things fly, or more importantly not fall?? We started a conversation about creativity and its role in our jobs.

Well I work in the creative department for the same aerospace company and I get to work with all types in that position: engineers, managers, radio shop techs, office admins, etc…? I recently read an article for new designers trying to break into the work place and it gave several good pointers that I have read a dozen times before, but then ended on a note I had never encountered before.? I interpreted it as, if all else fails at getting a “designer” gig, find another field/job even if it isn’t a designer position and use your creative skills for that instead.? I know countless art school friends who have done this very thing, though I don’t think anyone suggested it to them, especially in an art class.? Then again, most of us would have turned our nose up at the idea.

The funny thing is, while in art school I came to the realization that I was not really an artist at all, but regarded myself as more of a craftsman.? I loved creating beautiful objects, but didn’t have the depth of soul or quirky obsessiveness that seems to attach itself to successful artists.? I essentially had nothing of substance to say, and I still feel I have yet to find my voice, but I am in no hurry to do so for as soon as I find it I will be a slave to it and not free to explore all areas of thought and style as I am free to do so now.? Perhaps it is for this reason that I am quite capable of selling my talents to a big corporation for their agenda and their commercial voice.? For now, I am totally okay with that.? It turns out to be a symbiotic relationship, they use me to strengthen their communications and messages, and I use them to pay my bills as I continue to hone and develop my style and skill set.

So I find myself in a “creative” position while so many of my peers whom I esteemed much more capable artists than myself are in a variety of fields who at face value have nothing in common with our mutual background.? During my conversation with my engineer friend, he expressed to me that he is the more creative one within his group.? Where most of his associates compile data into a sloppy heap of papers and submit them for later deciphering, my friend takes pride in his ability to stylistically layout his information in an eye pleasing manner that can be quickly scanned, appraised, and cataloged for use.? He has seized an opportunity for a creative moment in a field that is typically totally devoid of it and as a result he has made his reports more useful and pleasant to work with.

I admitted to him, I often find myself depleted of all creative juices and I am staring at the rainclouds above my desk waiting for the lightning of inspiration to strike upon me yet again… for days sometimes.?? Thankfully I have enough jobs to juggle that I can keep myself busy with the execution of my previous inspirations while I let the juices percolate indefinitely in the background.? In those moments, I feel myself to be a fraud, though I know I have not deceived anyone, but am acting out a kind of stage fright or mental exhaustion.

I suppose that even full time fine artists encounter such emotions and pressures.? I imagine that is why they often seem transfixed upon the most minute of details in their approach to art, whether it be stuffed Siamese dolls in odd forms, glass bulldogs, or everyday objects blown up into the sizes so large that their true heritage is distorted.? It keeps them focused and they are able to build upon their already existing body of work without depending upon a raw and completely ubiquitous inspiration.? I cannot afford such a luxury, nor can my old classmates as we have to deal with an ever changing and non-self-directed agenda.