Author: way0utwest

  • Building an algorithm

    When I was in college, and even high school, all of my computer science classes required me to build algorithms. Often they were simple things, like implement a sort, or reverse a string, or shuffle a deck of cards. Those seemingly silly and trivial exercises, however, build the skills of pattern recognition and implementation in computer science. Sometimes I think we don’t do enough of that for people that are tackling computer careers these days.

    I saw a post from someone that had an incrementing column, an identity, that impacted another field. Basically whenever the first column reached “10”, you wanted to add one to the second column.

    Easy, right? I think so, and to show someone how they might create an update statement, or even see the pattern, I built a quick tally table.

    SELECT Top 205 IDENTITY(INT,1,1) as N
      INTO Tally 
      FROM master.dbo.syscolumns SC1, master.dbo.syscolumns SC2

    From there, I then looked at the pattern. Every 10 items, I need to add one. That’s a pattern, and the way that pattern is easily discerned in math is with a modulo operation. To the rest of the world, that’s a remainder. If you look at the pattern of remainders of an increment divided by 10, it’s this:

    n           modulo

    ———– ———–

    1           1

    2           2

    3           3

    4           4

    5           5

    6           6

    7           7

    8           8

    9           9

    10          0

    11          1

    12          2

    13          3

    14          4

    15          5

    16          6

    17          7

    18          8

    19          9

    20          0

    21          1

    22          2

    from this code:

    SELECT Top 205 IDENTITY(INT,1,1) as N
      INTO Tally 
      FROM master.dbo.syscolumns SC1, master.dbo.syscolumns SC2
      
    
    SELECT n
      , n % 10
     FROM Tally  
      
    DROP TABLE tally

    That mans that we can see each time there is a zero remainder, we want to perform an increment. So essentially if you detect an update, do a modulo, and get a zero, then you update the next column.

    It gets a little more complicated if there can be multiple rows updated or added at once, but here is the overall code that essentially builds a table of numbers that increment for each 10 on the previous value.

    SELECT Top 205 IDENTITY(INT,1,1) as N
      INTO Tally 
      FROM master.dbo.syscolumns SC1, master.dbo.syscolumns SC2
      
    DECLARE @b INT
    
    SELECT @b = 1
    
    SELECT n
      , n % 10
      , @b
      , n
      , @b + (1 * (n / 10)) 'col b'
      , CASE WHEN (n % 10) = 0 THEN 'add 1' ELSE '' END 
     FROM Tally  
      
    DROP TABLE tally

    You end up with this:

    n                                   n           col b      
    ———– ———– ———– ———– ———– —–

    1           1           1           1           1          
    2           2           1           2           1          
    3           3           1           3           1          
    4           4           1           4           1          
    5           5           1           5           1          
    6           6           1           6           1          
    7           7           1           7           1          
    8           8           1           8           1          
    9           9           1           9           1          
    10          0           1           10          2           add 1

    11          1           1           11          2          
    12          2           1           12          2          
    13          3           1           13          2          
    14          4           1           14          2          
    15          5           1           15          2          
    16          6           1           16          2          
    17          7           1           17          2          
    18          8           1           18          2          
    19          9           1           19          2          
    20          0           1           20          3           add 1

    21          1           1           21          3          
    22          2           1           22          3          
    23          3           1           23          3      

    If I had started at zero, you’d see a more traditional increment of 0 for column b to start with.

  • The Mentoring Experiment

    The Mentoring Experiment
    http://thementoringexperiment.org/

    As I have progressed through my career, I’ve worked hard, read and studied constantly, and asked lots of questions of others. All that has helped me to improve my skills and better understand my craft. However there is more to growing a data professional career than just learning to better work with the technology.

    One thing that helped me a few times was the ability to talk to other people in my companies that were more experienced in life and business. These were people that I reported to, directly or indirectly, who were willing to listen and offer me some insight and advice on my career. They were mentors, but unfortunately they were few and far between in my career.

    It made me wonder if I might have made some better decisions, or made different decisions earlier in my career if I had been able to call on a mentor more regularly.  Andy Warren (LinkedIn | Blog | @sqlandy) and I talked about this being a problem that we both shared in our careers, and one that we see many people struggling with today. Our discussions led us to wonder if there might be a way to develop a mentoring framework that would help people grow their careers in a way that is better suited to each individual.

    The Mentoring Experiment is our initial attempt to build such a framework. It’s a short cycle, with the idea that we are seeking to learn some lessons about mentoring while helping people with advice and insight from mentors that we respect.  We hope that we can find some patterns that allow us to facilitate the bonding of mentors with mentees.

    We are taking applications until Apr 30, and while Andy and I will be mentoring people, we have a list of mentors from the SQL Server community that we respect and think will be good mentors for data professionals looking for help in better understanding their careers and where they want to go in the future.

    We’ll be blogging about the process, respecting everyone’s privacy along the way, and we hope to expand and grow this experiment over the next few years into something that gives back to the community, and hopefully helps many data professionals grow careers that they benefit from and greatly enjoy.

    Steve Jones


    The Voice of the DBA Podcasts

  • Careful Blogging

    Be careful about what you blog.

    There are official blogs, like Jonathan Schwatz of Sun and others that are corporate preaching/marketing/promotional efforts. Not that this blog or others aren’t what the authors think, but I feel that they are probably checked and monitored by someone at the corporation to be sure that the message doesn’t bring any liability or unexpected issues out.

    Then there are unofficial blogs, like the guys at MSDN that are handled by employees, they are asked to post, but they are not really monitored. I’m sure there are guidelines and regulations, however, that have been posted, emailed, snail-mailed, etc. to everyone.

    I ran across this article on potential legal isues with blogs on eWeek. It doesn’t appear the courts have been involved yet, but I’m sure it’s coming. At some point there will be someone that sues or gets sued over a posting and then we’ll really find out how “private” those blogs are.

    I made a note on the SQLServerCentral blogs page, but it’s something to think about whether you use a corporate site or your own private one. Be wary of what you post in a blog. To me the same rules that apply with you at Happy Hour apply on the blog. If you don’t want it getting back to your boss, don’t post it.

    Steve Jones

  • The Mentoring Experiment

    Andy Warren (LinkedIn | Blog | @sqlandy) and I had an idea for a way to give back to the community and help people. It’s the Mentoring Experiment, and we are taking applications from people through April 20.

    If you’re interested in finding a mentor, and want to take a chance on getting picked, check out the site and submit your application.

    http://thementoringexperiment.org/