DIY Standing Desk: Part 2

It has been just over a year since I built and blogged about my DIY Standing Desk. These days, I work from home 2 days a week and work from my standing desk probably 80% of the time. When I first built my standing desk last year, I considered it an experiment and chose not to sink much money into it. But after a few months, I knew I had done the right thing, and over time I added more upgrades.

 

Standing Desk: V1

Standing Desk: V1 (@April 2015)

 

Standing Desk: V2

Standing Desk: V2 (@July 2016)

One of the first things I added was the AmazonBasics gel mat. My feet were getting fatigued and I knew that a good gel mat would help that out dramatically.  $40 well spent!

Then I added a set of Cyber Acoustics 2.1 speakers & subwoofer, as I love to listen to tunes while slinging T-SQL. This was just an inexpensive set that I had bought years prior and for my garage workspace.  And it works well enough to jam out tunes and give me that touch of bass.  At some point (probably around Black Friday/Cyber Monday), I’ll probably invest in a nicer more powerful 2.1 speaker set and a FiiO E10k DAC. I use the latter at the office with my headphones and love it.

Last fall, I became fed up with the scavenged wire shelves that held my monitor & laptop stand. I knew I was satisfied with my standing desk by that point, so I made another trip back to Ikea to add on a proper monitor shelf. I borrowed another idea from the Internet, purchasing Capita brackets & a Lack wall shelf. An hour later, I had a super sturdy & solid monitor shelf!

When the 2015 holiday season rolled around, I decided to finally upgrade my ancient 22″ monitor. While I’m normally a dual-monitor fan, I decided to go with a higher resolution, larger single monitor solution instead. Additionally, I knew I wanted a monitor greater than FHD (1920.1080) to enhance my workspace. After much research, I settled on the 27″ Acer K272HUL. I really liked the idea of WQHD (2560×1440) and preferred a 16:9 aspect ratio vs 16:10.  And I definitely do not regret the decision to try this.  The monitor is beautiful.  It is mounted at the proper height and distance, and I feel that it gives me a tremendous amount of screen real estate to work on.

To complement the new monitor, I also invested in some Antec LED bias lighting that was conveniently on sale. If you’re not familiar with bias lighting, this How-To-Geek article is a fantastic introduction.

Additionally I added an APC SurgeArrest P11VNT3 protector. Prior, I’d only been using a cheap power strip, but between two laptops, an iPad charger, phone charger, & monitor, I’d run out of room. I wanted more peace of mind, especially since I would now be keeping a second laptop there at all times. And of course, it was conveniently on sale.

A second laptop? Back in 2010, I purchased my first gaming laptop – a Sager NP8690. Sagers are the US rebrand of another company called Clevo, which make fantastic modular gaming laptops. My first Sager had served me well for 4 solid years, but the graphics card finally couldn’t keep up with the latest games, so I purchased another Sager in 2014.

Except for a dead battery, my first Sager was still a solid machine. I swapped in an SSD and it was back in prime condition. It has a great deal of horsepower underneath the hood, making it a fantastic base for my SQL Server VMWare Workstation lab. Now it lives as a underneath my standing desk, with its own dedicated keyboard & trackball. I just use Duplicate Screen to run it exclusively on the 27″ monitor, with its own dedicated HDMI connection.

0709161120a_HDR

So that’s my DIY Standing Desk as it is today. Usually I have my work laptop hooked up on the stand, with its own dedicated keyboard & trackball. And whenever I feel like switching to my personal laptop, I just hit the power button underneath, shift around keyboards, then switch the Input on my monitor.

My original investment was about $115. All of the above upgrades, minus monitor & second laptop, ran me about $120? So about $235 for my entire setup? Amusingly the monitor cost about $300! Nonetheless, I look at it all as money very well spent!

T-SQL Tuesday: #80 Give Yourself a SQL Gift!

TSQL2sDay150x150

