Snapped this one at the Tennessee Aquarium. Their jellyfish exhibit is quite extensive, no box jellyfish though, but probably 10 other varieties. Jellyfish, IMHO, are definitely free-spirited.
Weekly Photo Challenge : Urban
DevLink 2012 (Chattanooga, TN)
The DevLink organizers did another fantastic job of pulling off another awesome event. Well done! Wow, the tribe in Tennessee is alive and well, tons of passion around the community. I ran into a lot of community-based guidance from other user group leaders and coders about many topics and ideas to take home and put in motion.
I came up looking for a few things this year, more guidance on Win8 Contracts, and Win8 in general. I got a few different views from different speakers each focusing on different contract aspects. Something else was to see if any new patterns emerged in how folks used or consumed xDD, OSS, and some of the non-OSS. Lots to choose from here, and again the speakers delivered.
Vendors were pitching some of the same stuff, and a few new wares I’d not heard of yet like PubNub (think cloud-based RabbitMQ). I missed their product talk but I’m sure I’ll see more of this in the future – Twilio was two seats down from PubNub, both tables were busy with folks digging in to these messaging technologies in between sessions.
Open Jams – I missed all of them! I have to work on this. One talk that was given was about leadership presented by Alan Stevenson (Nerd Hive Industries). “Pretty pretentious talk” was how Alan described it. It drew out many stories, comments, and reactions from the audience and it was standing room only, and very well received. One of the underlying premises that he later called out during the talk was there’s always a way around conflict. He’s right. He’s admitted he’d done it the hard/wrong way in the past and shared how he manages his employers, peers, and support folks starting the same day he arrives at the gig. Setting expectations is important, managing them more important, valuing everyone is most important. It was comforting to hear pieces of this same message two weeks ago at Agile 2012.
I could go on and on and build a giant post, but I’ll stop with an invitation to you to come (back) to this event next year. You won’t leave empty-handed or empty-headed. Great stuff – thanks #devlink
Making Art
Recently I’ve been reading LinchPin by Seth Godin. Its a great book and I’m really enjoying it from the perspective of what he recommends to try and, or, apply to a situation has just worked for me. I was intrigued with his idea of making art. It starts early in the book with a quote by Steve Jobs, “Real Artists Ship”.
Shipping can happen in a few minutes, or longer depending on the context of what’s being shipped. Its your server at the table, car mechanic, barista – anybody who moves into your circle throughout the day and delivers something to you. Everyone can make art, but you just have to watch for it.
If you’re not making art, then you’re pretty much reading “the manual” – you’re doing what the manual says, no more and hopefully no less. Probably an over-simplification, but it’s close to what I believe Seth was trying to get across to the reader, me.
On a recent trip, I saw art and I saw someone doing “the manual”. The art came at a layover in Atlanta while ordering a coffee. The crew behind the counter made up a song my “Tall Americano” while they were making it, it was so cool. Art is cool, right? Then on the plane a stewardess wasn’t having anything close to a good day that I can see. She did “the manual” with all of the stuff she needed to do before the plane left the ground. That was it. No art, but she gets grace because it’s not an easy job to do, and more demanding than most guest facing jobs I would imagine.
But there it was, both examples in the space of a few hours. Go, make art, it’s a beautiful thing.
Weekly Photo Challenge: Merge
Agile 2012
At the risk of writing a giant post that’s hard to get through, I’m going to outline a few of the choice spots in each of the talks I attended and a few connections I made over the course of last week.
The Gaylord Texan: Quite the resort, you feel like you’re on an island b/c everything is enclosed under a glass roof. It’s really a nice resort with many amenities some more notable ones were the 4K sq. ft. health center that was open from 5:00-23:00 each night. Most places have one, but this one was huge and had a wide variety of gear, treadmills, etc. to fit any workout into. Most of the guest facing staff wore smiles most of the time, but the convention folks for whatever reason didn’t. Think of an ant farm, that’s how we spread out over the convention space each day for 9 hours, we were everywhere and they still manage to feed us, and see to our needs over the week. I’d go back on my own dime some time if the opportunity presented itself, a very comfortable place to be sure.
Agile 2012:: The Conference
I was excited to have the opportunity to attend my second Agile conference, the first in 2010 at home here in Orlando. And this one didn’t disappoint in any way, this community is very much alive and well, and kicking! Every session I attended I was either paired with another person for the workshop portions, or a member of five or more session attendees to solve a problem. I really enjoy this aspect of the community and conference b/c it reinforces the notion of working together immediately. In our case it was five or so minutes after we all sat down at a table and introduced ourselves. All of the folks I interacted with was easy to talk to and had great questions about what was going on where I worked and this reciprocated over the course of the week in all of my sessions. The conversations and connections with other members in this community was/is stellar, everyone is willing to help solve problems in different contexts, you just have to take the time to sit down and let it happen.
Software-Craftsmanship:: Simple Design Applied : Removing Duplication and Naming
Removing Duplication:: We looked through some really “troubling” code the speaker had encountered and had to realize what its intent was. After no less than three minutes of trailing back and forth through the code (in pairs) the two of us realized the code was trying to build a calendar for a client-side drop-down, and this example was server-side code written in Java so it was easy for me to follow along after we figured out what the intent was. The point the speaker made was about code commonality and variability. Most of the common (duplicate) code in the code sample could be refactored into smaller reusable chunks, but first you have to detect the commonality in the code. Next, we identified the variability in the code. Some of the variability was introduced b/c of the types of arguments being passed to the methods; some of it b/c of a group of if/else code echoing the arrow-head anti-pattern making the code harder to change b/c of variability.
Naming:: Stroop Effect, as in Blue Red Black. The test was to understand how quickly you could understand what color the text was referring to, not the color of the text itself. This translated into what should we be naming the different objects and members in those objects as we go along. The rule is to name for less cryptic names, and more meaningful names. I’m probably for too liberal with character naming but I did realize there’s a happy medium in the length and meaning of the names we choose for things. A few of the general guidelines: the name is
1) pronounceable
2) avoids encodings and member prefixes
3) suggest why it exists
4) suggests how it should be used
5) what it does
6) easily searchable in the code base
So the punchline is when you’re crafting code think about the names you’re going to apply. The names of things don’t have to be elegant, just appropriate. And for variability, check-in on the variability if you see more coming out of your design, it just needs to be easy to spot. Make the commonality easy to detect as well – for the consumer and the developer who has to look at your code 12 months from now. The refactored code was much easier to read, understand, and potentially maintain. The side effect was there were more methods, not a huge reduction in the amount of code, but the class’ intent was more understood with simpler design applied.
Collaboration & Communication:: Improving Collaboration and Communication through Improvisation
The notion here was to learn how to listen, as one Greek teacher stated, “we have two ears and one mouth”, so we should be listening twice as much as we are speaking. Here’s a few of the games we all participated in: First Letter, Last Letter; Alliterate Adjective; Three Things in Common; Answer Man; Quick Draw; and we ended the session with “Group Juggle”. The few that stuck out was Answer Man, Three Things in Common, and Group Juggle.
Answer Man went like this. Three people at a time from the session would stand in front of the room and be “Answer Man”, someone you could ask any question. The trick was the three people had to construct the answer in sentence form one-word-at-a-time. The other two people helping to construct the sentence had no idea what word the third was going to say. As the sentence continued to grow more context came out and then helped them finish the sentence. Some questions were never answered though, the words would build a trail of words that couldn’t find an ending. The point was hear was was being said, not what you wanted to hear the next person say. It’s not as easy as it sounds, and proved a great point.
Three Things In Common went like this. It was a basic interview to find three things you and the other person you were paired with had in common. I was paired with someone from the midwest and another from Germany – this took time, longer than I expected. And the three things could be obvious, that had to reflect something going on outside the conference closer to our real lives, and closer to home. The notion here is to be patient until you get the information you both can agree on, not something that’s not quite fact.
Group Juggle went like this. The speaker split the room into two groups of 30 or so people. We went out into the hallway and formed to circles. Each circle was going to toss a rubber ball to a random person across from them until everyone had caught and thrown the ball once. We started with one and ended up with four going at once. The fifth ball we were all juggling had to go in reverse while the other four were getting tossed in the regular order. Many of us dropped at least one, or became confused because we took our eye off the ball being thrown at us b/c we were watching how the rest of the team was doing. The rubber balls represented tasks we juggle on a team, and handing them off to one another. The point was that some folks would wait until the catcher was ready, and some didn’t. Other folks would verbally ask if they were ready for the toss, others were on automatic and just threw, caught, and reset to catch and throw the next thing coming at them. Again, we’re all working with people we met an hour earlier and don’t understand how they “catch and throw” tasks. Its probably a good idea to iron this out when you, or a new member, joins your team.
Just before we wrapped with Group Juggle, we had a discussion about the “Five Dysfunctions of a Team”, here’s the graphic
Layers aren’t isolated, but part of another problem a layer or two above it. Looking at other bloggers take on this graphic my mileage is going to vary but I’ll try to convey the key points the speaker was conveying.
If the top three are failing, there may be “no-conflict”, meaning everyone is agreeing with everything w/o sharing opinions. Conflict can have a few different meanings in this context, “no-conflict” such as eye-rolling and silent disagreement as examples. Or conflict can be rude, nasty, put-down behaviors. By simply agreeing to disagree or working through the conflict you can get to the next layer commitment and start working there. Working up through the next two layers once you get to, and succeed at the “Results” layer, all egos have left the room. I’ll probably read Pencione’s book at some point but it will probably be before I begin working on a larger Agile team with a common goal, most of the what the speaker shared was enough to get the main ideas across about working through the layers and realizing the interpersonal pieces that aren’t working well across the team.
Tuesday’s Keynote:: Scaling up Excellence. Mindsets, Decisions, and Principles: Bob Sutton
Wow, this guy was amazing and the first time I heard him speak. My leader picked him out of the conference as one to listen to, and so I listened and wrote as fast as I could, you can only write so fast to capture all of the nuggets flying off the stage, hopefully they taped this and will share it post-conference sometime. Here’s a few points from his session:
Scaling from few to many:
- At FaceBook,
- not just sharing the mindset, but practicing and living it, not by what we tell them to do; it’s clearly apparent what it is and how they need to perform
- make one little change, one after another
- Six-week boot camp for new members
- Do chores for other groups working inside 12-13 short projects
- the job (where they fit in) is determined at the end of the six weeks
- touch the metal, understand the code base, move fast, and break things
- At Starbucks
- How to water down the Starbucks experience…
- Remove the tangible experiences from the stores, specifically the smell of and grinding coffee in front of the customers, something customers remembered most but that aspect was removed later to make room for the bagged version of the brand
- How to water down the Starbucks experience…
- More vs. Better
- Voltage loss is induced sometimes when an organization scales out, some things get lost in translation as the scaling occurs and the same results aren’t being achieved at scale because the localized plan to achieve the same results at scale are communicated, received, or interpreted correctly.
- Voltage loss may not be bad, 1/2 as much better may be twice better than the way it was
- Catholicism vs. Buddhism (replication vs. localization)
- Replication Trap: Home Depot opened 12 stores in China and introduced their Do-It-Yourself culture to a Do-It-For-Me culture – they’ve closed 7 of the 12 stores so far
- Link Hot Causes to Cool Solutions (might be my favorite part of the talk)
- When folks are really riled up about something, they’re probably thinking very, very hard about the problem
- Offer them a cool solution that gives them somewhere to channel their energy.
- The Watermelon Offensive: a large university wanted all undergrad students to wear bicycle helmets around campus but none were interested while almost all graduate students did. The safety group decided to host the watermelon offensive. The group had bikes laying all over a field with what appeared to be riders attached to the bikes with a smashed watermelon near where the head would be. At that moment they offered the helmet at $7, less than half of what one would have originally cost them, and it worked for most that attended.
Software Craftsmanship::Deliberate Practice – becoming a better programmer: Alex Aitken
The rule is to become an expert you need 10K hours (five years of full time work) of deliberate practice, that’s a long time. The thought that hit me was if I’ve spent 10K hours on anything besides breathing, maybe so, I hope so anyway. Deliberate practice is how to pull this closer to being an expert at any level, or just moving yourself forward.
In this session we did a FizzBuzz Randori where we used test driven development to solve FizzBuzz in two minute pairing sessions. Afterwards we did a mini-retrospective to see what we learned through the course of the randori…
- taking smaller coding steps through the process produced more dialog for each pair
- learn to (re)name code members where and when appropriate
- try something, fail, throw it away
This was just one randori, YMMV where you live and code with your friends/peers, but the observations are for-real. Things you can take away with you to prop your code better than you did the day before.
The speaker also discussed Coding Calisthenics that he uses, he proposed not trying to use all of them, but trying to work them into his code incrementally helped him craft his code a different way some times and think of other ways to solve a problem. Here are the nine rules he uses for exercise:
- Use only one level of indentation per method
- Don’t use the else keyword
- Wrap all primitives and strings
- Use only one dot per line
- Don’t abbreviate
- Keep all entities small
- Don’t use any classes with more than two instance variables
- Use first-class collections
- Don’t use any getters/setters/properties
This was probably my favorite SC session because it was more real-life to what I’ve experienced in some of the dojos I’ve participated in here at home.
I’ll wrap this post here, there’s a lot more to recall and remember but I hope you’ve got the idea that for the heavy price tag the conference carries, it totally changes the way you think about projects, collaboration, succeeding, code-crafting, and connecting with the folks you just met and may never meet again. It’s all good.
Weekly Photo Challenge: Summer
Weekly Photo Challenge: Today
Windows 8 Accelerator Labs
This week the Microsoft office in Tampa hosted a three-day Windows 8 accelerator lab for anyone wanting to port or create an application to the latest version of Windows Phone or Windows 8 Metro. I think most folks stuck close to the C# / XAML flavors for their applications and a lot of applications were updated, ported, or created by the group.
I was able to attend for a day and a half and worked on creating a Windows 8 version of an application I’ve had on the shelf for a while. The app I was converting was a Mango flavor but instead of creating an updated version I decided to create a version that would run on Windows 8 instead. I had a lot of challenges at first but leaning on the documentation help quite a bit.
The biggest things were moving items from Windows Phone isolated storage to Windows Storage (that’s the namespace) on Windows8, and then there was navigation. Some of the built in templates handled navigation out of the box without disrupting the workflow I had in my in my original Windows Phone application. I focused on those two because they are tied together, it’s a matter of knowing (or better, trying to understand) when the application moves from one view to another. Once it does, the application needs to understand when, and if, it needs to save what’s been entered. The other opportunity here is understanding where to save what was added or changed. This was the majority of my challenges for the work I completed over the last day and half of the labs and it was very educational to be sure.
Hats off to Jim Blizzard for being the MC and host of the event, he did a great job (as did others but I didn’t get their names) walking around the room and answering questions and handing out advice for the challenges folks were having. At different times of the day folks gave demos of the work they had completed or started, and for that they offered them a new Windows Phone, not a bad deal. Many folks trying their hands at using XAML, even one Android developer that created a Windows Phone app on the last day that she demoed to the group. One person hadn’t worked with XAML before and created a roving repairman application by just using the developer documentation and the application templates that are available. They Windows 8 templates are few in number, but they are definitely just enough code to get you started. There a numerous samples that can help with starting out on the application type you want to build if you just want to get something quick and dirty up and running.
The review process is a bit more “picky” in that you can vet your own application before you submit it to the marketplace so you can fix any of the obvious problems the review process might notice, but that’s ok, it’ll save the time you tap your foot waiting for the acceptance email and help you focus on the problems your solution might have. I looks like the static analyzers (FxCop / StyleCop) built into Visual Studio has to help you write better code, only you get a quick pass or fail notification for how your application is built.
I really enjoyed this event by taking the time to dive into Windows 8, but as I was driving away from the MS office I could help but think that Windows 8 is the new Silverlight target for applications, but its deeper than just spinning up a C# / XAML application like we did for Silverlight that runs in a browser, this one has a much larger platform to run on. The project templates target much more than just a Silverlight solution, there’s the HTML5 flavor that runs like a website, so if you’re a web developer and you don’t mind traipsing through some Windows namespaces for your client-side code, you might like this next version of Visual Studio (2012 RC dropped today) for your development desires.
HTH,
ofc












You must be logged in to post a comment.