Category: Blog

  • Silicon Valley is a different world

    I spent the last couple days at Flowcon 2014, a conference that is bringing people together to talk about growing their organizations with continuous delivery and design, and lean product development.

    It does some of that, but it wasn’t what I expected. The attendees for the most part were people that already believe in continuous delivery, in lean principles for their organization, and in flow. If you don’t know what flow is, read the Phoenix Project, Martin Fowler, and other lean, agile methodology books. It’s a concept from labor and manufacturing, with the idea that we can increase the rate at which we get work done.

    I believe in it, it’s a tenet of DevOps, and I think it works well. The conference features people from Netflix, Nordstrom, Etsy, Thoughtworks, and other companies that are already using these ideas. They believe, and they are looking for ways to better smooth out their own groups.

    However they also have ideas about rapidly changing and adaptive groups and organizations, which isn’t where most of us work. Far, far too many people are still stuck performing waterfall work, or even waterfall-like work.

    It’s also a world where people are looking for startup ideas, looking to move quickly and build something new. It’s a world that’s quite unlike my own. While there’s a buzz and energy from many people, it also feels somewhat shallow and hollow from some that are searching for riches. It’s also a bubble of thought that is so far away from most of my experiences, that it feels sheltered and idealistic.

    Don’t get me wrong, it’s exciting, and there is a passion some of these people have for their craft that’s inspiring. I’m just not sure it’s a place I’d want to be every week.

    However I do wish more and more people would look to better develop software. If we are to improve as an industry, I think many of the ideas and techniques that are invading the software development world related to flow need to be adopted.

  • Off to Flowcon 2014

    With all of the work on a deployment pipeline and Continuous Integration (CI) and Continuous Delivery (CD) I’ve worked on, I thought it would be instructive to go see how the software developers build their product better. A few months ago I noticed that FlowCon 2014 was coming to San Francisco. It’s a short, easy trip for me, a 2 day conference, and I thought it would be a good chance to interact with the Thoughtworks people, as well as others.

    So I booked the trip. Even though I travel enough, I rarely go for me, and this is a good chance for me to learn. I leave this afternoon, no commitments, no presentations, just the chance for me to learn a bit.

    I’m really looking forward to seeing how people are really making software happen faster, and at a higher quality level than in the past. I’ve read a few books in preparation for this, and it’s been interesting. The first one I really liked, though it has a lot to absorb. The second two were ok.

    continuousdelivery

    Continuous Delivery – Worth the read.

    51b0kaalNnL._BO2,204,203,200_PIsitb-sticker-v3-big,TopRight,0,-55_SX278_SY278_PIkin4,BottomRight,1,22_AA300_SH20_OU01_

    Refactoring Databases – Not bad, and certainly this gives some ideas for the challenges of database changes.

    510giluHAvL._BO2,204,203,200_PIsitb-sticker-v3-big,TopRight,0,-55_SX318_SY318_PIkin4,BottomRight,1,22_AA318_AA300_SH20_OU01_

    Recipes for Continuous Database Integration – Meh

  • Crosstabs over Pivots

    I wrote about a basic PIVOT query recently. It’s an interesting way to write a query and turn row data into columns. That’s handy, and lots of people have a need for it. However I’d never used PIVOT in production code. I’ve always written a crosstab query instead.

    If I look back at the query I wrote, it looks like this:

    select
        *
      from
        ( select
              team
            , opponent
            , teamscore
            from
              scores results
        ) as rawdata 
    
    pivot
    
     ( avg(teamscore) for [Opponent] in ( [KC], [OAK], [SD] )
    
     ) as pivotresults;

    This gives me these results:

    team   KC   OAK  SD

    DEN    31   35   24

    However I could also write this query:

    select 
        'team' = team
    ,   'KC' = sum( case when Opponent = 'KC' then TeamScore else 0 end) / 2
    ,   'OAK' = sum( case when Opponent = 'OAK' then TeamScore else 0 end) / 2
    ,   'SD' = sum( case when Opponent = 'SD' then TeamScore else 0 end) / 2
     from scores s
     where team = 'DEN'
     group by team

    That gives me the same results.  The AVG item gets tricky as can don’t want zeros to be included in results. If there were a dynamic number of scores, I’d have to write a few subqueries to solve this issue.

    Which one is more clear and easier to understand? That’s a good debate. However I will say that if I need to add a column, I think it’s easier to do so in the crosstab.

    select 
        'team' = team
    ,   'KC' = sum( case when Opponent = 'KC' then TeamScore else 0 end) / 2
    ,   'OAK' = sum( case when Opponent = 'OAK' then TeamScore else 0 end) / 2
    ,   'SD' = sum( case when Opponent = 'SD' then TeamScore else 0 end) / 2
    ,   'NE' = sum( case when Opponent = 'NE' then TeamScore else 0 end)
     from scores s
     where team = 'DEN'
     group by team
    ;

    Here’s the PIVOT:

     select
        *
      from
        ( select
              team
            , opponent
            , teamscore
            from
              scores results
        ) as rawdata
      pivot 
       ( avg(teamscore) for [Opponent] in ( [KC], [OAK], [SD], [NE] ) 
       ) as pivotresults;

    I’ll also point out that Jeff Moden has written a few articles on this subject (Part 1 and Part 2) and his performance analysis shows that a crosstab performs better in almost all cases.

    I wouldn’t recommend one over the other. You need to test them both at larger than expected data sets to determine which one works in your situation.

  • DevConnections 2014

    I live on a small ranch in Colorado. It’s a working ranch where we board horses, and my wife trains both horses and people. There’s a lot of work to be done at the ranch, and both me and the kids help out.

    shovel1

    We have a variety of tools we use to deal with the various chores and infrastructure we have to manage. Depending on the task, we might choose a specific tool.

    shovel2

    We also like to use the right sized tool for the job, especially when the job involves heavy lifting.

    tractor

    I often think about my career in technology, and how similar it can be to my life now. I’ve often worked with a variety of technologies, from networking routers, to Active Directory to Exchange in my career as a DBA. I’ve had to understand development languages and techniques to collaborate effectively with developers. Knowing a little bit about a lot of things has helped me often.

    That’s one of the reasons I like the DevConnections conference. With so many different technologies being discussed a the same event, I can walk from a SQL Server session on execution plans to a development talk on Fiddler. You can learn about testing software and SharePoint queries along with Trace Flags without leaving the building.

    Most of us work with a variety of technologies, and if we don’t, we often do work with a variety of IT pros. Learning a bit more about how others do their jobs, how their technologies might interact with yours, or even picking up a little jargon, can help you to be a better IT worker overall.

    I’ll be in Las Vegas this September for DevConnections and I hope you’ll join me. It’s a good time at the Aria resort with plenty of ways to relax in the evening after a packed, educational schedule each day. And if you’re interested in Continuous Integration for Databases or High Performance Encryption, stop by one of my sessions.

    I hope to see you Sept 15-19 in Las Vegas. Register today!

    If you’d like to see a video promo, click below and enjoy.