Blogging is FUN!

my amazing life

I don’t often talk about personal stuff on this blog (it’s CODEgumbo; not LIFEgumbo), but a lot’s happened in the last few weeks, so I thought I’d share a bit.  Besides, I was on a roll for blogging for a bit there, and then suddenly stopped; I figured I should at least attempt to explain what happened Smile.  So let me explain in chronological order (with a few flashbacks) what’s been going on with me lately.

I’m a dad, again….

Evan Stuart Ainsworth was born on June 25, 2013.  It’s been 14 years since I’ve had a baby in the house, so it’s a complete reboot.  I’ve been totally unprepared for the joys and trials of having a baby; I kept thinking it was going to be easy, but I guess I forgot how worn out you feel all the time, and I’m just the dad.  I don’t understand the sheer strength my wife has; the kid eats all the time.  And when he’s not eating, he’s either happy or mad; my nickname for him is the Hulk (“don’t make me angry”).

Before I go too much further with the story of Evan’s arrival, I should pause for a second and say how grateful I am for my two daughters (Isabel, 16, and Grace, 14); their world just got a little weirder, and they’ve stepped in and accepted it reasonably well.  Blended families are tough, and I appreciate them for trying to balance their relationship with me, their stepmother, and their new little brother, as well as building a relationship with their mom (and her new family).

Anyway, while the birth of any kid is big life change, Evan is special.  He was actually supposed to be an induced birth, so we were at the hospital when labor started.  Betsy (my wife) was all hooked up to monitors, and labor was progressing when things went awry; during some of the contractions, Betsy suffered a condition known as a placental abruption, and Evan went into shock in utero.  Within minutes, Betsy underwent an emergency C-section, and Evan was out within 15-30 minutes of the incident.

Betsy and I spent two weeks hanging out at the NICU, waiting on our little boy to get well; it wasn’t comfortable.  Lots of stress, nowhere to really go, and too little time in between feedings for either of us to leave.  Thankfully, Evan’s condition was relatively minor compared to many babies that spend time in the NICU, but it was still scary.  When I say my prayers, I give thanks for the doctors and midwives at the hospital; without them, I don’t think either Betsy or Evan would be home with me today.  After I give thanks, I then turn my thoughts toward the parents and families of children in the NICU.

I say all of this to explain that even while it’s tough coping to a new baby, I just laugh when I hear him cry.  Life is a blessing, even in the everyday struggles.

I survived another trip around the sun

As of July 5, 2013, I am now twice-21.  I’m a little slower, a little grayer, and happier than I’ve ever been.  42 is a lot more awesome than I thought it would be when I was 21.  Besides, kids are supposed to keep you young, and if I keep having them, I should live forever.

I celebrated a second year of marriage

While I don’t share a lot about my personal life on my blog, I REALLY don’t talk a lot about my wife.   As I pointed out above, this is my second marriage; my ex-wife and I separated in November 2009 after 14 years of marriage.  If you go back and search older posts on here, you’ll find a few references to my original marriage scattered about; I try not to dwell on them too much, because I don’t really want to revisit those feelings.  Let me just say that I spent a lot of my adult life trying to be happy and make someone love me, and I was only marginally successful.

After my divorce was final, I dated a few women and thought I would enjoy being single. And then I met Betsy.  My wife is an amazing woman, and I don’t think I tell her that often enough.  She loves me for being me, and its easy to love her.  I’m happy every day; love is easy with the right person.  At times it seems as though I just met her a week ago; at times, it seems as though life began when I met her.  Enough mushy stuff by me; sing along with the Proclaimers.  It’ll make you feel good.

And now back to our show

Hopefully, I’ll get back on track with technical blogging now that I’ve had some time to adjust to all the recent life events.  Thanks for reading.

The 9-month countdown has begun…

image

So, there it is.  Two little lines, and BANG! I’m going to be a dad again.  It’s been 14 years since I’ve last seen a positive pregnancy test, and I’ve got to tell you, the mixture of excitement and downright panic doesn’t really change.  True, I’ve got a lot more experience under my belt, but then again, I’ve got a LOT more experience (I’ll be 42 in July).  Wow.