This month’s T-SQL Tuesday, is hosting by Chris Yates (b|t). Coincidentally, it is also his birthday today! As such, he’s chosen this month’s topic to be present or gift oriented.

Reading Chris’s announcement post, I thought back to a recent conversation regarding purchasing of tools, to make our lives as data professionals easier. Many of us work for fantastic companies, but may not have the budget or ability to invest in tools for us.

My challenge to everyone is to consider giving yourself a gift and and purchasing a tool for yourself. Think about what you do on a regular basis:

  • Do you often find yourself comparing “identical” databases for drift or other reasons?  Like making sure pesky developers didn’t sneak in yet another index without informing you first?  Wouldn’t RedGate’s SQL Compare make your life more awesome?
  • Do you dig through Execution Plans regularly? How about investing in SQL Sentry’s Plan Explorer Pro version?  Because you’re already using the FREE version & know it’s awesome, right?  RIGHT?!?
  • Sling a lot of T-SQL code daily? How about Mladen Prajdić’s SSMS Tools Pack, which is chock full of awesome features that make a T-SQL dev’s life more awesome.

I will fully admit that the cost of any of these tools is non-trivial.  But on the other hand, this is about giving yourself a gift.  And this gift is hopefully something you’ll use on a regular, if not daily basis, in the course of your career.  Consider the value that such a tool would bring to your life.  So go ahead… treat yourself to a gift!

What a Difference a Year Makes!

A year ago, last June, is the last time I wrote a “soft” blog update. Since then, a tremendous amount has changed.

TL;DR

PASS_16_Speaking_600x315

OMG I’VE BEEN SELECTED TO SPEAK AT PASS SUMMIT 2016!!!!!

 

tumblr_mwyvpqpObK1sgl0ajo1_500.gif

And how I’ve felt since getting the acceptance e-mail last night.

 

LONG VERSION

CAREER CHANGES

Since last June, I’ve changed employers. But more importantly I shifted my career path. I’d spent the better part of 10 years in Database Development roles, and felt it was time for a change. So I took an opportunity as an Operational DBA in a company with an extremely large environment. Now I’m working at a Managed Services firm, with a large team of other DBAs, on a variety of clients with some very large infrastructures.

CHI-SUB USER GROUP

The Chicago Suburban SQL Server User Group has continued to be a success. We’ve just hit our 2 year anniversary! We average 20-25 attendees a month, many of whom are regulars. And occasionally, depending on topic, we get more and/or even see new faces, which I always love!

SPEAKING – SQL SATURDAY

I have also spent a lot of time speaking, over the past year. I’ve had the honor of being selected for a number of different regional SQL Saturdays. I was also flattered that SQL Saturday Portland accepted me. Portland was a big deal because that SQL Saturday preceeds PASS Summit, and often attracts many high-end speakers. I like to think of it as PASS Summit pre-partying!:-)

SPEAKING – NEW SESSIONS

At the beginning of 2015, I developed a new SQL Session: Uncovering Duplicate, Redundant, & Missing Indexes. Like my first session, it has been growing, changing, and maturing, with each subsequent presentation. I’ve been very happy with it, as it addresses a niche of Indexing that one does not commonly see offered in sessions.