We heard the heartbeat today, so my wife is officially 7 weeks along, and except for a few close friends and family members, we’ve been trying to stay quiet and think happy thoughts.  We’re finally out of the woods far enough that I’m comfortable telling people.

Comfortable may not be the right word; I’m still slightly in shock, but I’m significantly more optimistic about the outcomes.  I’m going to be a dad, again.  It’s an amazing feeling.

My head is still swimming with the news, but I hope this explains why I haven’t blogged much over the last year, and why I probably will be sporadic for the next few years Smile.  IVF is a time-consuming process, but as I recall (sheesh, I sound like a geezer already), so is raising a baby.  At least this time around I’ll have a couple of high-school students to help out.  My two daughters are thrilled about the possibility of a little sibling; both are hoping for a brother, but as my mom put it, my “track record’s not so great in that area”.

Other words of wisdom from my mom: “you better get your ass to a gym.”  I’ve got less than 9 months to get into the best shape of my life; I’ll have a rugrat to wrestle.  Life is good, and I need to be around for a long time to enjoy it.

My reading list…

OK, so I haven’t blogged in like, forever… (and apparently, I’ve adopted the speech pattern of a teenager from the 80’s while I was away).   Suffice it to say that I’ve been working on a few major projects, and I’ll fill you in on them later.  I did want to pick up the torch again, and thought I would write a quick email about the three books that are currently on my reading list:

On my iPad (and no, I didn’t get a Surface RT, and it sounds like it was a good thing I waited), I recently picked up Managing Humans by Michael Lopp.  It’s a fun read, but his principles and axioms are a bit like the Book of Proverbs; it’s a loose collection of ideas on how to manage software engineers.  I’m a bit more simplistic than he is, and it’s tough for me to put all of the puzzle pieces together.  I’m still digging my way through it; it’s fun at times.

My technical book of choice as of late is Practical PowerPivot & DAX Formulas for Excel 2010 by Art Tennick.  We’ve got a new self-service BI initiative at work, and my department is responsible for evangelizing the capabilities of SQL Server.  What I’ve seen so far of PowerPivot, I like, but there are a few challenges; I’m not an Excel guy, and so the interface is not intuitive for a DBA. This particular book has been helpful on more than one occasion when I’ve been frustrated by my lack of ability to get the software to do what I want.

And now for pure geekiness (and I’m sure my wife is shaking her head at this one), I recently found the entire Apprentice Adept series from Piers Anthony in a used bookstore.  This was one of my favorites in my early high school career (yep, I was a nerd), and I just started reading Split Infinity.  My excuse is that I bought it for my teenage daughter, but in reality, its for me Smile.

Back in the saddle….

It’s been a while since I’ve last posted anything; I blame it on a strange blend of workaholism and laziness. However, before I drifted off to sleep tonight, I did want to mention that I would be presenting a topic at SQL Saturday 167 in Columbus, GA on September 9.  On September 11, in Columbia, SC, I’ll be presenting the same topic at the Midlands PASS Chapter.  If you’re around either one of those meetings, please feel free to stop by and say hello!

The Agile DBA: Managing your To-Do List

Agile development is all the rage, but how do the principles apply to database administrators? This presentation will introduce the basics of the Agile Manifesto, and explain how they can be applied to non-development IT work, such as database administration, maintenance, and support. We’ll cover scrum (one of the most popular development methodologies) and kanban, and identify some of the common struggles with implementing them in an organization. This is an interactive discussion; please bring your tales of success and your horror stories.

New Year’s Post 2012 (the where-have-YOU-been post)

OK, so around November last year, I fell off the grid.  Stopped posting in the middle of a series.  Just walked away.  And now, like a bad high school relationship, I’ve popped back up and begged you to start reading my blog again.  I swear I had good intentions, and I promise I didn’t cheat on you with that other set of readers; you know, the ones with the short skirts and the car…  I digress.

November and December were a career-changing period for me; things happened that were good, but left me extremely busy at work.  I chose to spend my free time focusing on family time, and I let other things (like my blog and my contributions to the SQL Server community) slide.  Since it’s now a week into January, I thought I would start anew, and try to kick off the year on a good foot.   Instead of making specific resolutions (which I’ll probably break), let me pick a direction and head that way.

First, I want to continue to focus on my family. Last year was an amazing year for me; I got married during the summer, and I had to relearn some things about a healthy family structure.  The first rule is that it takes more than just time; it takes an effort to communicate about things, including those things that are not always easy to say.  If you’ve followed my blog at all, you know that this is my second marriage; my first marriage ended in part because I stopped participating.  Hopefully, I’ve learned from that.

However, I didn’t just bring me into this new union of souls; I have two teenage daughters that I’ve brought along with me.   They need time to get to know their new extended family as well (they now have 10 grandparents, and uncles, aunts, and cousins), and I need to make sure that I keep investing my time in them as well as my wife.   I love these three women very much, and I need to do everything I can to make sure that they know that.   I guess I’m just stating that to lay out the framework for the principles that are following.

Second, I need to focus on my new career.  I got promoted to a management position in mid-November.  I’ve worked for this company for 9 years, and although I’ve been the senior member of the development team for most of that time, this is my first management position ever; I’m now the manager of a newly-formed team of Database Administrators, which means it’s a strange new world for me.  I’ve got to learn to do things a little differently; my goal is not to solve problems, but rather to empower others to solve problems.

Third, I want to be more diligent about my contributions to the community.   This means that I need to lay out specific time for blogging, and other community activities (I’m the treasurer for AtlantaMDF, as well as the organizer for the Eleventy-First SQL Saturday).  I also need to be more focused in my activities; I’ve spent a lot of time recently on StackOverflow, and I probably need to be less obsessive about that; I need scheduled activities, not hit-or-miss.

 

So there you have it; my simple return to blogging and my New Year’s “resolutions” all wrapped up in a simple package.  I’m still going to have to find time to finish the last series I started, but I’m hoping to find some time in the next few days.  Take me back, just one more time. Please?

#TSQL2sDay Roundup

So the launch was early, and the write-up is delayed.  Time has no meaning….  Truthfully, I’m sorry I didn’t manage to squeeze this summary post in a bit sooner; I have the typical DBA excuse: too much to do, and too little time.

One nice thing about this topic is that it seemed to resonate with several bloggers who had either strayed away from T-SQL Tuesday or had never participated; hopefully, the bug to write will stick (and I’m pointing the finger at myself for this one as well).

Beginning at the Beginning:

Pinal Dave in his gentle teaching style covers several different questions and answers about JOIN techniques. Great way to review the basics and get conversations started with beginners.

KenJ is a bit esoteric, but a great reminder of what resources there are to learn more about SQL Server.

 

JOINs In The Real World:

Tracy McKibben demonstrated a very simple tuning tip based on real production experience: the Nested JOIN

 

Rich Brown reminds us that good query construction often involves understanding how the optimizer handles JOINs under the covers.

Andy Galbraith (Yet Another SQL Andy!) reminds us to Respect Your JOINs. It’s funny how often we assume that database queries are logically well-written when we start looking for performance problems.

 

Bob Pusateri points out that WHERE clauses influence JOIN behaviors. You have to look at the entire SQL statement to make sure you’re getting what you’re supposed to be getting.

Matt Nelson reminds us that unnecessary JOINs are bad, and sometimes you need to dig a little deeper when performance tuning.

 

A Little Deeper:

Rob Farley toasted my brain a little on this post about Joins without JOINs.  It’s a well-written explanation of what an Ant-Semi JOIN is.

 

Brad Schulz finished the cooking job with a take on Semi-JOINs, among other things.  Is Brad really Rob in reverse?

Muthukkumaran Kaliyamoorthy covered the internal join mechanisms, and why the optimizer chooses merge, hash, or nested loop joins.

Robert Matthew Cook has a couple of great metaphors for explaining Merge, Hash, and Nested Loop JOINs.

 

Wayne Sheffield pointed out some interesting syntactical ways of writing JOINs. I’m not sure if I’m comfortable with some of them, but they may be of some use in certain edge scenarios. Or, if you just want to mess with the guy who reviews your code.

Richard Douglas offers up a short-but-sweet explanation of the relationship of Key Lookups to JOINs.

 

The Future is a Ticking Time Bomb…

Thomas Rushton points out that Denali may finally force us to clean up our code.

 

 