I decided to continue my “1 new session a year” rhythm, and spent a good chunk of Q1 & Q2 developing my new session “Performance Pitfalls of Code Reuse.” I wanted to create a session to highlight my sp_helpExpandView (https://sqlbek.wordpress.com/tag/sp_helpexpandview/?order=ASC) community tool, while diving deeper into the technical “why’s” that drove me to write the tool. I presented it for the first time a few weeks ago at SQL Saturday Iowa and it was a huge success!

SPEAKING – PASS SUMMIT 2016

In 2015, I submitted to speak at the PASS Summit for the very first time.  I only had one session in my speaking portfolio.  I figured given the # of speakers & abstracts that get submitted, that I didn’t have much of a chance.  And I was not accepted, but I was okay with that.  I got some interesting feedback and I went on.

For 2016, at the time of Call for Speakers, I had 2 sessions in my portfolio and was developing my 3rd.  So I submitted all three.  I also took lessons learned from my prior year’s submission, refined my abstracts, and provided far greater details in my submission application.  And well, I’d like to think that paid off in spades!!!

I attended my very first PASS Summit in 2013.  At the time, I never thought I’d get into speaking.  But now 3 years later, I’m not only a speaker, but am absolutely flabbergasted, humbled, and blown away that I am been selected to speak!

http://www.sqlpass.org/summit/2016/Sessions/Details.aspx?sid=47480

Yes, that’s me… that’s really ME!  EEP!

I will have more thoughts to share later, but I’m still absolutely floored by this honor.  I want to thank everyone on the Selection Committee for all of their hard work!  Congratulations to my fellow speakers, and to those who were declined, I’ve been there too – chin up and carry on, you guys are awesome too!

 

T-SQL Tuesday #77: My Favorite SQL Server Feature

Tags

TSQL2sDay150x150

Hello everybody!

I’ve been away from blogging for a bit longer than I care for, but Jens Vestergaard’s (b|t) T-SQL Tuesday Topic has brought me back into the fray.

What is my favorite SQL Server Feature?

Dynamic Management Views & Functions (DMVs & DMFs)

What are these? It is said that one’s eyes are the gateway to the soul, I say that DMVs/DMFs are the gateway into SQL Server! Formally speaking, the DMVs/DMFs expose internal information about your SQL Server. This information can be used to learn about its current state & health, and provides valuable insight for troubleshooting and tuning purposes.

Much earlier in my SQL Server career, I never knew much about how SQL Server operated under the hood. I only had knowledge of the things I could do directly, but I never questioned what was really happening behind the scenes. Then I attended SQLskills IE1 training, which was a turning point in my career. Among other things, it was my first exposure & deep dive into SQL Server Internals. I became enamored with learning how things really worked under the hood and the DMVs/DMFs became one of my best friends.

Since their introduction in SQL Server 2005, the number of available DMVs/DMFs has more than doubled. How can you see what’s available to you on a given SQL Server? One quick & easy way is to query sys.system_objects:

SELECT
system_objects.name,
system_objects.type_desc
FROM sys.system_objects
WHERE system_objects.schema_id = 4
AND system_objects.type IN (‘IF’, ‘V’)
AND system_objects.name LIKE ‘dm_%’
ORDER BY
system_objects.type_desc,
system_objects.name;


Of these, what are some of my favorites?

  • sys.dm_db_index_physical_stats
  • sys.dm_db_index_usage_stats

Combining these two, gives me very useful insight into both the structure of a table & any indexes it may have, but to how my workload is actively making use of each of these structures. Data found here is extremely useful when it comes to performance tuning.

  • sys.dm_db_partition_stats

I like to use this DMV to get row count & page count information about a database. Its output gives me greater insight into the contents of a table, particularly without the overhead of a SELECT(1) for a quick row count or sp_spaceused execution. Personally I find knowing size by page count to be far more valuable anyway.

  • sys.dm_db_exec_connections
  • sys.dm_db_exec_requests
  • sys.dm_db_exec_sessions

Mixing & matching these three, you can obtain information regarding current connections and activity on your SQL Server.


I can’t tell you how many times I’ve had a “eureka” moment, discovering that a DMV/DMF exposed another interesting piece of information that I wasn’t aware of before. To say that there’s a wealth of information is an understatement. So whether you’re new or not to DMVs/DMFs, take another look – you too may find a new and useful gem hidden inside them!

And if you want to read all about all available DMVs/DMFs, be sure to check out Books Online: Dynamic Management Views and Functions (Transact-SQL)

T-SQL Tuesday #68: Round-Up

A couple of weeks ago, I posted an Invitation to T-SQL Tuesday #68: Just Say No to Defaults. Last week, #SQLFamily responded in force with 22 blog posts! There’s a fantastic wealth of information across all of these blog posts and I was blown away!

Without further ado, here’s the round-up!

I want to thank everyone for participating and sharing your knowledge. And I hope that those of you who are reading, but not yet blogging, will join us, start your own blog, and begin sharing your knowledge and your stories too!

Until next time!

T-SQL Tuesday #68: Changing SSMS Keyboard Query Shortcut Defaults

Tags

, , ,

Welcome everyone!

TSQL2sDay150x150
After being a long time read and occasional participant, I am honored and humbled to be your host for this month’s T-SQL Tuesday! In my Invitation to T-SQL Tuesday, I asked everyone to write a blog having something to do with “Defaults.”

For my contribution, I decided to blog a bit about SQL Server Management Studio. As a SQL Server Developer, I live my life within SSMS. As much as I like it, there are a variety of defaults that I like to change. And for today’s blog, I’m going to talk about Keyboard Query Shortcuts.

If you navigate to Tools -> Options -> Environment -> Keyboard -> Query Shortcuts, you will find that SSMS comes with a handful of defaults.

1_Options
Tools -> Options

2_Query Shortcuts - Default
Query Shortcut Defaults

These three starting shortcuts are indeed very handy, but SSMS gives us a number of other blank entries to add our own. Wouldn’t it be a waste if we did not take advantage of them, to add in some of our own?

2_Query Shortcuts
My Default Changes

As you can see above, here are ALL of the new Keyboard Query Shortcuts that I add. And here they are in full:

  • Ctrl+3 = sp_help
  • Ctrl+4 = sp_helptext
  • Ctrl+5 = sp_SQLskills_SQL2008_helpindex
  • Ctrl+6 = sp_SQLskills_SQL2012_helpindex
  • Ctrl+7 = EXEC sp_whoisactive @get_plans = 2, @get_transaction_info = 1, @get_task_info = 2, @get_avg_time = 1, @get_outer_command= 1
  • Ctrl+8 = EXEC tempdb.dbo.sp_help
  • Ctrl+9 = EXEC sp_helpExpandView @ShowObjectCount = 1, @ViewName =
  • Ctrl+10 = EXEC sp_whoisactive @get_plans = 2, @get_transaction_info = 1, @get_task_info = 2, @get_avg_time = 1, @get_outer_command= 1, @delta_interval = 10

Let’s explore how I make use of each of these!

sp_help & sp_helptext

I use these two SQL Server built-in stored procedures on an almost daily basis. They’re extremely useful while in the midst of code, to check aspects of objects. How do you make use of it? Simple! All you have to do is highlight the object in question, then hit your Keyboard Shortcut!

3_sp_help

Using sp_help, I can quickly peruse all available columns in a given object, double-check their datatypes, or take a quick glance at what foreign keys and constraints are in place.

4_sp_helptext

With sp_helptext, I can quickly scan the contents of a view or stored procedure, when I don’t want the hassle of finding it & script it out via the Object Explorer.

sp_SQLSkills_SQL20xx_helpindex

SQL Server comes with a built-in stored procedure: sp_helpindex. sp_help also returns index information about a table. However, they don’t return everything. When I’m query tuning and checking underlying indexes, I need to know about INCLUDE columns. That’s where Kimberly Tripp’s sp_helpindex rewrite comes in.

5_sp_sqlskills_helpindex

Used in the same fashion as sp_help & sp_helptext, I now have in-depth index information available at my fingertips!

sp_whoisactive

“Hey, why’s the server running slow right now?” Every time I hear that question, Adam Machanic’s sp_whoisactive is the very first thing I always run. If you don’t use this tool already, read more about it on Adam’s blog and install it NOW!

While you can run it without parameters, I like having some additional data points available to me, which require parameters. As you can see from the above command list, that’s a heck of a lot to memorize and re-type, so I’ve mapped that to Control-7.

tempdb.dbo.sp_help

If you’re like me and work with a temporary tables regularly, you’ll notice that the usual sp_help shortcut does not work. Not having sp_help information conveniently available for temporary tables is rather obnoxious, hence this particular Query Shortcut.

6_sp_help_temptbl-1
Executing sp_help against a temporary table, in a user database context, returns an error.

6_sp_help_temptbl-2
But with a modfication to execute from tempdb, we can get our sp_help data again!

Now I can have the same sp_help functionality and convenience with my temporary tables!

sp_helpExpandView

My final Query Shortcut executes my custom tool sp_helpExpandView. Used in the same way as sp_help, I can quickly reference underlying objects of a view. If you have to deal with untangling nested views, I would encourage you to check it out!

That’s it for my SQL Server Management Studio Keyboard Shortcuts. I hope you all found this insightful. If there are any Defaults that you like to change in SSMS, please feel free to share in the comments. Thanks for reading – until next time!

Invitation to T-SQL Tuesday #68: Just Say No to Defaults

TSQL2sDay150x150
Welcome to another edition of T-SQL Tuesday! Started by Adam Machanic (b|t), this is the SQL Server community’s monthly blog party, where everyone is invited to write about a common topic.

I am honored to be your host this month. This month, I’d like to ask everyone to blog about SQL Server Defaults. While SQL Server CAN be run with just the default settings, doing so is far from ideal. As we progress through our careers, many of us build lists of things we change. Let’s blog about those! And don’t think this month’s topic is constrained to just the SQL Server engine. SSIS & SSAS are absolutely fair game as well. SQL Server developer tools – sure! Want to take a different spin on “defaults,” go right ahead and be creative!

Need Ideas?

Do you have a checklist of “always change” settings? Blog about that!
Do you have a preferred method for mass-deploying your changes? Blog about that!
Do you have a specific default setting you ALWAYS change? Deep dive & blog about that!

Want to Participate?

  1. Write a blog post about the topic. Don’t have a blog? Start one!
  2. Include the T-SQL Tuesday Logo and link it back to this post.
    TSQL2sDay150x150
  3. Publish your blog post Tuesday, July 14, between 00:00 GMT & 23:59 GMT.
  4. Leave a reply below with a link to your blog post (for the round-up).
  5. Share you post with the community! Tweet it out using the #tsql2sday hashtag!

Let’s have some fun! I’m looking forward to everyone’s contributions & learning something new!

Post 24 Hours of PASS & Other Speaking Engagements

24 Hours of PASS

Last week, I had the thrill and honor of presenting for 24 Hours of PASS. I presented a shortened version of my successful Every Byte Counts: Why Your Datatype Choices Matter session and had a blast.

While I’ve presented this session in person a number of times, I faced some new challenges this time. First, I was presenting a new, shortened version (the original has grown to 70 minutes of content!). The second challenge was presenting online – a much bigger challenge than one might think. I had no crowd to feed off of. Additionally, I had to consciously remember to make eye contact with my webcam, instead of looking at my slides. Finally, I had picked up a head cold the week prior. 30 minutes before my start, my nose decided to start running, so I had to excuse myself a few times to tend to that. A little embarrassing & irritating, but I suppose it’s no different than presenting in person. After all, the show must go on!

Despite the challenges, it was an amazing experience. I was honored to have been given the opportunity and want to thank everyone who worked hard to put another successful 24 Hours of PASS together.

Here is Matt Penny’s (@salisbury_matt) Sketchnote from my session.

PASS Summit

On another note, I also received notice last week that I was not accepted to speak at PASS Summit. I wasn’t upset about this. After all, almost 900 abstracts were submitted, of which only a 15% were accepted? While I know that my Every Byte Counts session is useful information, and COULD be Summit quality, it is also a niche topic that given the volume of other submissions, would probably lose out. And it did, but I’m okay with that. I will not be dissuaded from speaking or submitting, and am still proud to be part of this community!

What Next?

So what’s next? Last week, I was also accepted to speak at SQL Saturday Indianapolis! I’m thrilled to be making my return to Indianapolis & joining a great group of presenters. Additionally, I will be presenting remotely to the Las Vegas User Group. This will be the first time I’ve done a remote User Group session, but I’m hoping that this will be the first of many! And finally, I just submitted for SQL Saturday Minnesota!

Keep on Talking!

Tags

, ,

I’m happy to share that my SQL Presentation spree for 2015 is going strong! I wanted to highlight when/where I’ll be presenting again, in the next month.

SQL Saturday Iowa

After several years of conflicts, I’m thrilled to finally be attending SQL Saturday Iowa! I will be debuting a revised version of my Every Byte Counts presentation. The original version of the session had grown to 70 minutes of content and I needed to compress it to fit 60 minute speaking slots.

FoxPASS

My good friend Jes Borland (b|t) runs FoxPASS and I’ll be making the trek up there to present! This will be the second time I am presenting my other session: Cleaning House: The Indexing Edition. I had a lot of fun with it at MadPASS, so am looking forward to giving it again.

You can watch online too! Lync info is available on the FoxPASS website.

24 Hours of PASS

I am without words to describe how I feel about 24 Hours of PASS. I’ve been watching these semi-annual webinar events for years now, and now I get to present in one! I’m thrilled to be joining a fantastic line up of speakers. I will be presenting my Every Byte Counts session

Three presentations over the course of the next month – wow, that’s a lot! Nevertheless, I’m jazzed to share what I’ve learned. Hope to see you all soon!

T-SQL Tuesday #66: Monitoring In Development Is Important Too!

Tags

,

TSQL2sDay150x150

Welcome back to another edition of T-SQL Tuesday. This month’s edition is hosted by my good friend Cathrine Wilhelmsen (b|t). Her topic of choice is “Monitoring.”

When the topic of monitoring arises, the focus almost universally shifts to Production environments. But as a developer, I would like to give Development environments some monitoring love as well.

Dev: “Monitor Dev? HAHAHA! Why do we care what’s happening in Dev?”

How many times have you been working on something and its performance is less than stellar? Perhaps you’re refactoring a legacy chunk of code and contrary to your expectations, your re-write is running dog slow. Or you’re working away in a shared Dev environment and suddenly queries that had taken mere seconds are now taking their own lunch break before coming back with resultsets?

Dev: “Okay, what should we watch for?”

Well, some of the metrics that are mission-critical to a Production environment may not have such a high priority in an Development environment. Perhaps you don’t care as much about about CPU spiking to 100%, because your Dev environment has fewer & less powerful CPUs than your Production hardware? Of course that hardware will be stressed more easily.

But here’s some things that you may still want to keep an eye on. How about blocking, especially in a shared environment? I’d really like to know that Fred’s new routine was written in a way that it unexpectedly takes exclusive table locks all over my database, and interfering with the rest of the development team. Better to find it causing trouble in Dev than Prod, right?

How about wait stats? If you’re working on a poorly performing chunk of code, and your Dev SQL Server is waiting on something, chances are good that your code will cause your Prod SQL Server to suffer some similar waits.

Dev: “Yeah, I can see how that kind of information can be useful. But how should we monitor?”

There are a wide variety of tools out there, both DIY and 3rd party vendor. Do you already have a product that you use to watch Production, that you could also use to watch Development? Talk to your DBAs about making use of it.

Want to roll your own solution? That’s easy too! Read up on how to baseline your SQL Server – Erin Stellato’s Baselines Series is a fantastic place to start! Leverage SQL Agent Jobs in conjuction with different diagnostic scripts like Glenn Berry’s Diagnostic Scripts, and save that data off to a table periodically for analysis.

Dev: “Huh, there’s some cool stuff in there!”

Absolutely! Be creative and do what makes sense for your enterprise and application.  Remember, the sooner you learn about a problem, the sooner you can deal with it before it becomes a fire – even in Development!

Follow

Get every new post delivered to your Inbox.