My Portugese is Not Up To Par…

 
Finally, Ricardo Leka wrote a post that I had to use Google Translate to interpret.  I think I lost something in  translation, because I’m not sure how the example relates to JOIN’s, but thought I would include it anyway.  http://leka.com.br/2011/10/04/t-sql-tuesday-23-joins/

#TSQL2sDay T-SQL Tuesday 23–Early edition

T-SQL Tuesday Logo

 

Time once again for another edition of T-SQL Tuesday!  What’s that, you say?  Early?  Why yes, indeed.  Due to the potential schedule of conflict of PASS’s Summit 2011 occurring on the second Tuesday of October (the normal date for T-SQL Tuesday), I’ve gotten special permission to bump it up a week. 

To participate in this month’s T-SQL Tuesday, your post must go live between midnight UTC on Tuesday, October 4, 2011 and midnight UTC on Wednesday, October 5.

 

Your post needs to link back to this blog, and if you use the image, anchor it to this post.  Make sure you leave a comment or a trackback to this post (so I can find it later, when I write up the summary).

Topic d’jour?  JOINS (I’m in a fundamentals mood lately).  Note that I also like creative and esoteric posts, so if you can find a way to apply SQL as a metaphorical language for community activity, I’ll read it and enjoy it.  If you just want to tell me in a simple fashion the difference between a HASH and MERGE join, I’m cool with that, too.

Do me a favor, though, and please spread the word about the early date.  Looking forward to reading your submissions.

distractions and other news…

Sorry for the absence from blogging for a bit; a lot on my plate.  Next week, I’ll be turning 40 on July 5th, and then getting married on July 9th.  The latter is much bigger news than the former, but both are reasons to celebrate.

Another reason to celebrate?  I got accepted to speak at SQL Saturday 64 (Baton Rouge).  I’m excited to head back home for good food and good times.  I needed a little affirmation after the disappointment over Summit.

Anyway, I may not blog much in the next few weeks; please stay tuned, because good things are happening.

Resolution checkup

As February draws to a close, I thought I’d do a quick check-up to see how well I was keeping up with my New Year’s resolution list.  In sum: not great, but not too bad, either.  I need to make some adjustments, but I think I can pull it back in.

Here’s the rundown (copied and pasted from the original, with some notes below):

Professional

Technical Skills

  • I want to learn something new every month.  My goal is to tackle something challenging, and be able to understand the ins and outs of it within 30 days.  For example, I want to finish tackling XML (including XSD’s) in SQL Server. 

I think I’m doing OK on this one; I haven’t really done great this month, but I have spent a little time each month working on something new.

  • I want to upgrade my certifications by the end of the year; I’ve been dancing around the MCITP exams for a while, and I need to finish them.

Spent a little time studying, but I need to get on this.

Presentation

  • I want to make at least 6 technical presentations by the end of the year; last year, I managed to eke out 8, but given some of the recent changes in my personal life (see below), I think 6 is reasonable.

I have two presentations scheduled for SQL Saturday 70 next month.

  • I will blog at least once a month about some technical topic (see the first bullet point under technical skills).

See the above point; as I learn, I blog.  I did miss the T-SQL Tuesday blog for Feb (which makes me sad).

Management

  • I will understand the SCRUM methodology, and learn how to implement it with my team at work.  Although I’m not a team leader, I AM the Senior Database Architect, and I need to code less, and teach more.  This is my year to do so.

I’ve done this; I’m moving on to something larger. 

Personal

Health

  • I’m getting married again this year, and I want to look good for my new wife.  I also want to avoid long-term health issues.  I was losing weight last year (until I started dating), and I want to get back on track.  I’d like to lose 50 lbs by October.

Started Weight Watchers and have lost about 10 pounds so far.  Have tapered off a bit, and I need to get back on this bandwagon.

  • I have apnea, and I’ve been horrible about using my CPAP on a regular basis.  I will use it regularly.

How about irregularly?

  • I need to exercise more, so I will find 20 minutes a day to do SOMETHING, even if it’s just walking around the office for 20 minutes.

Blech.  I did OK for about two days.

  • I will drink at least 8 glasses of water per day.

Does Diet Coke count as water?  Sigh; it looks like I’m not doing so hot in the Health area.

Spiritual

  • I’ve slacked off in my religious activities; my faith was nourished by church attendance during my divorce, and I need to start growing again.  I will find a new church in the next two months (my old church is too far to drive on a regular basis), and become a regular attendee.

Checked out a church; didn’t like it.

  • I choose to absorb the goodness from people who love me, and I will reject the poison from those who do not.  I will focus on the important things in life (like my kids, and my future bride), and worry less about the unimportant things (like who’s mowing the grass).

Mixed results on this; while I think I do a great job at spending time with my kids and my future bride, I’m still struggling with ways to handle conflict in a positive fashion.  My strategy now is direct confrontation, rather than continuing to tap-dance around issues.

Social

  • I will listen more to my children, my family, and my friends.  I will find ways to let them know I love them.

See above.

  • I will nurture my own friendships; while I love my fiance’s friends and family, I want to bring more to the table than just me.

Need to do better about this.

Financial

  • My divorce pulled me way off course.  While I’m a long way from being out of debt, I will continue to make strides in that area.  I will pay off at least one credit card ahead of schedule.

Not really making a lot of headway here;  this one may have to wait until my fiancee and I combine households (thus saving on rent payments).

  • I will save more; I plan to find ways to cut costs (like taking advantage of coupons, and eating out less).

Ditto.

There you have it; a mixed bag.  I think I’m making some positive steps in the right direction, but I’ve still got a long way to go.

I need ideas: building a cheap-but-powerful dev machine…

As part of my New Year’s resolutions, I’ve vowed to tackle a new technical challenge per month; however, to do so, I’d really like to beef up my home development environment, and was hoping to get some suggestions from some people on what to do.  A little background information would probably help, so let me sum up what resources I have (and some other factors influencing my decision):

Resources:

  • My company provides me with a mid-tier (LOW mid-tier) laptop for development.  While I can load some software on it, I’d rather not load my own personal development environment onto it.  I’ve thought about virtual machines, but it’s really incapable of doing much more than it already does (SQL Server Management Studio 2008 and Visual Studio 2010 can barely be opened at the same time).  It’s also a brick; traveling with it is NOT fun, but I have to carry it with me in case I need to securely access our network.
  • I have a desktop PC that was state-of-the-art 4 years ago, running Windows XP.  I’ve loaded Win 7 onto it, and the motherboard doesn’t like it.  I mostly use this PC for some minor development work, balancing my checkbook (Quicken), and browsing the Internet or watching my SageTV recordings.
  • I have a MVP MSDN subscription that I won at SQLSaturday 51 in Nashville; I know a few people were surprised that I won it (because they assumed I already had it), but I’m not an MVP (at least not an officially recognized one; see Paul Randall’s shout-out to @sqlagentman on this post.).  While I can get bits and pieces of this software to work on my home machine, I really think I’d be better off with a new environment.

Factors Influencing My Decision:

  • Budget is top priority; I have limited funds for this project.  I’d like to spend less than $500 upgrading my environment.
  • Mobility.  I do plan on traveling some to make presentations; the question is, how much of my development platform needs to be mobile?   Can I just get a superfast desktop, and do minor road development on my laptop?  On the other hand, I am spending a lot more time on the road between my apartment and the office (and my fiance’s house) these days; should I invest in a laptop, even if means I have to carry two laptops from place to place?

So, there you have it; resources and factors.  I’ve thought through a couple of scenarios, but I’m very open to suggestions:

  1. I could make my home PC a kick-a$$ development platform for under my budget.  Not very mobile, but cheap.  A couple of parts from TigerDirect, and away I go.  I might even have enough scratch left over to invest in an Android tablet or iPad for presenting (yeah, presenting; that’s how I plan to explain it).
  2. I could buy a cheap but beefy laptop and replace my home PC; not as powerful, but probably capable of doing dev work.  It’s mobile when I need it to be, but it does mean I would probably have to carry two laptops when I travel.  I’m worried that it won’t be powerful enough, but the i3 machines are pretty tasty these days.

Please feel free to leave comments with ideas; I’d love to hear some suggestions.  I’d also love to hear suggestions on 64 bit vs 32 bit (I’m assuming 64 bit); how would YOU build a cheap development platform?