<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9630305</id><updated>2011-11-09T08:25:45.455-05:00</updated><category term='Random'/><category term='Tai Chi'/><category term='Productivity'/><category term='Social'/><category term='Games'/><category term='Learning'/><category term='SQL'/><category term='Parenting'/><category term='Tech'/><category term='Skepticism'/><category term='Quizzes'/><category term='Comment Policy'/><category term='T-SQL'/><category term='Employment'/><category term='Fiction'/><category term='Science'/><category term='Quickies'/><category term='Health'/><category term='everything'/><category term='CbusPASS'/><title type='text'>Geek Sandwich</title><subtitle type='html'>We're Watching You. (-.(-.(-.(-.-).-).-).-)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default?start-index=101&amp;max-results=100'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>277</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9630305.post-8790691459165753020</id><published>2011-11-05T18:55:00.000-04:00</published><updated>2011-11-05T18:55:18.297-04:00</updated><title type='text'>A Very Productive Day</title><content type='html'>I had three successive dreams in a row last night, where I was horribly late for my first day on the new job. Do you think my subconscious is trying to warn me of something?&lt;br /&gt;&lt;br /&gt;So when I finally did get up, I resolved to get as much work done today as possible. K had a meeting to go to this morning, so I got the breakfast dishes cleaned up. I put out the kitchen trash, I mowed the back yard while E raked leaves in the front. After that, we all had a little apple snack. I bagged the leaves in the front, then K came home and we all straightened up the garage together.&lt;br /&gt;&lt;br /&gt;Finally, in the afternoon, H and I took a trip to the local Meijer and picked up a few things. One of which was a shaving brush that I had been thinking about getting for a while. I used one a while back, when I was experimenting with different shaving methods for my face and head. I have now found a shave cream that I really like, and wanted to try it with a brush. Sadly, the first attempt was a bit of a failure. The brush had loose bristles, and felt very coarse on my face. However, I'm going to; first, give it a few shaves to see if it starts to soften up and second, remember that you get what you pay for. (It was the cheapest one, after all.)&lt;br /&gt;&lt;br /&gt;I haven't had a day like this in some time - just haven't had the energy for it. I may have been just the teeniest, tiniest bit depressed about the job situation. &amp;nbsp;However, that's all been settled, and I feel really good about what I got done today, as well as a few other things that are going on:&lt;br /&gt;&lt;br /&gt;I applied to a certain software company a while back, one of the few I would seriously consider relocating for. My app was rejected, but I ended up in a really nice email conversation with the person who reviewed it, who told me to keep them in mind if my skill set changes. I may just do that. It was a refreshing change from the standard HR brush off.&lt;br /&gt;&lt;br /&gt;Ba-Con has invited me back to their convention again this year, to do one or more of my Skeptic's sessions. I don't know how much material they need yet, but I'm really looking forward to going back. I had a lot of fun last year and met up with the Airship Archon, a really nice group of Steampunk folks. I'm also considering working up a new presentation for this year, which will involve me overdosing on sleeping pills! (It's a homeopathy demonstration, so don't sweat it. I'll be fine. Trust me.)&lt;br /&gt;&lt;br /&gt;I'm considering going back to podcasting. I'm waiting to see if a project I've been invited to participate in pans out, but if not, I'll probably start my own. I had an enjoyable run on CORICast, but it didn't end up being a long term project. A new one, if I would do that, would be mostly science, tech, games, and maybe some philosophical meanderings. Which is short for me talking about stuff that interests me. It needs a format and some work, but who knows, maybe someone other than myself would want to listen to it. :-)&lt;br /&gt;&lt;br /&gt;In short, I see a lot of opportunities opening up for me right now. It would be foolish not to take advantage of them. Let's see what happens.&lt;br /&gt;&lt;br /&gt;Thanks for reading.&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8790691459165753020?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8790691459165753020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8790691459165753020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8790691459165753020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8790691459165753020'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2011/11/very-productive-day.html' title='A Very Productive Day'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6699538614541068688</id><published>2011-11-04T10:47:00.003-04:00</published><updated>2011-11-04T10:47:55.900-04:00</updated><title type='text'>Single Point of Failure.</title><content type='html'>Yesterday, on Twitter, I asked for suggestions on a voice recorder for use on car trips. I tend to drive a lot by myself and I think out loud, which is really just talking to yourself, and tends to keep other motorists away. I have a phone that has a voice recorder function on it, but it's limited to 1 minute. It's really only meant for short notes, and since it takes 9&amp;nbsp;clicks (I checked) to record a voice memo, it's not really usable in the car. I'm a distracted enough driver as it is. I don't need the additional mess of playing with my phone en route. So, I was thinking of a decent, not top-of-the-line, but serviceable, one-button or voice activated voice recorder, that I could use while on the road. I figure at least a few other tweeps might have had some experience with them, so I put it out to the twitterverse.&amp;nbsp; I got about 4 or 5 answers back.&amp;nbsp; Every single one was, "Use your smartphone."&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I am not, and have never been a fan of all-in-one solutions. I remember when some of the first MFDs (Multi-Function Devices) came out.&amp;nbsp; Then you could scan/print/copy/fax... all from one machine.&amp;nbsp; It was a nice idea for small business owners, but the bundled convenience came with a price.&amp;nbsp; The scans were dirty and low-res, as were the copies.&amp;nbsp; Printing was horribly slow, and faxing was hit or miss.&amp;nbsp; What you got in convenience, you lost in quality.&amp;nbsp;These things have improved over time, of course, but I still see the same pattern today. Specialized machines do their job very well, but multi-taskers tend to do things poorly. Jack of all trades, master of none. &lt;br /&gt;&lt;br /&gt;In the&amp;nbsp;case of the voice recorder, when you have a phone, camera, gps, voice memo and internet device, etc. if the phone breaks, you still have the rest, but if you do everything from your phone, then when that goes South, as mine has in the past, you lose all of that functionality.&amp;nbsp;It creates a single point of failure. We strive to avoid this in our complex enterprise systems, so why do we accept it with our phones? I would rather have the relatively minor inconvenience of carrying around a small series of devices, than putting all my eggs in one basket, and losing everything in one move. &lt;br /&gt;&lt;br /&gt;So... can anyone recommend a voice recorder?&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;-David.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6699538614541068688?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6699538614541068688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6699538614541068688' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6699538614541068688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6699538614541068688'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2011/11/single-point-of-failure.html' title='Single Point of Failure.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-599364937155342437</id><published>2011-11-03T07:01:00.000-04:00</published><updated>2011-11-03T07:01:30.601-04:00</updated><title type='text'>A Portal 2 Hypothesis</title><content type='html'>&lt;br /&gt;Yeah, yeah, spoilers and all that... Seriously, if you haven't played it by now...&lt;br /&gt;&lt;br /&gt;So here's my idea - GLaDOS was based on Caroline, right? They ("they" being the scientists at Aperture Labs) physically used Caroline as a basis for the AI that became GLaDOS.&lt;br /&gt;&lt;br /&gt;Well after finishing the game for the umpteenth time the other day, I was listening to Wheatley's little speech at the end, where he expresses what I thought to be regret for treating Chell so poorly, and it struck me that the same speech could equally have come from Cave Johnson, expressing the same to Caroline.&amp;nbsp; See where I'm going with this?&lt;br /&gt;&lt;br /&gt;Wheatley is based on Cave Johnson.&lt;br /&gt;&lt;br /&gt;Now, there are a couple obvious problems with this.&amp;nbsp; The first is that Wheatley displays almost NONE of Cave's overbearing personality for most of the game.&amp;nbsp;Only when he's in complete control does the Machiavellian nature come forward. Also, Wheatley seems to be unable to plan more than a couple feet ahead of himself, not even really know where he is half the time.&lt;br /&gt;&lt;br /&gt;This kind of makes sense to me, though. What would Cave do if he were not only in control of Aperture, but had to actually do the work, as well?&amp;nbsp;Would he be as effective as possible? Or, would he be all talk and no real substance? Let's be honest, Cave's one contribution was to throw out endless streams of terrible ideas, and through monetary pressure, make the scientists bring those to life. &lt;br /&gt;&lt;br /&gt;"Endless stream of terrible ideas..." - See where this is headed?&lt;br /&gt;&lt;br /&gt;In addition, consider this: You're a scientist at Aperture. You've had to deal with Cave's idiocy, or at least the legacy thereof,&amp;nbsp;pre-recorded messages and such... Now you're tasked with building the dumbest moron that ever lived. Anybody spring to mind?&amp;nbsp; I would think your idiot boss would be the obvious choice. And even though Cave died before they would have been able to use any physical part of him, it's not beyond imagination that the pre-recorded messages could have somehow been used to pattern the AI.&lt;br /&gt;&lt;br /&gt;Like all hypotheses, this is speculation at the moment, but I think the idea merits some exploration. I think I need to play again, and pay more attention to Wheatley's dialogue. The Cave is in the details, so to speak.&lt;br /&gt;&lt;br /&gt;Thanks for reading.&lt;br /&gt;-David.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-599364937155342437?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/599364937155342437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=599364937155342437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/599364937155342437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/599364937155342437'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2011/11/portal-2-hypothesis.html' title='A Portal 2 Hypothesis'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8834852499777808861</id><published>2011-10-25T06:53:00.002-04:00</published><updated>2011-10-25T06:54:54.579-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Learning'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Learning on the Job (Hunt).</title><content type='html'>For those of you not following me on any of the various social media sites I frequent... (see the sidebar to the right, and come say Hello! :-) ) ...I finally managed to end my job search. Not only did I get a position that offers decent benefits and training, but it's also 5 minutes from my house, cutting my daily commute time, not to mention gas usage,&amp;nbsp;to a fraction.&amp;nbsp; That's a lot better than some of the positions I was looking at, which were over 3 hours away. Not that I had anything against relocating, I just wasn't exactly looking forward to it. :-)&lt;br /&gt;&lt;br /&gt;Now that's not to say that I didn't learn several things from the interview process.&amp;nbsp;I interviewed with several recruiters, managers, techies, and HR folks, and in each case, I learned something new.&amp;nbsp;So much so within the last year or so, I'm thinking of putting a presentation together on it. (Along with a few other presentation ideas I have, both SQL and non-SQL related.) Sometimes teaching is the best way to learn.&lt;br /&gt;&lt;br /&gt;In the end, while I'm not happy that my career plans of 6 months ago worked out as intended, I'm glad I had the experience. As DBAs, learning is what we do, and there's a lot to be learned from adversity.&lt;br /&gt;&lt;br /&gt;Thanks for reading.&lt;br /&gt;-David.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8834852499777808861?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8834852499777808861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8834852499777808861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8834852499777808861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8834852499777808861'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2011/10/learning-on-job-hunt.html' title='Learning on the Job (Hunt).'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3170885019224294910</id><published>2011-09-20T21:38:00.000-04:00</published><updated>2011-09-21T21:13:37.109-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><category scheme='http://www.blogger.com/atom/ns#' term='Learning'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>Some Thoughts on Sexism (Updated)</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;i&gt;(Scroll to the bottom for the updates.)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;This is going to be kind of a brain-dump, but I've had several posts in mind for this topic and I wanted to start writing. There's no main point I want to make here, other than "We ALL need to start trying to get along better." So don't expect a continuous, coherent string of thoughts here, but rather a running mental commentary.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Let's go back a few months, to&amp;nbsp;Indianapolis, on June 25, 2011. I'm sitting in the front row, as I always do, at the opening remarks for &lt;a href="http://www.sqlsaturday.com/82/eventhome.aspx"&gt;SQL Saturday #82 at the University of Indianapolis&lt;/a&gt;. The MC is going over some of the sessions that are being presented, and addresses the Women In Technology lunchtime panel. My memory of most of what he said is hazy, since I wasn't taking notes yet, but at one point, he began to specifically address the men in the room and said, "Remember guys, just nod, and admit you're wrong."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hold up... did he just tell all the men to give the "Yes, dear." response? Yes. Yes he did. I was floored. I'm sure it was meant in humor, but the irony was not lost on me. Since he was doing a fair amount of joking around, I considered letting it pass for now. However, just a brief moment later, the guy about two seats over from me, spoke up:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;i&gt;"So tell me, how many times during the panel are they going to change their minds about what they want?"&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I was literally too stunned to react. That and all the reactions I was mentally cataloging were needlessly violent. Really, you could do a lot of damage with a laptop if you think about it. Rather than reacting with red-hot anger, I sat on that feeling for a bit and let myself cool off. When I was done, I decided that instead of starting an argument in front of everyone, I would call for help instead. So, I tweeted.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lEJtVU91wWQ/TnkyKT5q56I/AAAAAAAAAVs/ZphrO-Rxrds/s1600/SS82Tweet.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: inherit;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-lEJtVU91wWQ/TnkyKT5q56I/AAAAAAAAAVs/ZphrO-Rxrds/s1600/SS82Tweet.JPG" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Admittedly, while this drew some attention, this was not the best thing to do. The best thing to do would have been to have spoken up immediately. I am sorry I did not. For a while, I was hesitating blogging this at all. To what extent was I justified in calling out bad behavior of others in the professional community? In fact, that's the main reason I haven't blogged a whole lot lately, because I was afraid to make waves in the SQL community. I'm pretty new here, and don't like rocking the boat.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;However, having had a good conversation about this with a couple of &lt;a href="http://twitter.com/#!/shellynoll"&gt;wonderful&lt;/a&gt; &lt;a href="http://twitter.com/#!/karlakay22"&gt;ladies&lt;/a&gt;, who I owe many thanks to, this past weekend, I am no longer afraid to do so. We need more men to speak up on this, just as the women are doing. Especially when it comes to seeing bad behavior in other men. The point was made to me that sexist men will take criticism from other men much more seriously than the same criticism from a woman.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;That said - I've got my eye on you, guys. Slip up again, and I *will* let you have it in front of everyone. I know who has my back, and trust me. You do not want to mess with any of us.&lt;/span&gt;&lt;br /&gt;Moving on, just this past week, I've seen a couple of different things I've wanted to comment on. Here's one of them.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;On Saturday, a good friend of mine&amp;nbsp;(who I always had, and always will have the utmost respect for)&amp;nbsp;posted a link on Facebook to the following article.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://curbed.com/archives/2011/09/15/ikea-tests-out-manland-a-holding-pen-for-bored-male-shoppers.php"&gt;IKEA Tests Out "Manland", a Holding Pen for Bored Male Shoppers&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I'll give you the tl;dr version - it's a play area for men, much like a play area for kids. You check them in, ladies, do your shopping, and pick them up on your way out. I was once again stunned. (Mostly because I &lt;b&gt;love&lt;/b&gt;&amp;nbsp;IKEA, and would go there just for fun any day of the week.) Then I read some of the comments in that thread:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_FKqaDaLiWo/Tnk2vw63BsI/AAAAAAAAAVw/wfELQ8BBFHU/s1600/mlcomments.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: inherit;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-_FKqaDaLiWo/Tnk2vw63BsI/AAAAAAAAAVw/wfELQ8BBFHU/s1600/mlcomments.JPG" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Sense of humor failed me, and I started to get irritated. Mostly because these are people that I like. I went to my default reaction of, "If this was about you, would it still be funny?" &amp;nbsp;So I posted the following subtle hint in return:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JByuDvXgZhY/Tnk36Vx7kMI/AAAAAAAAAV0/CZsO8p3XVjg/s1600/MyComment.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: inherit;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-JByuDvXgZhY/Tnk36Vx7kMI/AAAAAAAAAV0/CZsO8p3XVjg/s1600/MyComment.JPG" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Now I was not the first person to mention the possibility of a Woman-Land at any store. The first person to do so, however, was ignored. I was not. The comment I received in return was gone within moments of it being made. I don't know who removed it. Perhaps the person who made the comment felt bad? Maybe the OP decided it was a bit much? I don't know. But I do know that since I was subscribed to the thread, I got it in email first, and still have it.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;i&gt;"Mr. Maxwell. Women make it work with whatever they have. Men have to go out and buy something new to see if it works better. While you know I luv ya, I think your wife wears the smarts in the family."&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;While I appreciate and agree that my wife is a very intelligent woman, to say I was a bit hurt would have been an understatement. Not the least because her comment would seem to contraindicate the whole purpose of Manland in the first place. (Yes I reacted against the logic first. You can tell I'm a DBA...) And she was calling me unintelligent.&amp;nbsp;I have since considered un-friending her, and a short list of other reactions.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Then something strange happened. I calmed down. I thought to myself, "Dave - you're overreacting. I'm sure it wasn't meant the way it sounded. You're just being too sensitive about this. Relax and let it go."&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;And then, this came across my RSS reader:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://thecurrentconscience.com/blog/2011/09/12/a-message-to-women-from-a-man-you-are-not-%E2%80%9Ccrazy%E2%80%9D/"&gt;A Message To Women From A Man: You Are Not "Crazy".&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Again, the tl:dr version is this: Such phrases like, "You're over-reacting. You need a sense of humor. Don't take it so seriously." are phrases that men have been using to manipulate women into accepting their&amp;nbsp;misogynistic&amp;nbsp;behavior for a very long time. And here I was doing it to myself. I was unsettled by two things. First that I would engage in that kind of manipulation in the first place, second that I would allow myself to be manipulated. The fact that I was doing it &lt;i&gt;to&lt;/i&gt;&amp;nbsp;myself just made it that much more creepy.&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;So, I've decided that for now, I'm going to do nothing. I'm basing that on what could be a terrifically flawed assumption - the assumption that the commenter removed her post because she decided after posting it, that it was out of line. I'll give her the benefit of that doubt for now, and let it slide, but again, I'm keeping my eye on her. I'm far less forgiving with the second insult than I am with the first.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I guess if I were to take a stab at what would be an over-arching thesis for this rant (and thank you for getting this far), it would be this: Sexism is wrong. &amp;nbsp;That's it. Plain and simple. It doesn't matter who we're being sexist against, or what their gender is. Whether it's "Honey, you need to relax and not be so dramatic.", or "Dude, you need to man up and get over it.", it's wrong, and I'm done.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Thanks for reading.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;-David.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Updates:&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I often announce new posts on &lt;a href="http://twitter.com/#!/dmmaxwell"&gt;Twitter&lt;/a&gt; and &lt;a href="http://www.facebook.com/dmaxwell"&gt;Facebook&lt;/a&gt;, and now &lt;a href="https://plus.google.com/111771149834380481515/about"&gt;Google Plus&lt;/a&gt;. Hence, not all comments I receive are posted on this blog. I got a couple on Facebook that I thought were very good, and got permission to re-post them here:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Christine writes:&amp;nbsp;Interesting to read. I must admit that following a semi-militant (I could find surpressing, hidden messages in almost anything) post LHS decade, I've become more relaxed on this topic and can often even laugh at the men vs. women jokes. And although I'm actually content now - I'm confident enough to just do my thing and know when someone's horizon can be widened and when it's not worth it - it was good for me to read this. Just a reminder to occasionally still look through my sexism detection glasses to also help / not hurt others.&amp;nbsp;Even though I (think I) am not susceptible to such subtle comments there is still a general obligation. Such as when a man speaks up for sexist comments towards women (and vice versa). Thx Dave&lt;br /&gt;&lt;br /&gt;Katie writes: [...] I was at work, literally, yesterday when I answered the phone normally with "Thanks for calling N.O. Geek Squad, how can I help you?" The gentleman on the other end of the line said, and I quote: "Holy crap is this a female geek??" I rolled my eyes for what it was worth to myself since he couldn't see it and said "Yes sir it is, what can I help you with?" He then responded with "Do they let you drive the little bug around to people's houses and stuff?" I bit my tongue because my first reaction to these kinds of comments is still the sarcasm/amusement route. I almost responded with a "No silly, I'm a woman, of course they don't let me drive their car anywhere.", but instead went with "No sir, I have the privilege of working in the unit's at the store, now what can I do for you?" He then started with a "I don't know if you'll know this but..." and then asked his questions which thankfully I had an answers for. I tell myself all the time that it's ignorance that breeds such comments and you can't put the burden of correcting the willfully ignorant on yourself, but it still makes me feel a LOT of pressure at work sometimes. I still consider myself a novice in the Tech field, but when I see male customers begin to question my skills before I've even had a chance to know what they need, my first reaction is a bit of annoyance followed by a huge strike of nervousness. I try to help people at work first, and then if I don't know the answer I'll find someone else to help them. However, when I start with a "I'd be happy to help the next person in line." and he opens with the comment "I should probably wait for one of these gentleman over here." and points to my male coworkers, I now feel disadvantaged. Because now I know that if I don't know the answer, they think it's because I'm a women, and not for any other reason. So I now have a decision to make: A: Further my knowledge by attempting to help him, and if I can't misrepresent women everywhere as generally less intelligent. (Not saying this is true, but it would most likely be the customer's perception afterwards.) Or B: Sacrifice the opportunity to learn something and let him wait for whoever he wants to talk to. I usually take the customer for myself anyway because my mentality shifts to the route of "I'm not going to let someone who made some sexist ignorant comment be the reason I didn't get to learn something new today." but it still sucks on some level that I have to feel through that quick though process anyway. I try to remind myself that though I'm incredibly proud to be a woman, I am not the ambassador for women in technology everywhere. That I represent myself first and foremost as a person, and that my occupation is to fix people's computers, not their ignorace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3170885019224294910?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3170885019224294910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3170885019224294910' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3170885019224294910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3170885019224294910'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2011/09/some-thoughts-on-sexism.html' title='Some Thoughts on Sexism (Updated)'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-lEJtVU91wWQ/TnkyKT5q56I/AAAAAAAAAVs/ZphrO-Rxrds/s72-c/SS82Tweet.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5823858452201023380</id><published>2011-09-18T21:33:00.003-04:00</published><updated>2011-09-18T21:41:07.662-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><category scheme='http://www.blogger.com/atom/ns#' term='Employment'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>To Move or Not To Move?</title><content type='html'>If you follow &lt;a href="http://twitter.com/#!/dmmaxwell"&gt;me on Twitter&lt;/a&gt;, (like you should), then you've already heard that I'm looking for employment again. &amp;nbsp;What's different this time is that I'm not leaving on my own terms, but because I'm being forced. My client has decided to outsource their entire department, and I've got no choice but to go find something else.&lt;br /&gt;&lt;br /&gt;One of the hurdles I've run across in this search is that many of the leads I've been gifted with so far are in locations out of state. I'm based in Columbus, Ohio. So far, the one local lead I'm interested has seemed to have stalled. I'm on limited time, and I'm not quite patient enough to wait six months to find out if people are interested. I've so far talked to potential employers in Michigan, Illinois and Indiana. All three sound like good jobs, but the logistics of moving are very daunting. I even recently turned down an offer from a friend to help me in my search, because the job may be in North Carolina. It hurt to do that, but... that's really far...&lt;br /&gt;&lt;br /&gt;So, my question to you is, have you ever relocated for a job? What issues did you find with that? Did you have a family to move? A house to sell? Also, if you live in one state, and work in another, what issues do you see from that arrangement?&lt;br /&gt;&lt;br /&gt;Any input is welcome, and appreciated. &amp;nbsp;Thanks!&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5823858452201023380?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5823858452201023380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5823858452201023380' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5823858452201023380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5823858452201023380'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2011/09/job-searching.html' title='To Move or Not To Move?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-547248718105431011</id><published>2011-04-18T12:54:00.000-04:00</published><updated>2011-04-18T12:54:13.577-04:00</updated><title type='text'>Find a Stored Procedure by Text.</title><content type='html'>This is a response to &lt;a href="http://twitter.com/damagedwoods"&gt;@damagedwoods&lt;/a&gt;. It's a script that searches through all stored procedures for a given text string. It's clunky, of course, and basically just parses each sp name through sp_helptext and searches the results for text. &amp;nbsp;It's not very fast, but it does it's job. Hope you find it useful. &amp;nbsp;If not, I'd recommend&amp;nbsp;&lt;a href="http://www.red-gate.com/products/sql-development/sql-search/"&gt;SQL Search by Red Gate&lt;/a&gt;. &amp;nbsp;It's free, and works even better.&lt;br /&gt;&lt;br /&gt;Script Ahoy!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;/* Find stored &lt;span class="kwrd"&gt;procedure&lt;/span&gt; &lt;span class="kwrd"&gt;by&lt;/span&gt; text string */&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;  @SearchString &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(4000), &lt;span class="rem"&gt;-- The text to search for&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;  @ProcName &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(500), &lt;span class="rem"&gt;-- The name of the proc we're checking.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;  @ErrorMessage &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(4000) &lt;span class="rem"&gt;-- Error placeholder.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; @SearchString = (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="str"&gt;''&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; OBJECT_ID(&lt;span class="str"&gt;'tempdb.dbo.#Search'&lt;/span&gt;)) &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;DROP&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; #&lt;span class="kwrd"&gt;Search&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; OBJECT_ID(&lt;span class="str"&gt;'tempdb.dbo.#Results'&lt;/span&gt;)) &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&lt;span class="kwrd"&gt;DROP&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; #Results&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; OBJECT_ID(&lt;span class="str"&gt;'tempdb.dbo.#ProcList'&lt;/span&gt;)) &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&lt;span class="kwrd"&gt;DROP&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; #ProcList&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; #ProcList ( &lt;span class="rem"&gt;-- The list of procedures to search.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;  [Name] &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(500)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; #&lt;span class="kwrd"&gt;Search&lt;/span&gt; ( &lt;span class="rem"&gt;-- A place to search them.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;  ProcName &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(500),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;  TextLine &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(4000)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; #Results ( &lt;span class="rem"&gt;-- The place to put the results.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;  ProcName &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(500),&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;  TextLine &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(4000)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; @ErrorMessage = (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;) &lt;span class="rem"&gt;-- No errors yet...&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; @SearchString) &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt; &lt;span class="rem"&gt;-- You forgot to put in a search string.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;  &lt;span class="kwrd"&gt;SET&lt;/span&gt; @ErrorMessage = (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="str"&gt;'You did not provide anything to search for'&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;  &lt;span class="kwrd"&gt;GOTO&lt;/span&gt; EXITPROC &lt;span class="rem"&gt;-- Fatal Error.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;&lt;span class="rem"&gt;-- Get the list of procedures to search from dbo.sysobjects.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;&lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; #ProcList&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;  &lt;span class="kwrd"&gt;SELECT&lt;/span&gt; [Name] &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;  &lt;span class="kwrd"&gt;FROM&lt;/span&gt; dbo.sysobjects&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;  &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; xtype = &lt;span class="str"&gt;'P'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;&lt;span class="kwrd"&gt;WHILE&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;COUNT&lt;/span&gt;(*) &lt;span class="kwrd"&gt;FROM&lt;/span&gt; #Proclist) &amp;gt; 0 &lt;span class="rem"&gt;-- Still have procs to check...&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;  &lt;span class="kwrd"&gt;SET&lt;/span&gt; @ProcName = (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;TOP&lt;/span&gt; 1 [Name] &lt;span class="kwrd"&gt;FROM&lt;/span&gt; #Proclist)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;   &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;  &lt;span class="kwrd"&gt;BEGIN&lt;/span&gt; TRY&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;    &lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; #&lt;span class="kwrd"&gt;Search&lt;/span&gt;(TextLine)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;    &lt;span class="kwrd"&gt;EXEC&lt;/span&gt; dbo.sp_helptext @ProcName &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;   &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;    &lt;span class="kwrd"&gt;UPDATE&lt;/span&gt; #&lt;span class="kwrd"&gt;Search&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;    &lt;span class="kwrd"&gt;SET&lt;/span&gt; ProcName = @ProcName &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;    &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; ProcName &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;  &lt;span class="kwrd"&gt;END&lt;/span&gt; TRY&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;  &lt;span class="kwrd"&gt;BEGIN&lt;/span&gt; CATCH&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;  &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;    &lt;span class="kwrd"&gt;SET&lt;/span&gt; @ErrorMessage = (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; ERROR_MESSAGE() + &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;    &lt;span class="str"&gt;'  --  Unable to get text for procedure '&lt;/span&gt; + @ProcName) &lt;span class="rem"&gt;-- It could happen...&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;  &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;  &lt;span class="kwrd"&gt;END&lt;/span&gt; CATCH &lt;span class="rem"&gt;-- Non-fatal. Keep going.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;   &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;  &lt;span class="kwrd"&gt;DELETE&lt;/span&gt; &lt;span class="kwrd"&gt;FROM&lt;/span&gt; #ProcList &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;  &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; [Name] = @ProcName &lt;span class="rem"&gt;-- Done with that one.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;&lt;span class="rem"&gt;-- Gather the results into another table, suitable for display.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;&lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; #Results (ProcName, TextLine)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; ProcName, TextLine &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; #&lt;span class="kwrd"&gt;Search&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; TextLine &lt;span class="kwrd"&gt;LIKE&lt;/span&gt; &lt;span class="str"&gt;'%'&lt;/span&gt; + @SearchString + &lt;span class="str"&gt;'%'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;COUNT&lt;/span&gt;(*) &lt;span class="kwrd"&gt;FROM&lt;/span&gt; #Results) = 0 &lt;span class="rem"&gt;-- No results.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;  &lt;span class="kwrd"&gt;SET&lt;/span&gt; @ErrorMessage = &lt;span class="str"&gt;'Specified search string was not found.'&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;  &lt;span class="kwrd"&gt;GOTO&lt;/span&gt; EXITPROC &lt;span class="rem"&gt;-- Fatal error.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; * &lt;span class="kwrd"&gt;FROM&lt;/span&gt; #Results &lt;span class="rem"&gt;-- Display what we have.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;EXITPROC:&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; @ErrorMessage) &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;  &lt;span class="kwrd"&gt;RAISERROR&lt;/span&gt;(@ErrorMessage,16,1)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;END&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-547248718105431011?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/547248718105431011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=547248718105431011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/547248718105431011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/547248718105431011'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2011/04/find-stored-procedure-by-text.html' title='Find a Stored Procedure by Text.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-2123650175689551035</id><published>2011-04-05T07:27:00.000-04:00</published><updated>2011-04-05T07:27:19.215-04:00</updated><title type='text'>SQL Saturday 67</title><content type='html'>&lt;div&gt;On one hand, it's disappointing that I only seem to update this blog lately due to very significant events. On the other hand, the fact that the two most recent significant events were SQL Saturdays, is awesome. :-) &amp;nbsp;I'm going to use the same format as last time, since it worked well for me.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Morning&lt;/b&gt;&lt;/div&gt;&lt;div&gt;To say that my morning was long would be an understatement of epic proportions. The night before, I had been out grooving to my brother in law's Rush cover band, 2112. (Which, by the way, is the best one I've heard in quite some time.) I didn't actually get to sleep until about midnight or so, with an alarm set for 2:30. I figured I've been running on the Very Little Sleep program for some time now, so it shouldn't make much of a difference, and I was right. All I needed was a quick shower and shave to wake me up, and I was on the road by 3:15 AM. &amp;nbsp;The only difficulty I had during the trip was at a travel stop outside of South Bend, Indiana, where the cup carrying my sweet tea disintegrated in hand. Tea everywhere. &amp;nbsp;Outside of that, and my 'slot car' style driving on the Chicago Skyway, which was actually kind of scaryfun, the trip was uneventful. &amp;nbsp;One advantage I had forgotten about was the time zone change. &amp;nbsp;I had timed my departure so that I would be just on time for the first session, unfortunately missing most of registration and the opening spiel. &amp;nbsp;Luckily, I was just on time for registration, so I was happy with that. &amp;nbsp;I got to briefly see a familiar face or two, and meet a few new ones in real life for the first time, further reinforcing the idea that I tweet with some good people. :-) &amp;nbsp;Speaking of which, I should really update my link list over there...&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session 1: Policy Based Management with PowerShell. - Allen White (&lt;a href="http://twitter.com/sqlrunr"&gt;@sqlrunr&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I know just enough about PowerShell to be aware of how little I know about PowerShell. I decided to keep my mouth shut when Allen asked if anyone needed the 'intro to PowerShell' portion of his presentation. I can research that stuff on my own, on my own time. &amp;nbsp;What I really wanted to get to was how this related to PBM. I wouldn't call what I have here a very large environment, but there's enough that a centralized management system would be very helpful. I'd been looking at the EPM Framework documents lately, and it seemed like this session would be a good supplement to that. &amp;nbsp;I was very pleased with the presentation, both in terms of content, and style. &amp;nbsp;Allen has a good delivery and is obviously knowledgable about his content. &amp;nbsp;p.s.: Allen, if I looked like I was nodding off during your presentation, I will admit I was tired, but I was indeed listening to everything you said. :-)&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;Major Take-Away: PBM is easily automated - so just do it.&lt;/div&gt;&lt;div&gt;Research Point: Bone up on PowerShell. It's the new black.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session 2: What to do when it all goes wrong. - Dave Levy (&lt;a href="http://twitter.com/dave_levy"&gt;@dave_levy&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;We all deal with a fair amount of emergency, outage, and disaster scenarios in our lifetime as technology specialists. &amp;nbsp;Knowing what to do and how to handle things before hand is invaluable for several reasons, not the least of which is looking good (read: experienced). &amp;nbsp;While I was familiar with some of the things Dave described in his presentation, there were a few new wrinkles to me that, as luck would have it, I was able to put to use immediately on Monday morning. (Lucky being a relative position, there...) &amp;nbsp;Most importantly was the idea of proving that an issue was yours to handle, as opposed to proving it wasn't. &amp;nbsp;I saw two examples of that yesterday. &amp;nbsp;In the first, I suspected that the issue was elsewhere, but I went about troubleshooting it as mine anyway. It wasn't my issue to fix, but we resolved things quickly, and as a side bonus, I was able to clean up a couple configurations that I wanted to, anyway. &amp;nbsp;In the second case, while I was pretty sure I could troubleshoot things effectively, I was directly told that, "This isn't a database issue - don't spend any time on it, because we need you doing other things." &amp;nbsp;OK, but with my mad Profiler skillz, I could have saved you about 6 hours of troubleshooting... &amp;nbsp;Turns out they were right, but working together, I think we could have resolved it faster.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;Major Take-Away: Don't be afraid to own an issue. If it's yours, you look responsible. If not, you look helpful. No downsides to that.&lt;/div&gt;&lt;div&gt;Research Point: Get with my boss and come up with a work plan for future outages / issues, so we're not just running around theorizing.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;Lunch: I went to the car and napped. &amp;nbsp;Major Take-Away: Driving really is tiring. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session 3: Index Black Ops - Jason Strate (&lt;a href="http://twitter.com/stratesql"&gt;@stratesql&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Indexes are , in my opinion, one of the most inportant things for a DBA to understand. &amp;nbsp;So I was pleased as punch to be at Jason's talk. &amp;nbsp;Really what it was, was a thorough examination of the DMF sys.dm_db_index_operational_stats. &amp;nbsp;I do like my talks on the technical side, and the advantage of something like this, is that I can begin putting it to use first thing on Monday morning. &amp;nbsp;This was the only presentation, though, I had some issues with. &amp;nbsp;I think Jason will admit that the demos he had didn't go well, and I would say he handled the difficulties well, but not the same way I would have handled them. &amp;nbsp;I've done a bit of presenting, and if I have something in a presentation that doesn't go right, I don't spend time fixing it. &amp;nbsp;I suppose it may be different when presenting SQL than when presenting Skepticism topics, though I would think each audience can be equally unforgiving. &amp;nbsp;Both audiences have people with laptops fact checking you during your presentation, I suppose. &amp;nbsp;Still, I would call less attention to the gaffes. &amp;nbsp;Despite all that, this was yet another excellent presentation and gave me more material to work with.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;Major Take-Away: Need to add the sys.dm_db_index_operational_stats to my stats gathering scripts, to supplement the missing index / index usage stats.&lt;/div&gt;&lt;div&gt;Research Point: What other DMVs/DMFs should I be gathering from?&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session 4: Partitions, Filegroups, and Files - Brent Ozar (&lt;a href="http://twitter.com/brento"&gt;@brento&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I think most people will agree that Brent gives an excellent presentation, so I'm only going to say one stylistic thing about his presentation. It was clear that the audience knew their stuff, and it was cool to see Brent get excited about the questions and points the audience was making. &amp;nbsp;A presentation that turns into a dialogue is usually a good one, in my experience. &amp;nbsp;I definitely learned a lot in this session. &amp;nbsp;In fact, I came out of this presentation with a bit of a laundry list of things to do, in addition to Brent's checklist of "things to do on Monday morning." &amp;nbsp;Easily my favorite presentation of the day.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;Major Take-Away: Don't cross the streams. Er... I mean, don't separate indexes and base tables into file groups - no inherent advantage. (You listening, boss?)&lt;/div&gt;&lt;div&gt;Research Point: Find out what the critical tables are to our main application and get those into a quickly restorable file group.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session 5: SQL Internals, It's what's for dinner! - Christina Leo (&lt;a href="http://twitter.com/christinaleo"&gt;@christinaleo&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The only presentation that made me want to throw my laptop. &amp;nbsp;I will explain in a moment. &amp;nbsp;I've been to a couple of internals presentations before, and was roughly familiar with how they work, but like other classes and courses of study I've engaged in, any amount of reinforcement is a good. &amp;nbsp;I really appreciated the work and originality Christina put into her analogy for the presentation, which was the art of making dinner. Each step in the process of making a meal corresponded nicely to the process a query goes through to return results. Her explanations were clear, concise, and seemed fairly well polished. &amp;nbsp;Given that she was a first time presenter, I would have expected a bit of nerves, but once she got going, everything ran pretty smoothly. &amp;nbsp;The information was useful, and I enjoyed that session very much.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;Well, almost. &amp;nbsp;And here's the only thing I didn't like about this particular SQL Saturday. &amp;nbsp;I've only been to two others, but this was the first one where I've seen participants be actively rude and argumentative towards the presenters. &amp;nbsp;Not sure if anyone else saw much of that, but in at least two presentations I was in, including Christina's, there was at least one person who I wanted to chuck a heavy object at. &amp;nbsp;To the gentleman in the rear of the room, who chose to argue about ACID properties: in the first place, you're a jerk. &amp;nbsp;In the second place, I checked, and you are WRONG. &amp;nbsp;I must, at this point, thank Christina for handling herself very well despite the rude interruption. &amp;nbsp;I'm not sure I would have been as graceful in her position.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;Major Take-Away: Need to gather more performance metrics on my log files / buffer cache.&lt;/div&gt;&lt;div&gt;Research Point: What's the momentum of a Cr-48 netbook at about 45 feet/s?&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Dinner and Karaoke:&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;After all that, I was famished, so IHOP provided ample fuel for me to continue my day. &amp;nbsp;I think I might have seen Shelly Noll (&lt;a href="http://twitter.com/shellynoll"&gt;@shellynoll&lt;/a&gt;) around there as well, but she wasn't sat in my section, so I pretty much had time to just sit and continue my note-taking. &amp;nbsp;I took a lot of notes. :-)&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;After dinner, was SQLKaraoke, which is always a favorite activity of mine. &amp;nbsp;I rehashed a couple of my favorites, (Pearl Jam's 'Even Flow' and Hoobastank's 'Crawling in the Dark'.), but finally got to hear Wendy Pastrick (&lt;a href="http://twitter.com/wendy_dance"&gt;@wendy_dance&lt;/a&gt;) sing, and was thoroughly entertained by everyone else. &amp;nbsp;The singing ability varied widely, but as I've said before - the ability to sing and your ability to do karaoke have nothing to do with each other. &amp;nbsp;The best karaoke performers I know can't sing a lick, and don't even really try to. &amp;nbsp;They just get up there and have fun with it, and I could literally listen to them all night. (And have done, I assure you.) &amp;nbsp;I only got a couple of pictures, but really enjoyed myself. &amp;nbsp;I was sorry to have to leave early, but the drive home was a long one, and I had no plans to stay in Chicago that evening. &amp;nbsp;So 13 hours in Chicago, and 12 hours on the road. &amp;nbsp;Yeah, I'd call that a full day, but worth every minute. &amp;nbsp;Looking forward to doing it again next year.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;The list of people to thank is endless. &amp;nbsp;Everyone mentioned above, plus all the volunteers and sponsors who made the event happen.&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;See you in Columbus, at &lt;a href="http://sqlsaturday.com/75/eventhome.aspx"&gt;SQL Saturday #75&lt;/a&gt;? :-)&lt;/div&gt;&lt;div&gt;&lt;br clear="none" /&gt;&lt;/div&gt;&lt;div&gt;Thanks.&lt;/div&gt;&lt;div&gt;-David.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-2123650175689551035?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/2123650175689551035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=2123650175689551035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2123650175689551035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2123650175689551035'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2011/04/sql-saturday-67.html' title='SQL Saturday 67'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-7593600717402995154</id><published>2011-02-07T22:27:00.000-05:00</published><updated>2011-02-07T22:27:46.971-05:00</updated><title type='text'>SQL Saturday 60</title><content type='html'>There were many who had a great experience at &lt;a href="http://www.sqlsaturday.com/60/eventhome.aspx"&gt;SQL Saturday 60&lt;/a&gt;. &amp;nbsp;This one is mine.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Morning:&lt;/b&gt;&lt;br /&gt;I had set my alarm for 5:00, so I'd have time for breakfast and a nice leisurely drive in. &amp;nbsp;I woke up promptly at 6:15. &amp;nbsp;Not a very auspicious start to the day, and a good thing I packed the night before. I grabbed the netbook and hit the road, managing to make it to registration right around 8:30. &amp;nbsp;Luckily, there were few cars, and fewer cops, on the road at that hour of a Saturday. I also turned 100k miles on the car as I was nearing the exit ramp. &amp;nbsp;Bonus! :-)&lt;br /&gt;&lt;br /&gt;I recognized a few people in line, and was not surprised to find a few former co-workers in line, but was surprised to find the person whom I have replaced, in my current position. &amp;nbsp;He was eager to hear how things have progressed at his old workplace, and pleased, I think, with the progress that has been made since his departure. &amp;nbsp;I was glad to see familiar faces, but eager to seek out a few new ones. &amp;nbsp;One thing I knew I wanted to do, regardless, was make a point of approaching each speaker after their session, introducing mysels, shaking them by the hand, and saying "Thank you." Many, if not all of them, have been instrumental in my success as a DBA, and I was determined to take the opportunity to say thanks.&lt;br /&gt;&lt;br /&gt;The morning pep-talk by Allen White (&lt;a href="http://twitter.com/sqlrunr"&gt;blog&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://twitter.com/sqlrunr"&gt;twitter&lt;/a&gt;), was certainly energetic. I swear that man has more energy than three of me. &amp;nbsp;His set of five rules to us were as follows:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Have fun.&lt;/li&gt;&lt;li&gt;Learn something new that we could use immediately.&lt;/li&gt;&lt;li&gt;Have fun.&lt;/li&gt;&lt;li&gt;Meet five new people.&lt;/li&gt;&lt;li&gt;Have fun.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;I think that's pretty manageable, if you're a bit social. I'm not, but I was determined to make a point of being so. &amp;nbsp;With that, it was on to the first session.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session One: SQL Server Internals with Jeremiah Peschka (&lt;a href="http://facility9.com/"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/peschkaj"&gt;twitter&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I'm an occasional (ok, rare) attendee at the local Columbus PASS chapter, so I had met Jeremiah before, and had seen him speak at SQLSat42 in Columbus. &amp;nbsp;That said, I was really looking forward to this session. I've come to expect professional level knowledge and entertaining delivery from Jeremiah, and he did not disappoint. &amp;nbsp;Major take-away: SQLOS really is it's own world apart from the operating system. Research point: Dig more into how CHECKPOINT works.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session Two: Baselining with Erin Stellato (&lt;a href="http://www.erinstellato.com/"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/erinstellato"&gt;twitter&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I know Erin both through Twitter and via professional channels - she's assisting me with an issue I have with the product she supports. &amp;nbsp;(To be fair, the issue is not the product, but something foolish we have done with it...) Her presentation was well done, and I like how she handled the inevitable, "Well, on MY system..." question. Ugh. &amp;nbsp;There's always one person in there who wants to troubleshoot their own issues. &amp;nbsp;It's hard to know if that's going to be a worthwhile expenditure of time for the whole group. Usually, not so. She simply told him to save his question for the break, and that was that. &amp;nbsp;Well played. &amp;nbsp;Major take-away: There are good third party tools out there I should be using rather than rolling my own queries. &amp;nbsp;Research point: Learn to use &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=F043C2F5-2A48-41ED-951B-BA7F62CF51D6&amp;amp;displaylang=en"&gt;Relog&lt;/a&gt; to import binary files to SQL. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session Three: Isolation Levels with Kendra Little (&lt;a href="http://www.littlekendra.com/"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/kendra_little"&gt;twitter&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Kendra is one of my favorites, if not for her delivery than for her artwork. She's very&amp;nbsp;knowledgeable, and has a very easy-going, friendly style. &amp;nbsp;She was probably the easiest person to introduce myself to. &amp;nbsp;I was most interested in Kendra's session because my boss has been extolling the virtues of SNAPSHOT isolation to me, and I wanted to check his facts. &amp;nbsp;Turns out he's partially right, but it's not quite the right solution for us yet. (TempDB would crack under the strain of that much versioning.) &amp;nbsp;There are better options, and I feel like I can speak more accurately about them now. &amp;nbsp;Not to mention that I have a kick-ass new poster in my cube, courtesy of Kendra. &amp;nbsp;Major take-away: isolation level is all about what behavior your willing to put up with. Research point: Read up more on phantom reads and READ_COMMITTED_SNAPSHOT, which I think is going to be the way to go.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Lunch &lt;/b&gt;was a quick trip to Burger King. In my morning rush, I had neglected to get the requisite cash for lunch at the event. Admittedly, had I known there was a BK literally within walking distance, I'd have likely made the same choice anyway. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session Four: IO Performance with Eddie Wuerch (&lt;a href="http://indydba.com/"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/eddiew"&gt;twitter&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Eddie was the only speaker I was not acquainted with before arriving at SQLSat60, but as someone with a keen interest in performance tuning, I was eager to hear what he had to say. &amp;nbsp;I enjoyed the presentation save one thing - animated backgrounds on the slides. &amp;nbsp;On the initial slide, it wasn't so bad, but afterwards... I could have used less distraction. Despite that, Eddie definitely had one of the best presentations I've seen on IO performance, and I was definitely enlightened by many of the things he brought up. I feel a little better armed to take on performance tuning now. &amp;nbsp;Major take-away: Pay better attention to join types when considering query plans. (Merge vs. Hash vs. Loop.) &amp;nbsp;Research point: read up on Readahead scanning for physical optimization.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session Five: Contentious Design Issues with Karen Lopez (&lt;a href="http://www.infoadvisors.com/"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/datachick"&gt;twitter&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Karen's session was definitely one of the best, but sadly, it's the one I have the least amount of notes on. &amp;nbsp;In fact, the entirety of my note section for that session is:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;www.infoadvisors.com&lt;br clear="none" /&gt;Column name / table name sizes...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yep, that's it. That's not a bad thing, though, because what I liked about that session was that I spent more time &lt;i&gt;thinking&lt;/i&gt;&amp;nbsp;about things. &amp;nbsp;Basically, the session worked this way: The whiteboard(s) of the room were divided into five sections. Karen would give us a design question, such as: Are surrogate keys always needed, or should you prefer the natural key? Where "1" would be "Natural Keys FTW!" and "5" would be, "The only good key is a Surrogate Key." &amp;nbsp;Her permutations were far more entertaining than mine, I assure you, but that was the way it worked. &amp;nbsp;We would all then get up and place a post-it note where we think the answer best lay. &amp;nbsp;I tried to avoid the extremes, being someone who doesn't like absolutes. So if the goal was to get people to think, I would say mission definitely accomplished. Well done. Major take-away: Database design is way harder than I thought. :-) &amp;nbsp;Research point: look into where the cost / benefit breakdown is for varchar vs. char in field length.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session Six: Performance Tuning with Grant Fritchey (&lt;a href="http://twitter.com/GFritchey"&gt;blog&lt;/a&gt; | &lt;a href="http://www.scarydba.com/"&gt;twitter&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Finally, it was raw performance time with Grant. &amp;nbsp;While I was sad that I didn't win any books (or anything else that day), I was happy to have had the chance to learn from the masters, and Grant was certainly one of them. One of the more passionate speakers, he had a very clear presentation on the ins and outs of performance tuning - which is part of a full day he's doing in Florida at SQL Rally. &amp;nbsp;Might have to think about attending that one... &amp;nbsp;Here's one of my favorite things: The mark of a good presentation is it leads you in a natural direction. Every time Grant said something I had a question about, I was ready to raise my hand, but found it answered almost immediately by the next slide. Well played, sir. &amp;nbsp;Well played. :-) &amp;nbsp;Major take-away: Aggregate short-term data, and store the aggregations long-term. (Damn - why didn't I think of that?) Research point: Play with using sys.dm_os_performance_counters DMV. &amp;nbsp;Good place to get stats quick, cheap, and easy to use.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Session Seven: Women In Technology Discussion Panel with Kendra Little, Karen Lopez, Erin Stellato, moderated by Wendy Pastrick (&lt;a href="http://wendyverse.blogspot.com/"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/wendy_dance"&gt;twitter&lt;/a&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;And here is where I am glad I'm blogging this now, instead of weeks from now, since it was just before this session that the battery on my netbook died. The close plugs had already been taken up, so I just had a seat, and listened. &amp;nbsp;Sadly, without my notes, I don't remember too many of the things that were said, but I will say this: between my dear wife, and these fine ladies, my daughter couldn't ask for better role models, should she wish to pursue a career in IT. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Wingz and Grillers:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;No, that's not a menu. I was anticipating plans to visit with some relatives, but that ended up falling through so I journeyed to Wingz sports bar and grill with many of the attendees. I dusted off the social skills and sat down at a table of strangers for surprisingly easy conversation. Only with a group of DBAs or Developers could you complain about a waitresses' inattention by saying she had a full buffer, and could use a DBCC FREEORDERCACHE(). &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Funny dinner story: I had to take a medium severity support call from 'nature', and on the way into the bathroom, I ran into two somewhat inebriated and very gregarious gentlemen. They inquired as to who the large group in the back room was. I have a hard enough time explaining what we do to sober people. The ensuing conversation was riotously funny, though did it really need to be while all three of us were, um, 'facing the wall?'&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After dinner, (prime rib sandwich &amp;amp; Guinness, Yum!), it was off to Griller's Pub for SQLKaraoke! &amp;nbsp;I had been looking forward to this all day long. &amp;nbsp;Singing is something I thoroughly enjoy, and despite a massive head cold, and sore throat, I rocked out to Hoobastank, Pearl Jam, Stone Temple Pilots, and regrettably Jane's Addiction. &amp;nbsp;I blame the alcohol for the JA, since I was really out of steam at that point. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This was, though, the best part of the evening, because I got to have some really great conversations with some awesome people. Wendy, Eddie, Jeremiah, Kendra, M J Swart, and several others. &amp;nbsp;It was like hanging out with good friends - something I don't do nearly as often as I should. Thanks to all of them, and everyone else there, for their time. I even got to continue a very pleasant conversation with Eddie as I gave him a lift back to his hotel.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Best event I've been to yet, for several reasons. &amp;nbsp;I've been feeling very uninspired lately with work, and I think it shows. &amp;nbsp;Heck - I've even been considering getting out of the IT field all together. &amp;nbsp;But the inspiration and knowledge I left Cleveland with this past weekend, not only got me through my Monday, but leaves me eager for the rest of the week and beyond. &amp;nbsp;I'm planning to increase my blogging and tweeting more, and am looking forward to when we can all do it again.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks, SQLSat60. &amp;nbsp;See you all again, soon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-David.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-7593600717402995154?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/7593600717402995154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=7593600717402995154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7593600717402995154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7593600717402995154'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2011/02/sql-saturday-60.html' title='SQL Saturday 60'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-4710383541283917005</id><published>2011-02-07T20:55:00.000-05:00</published><updated>2011-02-07T20:55:18.941-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='everything'/><title type='text'>It's all one life.</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;The following is a post I wrote back on December 13. &amp;nbsp;I found it in the drafts folder, and figured this was as good a time as any to go ahead and publish it. &amp;nbsp;So here you go: enjoy. :-)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;I updated my Twitter profile today.  It used to read this way:&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;"MS SQL DBA in Central Ohio."&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;It now reads:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;span class="Apple-style-span"&gt;"&lt;/span&gt;&lt;span class="Apple-style-span"&gt;Central Ohio SQL DBA, Family Man, Musician, Skeptic, Apolitical, Woodworker, Scientist, Thinker,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt; Atheist&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;. Not always in that order."&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;There has been some discussion, and always will be, about keeping our private lives and professional lives separate. This isn't a bad thing, but there is also something to be said for being viewed as an individual, rather than as another cog in the machine. I can safely say that at every job I've held or applied for so far, my bosses, their bosses and some others, have known almost each little factoid contained in my current Twitter profile.  I can also say that it has made only a positive difference. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;For a time, I also considered the idea of 'branding' myself as a SQL Server DBA. The thought still occurs to me. I am inspired to be a good DBA, especially by the likes of Brent Ozar, Jeremiah Peschka, Paul Randal, Steve Jones, Kendra Little, and so many others, I don't have the storage to name them all. To that end, I train myself to be one.  But there's more to me than just SQL Server.  Sure, some employers might like a mindless SQL based automaton, but those aren't the people I would really want to work for. Luckily, I haven't had that kind of experience yet.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;Ultimately, I think what people see in you is a function of what they want to see in you. Most people that I know are able to look at people and see the good things. I know many people personally that, while they would completely disagree with me on some matters, do respect my opinions on others. Maybe it's my hopeless optimism, but I have a feeling that little I do outside of my professional life, would make a serious difference in it. Of course, someone's always got a story about so-and-so who did such-and-such and got fired. Those are the stories because they are they exception, not the rule. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia; font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;So what I'm going to do is re-expand my blog a bit, to contain not only SQL Server posts, but personal things as well.  Some will hopefully be helpful to others.  Some may just make for a laugh.  Some will be me, just ranting, which I do have a tendency to do from time to time.  But all will hopefully paint a more complete picture of who I am. I've noticed that the blogs I enjoy most, even the SQL bloggers, are the ones that contain some glimpse of the person, and not just the technical content. I work with machines all day. I'd rather work with people. People have lives, and personalities, hopes, dreams, foibles and fables. And I want to hear them all. &lt;/span&gt;&lt;span class="Apple-style-span"&gt;It's what makes life worth living.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia;"&gt;Let's go &lt;i&gt;live&lt;/i&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-4710383541283917005?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/4710383541283917005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=4710383541283917005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4710383541283917005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4710383541283917005'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2011/02/its-all-one-life.html' title='It&apos;s all one life.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8073023997988412953</id><published>2010-12-30T09:44:00.000-05:00</published><updated>2010-12-30T09:44:17.139-05:00</updated><title type='text'>From 2010 to 2011.  Forward!</title><content type='html'>&lt;div&gt;There are lots of 'end of the year' retrospective blog posts going around. &amp;nbsp;This smiley-infused, (and parenthetical comment-laced), one is mine. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Professionally, this was a pretty decent year. I finally attended my first SQL Saturday (#42), and took a position with a new employer. &amp;nbsp;This was a change from being on a team of three SQL Server DBAs to being the sole DBA for the entire company. &amp;nbsp;Even though the new company is significantly smaller than the old one, the level of responsibility has increased as a result. &amp;nbsp;While I do miss my old workplace, (Hi, guys!), I'm learning a lot in the new endeavor, and this is likely to become a trend. Good stuff.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Personally, I've been having a ton of fun with my wife and children. &amp;nbsp;We spent a LOT of time at King's Island this summer, and the kids got to experience their first memorable hotel stay. &amp;nbsp;They loved it, which was good. &amp;nbsp;I, of course, forgot to pack my swimming trunks on that particular visit, which led to yet another fashion consultation by my wife. (Who I should listen to more than I should, when it comes to sartorial selection.) &amp;nbsp;My daughter also had her first big roller coaster ride, which she loved. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Musically, I got a bit derailed this year. After a failed attempt at starting a band, I sort of dismantled my studio, and lost a bit of confidence in my abilities. Mid-way through the year, I got another offer for a vastly different project, and have done a little work on it - but my confidence still wanes, and that has led to few results. My tendency to want everything to come out as good as it sounds in my head (read: perfect) leads to a lot of frustration. So, I'm going to try to just start tracking things, and piecing it together, and whatever comes out comes out. If the reviews I usually get are anything to go by, then everyone else will probably like it, even if I think it sucks. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Physically, I seem to have stopped taking care of myself. I'm not entirely sure why. For a while, I was doing good, then I just stopped caring about my own care &amp;amp; feeding. (Well, not so much the feeding part...) I can't pin it down to any one specific thing, so I'm just going to call it 'transition stress' and move on. Nobody's perfect, but in *decent* shape for my age, and things tend to ebb and flow throughout the year. I feel like I'm bouncing back, so I'll push the tempo and see where I end up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Community-wise, I kind of dropped the ball on more than a couple things this year, specifically the podcast. &amp;nbsp;We paid the price for it in lost subscribers and listener-ship. &amp;nbsp;Later in the year, we did get things back in gear, and the numbers started going back up, but I would like to see more. We're making progress, but somehow it still feels slow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what's planned for next year?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Professional goal: Get a certification. I thought about going for the MCM, but to be honest, I'm just not interested in that particular certification right now. &amp;nbsp;That and I don't have the cash. :-) I am thoroughly enjoying the videos, though, and will continue to do so. &amp;nbsp;I will get a certification of some kind. &amp;nbsp;Who knows - it might even be database-related. :-) This reminds me I should really stop by the library and pick up that copy of SQL 2008 Internals on the way home today. &amp;nbsp;It's been reserved for me...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Personal goals: Try to play with my kids every day. Some days, this just isn't going to happen, but again, I'm not shooting for perfect. Just more regular time with the kids. Even if it's just discussing whatever they're doing at the time. &amp;nbsp;Also, to become a better cook. &amp;nbsp;(The call for recipes is open, folks!) &amp;nbsp;Less frozen stuff, more fresh food. Not that I think frozen foods are bad, but cooking is fun. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Musical goal: Finish 5 covers and 2 originals. Luckily, I have some help, if just in the form of inspiration. Sadly, I have not kept up my end of the deal so far. Time to get cracking.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Physical goal: Feel better. I realize this is kind of nebulous, but much of health is a mental, as well as a physical game. If I can do things that I know will make me 'feel' better than likely they will make me healthier as well. &amp;nbsp;If I know that I'm about to eat something that will make me feel bad later, then maybe I use that as rationale to avoid it. This it the 'thought experiment' goal, but it's worthwhile.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Community goals: Get the podcast up to at least an average of 50 subscribers, and have at least one good interview per month. I think if we continue to do well, we can start shooting for bigger names for our interviews. I'd also like to see bigger community involvement for the organization, and will try to take more of a leading role in that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks for reading.&lt;/div&gt;&lt;div&gt;-David.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8073023997988412953?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8073023997988412953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8073023997988412953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8073023997988412953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8073023997988412953'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/12/from-2010-to-2011-forward.html' title='From 2010 to 2011.  Forward!'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-1816436784779207497</id><published>2010-12-17T15:11:00.000-05:00</published><updated>2010-12-17T15:11:32.438-05:00</updated><title type='text'>An intriguing little device.</title><content type='html'>Well, I've been denied permission to use the Cr-48 on the network here at work - but that's what they gave me a laptop for. &amp;nbsp;The upside to all this is I will be able to test the Chrome Netbook against an actual laptop. &lt;br /&gt;&lt;br /&gt;The downside is that the laptop is a &lt;a href="http://www.dell.com/downloads/global/products/latit/en/spec_latit_d510_en.pdf"&gt;Dell D510&lt;/a&gt;. &amp;nbsp;Not the most modern or quickest machine in the world. &amp;nbsp;So it's not an apples to apples comparison. &amp;nbsp;Still it's a starting point, so let's see where it takes us. &amp;nbsp;Also I've noticed that most of the reviewers are comparing the Cr-48 to a Mac Airbook, so here's another data point and frame of reference. (That, and it's all I've got...)&lt;br /&gt;&lt;br /&gt;One other thing. &amp;nbsp;I'm not going to get into the aesthetics, since that's a matter of personal preference. &amp;nbsp;I don't need an Apple, Linux Penguin or MS Windows logo to make me happy. &amp;nbsp;Also for the same reason I tend to avoid branded clothing. &amp;nbsp;I'm not your f***ing billboard. &lt;br /&gt;&lt;br /&gt;With that said, aside from it's looks, there are a few common complaints I've noticed about this particular piece of hardware. &amp;nbsp;Mostly about the futility of using the trackpad, input problems, and issues getting it connected to networks. &amp;nbsp;The reviews I read were only days old, or at least posted within the last few days - so one of three things is possible. &amp;nbsp;1, Google is REALLY FREAKING FAST at keeping up with consumer reviews and fixing the problems with the next release of ChromeOS. 2, I'm just really good / lucky, Or, 3, the other reviewers were doing it wrong. I have had no such issues, either with connectivity, using the trackpad, or input of any kind. &amp;nbsp;Being selfish, I'm going to go with #2.&lt;br /&gt;&lt;br /&gt;So, here's the first few comparisons I've made. &amp;nbsp;The comparisons and discussion are pretty raw - I'm comparing a laptop to a netbook, two things which serve very different purposes, so it's not a fair comparison in some cases. &amp;nbsp;Keep that in mind as we forge ahead.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Operating Systems.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;- Cr-48, ChromeOS. &amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;- D510, Windows XP.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Neither one of these had much of a learning curve for me. &amp;nbsp;I was well familiar with both before starting to use them. &amp;nbsp;However, the idea of the OS being restricted to the browser is a bit of a new concept for me. &amp;nbsp;More on this, and some possible implications of it, in a later post. &amp;nbsp;First, some stats, if you please...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Screen Size.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;- Cr-48, 12.1 inches. &amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;- D510, 15 inches.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The Dell is the clear winner here. &amp;nbsp;Even if you want to argue for portability over screen size, I would simply point to either the Dell 410 or an Airbook. &amp;nbsp;The Dell wins this one.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Input Devices (Touchpad)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;- Cr-48, 5"x3.5" Touchpad. &amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;- D510, 2.5"x1.75" Touchpad. &amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Input Devices (Keyboard)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;- Cr-48, 11" Keyboard.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;- D510, 11" Keyboard.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The numbers, though only tell half the story. &amp;nbsp;The touchpad on the Cr-48 lacks visible buttons of any kind, as they're actually under the touchpad itself. &amp;nbsp;You can tap-to-click, use two-finger dragging to scroll, press on the bottom of the touchpad, etc. &amp;nbsp;Loads of people have complained about this method of input, but I've found it pretty easy to use, so far. &lt;br /&gt;&lt;br /&gt;The keyboard is where the big differences start to show up. &amp;nbsp;The Cr-48 makes some interesting substitutions over the standard laptop keyboard:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Function keys are replaced with browser navigation and volume / brightness controls.&lt;/li&gt;&lt;li&gt;Caps Lock key replaced with "Search" key.&lt;/li&gt;&lt;li&gt;Compressed area for arrow keys.&lt;/li&gt;&lt;li&gt;PgUp, PgDn, Home, End, Delete, Insert keys replaced with key combinations.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Not having had loads of time to play with this yet, I can't really say for certain how the keyboard stacks up. &amp;nbsp;It's going to be a bit of a learning curve, I'm sure. &amp;nbsp;More on that, down the road.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now &lt;b&gt;here's&lt;/b&gt;&amp;nbsp;where things get interesting. &amp;nbsp;The next thing I measured was Boot Time. &amp;nbsp;Since the Cr-48 is a web-based notebook, I considered "Boot Time" to be how long it takes to go from a powered off state to having an active browser window. To&amp;nbsp;accommodate&amp;nbsp;for this, Google Chrome was added to the Startup folder on the Windows laptop. +/- 7 or so seconds is allowed in each comparison for the user to enter their login credentials. &amp;nbsp;However, it's still no contest:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Boot Time:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;- Cold Boot: &amp;nbsp;D510: 303 seconds. &amp;nbsp;Cr-48: 25 seconds.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;- Wake From StandBy (Requiring Password): &amp;nbsp;D510: 23 seconds. &amp;nbsp;Cr-48: 6 seconds.&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Even if I adjust the numbers favorably for the Dell, and unfavorably for the Cr-48, the Cr-48 is still considerably faster to start than the Dell.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next post: Network speeds, raw hardware specs, and a little musing about 'ease of use'.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-1816436784779207497?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/1816436784779207497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=1816436784779207497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1816436784779207497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1816436784779207497'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/12/intriguing-little-device.html' title='An intriguing little device.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-4615533418538832664</id><published>2010-12-16T16:52:00.000-05:00</published><updated>2010-12-16T16:52:31.796-05:00</updated><title type='text'>Holy Chrome...!</title><content type='html'>Being an outspoken and unabashed geek, I have a tendency to give away my demographic information in exchange for the occasional chance of getting something cool. &amp;nbsp;Not in the "CLICK HERE FOR A FEE iPAD (when you sell our crap for us)" kind of sense, but more like a "Sign up for our pilot program and we'll let you keep the hardware." sense. &amp;nbsp;Rarely, (OK, never...) do I ever hear any response from these signups, and when I do, it's usually, "Sorry, we're full." or, "You're not our target demographic."&lt;br /&gt;&lt;br /&gt;So imagine my surprise at finding out that I got accepted to the Cr-48 Chrome Netbook program. &amp;nbsp;Not via email, of course, but by having a netbook simply show up on my front porch this afternoon. I've been toying with the idea of getting a netbook with Christmas money, and boring my wife with said talk, for several weeks. &amp;nbsp;Imagine the delight and surprise to have one just magically appear. &amp;nbsp;It's Google-riffic!&lt;br /&gt;&lt;br /&gt;So, the out of box experience: The box itself is pretty cool. Funky technical drawings, documentation with a sense of humor, and I'll admit that the simplistic design of the machine itself is pretty darn cool. &amp;nbsp;There are no logos or otherwise identifying marks on either the box it shipped in, or the netbook itself. &amp;nbsp;The only id on it was the sender's address, Bryan Jeffries. &amp;nbsp;(Thanks Bryan!) &amp;nbsp;So it was a total surprise when I opened the box and found the Chrome instruction sheet. &amp;nbsp;I suspect that was planned by Google, though a heads-up that it shipped wouldn't have been a bad idea. &amp;nbsp;Good thing I was home.&lt;br /&gt;&lt;br /&gt;Startup and setup are pretty simple as well. &amp;nbsp;It's a simple matter of powering on, accepting the terms and conditions, allowing the netbook to download software updates, signing in with your Google account, and taking a webcam pic for the ID. &amp;nbsp;I am hoping I can figure out how to change that profile pic. &amp;nbsp;Iz nastaaay...&lt;br /&gt;&lt;br /&gt;As part of the package, you get two years of 100MB per day usage of Verizon's wireless network for the 3G portion of the connectivity. &amp;nbsp;Otherwise, the local wi-fi will do. &lt;br /&gt;&lt;br /&gt;Hardware: I'm not used to this type of keyboard, so I can see that there'll be a bit of a learning curve there. &amp;nbsp;I'm not too worried about it. &amp;nbsp;I will have to play a bit with learning the touchpad, the keyboard shortcuts and such, but the real reason for the netbook is the convenience, so a little learning curve is to be expected, I think. &amp;nbsp;I'll let you know about my progress as it goes along.&lt;br /&gt;&lt;br /&gt;UX so far? &amp;nbsp;Its Chrome. &amp;nbsp;I use it every day anyway, so only the additional connectivity settings and user security options are new. As far as the light OS footprint, I'm really not in a position to judge yet. &amp;nbsp;I'll need to figure out how to get the system specs, download and store files, (if that's even possible on a cloud-based OS), and most importantly, use it for work. &lt;br /&gt;&lt;br /&gt;Here's hoping I get some discussion going on here. &amp;nbsp;Any other Cr-48 users out there? &amp;nbsp;What do you think so far? &amp;nbsp;Wanna compare notes?&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;-David.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-4615533418538832664?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/4615533418538832664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=4615533418538832664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4615533418538832664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4615533418538832664'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/12/holy-chrome.html' title='Holy Chrome...!'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5840395060988755325</id><published>2010-12-14T07:46:00.006-05:00</published><updated>2010-12-15T06:42:48.507-05:00</updated><title type='text'>The Usual Penalties</title><content type='html'>&lt;i&gt;&lt;/i&gt;&lt;blockquote&gt;&lt;i&gt;"We pay the price, Watson, for being too up-to-date!", he cried.  "We are before our time, and suffer the usual penalties." &lt;/i&gt;&lt;div&gt;&lt;i&gt;- Sherlock Holmes, "The Valley of Fear."&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;A few months ago, I posted about upgrading to Windows 7 / SQL Server 2008 R2. Since then, here are a few things I have learned:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Being up to date is great if you have specific features that you want to take advantage of. The interface of Windows 7 is pretty, but also has some neat little 'gee-whiz' features.  When you minimize a progress window to the toolbar, it becomes a little, mini-progress-bar in the toolbar, which I think is quite convenient considering all the downloading of very large files I do. I find that to be somewhat intuitive, and one of those, "Why didn't we think of that before now?" kind of features.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, I did notice that there were a few applications, specifically some games and editing software, that did not work any more when I upgraded to Windows 7. These were apps that I did enjoy, but I was at least able to upgrade some of the productivity ones to newer versions. The games are a semi-loss. Doom 3 was kind of fun in a B-Movie sort of way, but I'm really not dying to watch it again. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Likewise with SQL Server.  (No it's not a B-Movie...)  I'm finding that in order to work with a mostly SQL 2005 environment, I still need to have BIDS 2005 around, and that the 2008 R2 SQL Management Studio does some really strange things when connecting to SQL Server 2005; i.e., Sometimes I can view or edit a step in an Agent scheduled job, sometimes it errors out.  It's... inconsistent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I.T. Folk wisdom says you should never install version 1.0 of anything, because there's bound to be problems.  This is true, but I think there's bound to be problems anyway, so I don't think that should stop you.  There is a bit of caution advised, though.  When working on the leading edge, there's likely some compatibility problems to be had with previous generations.  I'm now hearing a few grumbles about breaking changes in Denali, which is no surprise, but reminds me that as much as I want to lead the SQL environment forward in my office, I need to remember to stay functional with that which is still behind.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks,&lt;/div&gt;&lt;div&gt;-David.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5840395060988755325?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5840395060988755325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5840395060988755325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5840395060988755325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5840395060988755325'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/12/usual-penalties.html' title='The Usual Penalties'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5458828902212501286</id><published>2010-12-10T07:27:00.002-05:00</published><updated>2010-12-10T08:05:54.721-05:00</updated><title type='text'>My top 10 SQL Perfmon Counters.</title><content type='html'>&lt;a href="http://twitter.com/feleryan"&gt;Feleryan &lt;/a&gt;on Twitter asked this morning what our top 15 perfmon counters for SQL were.  Since my ADD makes 15 too high a number of things to monitor at once, without going completely mental, I thought I'd just go ahead and share my top ten.  As usual, any feedback or suggestions are welcome.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, for a lot of these counters, I prefer to measure against a baseline.  How do you know that a consistent 30% processor time for a given CPU isn't normal?  Doesn't mean it's good, but neither does that mean it's out of the norm.  In the absence of a baseline, there are general recommendations, so I'll note those.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first four counters are system-general, meaning things outside of SQL Server could potentially be affecting these counters, especially if the server itself is being shared with processes other than SQL.  The rest are SQL-specific.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;CPU: % processor time - Total. Gives a good overall impression of how hard the server is working, and how heavy the query load is.  MS recommends watching anything over 30%, but anything over 50% usually grabs my attention.&lt;/li&gt;&lt;li&gt;Memory: Available MBytes - I like to have at least a few hundred MB available in RAM for burst processing, but I'm comfortable with anything over 150 MB.  MS says anything over 100MB should be fine.&lt;/li&gt;&lt;li&gt;Physical Disk: Avg. Sec\Read (and Write) - A good indication of how fast the disks are responding to read/write requests.  In addition to this, I also check the io_stall counters in  sys.dm_io_virtual_file_stats view to see how the files are performing.  MS says that these counters are considered 'good' if the average is 8ms (.008) or less, but if the counters are around .020, which is considered high, and io_stall is low, then I wouldn't sweat it.&lt;/li&gt;&lt;li&gt;Network Interface: Bytes Total\sec - A quick indication of how much traffic is being passed through the NIC.  You'll want to keep this proportional to how busy SQL is.  Again, this is one where having a baseline really helps, but I'd start being concerned when more than 60% of the available bandwith is being used.  This is a good place to quick-tune, if you can dedicate a NIC to backup or other IO intensive operations. If you're using iSCSI, see if you can dedicate a NIC to storage, as well.&lt;/li&gt;&lt;li&gt;SQL Server: Server Statistics, Batch Requests \ Sec. - Again, baseline is crucial here, but anything over 1000 should give you pause to look at the server a little closer and see how it is performing overall.  I have servers that regularly get up in the 2000 - 2500 range with no issues, and some that start choking around 500.&lt;/li&gt;&lt;li&gt;SQL Server: Access Methods, Full Scans \ Sec.  - How often table scans are being performed.  Here's where knowing your data a bit helps.  Do you have a lot of small tables? If so, this counter may be artificially high.  Lots of "LIKE '%value%'" queries?  Again, this obviates indexing, and can also inflate this counter.  However, this counter works best when paired with...&lt;/li&gt;&lt;li&gt;SQL Server: Access Methods, Index Searches \ Sec. - You're looking for a high ratio of index seeks to table scans, with the recommended value for this counter being 1000 for every Full Scan.  So a 1000\1 ratio.  I agree completely with this one.&lt;/li&gt;&lt;li&gt;SQL Server: Buffer Manager, Page Life Expectancy - The number of seconds a page is expected to stay in cache.  You want this as high as possible, but anything under five minutes (300 seconds) is the default cause for alarm. I tend to start paying attention at around 15 minutes, or 900 seconds. This one usually only shows up as a significant issue on extremely busy systems, so if you see this issue - get to work.&lt;/li&gt;&lt;li&gt;SQL Server: Buffer Manager, Lazy Writes \ Sec. - If you're getting a lot of buffer flushes to disk every second, with the default alarm level being more than 20, then it could indicate that you need more memory in the system.  This should be as near 0 as possible on most systems.  &lt;/li&gt;&lt;li&gt;SQL Server: Buffer Manager, Buffer Cache Hit Ratio - What you want is for this counter to be as near 100% as possible. For this counter, look for big changes.  99.8 to 99.3 is not a big deal, but a change from 99.8 to 75.4 is worth investigating.  Some people also note that if you're checking this counter, you should be checking Page Life Expectancy as well, since a large change in PLE could only show up as a small change in Cache Hit Ratio or vice/versa.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;That's my ten.  Please feel free to comment below, especially if you disagree with anything here - always looking to learn something new!  :-)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks,&lt;/div&gt;&lt;div&gt;-David.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5458828902212501286?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5458828902212501286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5458828902212501286' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5458828902212501286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5458828902212501286'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/12/my-top-10-sql-perfmon-counters.html' title='My top 10 SQL Perfmon Counters.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-2037215180909152278</id><published>2010-08-17T23:04:00.002-04:00</published><updated>2010-08-17T23:13:40.140-04:00</updated><title type='text'>The Windows 7 Experience.</title><content type='html'>I just finished installing Windows 7 on my machine.  So far, I think I like it.&lt;br /&gt;&lt;br /&gt;A little background, first.  The computer I'm installing it on is about 7 years old, or so.  It was a Windows XP, Dell machine I bought many moons ago and has served me faithfully for the last several years.  I recently got a RAM and video card upgrade for it, and had a copy of Vista Ultimate lying around. (Something I got for submitting bugs during the Vista beta test.)  I was pondering finally installing Vista, when it occurred to me that I could get a copy of Windows 7 with the MSDN license I have. That, combined with the SQL 2008 developer edition, sounded pretty cool, so I downloaded, burned and installed.&lt;br /&gt;&lt;br /&gt;Installation wasn't too bad.  A few standard questions and it was off and running.  It recognized all my hardware, set everything up, and was good to go in a matter of about 45 minutes.  Not too bad, given some of the previous 2+ hour installs I've had to endure on similar operating systems.&lt;br /&gt;&lt;br /&gt;Yes, it's several year old hardware, but the machine is now no more or less responsive than it was during it's XP days.  If anything, since it's a fresh install, it's a bit faster than it was earlier tonight.  I'm in the process of setting up my apps, so we're far from done, but I am enjoying the experience so far.&lt;br /&gt;&lt;br /&gt;More thoughts as I play with things more.  First impression = Good.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;-David.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-2037215180909152278?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/2037215180909152278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=2037215180909152278' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2037215180909152278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2037215180909152278'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/08/windows-7-experience.html' title='The Windows 7 Experience.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-1730921026406698989</id><published>2010-08-16T06:58:00.003-04:00</published><updated>2010-08-16T07:19:40.011-04:00</updated><title type='text'>Reading Another Sessions Temp Tables.</title><content type='html'>This past week, I had a rogue DTS package inserting large amounts of data, mostly duplicates, into a table in production.  I was looking through the procedures involved, and pondered if one of the temp tables being used in the process held some bad data.  The process finished before I could investigate it properly, so I let it go.  (If I see it misbehaving again, I'll blog that.)&lt;br /&gt;&lt;br /&gt;I had, in the meantime, asked a question on &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;, using the #sqlhelp tag.&lt;br /&gt;&lt;br /&gt;Aside:  For those of you who read this blog (all 2, maybe 3 of you), and are not using Twitter, WHY NOT? It's probably the single best resource I've had for getting help with SQL related issues.  Briefly, you log in, ask a question and include the 'hash tag', "&lt;a href="http://twitter.com/#search?q=%23sqlhelp"&gt;#sqlhelp&lt;/a&gt;".  (Without the quotes, of course.)  Experts from all over the world monitor Twitter for that tag, and will answer questions, or at least point you in the right direction.&lt;br /&gt;&lt;br /&gt;So the question I asked was, "How would one go about reading the contents of another session's temp table?" Since the temp table was local to the session running the DTS package, I had no quick way of checking it's contents.&lt;br /&gt;&lt;br /&gt;Enter Paul White (&lt;a href="http://twitter.com/PaulWhiteNZ"&gt;twitter &lt;/a&gt; | &lt;a href="http://sqlblog.com/blogs/paul_white/default.aspx"&gt;blog&lt;/a&gt;).  Within moments, he provided a pointer to a good idea.  Use DBCC (most likely DBCC PAGE), to read the data pages of the temp table.  I figured I'd get the object ID and go from there.  I also figured that was the end of the discussion, and so I left it alone for the weekend.  I had a load of weekend work to do anyway.&lt;br /&gt;&lt;br /&gt;So this morning, I get into work and check my RSS feed.  Lo and behold, not only did Paul answer my question completely, he and Fabiano Neves (&lt;a href="http://translate.google.com.br/translate?hl=pt-BR&amp;amp;sl=pt&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Ffabianosqlserver.spaces.live.com%2Fblog"&gt;blog&lt;/a&gt; - Originally in Portugese.  Translated via &lt;a href="http://translate.google.com/"&gt;Google Translator&lt;/a&gt;.) have both written some very useful code to do just that.  (&lt;a href="http://sqlblog.com/blogs/paul_white/archive/2010/08/14/viewing-another-session-s-temporary-table.aspx"&gt;Paul's Code&lt;/a&gt;  |  &lt;a href="http://translate.google.com.br/translate?js=y&amp;amp;prev=_t&amp;amp;hl=pt-BR&amp;amp;ie=UTF-8&amp;amp;layout=1&amp;amp;eotf=1&amp;amp;u=http%3A%2F%2Ffabianosqlserver.spaces.live.com%2Fblog%2Fcns!52EFF7477E74CAA6!1898.entry&amp;amp;sl=pt&amp;amp;tl=en"&gt;Fabiano's Code&lt;/a&gt;.)  It's worth checking out, even if you don't have some recalcitrant data insert process running.&lt;br /&gt;&lt;br /&gt;Once again, Twitter saves my bacon. (Mmmm... Bacon...)  Thanks to Paul and Fabiano for their contributions. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-1730921026406698989?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/1730921026406698989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=1730921026406698989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1730921026406698989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1730921026406698989'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/08/reading-another-sessions-temp-tables.html' title='Reading Another Sessions Temp Tables.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-9039220189272334691</id><published>2010-07-22T06:45:00.003-04:00</published><updated>2010-07-22T06:49:04.017-04:00</updated><title type='text'>Leaky Pipes</title><content type='html'>Today, I dealt with something I refer to as a "Leaky Pipe" problem. Discovering a Leaky Pipe is an annoyance. It can teach you a lot about the plumbing, though. I now feel like I understand this application's setup a bit better than I did when I started. Leaky Pipes can be a good learning opportunity when properly approached.&lt;br /&gt;&lt;br /&gt;Imaging you have a pipe carrying water, running for ten yards or so. The intake is at one end, and the other end has a valve on it. The valve leaks, so you replace the valve. Once you do this, a pinhole leak shows up in the pipe, just a few feet away from the valve. The pinhole leak isn't new - it's always been there, but since the water pressure inside the pipe was being relieved by the leaky valve, the pinhole was never noticed.&lt;br /&gt;&lt;br /&gt;So, you fix that. Except now there is another pinhole leak, a few more feet along the pipe. So you fix that, and another appears, a few more feet along the pipe. This process can be repeated, and often is, unless you decide to replace the entire pipe.&lt;br /&gt;&lt;br /&gt;That's where I was today, with a certain web form, and a QA environment in need of an overhaul. First, it was that the data and schema were out of sync, so we refreshed the DB with a copy from production. Then permissions didn't line up with what the QA app was expecting. Then stored procedures were missing. Then the permissions didn't get set correctly. Then the linked servers were hard coded in the procs, so those needed fixed. Then the servers weren't set for RPC.... etc. You can see how that gets out of control.&lt;br /&gt;&lt;br /&gt;The first time I discovered a leaky pipe, I was a total newb at plumbing. That weekend, I learned about different types of pipe, how to use a pipe cutter, how to clean, fit, and cement PVC properly, and what a &lt;a href="http://www.accentshopping.com/product.asp?P_ID=152233"&gt;Mansfield Sillcock&lt;/a&gt; is. I increased my knowledge of plumbing far beyond what it was before. (True, any increase over 'nothing' is massive...)&lt;br /&gt;&lt;br /&gt;So the next time you discover a leaky pipe, take the opportunity, and run with it. I think you'll be rewarded with knowledge. That's worth it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-9039220189272334691?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/9039220189272334691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=9039220189272334691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/9039220189272334691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/9039220189272334691'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/07/leaky-pipes.html' title='Leaky Pipes'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-9210468755578217313</id><published>2010-06-24T15:43:00.003-04:00</published><updated>2010-06-24T15:52:20.116-04:00</updated><title type='text'>Near-Sightedness vs. The Long View</title><content type='html'>Just a quicke today, folks, while I toil away with a combination of &lt;a href="http://brentozar.com/go/blitz"&gt;Mr. Ozar's BLITZ script &lt;/a&gt;and my own meager ingenuity. I'll let you guess which one is more effective right now...  Oh, and Blogger is open from here, so hopefully I can get back on track with my tech blogging.  All this came to me while my second monitor displays a copy of the &lt;a href="http://apod.nasa.gov/apod/ap000709.html"&gt;Hubble Deep Field &lt;/a&gt;photo. Inspiration comes from strange places.&lt;br /&gt;&lt;br /&gt;As I'm poking around my new environment, I'm continuing to fall into the trap of Near-Sightedness.  This is what I call it when I'm looking through a server, script, build, or what-have-you, written or configured by the DBA who's position I have filled.  My initial reactions are usually something like this:&lt;br /&gt;&lt;br /&gt;"Huh?"&lt;br /&gt;"Were they serious?"&lt;br /&gt;"Were they on something?"&lt;br /&gt;"That's just plain wrong..."&lt;br /&gt;&lt;br /&gt;Anyway - The point I'm making is that almost no DBA does things randomly.  When exploring a new place, like a new SQL environment, it's important to be able to take the long view.  While I've come across a mountain of things I would have like to change immediately, I haven't.  That's because in the near view, they look like completely egregious gaffes.  However, I have already found something that, in the long view, makes considerable sense.  If I had "fixed" it immediately, I'd be in considerable trouble right now.&lt;br /&gt;&lt;br /&gt;So put down the reading glasses, and pick up the binoculars.  Survey the whole environment before you start messing about with the particulars.  You might find they're there for a reason.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-9210468755578217313?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/9210468755578217313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=9210468755578217313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/9210468755578217313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/9210468755578217313'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/06/near-sightedness-vs-long-view.html' title='Near-Sightedness vs. The Long View'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8065795755477140766</id><published>2010-05-19T09:51:00.032-04:00</published><updated>2010-05-20T08:11:28.258-04:00</updated><title type='text'>LiveBlog: 24 Hours of PASS</title><content type='html'>9:53 AM - Starting my live blog for the 24 Hours of PASS conference (&lt;a href="http://www.sqlpass.org/24hours/2010/"&gt;http://www.sqlpass.org/24hours/2010/&lt;/a&gt;).  Hoping someone finds it useful.  I'll be mirroring short versions of these updates on Twitter as well.&lt;div&gt;To begin with, I'm starting late due to a Dr.'s appointment for one of my children this morning.  Though I hated to miss most of Andy Leonard's session, it was time well spent.  :-)&lt;/div&gt;&lt;div&gt;Interesting comments on COALESCE vs. ISNULL.  I also prefer COALESCE since I think it gives you better control of the output.  Fun discussion of NULLs on Twitter, as usual. :-)&lt;/div&gt;&lt;div&gt;Updates posted throughout the day.  Please check back as you can, and feel free to comment.  Loving this.&lt;/div&gt;&lt;div&gt;-D.&lt;/div&gt;&lt;div&gt;10:04 AM - "What's New in R2" with Kevin Cox.  Awesome to see that attendance so far is in the low 600's.&lt;/div&gt;&lt;div&gt;10:14 AM - Scratch that.  Mid-700's. :-)  Good info so far, though basic.  I was not aware how large SQL Server had grown, in terms of capacity.&lt;/div&gt;&lt;div&gt;10:25 AM - I'm sure the animated presentation slides look cool live, but in a LiveMeeting, they just screw with my connection to the point where the audio suffers.&lt;/div&gt;&lt;div&gt;10:28 AM - Features I need to do some research on that may help me "right now" - Master Data Services, Multi-Server Management.&lt;/div&gt;&lt;div&gt;10:32 AM - &lt;a href="http://twitter.com/brento"&gt;@BrentO&lt;/a&gt; drops out, as a protest over the emphasis on the DAC pack. :-)&lt;/div&gt;&lt;div&gt;10:54 AM - Didn't just lose my audio again - lost the whole darn connection!  Oh, well.  I have an 11 AM call I have to take anyway.  See you in a bit!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;...pause...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;11:23 AM - Phone call got rescheduled for 2 PM, so I'm in the utility session with Glenn Berry. Much more technical than the last session, thankfully.  Utility Control Points - Demo Time!&lt;/div&gt;&lt;div&gt;11:34 AM - Seems like the new SQL Server Utility has the same types of functionality as something like Idera's SQL Diagnostic Manager.  I think we'll be saving some license costs in the future.  &lt;/div&gt;&lt;div&gt;11:43 AM - Good point regarding remembering to size storage appropriately for the amount of metrics you want to track. (You listening, boss?)&lt;/div&gt;&lt;div&gt;11:57 AM - Asked a question re: is there any interaction between UCP and PBM.  Didn't get answered, so I guess I get to check into that myself. :-)&lt;/div&gt;&lt;div&gt;12:11 PM - Speaker Rushabh Mehta couldn't make it so Jacob Sebastien is doing his session on Data Tier Applications instead.  This is most likely going to be way over my head, so it's lunchtime for me.  Hoping that Jacob can do his session at the regular time as well, so those who are planning on attending don't miss out.&lt;/div&gt;&lt;div&gt;12:55 AM - Waiting with bated breath for Adam Machanic's session on DMVs. :-) I distributed my setup, so the presentations and screen shots are happening on the laptop, while the blogging, tweeting, research and email is all on the main PC.  Hope that helps with the presentation quality.&lt;/div&gt;&lt;div&gt;1:06 PM - And we begin with a LOTR analogy.  Nice. :-)  (Sauron as a misunderstood IT pro, and the Eye of Sauron as a monitoring tool...)&lt;/div&gt;&lt;div&gt;1:47 PM - Q&amp;amp;A Time with Adam Machanic - Information from waiting tasks queue where wait is OLEDB could mean query is waiting on a linked server. No DMOs totally associated with deadlocks, but sys.dm_tran_locks &amp;amp; even notifications are good places to start. (Also -T1222 is recommended.) Best point for me was the blocking issue where you're trying to pull the SQL Text or SQL Plan on an active query. I do use scripts where I pull text and plans on all processes.  May have to revise those. :-)&lt;/div&gt;&lt;div&gt;3:36 PM - Back from a lengthy phone interview.  Went well, I think...  Set up for Don Kiely's session on SQL Server security.  Time enough for a 'restroom' break and to secure liquid refreshment.&lt;/div&gt;&lt;div&gt;4:03 PM - Long intro is long...&lt;/div&gt;&lt;div&gt;4:16 PM - All day long, people have randomly been requesting control of the presentation.  I'm wondering if they're mistaking that for the fullscreen button.  If so, stop it.&lt;/div&gt;&lt;div&gt;4:26 PM - @BrentO says that happens when someone accidentally clicks on the screen.  Weird, you'd think that it wouldn't be so easy to do that by accident. Now that I know that, it's kind of fun to see the presenter getting irritated by it... :-)&lt;/div&gt;&lt;div&gt;7:00 PM - Ready for Simon Sabin's "High-Performance Functions" Session. &lt;/div&gt;&lt;div&gt;7:18 PM - Ah, scalar functions.  Just like little mini-cursors. :-)&lt;/div&gt;&lt;div&gt;8:00 PM Excellent job by Simon Sabin.  Now on to Brad McGehee on Professional Development.  Really looking forward to this one, because I'm just starting to lean this way - taking control of the career rather than simply riding along.&lt;/div&gt;&lt;div&gt;8:57 PM - Well done session by Brad McGehee, which I will summarize as, "Decide what you wanna do, then make a plan, then do it."  Makes sense, don't it?  :-)  On to Kevin Kline, I think... sounds like they may be having some issues... &lt;/div&gt;&lt;div&gt;9:34 PM - Interesting to see the common threads in these presentations.  Know how to use a query plan, know T-SQL well, know your hardware, software, and your business requirements. Common themes.&lt;/div&gt;&lt;div&gt;9:49 PM - Great question - How to convince otherwise uninterested leadership in preventative maintenance.  The answer is in the SLA.  If your boss won't give you what you think you need, show them what SLA you could provide with what you have.  If they balk, then you have some ammo.  If they're OK, then so are you.&lt;/div&gt;&lt;div&gt;6:34 AM - Sorry I haven't posted any notes for the last couple sessions I've attended - a combination of network issues, and I fell asleep.  College was a long time ago - gimme a break. :-)&lt;/div&gt;&lt;div&gt;Anyway: Dean Richards was good.  I like the idea of SQL Diagramming, and will have to play with that.  I can think of a few situations at work where that might help right now. Currently in Louis Davidson's session on DB Design.  Most of which I knew (yay!) but as usual, enough that I don't to make this a really good session.  Good point about considering the shelf life of your data. I always try to implement some kind of archiving / purging for anything I design.  Especially logging information. (You wouldn't believe how many logs I run into that have 2, 3, or 6 year old data, yet have a business requirement to keep 30 days.)&lt;/div&gt;&lt;div&gt;7:00 AM - Had to bail on Louis' session, which sucks because it was good, but hey - the dude ran over, and I really wanted to make sure I got to BrentO's session.  I run into this all the time - Client: "Hey, can you take a look at server \\ABC123?"  Me: "We have a server by that name?"  Oy...&lt;/div&gt;&lt;div&gt;As an aside, I am so moving my PC when this is done.  My net connection has sucked, this entire time.  In retrospect, putting a computer with a wireless card in the corner of the basement probably wasn't the best move. :-)&lt;/div&gt;&lt;div&gt;7:49 AM - Auditing: Something I have not yet checked for. Cool. :-)&lt;/div&gt;&lt;div&gt;8:09 AM - And that's it for the 24 Hours of Pass.  Brent ended up with a ton of questions, and ran over of course, but it was worth it to hang on and get the additional information.  I'll definitely be checking out that script, and putting it to good use.&lt;/div&gt;&lt;div&gt;I will likely write a follow up to this blog in the near future.  Hope you got something out of it, if even just a laugh.  Gonna go lie down for a couple hours now.  See you later.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8065795755477140766?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sqlpass.org/24hours/2010/' title='LiveBlog: 24 Hours of PASS'/><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8065795755477140766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8065795755477140766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8065795755477140766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8065795755477140766'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/05/liveblog-24-hours-of-pass.html' title='LiveBlog: 24 Hours of PASS'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-554131922219079103</id><published>2010-04-08T21:09:00.001-04:00</published><updated>2010-04-08T21:11:15.775-04:00</updated><title type='text'>Twitter, and Three Word Monte</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;I'm starting to realize that Twitter is kind of like a modern, slower version of IRC. At least, the way I use it. I keep a window open on my desktop, and refer to it throughout the day.  It's not all fun and games of course.  I follow a great many SQL bloggers, most of whom are MVPs.  Often, I'll be able to catch a training session with someone like Kevin Kline, Brent Ozar, or others, simply because they'll tweet that they're about to start.  I've gotten several hours of training that way.  If you're not already, follow me on Twitter, and check out my follow list.  There's some great SQL content in there, as well as some other interesting people.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One fun thread that was on Twitter yesterday, among the SQL community, was what I ended up calling Three Word Monte.  Paul Randal was sending people sets of three words, and they were to work those words into their next meeting.  Later on, I think people work working them into single sentences, which I kind of think was less of a challenge.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway: The words I got were "Scrumptious", "Warrior", and "Vampire".  The first two were easy to come by.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Someone was occupying our conference room when we arrived.  I responded with, "Don't make me go all 'conference room warrior' on you guys..."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. I referred to someone as the "Buffy the Vampire Slayer" of SharePoint administration. Pleasant to talk to, seems flighty on the surface (by her own admission), but ultimately deadly accurate, and good at what she does.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. The last one was difficult, and was ultimately a 'gimme'.  Earlier in the day, at another meeting, our boss was handing out leftover Easter candy.  This was brought up again, and I described it as 'Scrumptious'.  Yeah, I know - weak - but I was pressed for time. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, to anyone reading this thread - here's three for you.  See what you can do, and report back in the comments, below, or on Twitter.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Currant&lt;/div&gt;&lt;div&gt;2. Portage&lt;/div&gt;&lt;div&gt;3. Hypotonic&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-554131922219079103?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/554131922219079103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=554131922219079103' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/554131922219079103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/554131922219079103'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/04/twitter-and-three-word-monte.html' title='Twitter, and Three Word Monte'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6075901337908263282</id><published>2010-03-24T19:37:00.005-04:00</published><updated>2010-03-24T20:29:12.898-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>The Little Stored Procedure That Could.</title><content type='html'>In this corner, we have the production server.  A Windows 2003 R2 SP2 virtual machine with 2x3GHz processors, 3GB of RAM, and plenty of disk.  It's running SQL Server 2005, build 3325.  Residing on that server is a database with corresponding stored procedure that does a couple of 3 table join queries, (one of which is a derived table), UNIONs them, and spits out the results.  The only difference between this server and the development server is about .75GB more RAM on the DEV box.  PROD and DEV DBs are exact copies of one another.  Apologies, but I can't post the procedure here.  If anyone wants to see it, let me know via Twitter, and I can show it to you privately.&lt;br /&gt;&lt;br /&gt;In the opposite corner, we have a Windows XP SP2 workstation, running a VB.Net application that calls said stored procedure.  Or at least, tries to.  There are two copies of the application on that machine.  One that points to DEV, one that points to PROD. The connection info is in a config file, so this matters little, and we only used the PROD copy for testing in this particular case, just changing it's configuration file to point to the DEV DB where needed.&lt;br /&gt;&lt;br /&gt;Here's how the testing went:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DBA runs the proc from SSMS on the DEV server over RDP = Pass.&lt;/li&gt;&lt;li&gt;DBA runs the proc from SSMS on the PROD server over RDP = Pass.&lt;/li&gt;&lt;li&gt;DBA runs the proc from SSMS from his workstation on the DEV DB = Pass.&lt;/li&gt;&lt;li&gt;DBA runs the proc from SSMS from his workstation on the PROD DB = Pass.&lt;/li&gt;&lt;li&gt;App ID runs the proc from the DBA workstation via SSMS on the DEV DB = Pass.&lt;/li&gt;&lt;li&gt;App ID runs the proc from the DBA workstation via SSMS on the PROD DB = Pass.&lt;/li&gt;&lt;li&gt;App ID runs the proc from the user workstation via ISQLW on the DEV DB = Pass.&lt;/li&gt;&lt;li&gt;App ID runs the proc from the user workstation via ISQLW on the PROD DB = Pass.&lt;/li&gt;&lt;li&gt;App ID runs the proc from the user workstation via the app, on the DEV DB = Pass.&lt;/li&gt;&lt;li&gt;App ID runs the proc from the user workstation via the app, on the PROD DB = &lt;b&gt;BIG OL' HONKING FAILURE, BUDDY.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Obviously some sort of application issue, right? Well, one of the tables involved in the procedure contains about 4M rows.  Not that big, especially considering there's a covering index on it for the particular data we're looking for.  However, instead of selecting from there, when we first place the data in a table variable instead, the problem goes away.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am at a loss to explain this.  There's no blocking / locking apparent in the profiler trace. The procedure itself is about as tuned as we can get it.  Next steps are going to be to clear the cache, and equalize the RAM between DEV and PROD.  After that is going to be a call to PSS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Any help or pointers at all would be appreciated.  Thanks for your time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Update:&lt;/b&gt; The actual error is that the proc does what it's supposed to do, then simply stops executing.  It does this every time it's run from the app.  After about 16 minutes, it times out.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6075901337908263282?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6075901337908263282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6075901337908263282' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6075901337908263282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6075901337908263282'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/03/little-stored-procedure-that-could.html' title='The Little Stored Procedure That Could.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-2434604810677284861</id><published>2010-03-21T20:23:00.004-04:00</published><updated>2010-03-21T20:37:36.223-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Special Purpose Script: Monitoring App ID Login Source</title><content type='html'>In this particular situation, we're looking at an application ID that has db_owner role membership on the application's database.    As developers are wont to do, they are logging in using the application ID to do development and administrative work, since it has owner rights.  This is, for obvious reasons, a Bad Thing ™.  Knowing that the application should only be logging in from the web server, we have a SQL Agent job call the following procedure every 5 minutes, to determine where the ID is coming from in each process, and raise a ruckus if the ID is coming from somewhere it shouldn't, like a developer workstation.  The DBA support database in this case, is called "ApplicationSupport".  &lt;br /&gt;  &lt;br /&gt;Of particular interest in this script, I'd like to point out the section where we insert the list of acceptable servers into a table, to compare against the list of hosts present in sysprocesses.  The caller can provide a single hostname, or an unlimited comma delimited list of hostnames.  The script parses the comma delimited list, if present, and inserts each hostname into a single column table, comparable to sysprocesses. &lt;br /&gt;  &lt;br /&gt;First, the required tables. &lt;br /&gt;&lt;pre&gt;  &lt;br /&gt;/****** Object:  Table [dbo].[UsrLoginHist] Script Date: 01/11/2010 07:44:43 ******/ &lt;br /&gt;SET ANSI_NULLS ON &lt;br /&gt;GO &lt;br /&gt;SET QUOTED_IDENTIFIER ON &lt;br /&gt;GO &lt;br /&gt;&lt;br /&gt;CREATE TABLE [dbo].[UsrLoginHist] ( &lt;br /&gt;  [LogID] [int] IDENTITY(1,1) NOT NULL, &lt;br /&gt;  [LogDT] [datetime] NOT NULL &lt;br /&gt;    CONSTRAINT [DF_UsrLoginHist_LogDT] DEFAULT (getdate()), &lt;br /&gt;  [LoginName] [varchar](100) NULL, &lt;br /&gt;  [Host] [varchar](30) NULL, &lt;br /&gt;  [DBName] [varchar](100) NULL, &lt;br /&gt;  [SPID] [int] NULL, &lt;br /&gt;  [LoginDT] [datetime] NULL, &lt;br /&gt;  [BatchDT] [datetime] NULL, &lt;br /&gt;    CONSTRAINT [PK_UsrLoginHist_LogID] &lt;br /&gt;    PRIMARY KEY CLUSTERED ([LogID] ASC) &lt;br /&gt;  ) &lt;br /&gt;GO &lt;br /&gt;  &lt;br /&gt;CREATE NONCLUSTERED INDEX [IXNN_UsrLoginHist_Host] &lt;br /&gt;  ON [dbo].[UsrLoginHist] ([Host] ASC) &lt;br /&gt;    INCLUDE ([DBName], [LoginName]&lt;br /&gt;  ) &lt;br /&gt;GO &lt;br /&gt;  &lt;br /&gt;CREATE NONCLUSTERED INDEX [IXNN_UsrLoginHist_LogDT] &lt;br /&gt;  ON [dbo].[UsrLoginHist] ([LogDT] ASC) &lt;br /&gt;GO &lt;br /&gt;  &lt;br /&gt;CREATE NONCLUSTERED INDEX [IXNN_UsrLoginHist_LoginDT] &lt;br /&gt;  ON [dbo].[UsrLoginHist] ([LoginDT] ASC) &lt;br /&gt;  &lt;br /&gt;/****** Object:  Table [dbo].[UsrLoginLastScan] Script Date: 01/11/2010 07:45:02 ******/ &lt;br /&gt;SET ANSI_NULLS ON &lt;br /&gt;GO &lt;br /&gt;SET QUOTED_IDENTIFIER ON &lt;br /&gt;GO &lt;br /&gt;&lt;br /&gt;CREATE TABLE [dbo].[UsrLoginLastScan] ( &lt;br /&gt;  [LoginName] [varchar](100) NULL, &lt;br /&gt;  [Host] [varchar](30) NULL, &lt;br /&gt;  [DBName] [varchar](100) NULL, &lt;br /&gt;  [SPID] [int] NULL, &lt;br /&gt;  [LoginDT] [datetime] NULL, &lt;br /&gt;  [BatchDT] [datetime] NULL &lt;br /&gt;) &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here's the stored procedure. &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/****** Object:  StoredProcedure [dbo].[ScanUserLogin] Script Date: 12/23/2009 10:52:07 ******/ &lt;br /&gt;SET ANSI_NULLS ON &lt;br /&gt;GO &lt;br /&gt;SET QUOTED_IDENTIFIER ON &lt;br /&gt;GO &lt;br /&gt;&lt;br /&gt;ALTER PROCEDURE [dbo].[ScanUserLogin] &lt;br /&gt;/******************************************************************************* &lt;br /&gt;NAME: &lt;br /&gt;  ScanUserLogin &lt;br /&gt;DESCRIPTION: &lt;br /&gt;  Audits sessions for a particular user ID on this server, alerts on any new ones &lt;br /&gt;  that are not coming from authorized hosts. &lt;br /&gt;DEPENDENCIES: &lt;br /&gt;  ApplicationSupport.dbo.UsrLoginHist &lt;br /&gt;  ApplicationSupport.dbo.UsrLoginLastScan &lt;br /&gt;TEST EXEC: &lt;br /&gt;  EXEC dbo.ScanUserLogin &lt;br /&gt;    @LoginName = 'MAXIMO', &lt;br /&gt;    @AuthHostList = 'HDCDEV04,HDCDEV06' &lt;br /&gt;TO DO LIST: &lt;br /&gt;  Pending feedback. &lt;br /&gt;NOTES:  &lt;br /&gt;  Please send any comments or suggestions to dmmaxwell@gmail.com. &lt;br /&gt;******************************************************************************** &lt;br /&gt;AUTHOR - EXT. - DATE - REASON FOR CHANGE &lt;br /&gt;------------------------------------------------------------------------------- &lt;br /&gt;David Maxwell - 61142 - 2009.12.22 - Initial version. &lt;br /&gt;*******************************************************************************/ &lt;br /&gt;  @LoginName varchar(30), -- The login name to search for.  Required. &lt;br /&gt;  @HostList varchar(350), -- The comma-delimited list of acceptable hosts. Required. &lt;br /&gt;  @RetainDays int -- The number of days worth of history to keep for this ID. &lt;br /&gt;AS &lt;br /&gt;  &lt;br /&gt;SET NOCOUNT ON -- Because, why? &lt;br /&gt;  &lt;br /&gt;-- Required variables &lt;br /&gt;DECLARE &lt;br /&gt;  @ErrMsg nvarchar(4000), -- Error message holder. &lt;br /&gt;  @HostName varchar(30), -- Hostname being added to the authorized host list. &lt;br /&gt;  @LoginCount int, -- Number of new, unauthorized logins being reported. &lt;br /&gt;  @LogDate datetime, -- The recorded logging date when the scan was run. &lt;br /&gt;  @PurgeDate datetime -- The date from which to purge old records from history. &lt;br /&gt;  &lt;br /&gt;-- Set constants &lt;br /&gt;SELECT @LogDate = GETDATE() &lt;br /&gt;SELECT @PurgeDate = DATEADD(day,-@RetainDays,@LogDate) &lt;br /&gt;  &lt;br /&gt;-- Clean up from previous runs, if necessary &lt;br /&gt;IF (SELECT OBJECT_ID('tempdb.dbo.#UsrLoginScan')) IS NOT NULL &lt;br /&gt;DROP TABLE #UsrLoginScan; &lt;br /&gt;  &lt;br /&gt;IF (SELECT OBJECT_ID('tempdb.dbo.#UsrLoginScan')) IS NOT NULL &lt;br /&gt;DROP TABLE #HostList; &lt;br /&gt;  &lt;br /&gt;-- Create required temp tables. &lt;br /&gt;BEGIN TRY &lt;br /&gt;  CREATE TABLE #UsrLoginScan ( &lt;br /&gt;    LoginName varchar(100) NULL, &lt;br /&gt;    Host varchar(30) NULL, &lt;br /&gt;    DBName varchar(100) NULL, &lt;br /&gt;    SPID int NULL, &lt;br /&gt;    LoginDT datetime NULL, &lt;br /&gt;    BatchDT datetime NULL, &lt;br /&gt;    Notify bit NOT NULL &lt;br /&gt;  ); &lt;br /&gt;END TRY &lt;br /&gt;BEGIN CATCH &lt;br /&gt;  SELECT @ErrMsg = N'Unable to create #UsrLoginScan: ' + char(13) + &lt;br /&gt;  ERROR_MESSAGE() &lt;br /&gt;  GOTO ExitProc -- FATAL ERROR &lt;br /&gt;END CATCH &lt;br /&gt;  &lt;br /&gt;BEGIN TRY &lt;br /&gt;  CREATE TABLE #HostList ( &lt;br /&gt;    Host varchar(30) NOT NULL &lt;br /&gt;  ) &lt;br /&gt;END TRY &lt;br /&gt;BEGIN CATCH &lt;br /&gt;  SELECT @ErrMsg = N'Unable to create #HostList: ' + char(13) + &lt;br /&gt;  ERROR_MESSAGE() &lt;br /&gt;  GOTO ExitProc -- FATAL ERROR &lt;br /&gt;END CATCH &lt;br /&gt;  &lt;br /&gt;-- Insert the list of names into the host list. &lt;br /&gt;WHILE (SELECT LEN(@HostList)) &gt; 0 &lt;br /&gt;BEGIN &lt;br /&gt;  BEGIN TRY &lt;br /&gt;    -- If the list still contains commas, we're not done, so... &lt;br /&gt;    IF (SELECT CHARINDEX(',',@HostList,1)) &gt; 0 &lt;br /&gt;    BEGIN &lt;br /&gt;      -- Get the name at the beginning of the list. &lt;br /&gt;      SELECT @HostName = LEFT(@HostList,CHARINDEX(',',@HostList,1)) &lt;br /&gt;    END &lt;br /&gt;    ELSE &lt;br /&gt;      -- Otherwise, just get the remaining name in the list. &lt;br /&gt;      SELECT @HostName = @HostList &lt;br /&gt;    &lt;br /&gt;    -- Insert the host name into the list, sans comma (if there). &lt;br /&gt;    INSERT INTO #HostList &lt;br /&gt;    SELECT REPLACE(@HostName,',','') &lt;br /&gt;  &lt;br /&gt;    -- Remove the host name from the list, with comma (if there). &lt;br /&gt;    SELECT @HostList = REPLACE(@HostList,@HostName,'') &lt;br /&gt;  END TRY &lt;br /&gt;  BEGIN CATCH &lt;br /&gt;    SELECT @ErrMsg = N'Unable to add host names to #HostList: ' +  char(13) + &lt;br /&gt;    ERROR_MESSAGE() &lt;br /&gt;    GOTO ExitProc -- FATAL ERROR &lt;br /&gt;  END CATCH &lt;br /&gt;END &lt;br /&gt;  &lt;br /&gt;-- Get the current list of unauthorized logins from sysprocesses. &lt;br /&gt;BEGIN TRY &lt;br /&gt;  INSERT INTO #UsrLoginScan &lt;br /&gt;  SELECT &lt;br /&gt;    sp.loginame, &lt;br /&gt;    sp.hostname, &lt;br /&gt;    db_name(sp.[dbid]), &lt;br /&gt;    sp.SPID, &lt;br /&gt;    sp.login_time, &lt;br /&gt;    sp.last_batch, &lt;br /&gt;    0 -- Notify off, for now. &lt;br /&gt;  FROM master..sysprocesses sp &lt;br /&gt;  LEFT OUTER JOIN #HostList hl &lt;br /&gt;    ON sp.hostname = hl.Host &lt;br /&gt;  WHERE sp.loginame = @LoginName &lt;br /&gt;    AND hl.Host IS NULL &lt;br /&gt;END TRY &lt;br /&gt;BEGIN CATCH &lt;br /&gt;  SELECT @ErrMsg = N'Unable to insert sysprocesses to #UsrLoginScan: ' +  char(13) + &lt;br /&gt;  ERROR_MESSAGE() &lt;br /&gt;  GOTO ExitProc -- FATAL ERROR &lt;br /&gt;END CATCH &lt;br /&gt;  &lt;br /&gt;-- Compare the list to the last scan, and flag new unauthorized sessions to notify. &lt;br /&gt;BEGIN TRY &lt;br /&gt;  UPDATE uls &lt;br /&gt;  SET uls.Notify = 1 &lt;br /&gt;  FROM #UsrLoginScan uls &lt;br /&gt;  LEFT OUTER JOIN dbo.UsrLoginLastScan ulls &lt;br /&gt;    ON  uls.LoginName = ulls.LoginName &lt;br /&gt;    AND uls.Host = ulls.Host &lt;br /&gt;    AND uls.DBName = ulls.DBName &lt;br /&gt;    AND uls.SPID = ulls.SPID &lt;br /&gt;    AND uls.LoginDT = ulls.LoginDT &lt;br /&gt; -- AND uls.BatchDT = ulls.BatchDT -- Not considering this a new instance for now. &lt;br /&gt;  WHERE ulls.LoginName IS NULL &lt;br /&gt;END TRY &lt;br /&gt;BEGIN CATCH &lt;br /&gt;  SELECT @ErrMsg = N'Unable to set notify flag on new unauthorized sessions: ' +  char(13) + &lt;br /&gt;  ERROR_MESSAGE() &lt;br /&gt;  GOTO ExitProc -- FATAL ERROR &lt;br /&gt;END CATCH &lt;br /&gt;  &lt;br /&gt;-- Copy the information to the Last Scan and History tables. &lt;br /&gt;BEGIN TRY &lt;br /&gt;  INSERT INTO dbo.UsrLoginHist &lt;br /&gt;  SELECT &lt;br /&gt;    @LogDate, &lt;br /&gt;    LoginName, &lt;br /&gt;    Host, &lt;br /&gt;    DBName, &lt;br /&gt;    SPID, &lt;br /&gt;    LoginDT, &lt;br /&gt;    BatchDT &lt;br /&gt;  FROM #UsrLoginScan &lt;br /&gt;END TRY &lt;br /&gt;BEGIN CATCH &lt;br /&gt;  SELECT @ErrMsg = N'Unable to insert to UsrLoginHist: ' +  char(13) + &lt;br /&gt;  ERROR_MESSAGE() &lt;br /&gt;  GOTO ExitProc -- FATAL ERROR &lt;br /&gt;END CATCH &lt;br /&gt;  &lt;br /&gt;TRUNCATE TABLE UsrLoginLastScan &lt;br /&gt;  &lt;br /&gt;BEGIN TRY &lt;br /&gt;  INSERT INTO UsrLoginLastScan &lt;br /&gt;  SELECT &lt;br /&gt;    LoginName, &lt;br /&gt;    Host, &lt;br /&gt;    DBName, &lt;br /&gt;    SPID, &lt;br /&gt;    LoginDT, &lt;br /&gt;    BatchDT &lt;br /&gt;  FROM #UsrLoginScan &lt;br /&gt;END TRY &lt;br /&gt;BEGIN CATCH &lt;br /&gt;  SELECT @ErrMsg = N'Unable to replace UsrLoginLastScan: ' +  char(13) + &lt;br /&gt;  ERROR_MESSAGE() &lt;br /&gt;  GOTO ExitProc -- FATAL ERROR &lt;br /&gt;END CATCH &lt;br /&gt;  &lt;br /&gt;-- If there were unauthorized sessions set for notify, set the error message. &lt;br /&gt;SELECT @LoginCount = COUNT(*) &lt;br /&gt;FROM #UsrLoginScan &lt;br /&gt;WHERE Notify = 1 &lt;br /&gt;  &lt;br /&gt;IF (SELECT @LoginCount) &gt; 0 &lt;br /&gt;BEGIN &lt;br /&gt;  SELECT @ErrMsg = N'WARNING: ' + CAST(@LoginCount AS nvarchar(2)) + &lt;br /&gt;                   N' unauthorized connections by ' + @LoginName + &lt;br /&gt;                   N' on server ' + CAST(@@ServerName AS nvarchar(30)) + &lt;br /&gt;                   N' at ' + CONVERT(nvarchar(30),@LogDate,121) + '.' &lt;br /&gt;  RAISERROR (@ErrMsg,16,1) WITH LOG &lt;br /&gt;END &lt;br /&gt;  &lt;br /&gt;-- Now purge old records for this ID. &lt;br /&gt;BEGIN TRY &lt;br /&gt;  DELETE FROM UsrLoginHist &lt;br /&gt;  WHERE LoginName = @LoginName &lt;br /&gt;    AND LogDT &lt; @PurgeDate &lt;br /&gt;END TRY &lt;br /&gt;BEGIN CATCH &lt;br /&gt;  SELECT @ErrMsg = N'Unable to purge old records from UsrScanHist: ' +  char(13) + &lt;br /&gt;  ERROR_MESSAGE() &lt;br /&gt;  GOTO ExitProc -- FATAL ERROR &lt;br /&gt;END CATCH &lt;br /&gt;  &lt;br /&gt;-- Set the @ErrMsg back to NULL so the process can exit successfully. &lt;br /&gt;SELECT @ErrMsg = NULL &lt;br /&gt;  &lt;br /&gt;-- Exit, raising error if neccessary. &lt;br /&gt;ExitProc: &lt;br /&gt;IF (SELECT @ErrMsg) IS NOT NULL &lt;br /&gt;BEGIN &lt;br /&gt;  RAISERROR(@ErrMsg,16,1) &lt;br /&gt;  RETURN(-1) &lt;br /&gt;END &lt;br /&gt;ELSE &lt;br /&gt;  RETURN(0) &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Any comments, suggestions or other help is always appreciated.  Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-2434604810677284861?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/2434604810677284861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=2434604810677284861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2434604810677284861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2434604810677284861'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/03/in-this-particular-situation-were.html' title='Special Purpose Script: Monitoring App ID Login Source'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6571577477474929158</id><published>2010-01-14T19:44:00.001-05:00</published><updated>2010-01-14T19:47:39.340-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>If I had known then...</title><content type='html'>&lt;p&gt;I started using SQL Server sometime around 1998 - 1999, In an environment that was a mixture of SQL 6.5, 7.0 and we were on our way to upgrading to SQL 2000.  The other day, I had a "If I only knew then, what I know now." kind of moment, and it dawned on me that a quick post on here about things I wish I knew, or understood back then, might be helpful to any newbie DBA's that may stumble across this blog.  So, here's a quick list of things that I wish someone had told me way back when, and I've learned through experience.  Hope it helps someone.&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Backups.  I can't stress this one enough.  Backups are your first, last, and sometimes only line of defense against database issues.  I've been through data loss due to improper backups and it hurts.  In some cases, it's a career-ending event.  Know your backup and recovery strategy inside and out.  Here's a tip on this: Instead of thinking in terms of, "How can I back this up?", think in terms of, "How would I recover this?"    Know your company's tolerance for data loss.  A company that can only afford to lose 15 minute's worth of work vs. a company that can simply re-import their database data from flat files call for very different strategies.  And please, please, please TEST your backups.  If you haven't restored it, you haven't really backed it up. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;DBCC. At a minimum, you should be checking the database integrity as frequently as you possibly can without impacting normal operations.  There are ways to do this.  And make sure you check everything, including the system databases.  I've seen what happens when [master] or [msdb] get corrupted and it isn't pretty.  Save yourself the headache by making sure you have some kind of ongoing maintenance on all your databases.  Actively look for potential issues, don't wait to be notified.  Database corruption is NASTY, and while there's not always a lot you can do to avoid it, you can take steps to keep yourself informed, and if necessary, restore from backup.  (See point #1.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Configuration.  There are a lot of options for configuring SQL Server and it just gets more and more complex as the version number goes up.  Some configuration changes, when tweaked, make little noticeable difference.  Others can cause massive performance issues with only minor changes.  Understand exactly what you're changing and why, before you set it.  Don't just go off of a KB article.  Also, know how different configurations can be applied in different situations.  OLAP and OLTP servers have different disk configurations for a reason.  Know why.  Finally, if your organization has a change management policy or system, know it backwards and forwards.  If they don't, make one of your own, and make sure your boss is aware of it.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Homework.  Speaking of KB articles, just because one sounds like it's exactly the issue you're experiencing, and provides an easy fix, doesn't mean it's going to work.  You need to continuously research.  Books Online and MSDN are your friends.  Join forums and read blogs in addition to other sources of documentation.  Pay close attention to discussion about other DBA's as well, since the community does police their own, and you'll find out who's really helpful, and who is full of it.  Post scripts and questions, even ones that seem simple.  (But do follow forum rules and etiquitte.)  Certifications are a good start, but not an end by any means.  Do your own experiments as well.  Document everything.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;T-SQL.  Learn T-SQL, both for administrative and data operations.  Yes, you can do a lot with SQL with just the GUI interface and wizards, but even those are just front-ends for T-SQL scripts.  T-SQL is a far more powerful language in SQL Server than most people give it credit for.  You can save a lot of time and effort by scripting out repetitive actions, and the built-in DBCC commands are superb for quick diagnosis of issues.  Further, T-SQL is the core language of SQL Server, and you should stay as close to the core as possible.  Third-party tools mean licensing costs, as well as performance overhead, and SSIS is included in this.  Anything you can do from a script is (usually) going to be more stable and perform better than anything you'd do in SSIS or any other third party management app.  And what would you do if you couldn't access the server via the GUI?  Hm?  :-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Indexes.  Know the differences between the different types of indexes and statistics, and what they mean to performance.  Probably 9 times out of 10, the reason your user's queries are running so long is because they're improperly using  indexes, or not using indexes at all.  Avoid creating tables without a clustered index, unless you know EXACTLY why.  Also, be wary of adding too many indexes, which is great for read performance, but not so much for writes. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Disk Management.  This can be critical, especially for your larger databases or smaller disks.  Understand how much free space you need, not just how much disk space you need.  Pro-actively manage file sizes, especially the transaction logs.  (Transaction log backups, anyone?)  Plan aggressively for growth.  Know how the different RAID levels work and what they mean to performance.  Know what the disk costs are for index maintenance operations, especially adding new indexes or rebuilding them.  Watch both your physical disk and index fragmentation very carefully.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Business.  Understand the business side of the data and what it means.  Be able to tell from your client's business description, what they're experiencing in regards to the data.  Know the rules of the business and how they affect data management, not just in terms of check constraints or relational integrity, but in reporting and analysis as well.  As a DBA, part of your job is to help the client make sense of all that data, and it's much easier to do so when you understand what they do, and where they want to go.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Development.  The Developer vs. DBA debate has been going on for a long time, and it won't stop.  Be approachable.  Don't dismiss.  Try to understand what the developer's goals are just as much as the business.  Discuss much.  Try to learn a bit of the development methodology in play, and the development language as well, so you can be knowledgeable about how things are being done, and how they will affect the database environment.  (I will note here, that this is an area in which I am sorely under-skilled.  Working on it. :-)  )&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Security.  Understand how permissions work, and how to minimize the amount of exposure the users, developers, and even the admins, have to the data and configuration.  Rely on ActiveDirectory for as much as possible, but don't be afraid of using SQL Security where it makes sense.  Make friends with your security group.  Know the policies and procedures for making security changes well enough that you'll never delay an implementation with a security policy violation.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Be Nice.  This applies to a lot of technical disciplines, and DBAs are no exception.  All too often the DBA is seen as a wizard in an ivory tower, who maintains dominion over the arcane lore and cryptic bits and bytes of THE DATABASE.  This needs to stop.  Again, be approachable and friendly.  It's easy to get caught up in minor technical details of a problem to the exclusion of the human side of things.   Listen carefully to users, developers, and management alike.  Ask questions, and come up with explanations for database concepts that your mom would understand.  (Unless she's a DBA, too.)  Be someone who everyone feels comfortable coming to for help, especially when they're stressed.  Because that's when you're needed the most, and this, in two words, is job security.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Anything you'd add?  Leave a comment below.  Thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6571577477474929158?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6571577477474929158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6571577477474929158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6571577477474929158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6571577477474929158'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2010/01/if-i-had-known-then.html' title='If I had known then...'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-9035902552761161427</id><published>2009-10-05T08:19:00.002-04:00</published><updated>2009-10-05T08:30:10.836-04:00</updated><title type='text'>How much is this gonna cost? In bytes?</title><content type='html'>Trying to get my groove back with posting on this blog, so I'll start by posting some handy scripts I've been using lately. This one gives you a report of what the max and average cost per row is, in bytes, for each table, along with what it’s currently costing you. This doesn't account for some common overhead, but it's a good quick indicator of where most of the space is being taken up in the database.&lt;br /&gt;&lt;br /&gt;If anyone wants a 2000 version of this, let me know.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;-D.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;/* Cost Per Row Per Table - 2005 Version. */&lt;br /&gt;&lt;br /&gt;USE [dm_sandbox] --&lt;-- set the database name.&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;DECLARE&lt;br /&gt;  @Tname varchar(500),&lt;br /&gt;  @sqlcmd nvarchar(4000)&lt;br /&gt;&lt;br /&gt;-- Set up temp tables.  First, clean up from previous runs if necessary.&lt;br /&gt;IF (&lt;br /&gt;    SELECT&lt;br /&gt;      OBJECT_ID('tempdb.dbo.#DataCost')&lt;br /&gt;   ) IS NOT NULL &lt;br /&gt;  DROP TABLE #DataCost&lt;br /&gt;&lt;br /&gt;IF (&lt;br /&gt;    SELECT&lt;br /&gt;      OBJECT_ID('tempdb.dbo.#IndexCost')&lt;br /&gt;   ) IS NOT NULL &lt;br /&gt;  DROP TABLE #IndexCost &lt;br /&gt;&lt;br /&gt;IF (&lt;br /&gt;    SELECT&lt;br /&gt;      OBJECT_ID('tempdb.dbo.#TableCounts')&lt;br /&gt;   ) IS NOT NULL &lt;br /&gt;  DROP TABLE #TableCounts &lt;br /&gt;&lt;br /&gt;IF (&lt;br /&gt;    SELECT&lt;br /&gt;      OBJECT_ID('tempdb.dbo.#TotalCost')&lt;br /&gt;   ) IS NOT NULL &lt;br /&gt;  DROP TABLE #TotalCost &lt;br /&gt;&lt;br /&gt;-- Create temp tables.&lt;br /&gt;CREATE TABLE #IndexCost (&lt;br /&gt;   TableName varchar(500),&lt;br /&gt;   IndexName varchar(500),&lt;br /&gt;   IndexColumn varchar(300),&lt;br /&gt;   ColumnType varchar(30),&lt;br /&gt;   ColumnLength int,&lt;br /&gt;   TrueLength int&lt;br /&gt;  )&lt;br /&gt;&lt;br /&gt;CREATE TABLE #DataCost (&lt;br /&gt;   TableName varchar(500),&lt;br /&gt;   ColumnName varchar(500),&lt;br /&gt;   ColumnType varchar(30),&lt;br /&gt;   ColumnLength int,&lt;br /&gt;   TrueLength int&lt;br /&gt;  )&lt;br /&gt;&lt;br /&gt;DECLARE @TableList TABLE (TableName varchar(500))&lt;br /&gt;  &lt;br /&gt;CREATE TABLE #TableCounts (&lt;br /&gt;   TableName varchar(500),&lt;br /&gt;   RowCnt int&lt;br /&gt;  )&lt;br /&gt;&lt;br /&gt;-- Get the cost per row of data. Base tables only - views hold no &lt;br /&gt;-- data.  They are included in case they are indexed.&lt;br /&gt;INSERT INTO&lt;br /&gt;  #DataCost&lt;br /&gt;  SELECT&lt;br /&gt;    OBJECT_NAME(c.[object_id]) as TableName, c.[name] as ColumnName,&lt;br /&gt;    t.[name] as ColumnType, c.[max_length] as ColumnLength, NULL as TrueLength&lt;br /&gt;  FROM&lt;br /&gt;    sys.columns c&lt;br /&gt;  INNER JOIN sys.objects o&lt;br /&gt;    ON c.object_id = o.object_id&lt;br /&gt;  INNER JOIN sys.types t&lt;br /&gt;    ON c.[system_type_id] = t.[user_type_id]&lt;br /&gt;  WHERE&lt;br /&gt;    o.[type] IN ('U', 'V')&lt;br /&gt;&lt;br /&gt;-- Calculate the actual length of nvar* and var* columns.&lt;br /&gt;UPDATE&lt;br /&gt;  #DataCost&lt;br /&gt;SET&lt;br /&gt;  TrueLength = (&lt;br /&gt;                SELECT&lt;br /&gt;                  CASE WHEN ColumnType LIKE 'nvar%'&lt;br /&gt;                       THEN (ColumnLength * 2) + 2&lt;br /&gt;                       WHEN ColumnType LIKE 'var%' THEN ColumnLength + 2&lt;br /&gt;                       ELSE ColumnLength&lt;br /&gt;                  END&lt;br /&gt;               )&lt;br /&gt;&lt;br /&gt;-- Get the cost per row of indexes.  Here's why we included the&lt;br /&gt;-- views. :-)&lt;br /&gt;INSERT INTO&lt;br /&gt;  #IndexCost&lt;br /&gt;  SELECT&lt;br /&gt;    OBJECT_NAME(i.[Object_ID]) AS TableName, i.[name] AS IndexName,&lt;br /&gt;    c.[name] AS IndexColumn, t.[name] AS ColumnType,&lt;br /&gt;    c.[max_length] AS ColumnLength, NULL AS TrueLength&lt;br /&gt;  FROM&lt;br /&gt;    sys.index_columns ic&lt;br /&gt;  INNER JOIN sys.indexes i&lt;br /&gt;    ON ic.[Object_ID] = i.[Object_ID]&lt;br /&gt;       AND ic.[index_id] = i.[index_id]&lt;br /&gt;  INNER JOIN sys.columns c&lt;br /&gt;    ON i.[Object_ID] = c.[Object_ID]&lt;br /&gt;       AND ic.[index_column_id] = c.[Column_ID]&lt;br /&gt;  INNER JOIN sys.objects o&lt;br /&gt;    ON c.[Object_ID] = o.[Object_ID]&lt;br /&gt;  INNER JOIN sys.types t&lt;br /&gt;    ON c.[user_type_id] = t.[user_type_id]&lt;br /&gt;  WHERE&lt;br /&gt;    o.[type] IN ('U', 'V')&lt;br /&gt;&lt;br /&gt;-- Same deal for the nvar* and var* columns as the tables, above.&lt;br /&gt;UPDATE&lt;br /&gt;  #IndexCost&lt;br /&gt;SET&lt;br /&gt;  TrueLength = (&lt;br /&gt;                SELECT&lt;br /&gt;                  CASE WHEN ColumnType LIKE 'nvar%'&lt;br /&gt;                       THEN (ColumnLength * 2) + 2&lt;br /&gt;                       WHEN ColumnType LIKE 'var%' THEN (ColumnLength + 2)&lt;br /&gt;                       ELSE ColumnLength&lt;br /&gt;                  END&lt;br /&gt;               )&lt;br /&gt;&lt;br /&gt;-- Get the rowcounts for each table or view. &lt;br /&gt;INSERT INTO&lt;br /&gt;  @TableList&lt;br /&gt;  SELECT&lt;br /&gt;    OBJECT_NAME([Object_ID])&lt;br /&gt;  FROM&lt;br /&gt;    sys.objects&lt;br /&gt;  WHERE&lt;br /&gt;    [type] IN ('U', 'V')&lt;br /&gt;&lt;br /&gt;--... one at a time ... &lt;br /&gt;WHILE (&lt;br /&gt;       SELECT&lt;br /&gt;        COUNT(*)&lt;br /&gt;       FROM&lt;br /&gt;        @TableList&lt;br /&gt;      ) &gt; 0&lt;br /&gt;  BEGIN&lt;br /&gt;    SET @Tname = (&lt;br /&gt;                  SELECT TOP 1&lt;br /&gt;                    TableName&lt;br /&gt;                  FROM&lt;br /&gt;                    @TableList&lt;br /&gt;                 )&lt;br /&gt;  &lt;br /&gt;    SET @sqlcmd = (&lt;br /&gt;                   SELECT&lt;br /&gt;                    'SELECT ''' + @TName + ''', SUM(1) FROM dbo.[' + @Tname&lt;br /&gt;                    + ']'&lt;br /&gt;                  )&lt;br /&gt;  &lt;br /&gt;    INSERT INTO&lt;br /&gt;      #TableCounts&lt;br /&gt;      EXEC (@sqlcmd)&lt;br /&gt;  &lt;br /&gt;    DELETE FROM&lt;br /&gt;      @TableList&lt;br /&gt;    WHERE&lt;br /&gt;      TableName = @Tname&lt;br /&gt;    &lt;br /&gt;  END&lt;br /&gt;&lt;br /&gt;-- Display the current cost and cost per row for each table.&lt;br /&gt;SELECT&lt;br /&gt;  dc.TableName AS TableName, SUM(dc.TrueLength) AS DataRowCost,&lt;br /&gt;  COALESCE(SUM(ic.TrueLength), 0) AS IndexRowCost,&lt;br /&gt;  SUM(dc.TrueLength) + COALESCE(SUM(ic.TrueLength), 0) AS TotalCost,&lt;br /&gt;  AVG(tc.RowCnt) AS RowCnt,&lt;br /&gt;  (SUM(dc.TrueLength) + COALESCE(SUM(ic.TrueLength), 0)) * AVG(tc.RowCnt) AS CurrentCost&lt;br /&gt;FROM&lt;br /&gt;  #DataCost dc&lt;br /&gt;LEFT OUTER JOIN #IndexCost ic&lt;br /&gt;  ON dc.TableName = ic.TableName&lt;br /&gt;     AND dc.ColumnName = ic.IndexColumn&lt;br /&gt;LEFT OUTER JOIN #TableCounts tc&lt;br /&gt;  ON dc.TableName = tc.TableName&lt;br /&gt;GROUP BY&lt;br /&gt;  dc.TableName&lt;br /&gt;ORDER BY&lt;br /&gt;  dc.TableName&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-9035902552761161427?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/9035902552761161427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=9035902552761161427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/9035902552761161427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/9035902552761161427'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2009/10/how-much-is-this-gonna-cost-in-bytes.html' title='How much is this gonna cost? In bytes?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3764378028324970840</id><published>2009-10-02T07:30:00.003-04:00</published><updated>2009-10-02T08:01:53.208-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>Blogger open from Work? Oh, and rowcounts...</title><content type='html'>Wonder how long this is going to last... :-)&lt;br /&gt;&lt;br /&gt;It used to be that a blog entry was part of my morning routine for a while. Not lately, and not for a while since my access to blogger from work has been somewhat... restricted. Nowhere more so than from my current client.&lt;br /&gt;&lt;br /&gt;However, it seems that I have that access for the moment, and I should at least try to do something constructive with it. So with that in mind, here's a handy script to get the rowcounts for all your tables. This is fast enough to get the rowcounts for all tables quicker than you could do it for a single table using COUNT(*).  Enjoy.&lt;br /&gt;&lt;br /&gt;-D.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/* Select rowcounts for all tables in a single DB.&lt;br /&gt;   MUCH faster than SELECT COUNT(*)&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;-- 2005 and up.&lt;br /&gt;SELECT &lt;br /&gt;  s.name AS [Schema],&lt;br /&gt;  t.name AS [Table], &lt;br /&gt;  p.rows AS [RowCount]&lt;br /&gt;FROM sys.partitions p&lt;br /&gt;INNER JOIN sys.tables t&lt;br /&gt;  ON p.object_id = t.object_id&lt;br /&gt;INNER JOIN sys.schemas s&lt;br /&gt;  ON t.schema_id = s.schema_id&lt;br /&gt;WHERE index_id &lt; 2&lt;br /&gt;ORDER BY s.name, t.name&lt;br /&gt;&lt;br /&gt;-- 2000 and earlier.&lt;br /&gt;SELECT &lt;br /&gt;  u.name AS [Schema],&lt;br /&gt;  o.name AS [Table],&lt;br /&gt;  i.rowcnt AS [RowCount]&lt;br /&gt;FROM dbo.sysobjects o&lt;br /&gt;INNER JOIN dbo.sysindexes i&lt;br /&gt;  ON o.id = i.id&lt;br /&gt;INNER JOIN dbo.sysusers u&lt;br /&gt;  ON o.uid = u.uid&lt;br /&gt;WHERE i.indid &lt; 2&lt;br /&gt;  AND o.xtype = 'U'&lt;br /&gt;ORDER BY u.name, o.name&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3764378028324970840?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3764378028324970840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3764378028324970840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3764378028324970840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3764378028324970840'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2009/10/blogger-open-from-work.html' title='Blogger open from Work? Oh, and rowcounts...'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-2196424388684413167</id><published>2009-07-30T08:08:00.000-04:00</published><updated>2009-07-30T08:10:40.873-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>So much for that.</title><content type='html'>So my wireless carrier doesn't work with Blogger, according to the error message.  Given who that is, and the 'hip' pop-culture vibe they try to give off, you'd think mobile blogging would be cool.  Guess not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-2196424388684413167?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/2196424388684413167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=2196424388684413167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2196424388684413167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2196424388684413167'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2009/07/so-much-for-that.html' title='So much for that.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-62439960345272416</id><published>2009-07-29T16:20:00.001-04:00</published><updated>2009-07-29T16:20:13.693-04:00</updated><title type='text'></title><content type='html'>Just a simple test message for mobile blogging.  Does 180 charaters really make a blog post, though?  We&amp;#39;ll see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-62439960345272416?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/62439960345272416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=62439960345272416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/62439960345272416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/62439960345272416'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2009/07/just-simple-test-message-for-mobile.html' title=''/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-1568031200648854926</id><published>2009-02-01T21:20:00.002-05:00</published><updated>2009-02-01T21:27:24.265-05:00</updated><title type='text'>Wait for me!</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: 13px; "&gt;I was given a situation at work a couple of days ago where we had a conflict between SSIS jobs.  There are two jobs in SQL Agent that get called by an external process.  They both insert to a single, specific table.  If they fire at the same time, they deadlock.  So how do we keep the two from stepping on each other?  That was my task, so I wrote the following proc in response.  You can insert it at the beginning of the job, using the other job name as the @job_name parameter.&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;PROCEDURE&lt;/span&gt; dbo.[WaitForJob]&lt;br /&gt;&lt;span class="rem"&gt;/****************************************************************&lt;br /&gt;NAME:&lt;br /&gt; WaitForJob&lt;br /&gt;&lt;br /&gt;DESCRIPTION:&lt;br /&gt; This is used as a delay step. If you have two jobs that should&lt;br /&gt; not run at the same time, you can use this to check to see if&lt;br /&gt; the interfering job is running before continuing.  Like waiting&lt;br /&gt; for a backup to complete before running a reindex.&lt;br /&gt;&lt;br /&gt;DEPENDENCIES:&lt;br /&gt; XP_SQLAGENT_ENUM_JOBS - this is an undocumented stored proc in&lt;br /&gt; the master database.  As such, this script is not necessarily&lt;br /&gt; going to work on your version of SQL.  It was written on SQL&lt;br /&gt; 2005, though it may work on other versions.  Use at your own&lt;br /&gt; risk. &lt;br /&gt;&lt;br /&gt;TEST EXEC:&lt;br /&gt;&lt;br /&gt;EXEC dbo.WaitForJob&lt;br /&gt; @job_name = 'Backup All Databases',&lt;br /&gt; @job_owner = 'sa',&lt;br /&gt; @delay_interval = '00:01:00'&lt;br /&gt;&lt;br /&gt;TO DO LIST:&lt;br /&gt; 1. Nothing yet - pending feedback.&lt;br /&gt;&lt;br /&gt;NOTES: &lt;br /&gt; Please send any comments or suggestions to dmmaxwell(at)gmail.com.&lt;br /&gt;&lt;br /&gt;*****************************************************************&lt;br /&gt;AUTHOR           EXT.    DATE            REASON FOR CHANGE&lt;br /&gt;-----------------------------------------------------------------&lt;br /&gt;David Maxwell    61142   2009.01.26      Initial version.&lt;br /&gt;****************************************************************/&lt;/span&gt;&lt;br /&gt; @job_name &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(200) = &lt;span class="kwrd"&gt;NULL&lt;/span&gt;,  &lt;span class="rem"&gt;-- No job name = FAIL.&lt;/span&gt;&lt;br /&gt; @job_owner &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(30) = &lt;span class="str"&gt;'sa'&lt;/span&gt;, &lt;span class="rem"&gt;-- The job owner.&lt;/span&gt;&lt;br /&gt; @delay_interval &lt;span class="kwrd"&gt;char&lt;/span&gt;(8) = &lt;span class="str"&gt;'00:00:30'&lt;/span&gt; &lt;span class="rem"&gt;-- Delay between checks.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; NOCOUNT &lt;span class="kwrd"&gt;ON&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- We'll be passing this to xp_sqlagent_enum_jobs&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; &lt;br /&gt; @job_guid uniqueidentifier,&lt;br /&gt; @ErrorMessage &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(4000)&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- No errors yet...&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; @ErrorMessage = (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;--Validate the &lt;span class="kwrd"&gt;input&lt;/span&gt; &lt;span class="kwrd"&gt;first&lt;/span&gt;.&lt;br /&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;COUNT&lt;/span&gt;(*) &lt;span class="kwrd"&gt;FROM&lt;/span&gt; msdb.dbo.sysjobs&lt;br /&gt;   &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; [name] = @job_name) = 0&lt;br /&gt; &lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;SET&lt;/span&gt; @ErrorMessage = (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt;&lt;br /&gt;   &lt;span class="str"&gt;'Job name invalid.  Please supply a valid job name.'&lt;/span&gt;&lt;br /&gt;   )&lt;br /&gt;   &lt;span class="kwrd"&gt;GOTO&lt;/span&gt; EXITPROC&lt;br /&gt; &lt;span class="kwrd"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Drop the temp table, if it already exists.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; OBJECT_ID(&lt;span class="str"&gt;'tempdb.dbo.#TempJobs'&lt;/span&gt;)) &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;DROP&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; #TempJobs&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Create the temp table for holding the xp_sqlagent_enum_jobs&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- results.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; #TempJobs (&lt;br /&gt; JobID &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; LastRunDate &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; LastRunTime &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; NextRunDate &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; NextRunTime &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; NextSchedule &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; Requested &lt;span class="kwrd"&gt;bit&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; ReqSource  &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; ReqSourceID &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(100) &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; Running &lt;span class="kwrd"&gt;bit&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; CurrentStep  &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; CurrentRetry &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt; JobState &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;&lt;br /&gt; ) &lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Get the job GUID.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; @job_guid = job_id&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; msdb.dbo.sysjobs&lt;br /&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt; name = @job_name&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Get the info for that job, and insert into the temp table.  &lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; #TempJobs&lt;br /&gt;&lt;span class="kwrd"&gt;EXEC&lt;/span&gt; master..xp_sqlagent_enum_jobs 1, @job_owner, @job_guid&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;COUNT&lt;/span&gt;(*) &lt;span class="kwrd"&gt;FROM&lt;/span&gt; #TempJobs) &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;SET&lt;/span&gt; @ErrorMessage = (&lt;br /&gt;   &lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="str"&gt;'Error getting initial job information.'&lt;/span&gt;&lt;br /&gt;   )&lt;br /&gt;   &lt;span class="kwrd"&gt;GOTO&lt;/span&gt; EXITPROC&lt;br /&gt; &lt;span class="kwrd"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;--&lt;span class="rem"&gt;-- To test, uncomment this section.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- IF (SELECT Running FROM #TempJobs) = 1&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;--   BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;--     PRINT 'Job Is Running.'&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;--   END&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- ELSE &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;--   PRINT 'Job Is Not Running.'&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- GOTO EXITPROC&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Now start checking every @delay_interval.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- For testing, comment this section out, and uncomment&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- the one above.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;WHILE&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; Running &lt;span class="kwrd"&gt;FROM&lt;/span&gt; #TempJobs) = 1&lt;br /&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;TRUNCATE&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; #TempJobs&lt;br /&gt;  &lt;span class="kwrd"&gt;WAITFOR&lt;/span&gt; DELAY @delay_interval &lt;br /&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt; TRY&lt;br /&gt;  &lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; #TempJobs&lt;br /&gt;  &lt;span class="kwrd"&gt;EXEC&lt;/span&gt; master..xp_sqlagent_enum_jobs 1, @job_owner, @job_guid&lt;br /&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt; TRY&lt;br /&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt; CATCH&lt;br /&gt;  &lt;span class="kwrd"&gt;SET&lt;/span&gt; @ErrorMessage = (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt;&lt;br /&gt;  &lt;span class="str"&gt;'Error during job check loop.'&lt;/span&gt; +&lt;br /&gt;  &lt;span class="kwrd"&gt;CHAR&lt;/span&gt;(13) + ERROR_MESSAGE() + &lt;span class="kwrd"&gt;CHAR&lt;/span&gt;(13))&lt;br /&gt;  &lt;span class="kwrd"&gt;GOTO&lt;/span&gt; EXITPROC&lt;br /&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt; CATCH&lt;br /&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;EXITPROC:&lt;br /&gt;&lt;span class="kwrd"&gt;IF&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; @ErrorMessage) &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;RAISERROR&lt;/span&gt;(@ErrorMessage,16,1)&lt;br /&gt; &lt;span class="kwrd"&gt;RETURN&lt;/span&gt;(-1)&lt;br /&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;ELSE&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;RETURN&lt;/span&gt;(0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-1568031200648854926?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/1568031200648854926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=1568031200648854926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1568031200648854926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1568031200648854926'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2009/02/wait-for-me.html' title='Wait for me!'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5760034963388156078</id><published>2009-01-16T15:56:00.007-05:00</published><updated>2009-01-16T16:03:01.559-05:00</updated><title type='text'>Where'd that backup go?</title><content type='html'>A friend IM'd me today and mentioned that he was having an issue with a backup.  It appeared that the backup ran, but he was unable to find the backup file.  I have a 'quickie' backup history script that I use for telling me when stuff was backed up, but it doesn't mention where it was backed up to, since there's some MAX() and GROUP BY going on, and using individual file names would obviate that.&lt;br /&gt;&lt;br /&gt;Here's the 'When' version:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SELECT&lt;br /&gt;  SERVERPROPERTY('ServerName') AS ServerName,&lt;br /&gt;  a.Name AS DBName,&lt;br /&gt;  databasepropertyex(a.Name, 'Recovery'),&lt;br /&gt;  CASE b.type&lt;br /&gt;    WHEN 'L' THEN 'Tranlog'&lt;br /&gt;    WHEN 'D' THEN 'Full'&lt;br /&gt;    WHEN 'I' THEN 'Differential'&lt;br /&gt;  END AS BackupType,&lt;br /&gt;  b.[User_Name],&lt;br /&gt;  MAX(b.Backup_Finish_Date) AS LastBackup&lt;br /&gt;FROM Master.dbo.sysdatabases a&lt;br /&gt;INNER JOIN msdb.dbo.backupset b&lt;br /&gt;  ON a.Name = b.Database_Name&lt;br /&gt;WHERE b.Backup_Finish_Date &gt; (DATEADD(dd,-14,getdate()))&lt;br /&gt;GROUP BY a.Name, b.Type, b.[User_Name]&lt;br /&gt;ORDER BY a.Name ASC, LastBackup DESC&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Using that he saw that the backup did indeed run, and was successful.  But where was that backup file at?&lt;br /&gt;&lt;br /&gt;This found it:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SELECT&lt;br /&gt;  a.Name as DBName,&lt;br /&gt;  CASE b.type&lt;br /&gt;    WHEN 'L' THEN 'Tranlog'&lt;br /&gt;    WHEN 'D' THEN 'Full'&lt;br /&gt;    WHEN 'I' THEN 'Differential'&lt;br /&gt;  END AS BackupType,&lt;br /&gt;  b.[User_Name],&lt;br /&gt;  b.Backup_Finish_Date,&lt;br /&gt;  f.physical_device_name&lt;br /&gt;FROM Master.dbo.sysdatabases a&lt;br /&gt;INNER JOIN msdb.dbo.backupset b&lt;br /&gt;  ON a.Name = b.Database_Name&lt;br /&gt;INNER JOIN msdb.dbo.backupmediafamily f&lt;br /&gt;  ON b.media_set_id = f.media_set_id&lt;br /&gt;WHERE b.backup_finish_date &gt; getdate() - 7&lt;br /&gt;  AND a.Name = 'MyDB' -- Replace with your DB name.   &lt;br /&gt;ORDER BY b.backup_finish_date DESC  &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5760034963388156078?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5760034963388156078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5760034963388156078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5760034963388156078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5760034963388156078'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2009/01/friend-imd-me-today-and-mentioned-that.html' title='Where&apos;d that backup go?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8933886882352449448</id><published>2009-01-16T15:55:00.003-05:00</published><updated>2009-01-16T16:03:54.569-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CbusPASS'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>CbusPASS</title><content type='html'>I attended the first meeting of the new Columbus PASS chapter last night.  Seems like a good group of people so far.  There were a few there I recognized, and a couple of people who's employers I recognized, as well.  It was a good primer into what the PASS community is up to and what to expect.  I have a few new weblinks to add to my regular checklist and RSS feeds.  Most notably the main PASS site: &lt;a href="http://www.sqlpass.org/"&gt;http://www.sqlpass.org&lt;/a&gt;, and the local chapter, &lt;a href="http://columbus.sqlpass.org/"&gt;http://columbus.sqlpass.org&lt;/a&gt;.  You can even get paid for user submitted content, so I think I might have to work up an article or two.  Maybe write some fun scripts.&lt;br /&gt;&lt;br /&gt;The big yearly PASS Summit meeting is in Seattle WA this year, and early registration is anywhere from $1500 to $2500.  Don't think I'll be attending, but I will keep my eye open for the content to come out of it.  Sounds like it's a pretty in-depth event.  Last night's meeting didn't have much technical content.  The group meets monthly, and each meeting has a specific technical topic. I'll be interested to see what the next one is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8933886882352449448?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8933886882352449448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8933886882352449448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8933886882352449448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8933886882352449448'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2009/01/cbuspass.html' title='CbusPASS'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6368500121130437588</id><published>2008-12-18T19:20:00.002-05:00</published><updated>2008-12-18T19:21:51.662-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Comment Policy'/><title type='text'>Quick Comment Policy Update.</title><content type='html'>Just a quick note on the comment policy.  No spam.  Any comment pushing a for-profit product will be rejected.  Feel free to comment on the content, but keep the advertising to yourself.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6368500121130437588?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6368500121130437588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6368500121130437588' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6368500121130437588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6368500121130437588'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2008/12/quick-comment-policy-update.html' title='Quick Comment Policy Update.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6323419051135208238</id><published>2008-12-14T22:31:00.001-05:00</published><updated>2008-12-14T22:31:40.668-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><title type='text'>iGoogle. Do you?</title><content type='html'>I've been playing with iGoogle for a couple of weeks now, and I'm pretty pleased with the results.  I've lamented before about not having an adequate planner / project dashboard solution, and I think iGoogle may just fit the bill.  I'm using it in conjunction with CreattivePro Office, which is a free project management tool.  It's working out well so far.  &lt;br /&gt;&lt;br /&gt;In orther news, I am also learning a few ways to get around some productivity blocks at the current client.  I think with the new tools I have in place, I will be able to get a better handle on things.  I can't divulge any details at the moment, but I do want to make a quick point about internet filtering.&lt;br /&gt;&lt;br /&gt;What I have noticed, both in my own experience, and the experience of others is that blocking internet sites does not really increase productivity in the workplace.  I made this point to a co-worker of mine the other night and he seemed to agree, so there.  I'm validated now. What I have seen, is that instead of the average employee spending 5 minutes checking twitter or something like that.  They spend more time trying to figure out a way to get around that block.  Or, they just find other outlets, work slower due to lower morale, etc.  When you filter the internet, you're not going to make unmotivated people work any harder, and all you're really going to do is annoy people.&lt;br /&gt;&lt;br /&gt;Now I do think that internet monitoring is a good idea.  There's a difference between someone who spends 5 minutes on Google News, and someone who is averaging a click every 2 minutes for an hour or so.  That really is lost productivity.  But why penalize everyone else?  Can the slacker, and let the rest of the folks do their thing and get work done.&lt;br /&gt;&lt;br /&gt;Anyway, rant over.  Time to do some minor housekeeping on my newly customized page, and then get to bed.  Going to shoot for an early workout tomorrow.  Wish me luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6323419051135208238?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6323419051135208238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6323419051135208238' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6323419051135208238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6323419051135208238'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2008/12/igoogle-do-you.html' title='iGoogle. Do you?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3057403571951267950</id><published>2008-03-05T22:53:00.004-05:00</published><updated>2008-03-05T23:07:20.712-05:00</updated><title type='text'>I guess I'm it.</title><content type='html'>I have been more busy lately than I ever could have imagined.  So much so that it takes getting tagged by another blogger to get me to post.  It's late and it's an early morning for me tomorrow, so this is gonna be quick.  &lt;br /&gt;&lt;br /&gt;Tagged by: Matt @ &lt;a href="http://larsenopolis.blogspot.com/"&gt;larsenopolis&lt;/a&gt;.&lt;br /&gt;Post: &lt;a href="http://larsenopolis.blogspot.com/2008/03/busted.html"&gt;Busted.&lt;/a&gt;&lt;br /&gt;Meme: The 123 Meme.  &lt;br /&gt;Rules: (1) Pick up the nearest book of 123 pages or more. No cheating! (2) Turn to page 123. (3) Find the first 5 sentences. (4) Post the next 3 sentences. (5) Tag 5 people.&lt;br /&gt;&lt;br /&gt;Lucky for me, I just put down a book of 123 pages or more on my keyboard.  The Roland JV-80 next to the computer.  Not the computer keyboard.  If I had done that, this entry would read more like 08u9q3f0-q3v0-0un[v4wjnp[9cP9B.&lt;br /&gt;&lt;br /&gt;I'll give you the sentences first. :-)&lt;br /&gt;&lt;br /&gt;"Holmes knocked without receiving any answer, and then tried to turn the handle and force it open.  It was locked on the inside, however, and by a broad and powerful bolt, as we could see when we set our lamp up against it.  The key being turned, however, the hole was not entirely closed."&lt;br /&gt;&lt;br /&gt;This is from The Complete Sherlock Holmes, Volume 2 - The story is "The Sign of The Four."  Holmes is about to discover the first body on the other side of that door.  What he and Dr. John Watson see through the door is left to the reader to discover.&lt;br /&gt;&lt;br /&gt;Aren't you glad I didn't pick the dictionary?  &lt;br /&gt;&lt;br /&gt;Now... 5 people? I have to tag 5 people?  I don't even know 5 other bloggers to tag.  I'll just tag two and hope for the best.  &lt;a href="http://inknittingnews.blogspot.com/"&gt;Karen&lt;/a&gt;.  &lt;a href="http://marcojrobledo.blogspot.com"&gt;Marco&lt;/a&gt;.  You've been tagged.&lt;br /&gt;&lt;br /&gt;Good luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3057403571951267950?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3057403571951267950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3057403571951267950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3057403571951267950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3057403571951267950'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2008/03/i-guess-im-it.html' title='I guess I&apos;m it.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-7534954982547241372</id><published>2008-02-23T21:23:00.005-05:00</published><updated>2008-02-23T21:43:17.289-05:00</updated><title type='text'>First up, the database.</title><content type='html'>OK, so I've been a bit busy with getting settled in with my new client.  It's a manufacturing facility, and is pretty HA/HS.  (High availability, high security.)  There's a lot there to do.  Still getting used to the way they operate.  &lt;br /&gt;&lt;br /&gt;The good part of the deal is that I get to work my favorite hours, which happens to be 6:00 AM to 2:30 PM.  Beautiful.  Nobody on the roads at travel time, and it's a long enough commute that I can decompress on the way home at the end of the day.  There's also a good cafeteria on site, and the people are the friendliest I've worked with thus far, since I joined the consulting firm.  (Next to those at the firm, of course.  :-) )&lt;br /&gt;&lt;br /&gt;I also attended a lecture on Agile Database Development this past Wednesday, and am still kind of processing things.  I'm looking forward to being able to implement some of the methodologies as I can get to them in the new place.  With the rapid pace of change that I see there, Agile might be a good way to go.  &lt;br /&gt;&lt;br /&gt;Now, I said I was going to start posting some scripts, and I shall.  I suppose that posting code in lieu of actual information is a bit of a cheat as far as blogging goes, but I did promise this.  Before I can give you the scripts, you have to have a place to hold them.  Enter: the DBA database.  I used to call it the ADMIN database, but ADMIN is a keyword in SQL 2005, so I decided to change that to the DBA database.  So... here it is. &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/*******************************************************************************&lt;br /&gt;Title:  Create DBA DB Objects&lt;br /&gt;Author: D Maxwell&lt;br /&gt;Date:   Jan 2008&lt;br /&gt;--Version: 20080129.1&lt;br /&gt;&lt;br /&gt;Descr:  Creates necessary objects for my group of maintenance scripts.&lt;br /&gt;&lt;br /&gt;Usage:  None.  Just run the script.  &lt;br /&gt;&lt;br /&gt;Notes:  - The INI_File table parameters will need to be adjusted for the&lt;br /&gt;          particular environment that this is installed in.  Check those&lt;br /&gt;          before running the script.&lt;br /&gt;        - The location of the database may also need to be adjusted to conform&lt;br /&gt;          with the local standards for database creation.  It will otherwise&lt;br /&gt;          be created at the default location.  The default database size should&lt;br /&gt;          be fine, to start with.  On large servers with lots of traffic, go big.&lt;br /&gt;*******************************************************************************/&lt;br /&gt;SET NOCOUNT ON&lt;br /&gt;&lt;br /&gt;/* Create Database */&lt;br /&gt;CREATE DATABASE [DBA]&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;/* Create Tables */&lt;br /&gt;USE [DBA]&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;-- The M_BackupLog table holds the information for all backups taken on the&lt;br /&gt;-- system.  It is required by the backup and restore procedures.&lt;br /&gt;CREATE TABLE [M_BackupLog] (&lt;br /&gt;  DBName nvarchar(100) NOT NULL,&lt;br /&gt;  [DBID] int NOT NULL,&lt;br /&gt;  BackupFile nvarchar(1000) NOT NULL,&lt;br /&gt;  CreateDate datetime NOT NULL,&lt;br /&gt;  ExpirationDate datetime NOT NULL,&lt;br /&gt;  Deleted bit NOT NULL&lt;br /&gt;  )&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;-- The M_ErrorLogs table contains the parsed and processed error logs for&lt;br /&gt;-- the SQL system.  It is required by the error log processing procedure.&lt;br /&gt;CREATE TABLE [M_ErrorLogs] (&lt;br /&gt;  ID int NOT NULL,&lt;br /&gt;  LogDate datetime NOT NULL,&lt;br /&gt;  ProcessInfo nvarchar(50) NOT NULL,&lt;br /&gt;  ErrorText varchar(7000) NULL,&lt;br /&gt;  CreateDate datetime NOT NULL,&lt;br /&gt;  ServerName nvarchar(30) NOT NULL,&lt;br /&gt;  ErrorInd bit NOT NULL&lt;br /&gt;  )&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;ALTER TABLE [M_ErrorLogs]&lt;br /&gt;ADD CONSTRAINT [PK_ErrorLogs] PRIMARY KEY CLUSTERED (ID)&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;-- The INI_File table contains constant values required by many of&lt;br /&gt;-- the scripts in the maintenance system.  If you need to add constants&lt;br /&gt;-- used in any other scripts, put them here.&lt;br /&gt;CREATE TABLE [INI_File] (&lt;br /&gt;  INI_Name nvarchar(50) NOT NULL,&lt;br /&gt;  INI_Value nvarchar(1000) NULL&lt;br /&gt;  )&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;-- Current INI file values.&lt;br /&gt;INSERT INTO [INI_File]&lt;br /&gt;SELECT 'BackupLocation', 'D:\DBBackups\' UNION ALL&lt;br /&gt;SELECT 'DBAEmail', 'yourname@yourmailhost.tld' UNION ALL&lt;br /&gt;SELECT 'LastErrRptDate', getdate() UNION ALL&lt;br /&gt;SELECT 'MaxErrRpt', '10'&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;-- The M_Scripts table is used for holding dynamically created scripts&lt;br /&gt;-- that can then be exported to file and executed on one or many systems.&lt;br /&gt;CREATE TABLE [M_Scripts] (&lt;br /&gt;  Lines nvarchar(4000) NULL&lt;br /&gt;  )&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;-- The M_ServerInfo table holds identifying information about the local&lt;br /&gt;-- server.  It is gathered on an irregular basis by the auditing portion&lt;br /&gt;-- of the server maintenance system.  This is beyond the scope of&lt;br /&gt;-- this document, but required to be in this database.&lt;br /&gt;CREATE TABLE [M_ServerInfo] (&lt;br /&gt;  ServerName nvarchar(30) NOT NULL,&lt;br /&gt;  Version nvarchar(15) NOT NULL,&lt;br /&gt;  Edition nvarchar(30) NOT NULL,&lt;br /&gt;  IPAddress nvarchar(15) NOT NULL,&lt;br /&gt;  LastUpdated datetime NOT NULL&lt;br /&gt;  )&lt;br /&gt;GO&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;More later. Comments welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-7534954982547241372?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/7534954982547241372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=7534954982547241372' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7534954982547241372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7534954982547241372'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2008/02/first-up-database.html' title='First up, the database.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3031447590476868258</id><published>2008-02-14T11:08:00.000-05:00</published><updated>2008-02-14T11:09:58.026-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health'/><category scheme='http://www.blogger.com/atom/ns#' term='Quickies'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>All the news that's fit to print.</title><content type='html'>Now I said I was going to shoot for a post per week during the new year.  I never said it was a promise.  Still, things have been moving fast and furious around here, so I think a little wiggle room is in order.  With that said, here's what's been up.&lt;br /&gt;&lt;br /&gt;I've been working on a coherent management script package for SQL Server.  I have the maintenance end of things pretty much down.  I have scripts for backup and restore, as well as index and statistics maintenance, consistency checking, and so on.  The auditing scripts are coming along nicely.  Most of what I have is space monitoring, job information gathering, and instance information gathering.  I'm working on scripts to also audit DTS packages, server security and a table space usage. &lt;br /&gt;&lt;br /&gt;I'll also be starting with a new client soon.  I'm looking forward to moving, and I'm hoping things go well.  There are uniforms required.  I just went out to pick up my badge and a temporary shirt today.  It has someone else's name on it at the moment.  :-) Supposedly the 'uniform guy' will be there when I start, so I should be able to get my own within a few weeks.&lt;br /&gt;&lt;br /&gt;It's no news to anyone that we've all been a little under the weather over here.  K and I have had it the worst.  E took a little bit, and H got a good amount of it, but we're all finally coming out of it.  It's been a rough few months of fevers, congestion, sore throats, and general yuck, but we're all doing a lot better now.&lt;br /&gt;&lt;br /&gt;Next week, I'm going to start posting some of the management scripts, starting with the administrative database that holds everything.  (If I can get around to posting, that is.  :-)&lt;br /&gt;&lt;br /&gt;Later.&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3031447590476868258?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3031447590476868258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3031447590476868258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3031447590476868258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3031447590476868258'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2008/02/all-news-thats-fit-to-print.html' title='All the news that&apos;s fit to print.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8120539357417063230</id><published>2008-01-21T05:49:00.000-05:00</published><updated>2008-01-21T06:29:17.213-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Insomnia?</title><content type='html'>About a month and a half ago, I picked up a cough / cold of some kind.  It never really developed enough to bug me, so I let it go for a while.  Finally, this past Monday, the 14th, I scheduled a Dr. and Dentist appointment, and took the day off of work.  I asked the Dr. about the cough.  She suspects that it's viral, since she could find no indication of anything more serious at this point.  So, she prescribed a course of Zithromax (&lt;a href="http://www.medicinenet.com/azithromycin/article.htm"&gt;Azithromycin&lt;/a&gt;) to kick out the last dregs of the bug.  That was Monday.  Tuesday evening I developed an absolutely mind bending headache / earache one-two punch in the right ear.  I worked a small portion of the day Wednesday, and took Thursday off completely.  Friday I was back at work with no pain, but little hearing in my right ear.  Friday night, the left ear suffered the same one-two attack.  Sunday, I went to the Urgent Care center, and got a prescription for a course of Omnicef (&lt;a href="http://en.wikipedia.org/wiki/Omnicef"&gt;Cefdinir&lt;/a&gt;) and instructions to follow up with my Dr in a week if things don't start improving.  &lt;br /&gt;&lt;br /&gt;In addition to all of that, I've been working with various dosages of Advil for pain, as well as Mucinex, Sudafed (the &lt;a href="http://en.wikipedia.org/wiki/Pseudoephedrine"&gt;pseudoephedrine&lt;/a&gt; kind, not that weak-ass &lt;a href="http://en.wikipedia.org/wiki/Phenylephrine"&gt;phenlyephrine&lt;/a&gt; crap), and a Vicks Inhaler for the congestion.  I even went so far as to put &lt;a href="http://en.wikipedia.org/wiki/Benzocaine"&gt;Benzocaine&lt;/a&gt; drops in my ear.  Those, unfortunately, had no effect, since the infection is behind the ear drum.  Speaking of which, the Dr I talked to today said that if the hearing loss, which I'll get to in a minute, is not improving in a week or so, that I should get a referral to an ENT (Ear, Nose and Throat Specialist) who can make an incision in my eardrum and drain all the pus from it.  Nice, huh?&lt;br /&gt;&lt;br /&gt;The main problem I have, now that the pain is just about gone, is that I am experiencing both a pretty significant hearing loss, and no small amount of &lt;a href="http://en.wikipedia.org/wiki/Tinnitus"&gt;tinnitus&lt;/a&gt;.  My tinnitus varies between a B and a B-flat...  I usually listen to an iPod at work.  That's going to make this week very interesting.  With the iPod, and the hearing loss, I'm not going to hear anyone approaching, nor my office-mates.  (Actually, that's not so bad.)  I can't take much more time off work, though, without running into issues with vacation time, so I have to go in.&lt;br /&gt;&lt;br /&gt;One of the really interesting things about this particular ear infection was, early on, I had enough blockage in one ear to alter the pitch of incoming sounds.  It made notes come through slightly flat, and I couldn't tell if things were in tune or not.  As a musician, that's fascinating, but damned annoying.  The interesting part about that was how my brain began to process that information coming in as two separate signals.  I've had double vision before from a little bit of &lt;a href="http://en.wikipedia.org/wiki/Strabismus"&gt;strabismus&lt;/a&gt;, or from the occasional  purposeful crossing of my eyes, but double hearing was new to me.  I'd never heard anything like it.  It was almost like a very quick echo.  It was fun for the first few minutes, then it got annoying.&lt;br /&gt;&lt;br /&gt;The worst part about it is really the hearing loss.  I have difficulty now, hearing voices.  If two or more people are talking, I can't make out anyone at all.  I am used to being able to hear a pin drop at 50 yards or pick notes out of really complex chords, so this is becoming really tiring.  &lt;br /&gt;&lt;br /&gt;The ringing has it's side effects too, which is actually the title of this post.  I can't sleep.  I got a little 1 hour nap mid-day Sunday, and slept from probably about 11:30 to 3:00 or so last night.  About 3:45, I looked at the clock, and decided to get up and work a little bit.  I have not been back to bed since.  The upshot is that I got a good bit of work done on &lt;a href="http://anotherskepticrises.blogspot.com/"&gt;ASR&lt;/a&gt;.  The downside is, it's time to shower and go to work.  &lt;br /&gt;&lt;br /&gt;I am NOT looking forward to today.  However, work must go on, and so must I.  Here's hoping that Omnicef kicks in really soon.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8120539357417063230?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8120539357417063230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8120539357417063230' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8120539357417063230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8120539357417063230'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2008/01/insomnia.html' title='Insomnia?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-4890910379424171035</id><published>2008-01-18T20:12:00.000-05:00</published><updated>2008-01-18T20:32:47.709-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>MSITAC and Little Things</title><content type='html'>Attack of the Acronyms!  Run for your life!&lt;br /&gt;&lt;br /&gt;Actually, I somehow manage to snag (via third party source, which I will not divulge) and invitation to participate on the Microsoft Information Technology Advisory Council.  It's basically a big old focus group for geeks.  You get a private blog, forum and other stuff so you can share info about the technological direction that MS is going. &lt;br /&gt;&lt;br /&gt;So far, it seems cool, although it took me a while to get the ability to post to my Council blog, and when I wrote up a post, I saved it instead of posting it.  Now I can't seem to post it.  Weird.  I'm sure I'll get it figured out.  Some geek, eh?&lt;br /&gt;&lt;br /&gt;The first post I wrote was about SLA's, Service Level Agreements, to the uninitiated.  Basically, it's a written contract between you and your department, and your employer.  You agree on how the operation should run, what kind of performance is expected, and what the procedures and turnaround times would be for any issues that might arise.  An example would be an agreement that states that should a database be damaged, it will be restored to operational status within 1 hour, and will lose no more than 10 minutes worth of data.  Based on that, you formulate your backup and recovery plan.  That's the post I can't get to at the moment.&lt;br /&gt;&lt;br /&gt;The second post I plan on writing, which I will echo here, is an experience story and a question to all who may read that blog.  Or read this one, for that matter.  How much do the little things matter, and at what point are the little things not so little?&lt;br /&gt;&lt;br /&gt;When SQL Server 2005 came out, I was excited about it.  I had gotten a copy of the Express edition and had started playing with it a bit.  The management environment was very new to me, and I had fun exploring it.  I had picked up on a couple of conversations on message boards, about how poorly the new interface worked.  I did get to a point where it worked poorly for me as well, and where it seemed clunky, and I echoed the same sentiments.  After a time, I got used to it, and learned a few new ways of working with it.  Now, I am enjoying it again.&lt;br /&gt;&lt;br /&gt;Not that the interface is without it's problems, and here's where I get to the point.    There are one or two... little things that irk me.  Little quirks in the interface that just don't make sense.  For example, when creating a server connection in the query window, you have 4 fields in the basic dialog.  There is server name, authentication type, user name, and password.  For most local servers, we use Windows Authentication, but for the remote boxes which are not on the domain, we use SQL Server Authentication, which requires you to enter the user name and password.  When you tab through these fields the first time, the cursor behaves as expected.  You type in the server name, hit tab, then type 'S' for SQL Server Authentication, hit tab, type in the user name, hit tab, then type password.  Simple.&lt;br /&gt;&lt;br /&gt;Now, suppose you type something incorrectly, say, the Server Name.  No problem.  Hit tab.  The Server Name is now highlighted and can just be typed over.  So you do that.  Now let's say the user name is wrong.  Hit tab a couple of times, and the user name field is highlighted, and can be typed over.  Oops.  You typed in a different user name, and you forgot to change the password.  Ok, so you hit tab a couple of times and type over the password.  &lt;br /&gt;&lt;br /&gt;Except, you dont.  The password field does not highlight when using the tab key.  Instead, it moves your cursor to the end of the password as if to append to it.  It is the only field in the dialog that behaves that way.  My question is why?  It's certainly not a security concern, as far as I can see, and if you're used to the normal way that the text fields work, it's inconsistent and causes login failures.  Personally I find it annoying.&lt;br /&gt;&lt;br /&gt;Another little bug (ok, maybe not a 'bug') is in the SSIS Exec utility, in that it only works on the local server.  By this, I mean that if you run the SSIS Exec utility on your local machine, the package must be on your local machine in order to work.  This, despite the fact that there is a selection box for "Server" where you can designate any server you can connect to.  Why make a utility that can connect to any server, yet only runs local packages?  Note that this little gotcha is manifested in an error message that declares there is a 'version mismatch' and that you should upgrade your version of the SSIS Exec utility.  Hardly accurate, or descriptive to the issue.&lt;br /&gt;&lt;br /&gt;These are two relatively minor issues, in my opinion, and SQL 2005 is a pretty good product after all.  The question I put to the reader is, how minor is minor?  Should I contact MS and make a fuss about this?  Or, should I accept the state of things and just work around it for now?&lt;br /&gt;&lt;br /&gt;Thoughts?&lt;br /&gt;&lt;br /&gt;-D.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;P.S.: If anyone reading this is not already on the advisory council and would like to be, email me and I'll get you an invite.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-4890910379424171035?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/4890910379424171035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=4890910379424171035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4890910379424171035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4890910379424171035'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2008/01/msitac-and-little-things.html' title='MSITAC and Little Things'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-2229369674065347588</id><published>2008-01-10T08:42:00.002-05:00</published><updated>2008-01-10T09:10:48.686-05:00</updated><title type='text'>ASR-blog.</title><content type='html'>For those of you who I have not notified or who have not noticed, I have started a new blog for the new year.  &lt;a href="http://AnotherSkepticRises.BlogSpot.com/"&gt;Another Skeptic Rises&lt;/a&gt;.  This one will handle the skeptical/scientific content.  I'm going to shoot for a post a week on each blog.  And with this post, looks like I have both blogs covered.  Sneaky, eh?&lt;br /&gt;&lt;br /&gt;Thanks for reading.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-2229369674065347588?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/2229369674065347588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=2229369674065347588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2229369674065347588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2229369674065347588'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2008/01/asr-blog.html' title='ASR-blog.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6749653393429212076</id><published>2007-12-27T13:25:00.001-05:00</published><updated>2007-12-27T13:35:58.613-05:00</updated><title type='text'>Off da road again...</title><content type='html'>Ok, so Oscar (my Mazda Protege) is back in the shop again, with a random misfire and a trail of stumped mechanics in his wake.  Meanwhile, I'm in the loaner Isuzu Rodeo, which guzzles gas with abandon.  No, really.  Imagine the energy sapping potential of Evelyn on a Starbucks Viente Iced Caramel Macchiatto (tm, I'm sure), and there you have it.  &lt;br /&gt;&lt;br /&gt;There have been numerous tests done, but no results.  The tech is going to drive it home tonight, and back in tomorrow morning, to simulate an actual driving experience and see if it will act up.  This will hopefully yield something.  If not, then it may be time to get another mechanic's opinion.  Maybe a call to Click and Clack...&lt;br /&gt;&lt;br /&gt;Oy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6749653393429212076?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6749653393429212076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6749653393429212076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6749653393429212076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6749653393429212076'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/12/off-da-road-again.html' title='Off da road again...'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3482644433983618829</id><published>2007-12-19T09:43:00.001-05:00</published><updated>2007-12-19T10:19:07.240-05:00</updated><title type='text'>On Da Road Again...</title><content type='html'>I finally got my car back from the service shop today.  It has been in there three times in the last week, and has been driving me nuts.  Visit One: The 'check engine' light goes on and the car sounds and feels like it hit a rumble strip.  The plugs and wires were replaced and the fuel system was cleaned out, and I'm back on the road.  Visit Two: The 'check engine' light comes on and the car will not accelerate.  It will maintain current speed, but will not accelerate.  This is on the highway.  This time, we replace the &lt;a href="http://autorepair.about.com/od/glossary/gr/def_egr-valve.htm"&gt;EGR valve&lt;/a&gt;.  Visit Three: The 'check engine' light is back on, but nothing seems otherwise wrong.  To be on the safe side we have it checked, and it turns out that the &lt;a href="http://en.wikipedia.org/wiki/Catalytic_converter"&gt;Catalytic Converter&lt;/a&gt; is almost shot and needs to be replaced.  Luckily, the car is under 80,000 miles and the parts and labor for this are covered under the &lt;a href="http://epa.gov/otaq/consumer/warr95fs.txt"&gt;EPA warranty&lt;/a&gt;, so no cost to me.  Sweet.&lt;br /&gt;&lt;br /&gt;While it was annoying having my car repaired so many times in the last week, the customer service experience was generally pretty good, with one exception.  I should have gotten a loaner, sooner.  I had to work a day from home due to being without a car.  A loaner was requested by me, but I was assured that the car would be ready on time.  It wasn't.  So, my schedule got fairly screwed up.  This was the second visit.  The third time around, I secured a loaner, and was good to go.  The loaner was in good condition and I was pleased with it's operation.  Otherwise, the customer service was well done, and I appreciated how I was treated.&lt;br /&gt;&lt;br /&gt;Drove to work.  So far, so good.  :-)&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3482644433983618829?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3482644433983618829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3482644433983618829' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3482644433983618829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3482644433983618829'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/12/on-da-road-again.html' title='On Da Road Again...'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-1408167505262166489</id><published>2007-12-01T23:27:00.000-05:00</published><updated>2007-12-01T23:53:47.630-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Better late than never.</title><content type='html'>Taking care of a little business tonight, not the least of which includes posting something on this freakin blog.  It's been a considerable time since I've done so.  &lt;br /&gt;&lt;br /&gt;A big 'oops' today.  I somehow missed a phone call from one of the techs on call this weekend.  Turns out there was a DB corruption issue to deal with, and I missed the first call.  It wasn't until a couple hours later when I could get to it.  Luckily I was able to fix things without resorting to the feared REPAIR_ALLOW_DATA_LOSS switch.  A corrupt index made a certain table unreadable.  So I did the following.&lt;br /&gt;&lt;br /&gt;1. Restored to another DB from the last available backup.&lt;br /&gt;2. Dropped the table in the existing DB.&lt;br /&gt;3. Recreated the table and copied the data back in from the backup DB.&lt;br /&gt;&lt;br /&gt;I'm going to keep an eye on this box to check for disk issues, but I think they should be good to go for now.&lt;br /&gt;&lt;br /&gt;Listening to The Prodigy at the moment, and it makes me think about doing some writing / recording. Then again, I hear, see, or think about something cool, and it always makes me think, "Hey, I could do that."   All I think I really need is a cheap USB MIDI interface cable... I think...&lt;br /&gt;&lt;br /&gt;Yep, there I go again.&lt;br /&gt;&lt;br /&gt;Anyway.  I also have joined a couple of message boards lately, namely &lt;a href="http://theskepticsguide.org/"&gt;The Skeptics Guide to the Universe&lt;/a&gt;, and &lt;a href="http://losteye.com/"&gt;Lost Eye&lt;/a&gt;.  I like to think those are for obvious reasons, for those who know me.  :-)&lt;br /&gt;&lt;br /&gt;Let's see, what else is new?  I did finally get that microphone I wanted and have been working pretty solidly on the beatbox thing... The idea is that I want to go to the convention in London in 2010 and meet up with a few people.  I'll need to get more community involvement if I wanna do that.  Perhaps I should join the boards over at &lt;a href="http://humanbeatbox.com/"&gt;humanbeatbox.com&lt;/a&gt; as well?&lt;br /&gt;&lt;br /&gt;The leaves mock me.  More accurately my propensity for spending my time on the weekends in indoor pursuits rather than cleaning up the yard like I am supposed to, mocks me.  I did manage to get them all together so that I can get them bagged in the morning.  So, I should be able to get the lawn clear before the snow really hits.&lt;br /&gt;&lt;br /&gt;Evelyn's birthday party is tomorrow, Henry's was a couple weekends ago.  Time flies too damn fast around here.  My kids are getting older, and I'm to blame.  Isn't there a switch somewhere you can throw to keep them young?  /nogrow.&lt;br /&gt;&lt;br /&gt;Ah, well.  All things go on.  We must do so as well.&lt;br /&gt;&lt;br /&gt;Evelyn asked a typical older sibling question tonight.  "Why do people think Henry is cute, but they don't think I'm cute?"  I think I handled it OK, based on the hug I got at the end of the discussion.  I explained the concept of novelty, in the context of a new toy.  And that Henry is a novelty to most people because he's new, and different from most other kids, and that given time, it will all equal out.  She seemed to accept that, and I got a hug and an "I love you, daddy." at the end of that.  I'm going to put that one in the win column.&lt;br /&gt;&lt;br /&gt;Not bad for the day, eh?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-1408167505262166489?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/1408167505262166489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=1408167505262166489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1408167505262166489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1408167505262166489'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/12/better-late-than-never.html' title='Better late than never.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8027426793072303414</id><published>2007-11-20T17:19:00.000-05:00</published><updated>2007-11-20T17:22:14.555-05:00</updated><title type='text'>Mean comments.</title><content type='html'>Ok, I'm only going to say this once.&lt;br /&gt;&lt;br /&gt;DO NOT COMPENSATE FOR BAD DATA BY USING WORSE T-SQL.&lt;br /&gt;&lt;br /&gt;That is all, for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8027426793072303414?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8027426793072303414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8027426793072303414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8027426793072303414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8027426793072303414'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/11/mean-comments.html' title='Mean comments.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-4953051848141008539</id><published>2007-10-24T12:14:00.000-04:00</published><updated>2007-10-24T12:15:51.578-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Bored?  Delete all tables!</title><content type='html'>Ok, so I had the rare occasion to have to delete all the tables from, rather than just drop, a database.  I wanted to preserve the stored procs and diagrams.  So, I did this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;set nocount on&lt;br /&gt;&lt;br /&gt;declare @tname nvarchar(50), @sqlcmd nvarchar(100)&lt;br /&gt;declare @tables table (table_name nvarchar(50) not null)&lt;br /&gt;&lt;br /&gt;insert into @tables&lt;br /&gt;select table_name from information_schema.tables &lt;br /&gt;  where table_type = 'BASE TABLE'&lt;br /&gt;&lt;br /&gt;while (select count(*) from @tables) &gt; 0&lt;br /&gt;  begin&lt;br /&gt;    set @tname = (select top 1 table_name from @tables)&lt;br /&gt;    set @sqlcmd = 'drop table ' + @tname&lt;br /&gt;    print @sqlcmd&lt;br /&gt;    delete from @tables where table_name = @tname&lt;br /&gt;  end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This doesn't delete all tables, but it does provide you a pre-written script for doing so.  Copy, paste, and run.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-4953051848141008539?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/4953051848141008539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=4953051848141008539' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4953051848141008539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4953051848141008539'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/10/bored-delete-all-tables.html' title='Bored?  Delete all tables!'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8365824346926389272</id><published>2007-10-17T10:13:00.001-04:00</published><updated>2007-10-17T10:19:37.058-04:00</updated><title type='text'>Identifying ReportingServices Jobs.</title><content type='html'>Yo.&lt;br /&gt;&lt;br /&gt;Sorry I've been away for a while, but I have been a tad busy.  Just thought I'd throw up a quick hello, and a helpful query.&lt;br /&gt;&lt;br /&gt;SQL 2005 Reporting Services creates it's own jobs for reports that you schedule.  Sadly instead of naming the job "Monthly Financial Analysis Report", it names the job with a GUID, like "33B9EA3B-00BB-4653-BD3D-8C6DE2C5AB98".  This makes it really fun when trying to determine which report actually failed.  &lt;br /&gt;&lt;br /&gt;So, I wrote this, which returns a list of jobs, with their corresponding report names.  &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/* Report Server Job Names */&lt;br /&gt;SELECT  sj.name,&lt;br /&gt;        c.[path]&lt;br /&gt;FROM    [MSDB].[dbo].[sysjobs] sj&lt;br /&gt;        INNER JOIN [reportserver].[dbo].[reportschedule] rs &lt;br /&gt;          ON sj.name = CONVERT(NVARCHAR(100), rs.ScheduleID)&lt;br /&gt;        INNER JOIN [reportserver].[dbo].[catalog] c &lt;br /&gt;          ON rs.ReportID = c.ItemID&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That should help.&lt;br /&gt;&lt;br /&gt;Later.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8365824346926389272?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8365824346926389272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8365824346926389272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8365824346926389272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8365824346926389272'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/10/identifying-reportingservices-jobs.html' title='Identifying ReportingServices Jobs.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8629253894579694407</id><published>2007-09-16T21:04:00.000-04:00</published><updated>2007-09-16T22:30:26.502-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Skepticism'/><title type='text'>It said what...?</title><content type='html'>Listening to: &lt;a href="http://thecrystalmethod.com/"&gt;The Crystal Method - Legion of Boom&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More and more often, there are days that I find myself saying, "Someone actually believes this?"  Case in point.  A few days ago, my wife received a little package in the mail with a sizable set of three holed punched pages, courtesy of &lt;a href="http://www.imponline.com/"&gt;IMP&lt;/a&gt;, under license from &lt;a href="http://www.summertimeltd.co.uk/index.php"&gt;Summertime Publishing&lt;/a&gt;.  These are part of a 'sets' series of mailings.  The idea is that you get a small sampling of a set of informative publications, and for a monthly fee, you can sign up to receive the rest of the set, for as long and large as it is, a little bit at a time.  Why you can't just buy the whole thing outright is beyond me.&lt;br /&gt;&lt;br /&gt;The particular sampling that K received was part of the "Enhancing your MIND BODY SPIRIT"(tm) series.  She and I shared a good laugh looking through it, though she expressed a significant amount of personal insult on receiving it.  (Did I mention I love this woman?)  There are pages and pages of mystical, magical, and downright ridiculous nonsense in it.  I won't go into the whole thing, but I will highlight a four of the ones that I find particularly irritating.&lt;br /&gt;&lt;br /&gt;The first one is page 11, or card 5 from the "You, Friendship and Love" series.  It details how to find your special 'friendship number', and given your number, and your friends number, this will tell you how to best relate to this friend of yours.    Here's how this is supposed to work:  Each letter of your name corresponds to a number, add all these numbers up, iteratively, until you are left with a single number.  For example, if all the numbers that the letters in your name represent add up to 115, you add the individual digits.  1 + 1 + 5 = 7.  My name works out to 5 and a friend of mines name works out to 4.  There's a little chart on the back.  On one axis is my number, on the other, my friend's number.  For the combination of 5 and 4,  I'm told to, "Try to bring out the sensation-seeker in your friend."  Um, that sounds lewd, and no.  We're both straight men.  And I have it on authority (mine) that my friend is going to get nowhere by reminding me that "The little things matter, too."   My question is, what ever happened to old-fashioned communication?  Just talking to your friends?  I suppose actually talking to your friend and getting to know them is an antiquated notion.  &lt;br /&gt;&lt;br /&gt;Let's move on to the just plain silly, shall we?  Here's a card, page 22 and card 20 from the 'Spells and Magic' series.  All of a sudden, I've stepped into a J. K. Rowling novel?  The card describes two spells you can cast (perform?) for guiding your soulmate into your life.  I'll just describe the one.  You're supposed to write the characteristics of your ideal lover on a piece of paper.  Then hold an apple up to the full moon and ask the moon to send you your ideal mate.  (No, I am NOT making this up.)  Now, carve two hearts that are touching, into your apple.  Put the apple on the paper that you wrote your emotional laundry list on.  Sprinkle rose petals on the paper, wrap the whole thing up with a red ribbon and leave it in the woods.  According to the instructions, "You will soon find the love that you desire."  I'm not so sure about that, but I can pretty much guarantee that the ants will find themselves a feast, and you may find yourself a citation for littering.  Maybe the cop will be cute?  Once again, I cannot realistically believe that ANYONE would do this, and expect some hot young thing to come into their life, sweeping them off their feet.  At best, it's a pointless exercise.  At worst, it's a waste of a perfectly good apple, and littering.&lt;br /&gt;&lt;br /&gt;I'm going to take the last two in tandem.  They are, respectively, "Giving a Head Massage" and "Healing with Lavender".  I find these to be the most irritating and potentially dangerous of the lot.  The instructions for the head massage contain directions on flexing the neck muscles by rolling the head from side to side.  I'm only going to mention this once, so pay attention.  DO NOT FUCK WITH YOUR NECK.  Or anyone else's for that matter.  I've had the move done to me before, but that was from a licensed physical therapist who was helping me with a neck issue.  If you have neck or back issues, see a doctor and get a referral to a physical therapist.  Don't believe that someone can help you with your neck because they got a card in the mail that showed them how to do it.  If that isn't enough motivation for you to drop this card right now, here's an article for you, on &lt;a href="http://www.quackwatch.org/01QuackeryRelatedTopics/chirostroke.html"&gt;How Neck Manipulation Can Cause Strokes&lt;/a&gt;.  Don't.  Just don't.&lt;br /&gt;&lt;br /&gt;On the 'Lavender' card, there are instructions for using lavender for many different kinds of ailments.  It says on the card that lavender has 'harmonizing properties'.  Have you ever heard lavender sing?  Me neither.  Yes, I know what they meant.  I just couldn't pass up the joke.  There is a distinct lack of information and explanation in several places on the card.  Especially where warnings &lt;span style="font-style:italic;"&gt;against&lt;/span&gt; the use of lavender are concerned.  There is mention of avoiding lavender with ketone content above 35%, and that diabetics, epileptics and pregnant women should avoid it entirely.  This is hardly sufficient explanation or warning for someone who may use lavender for any of it supposed medicinal purposes.  &lt;br /&gt;&lt;br /&gt;What bothers me most about the lavender card is the number of injuries they recommend it for where open wounds are involved.  It says lavender can contain "up to" 50% alcohol.  How do you tell?  How much is enough to fight off infection on an open wound?  Wouldn't isopropyl alcohol be more effective, safer, cost less, and be more readily available?  Here we find the real danger in 'natural' medicinal practices like herbalism, homeopathy and other such ills. (Ooh, good word choice...) It very seldom works, or works only because of the placebo effect.  And when it doesn't work, it introduces more risk than it should.  Another example is that they recommend the use of lavender oil on a burn.  YOU NEVER PUT OIL ON A BURN!  That's basic first aid, folks.  Herein lies the real danger of 'alternative' or 'complimentary' medicine.  It causes people to forgo treatment by a real, qualified doctor or hospital.  If you have a serious wound, burn or other ailment, see a doctor.  Trust real medicine, not some card you received in the mail.&lt;br /&gt;&lt;br /&gt;All in all, the MIND BODY SPIRIT series appears to be a disappointing waste of paper.    What's really sad about it is that no matter how much nonsense is in it, some credulous people will read it, buy into it, and buy the package, thinking that their lives are going to improve beyond measure now that they have all this knowledge.  I think, what they will find, is that they will be out a hefty amount of money, and have one more stack of papers cluttering up the house.&lt;br /&gt;&lt;br /&gt;Amazing what people will believe, and worse yet, what people will publish.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8629253894579694407?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8629253894579694407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8629253894579694407' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8629253894579694407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8629253894579694407'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/09/it-said-what.html' title='It said what...?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-4537416368775388132</id><published>2007-08-30T10:54:00.000-04:00</published><updated>2007-08-30T11:00:43.115-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quickies'/><title type='text'>Elliptical Life, and Hard Work</title><content type='html'>&lt;strong&gt;Not Quite Circular:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Sometimes, I pen little quotes in my notebook.  Just stuff I make up on the fly.  Here's last week's contribution.&lt;br /&gt;&lt;br /&gt;"My social circle is more like an ellipse, and I'm on the far end at the moment."&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Work Hierarchy:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;From best day to worst day:&lt;br /&gt;&lt;br /&gt;1. Many things accomplished, all important.&lt;br /&gt;2. Few things accomplished, all important.&lt;br /&gt;3. Many things accomplished, but not all that important.&lt;br /&gt;4. Little accomplished, all important.&lt;br /&gt;5. Few things accomplished, not all that important.&lt;br /&gt;6. Little accomplished, not important.&lt;br /&gt;7. Nothing accomplished.&lt;br /&gt;&lt;br /&gt;Today is a 2.  So far...  Shooting for a 1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-4537416368775388132?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/4537416368775388132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=4537416368775388132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4537416368775388132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4537416368775388132'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/08/elliptical-life-and-hard-work.html' title='Elliptical Life, and Hard Work'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5036737130152876101</id><published>2007-08-30T09:27:00.000-04:00</published><updated>2007-08-30T09:43:36.385-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Another Dream.</title><content type='html'>OK, This one was is really interesting.&lt;br /&gt;&lt;br /&gt;I'm standing in the middle of traffic in a downtown suburban area.  Not sure why at this point.  I'm hardly bothered by it.  I see a cousin of mine off on the sidewalk, so I walk over to speak with him.  The traffic starts thinning out as I begin moving, so there's no danger of getting hit.&lt;br /&gt;&lt;br /&gt;As I join him, a large panel truck pulls up.  Out jumps Bimbette #1, a skinnyh, brunette, top-heavy type with just enough clothing to be legal.  She begins talking to a gathering crowd around us very animatedly, asking us if we want to be in a video, and giving directions as to where to stand, how to look, what emotions to portray.  I'm still confused and a little put off by this.&lt;br /&gt;&lt;br /&gt;She's joined shortly by Bimbette #2, who is the blonde version, as well as two male versions of the same basic model.  I realize that these are video producers and they are dressed up this way for a very calculated purpose, which is crowd control.  Most men will listen to a pretty girl, and vice versa.  I gather, from context clues that they are filming a rock music video, and that the band will be coming around the corner shortly.  They need extras, so whoever is on the street will do.&lt;br /&gt;&lt;br /&gt;This is where things really turn comic.  The band comes around the corner on the back of a flatbed truck.  They are supposed to be playing, and we are all supposed to act shocked.  Neither of us fulfilled our obligations.  The band is just confused, and we're all laughing at them.  Me, loudest of all.  The band is herded back around the corner by Bimbette #2, who appears to be in charge, and the proverbial "Bad Cop" of the two bimbette tag-team.  "Good Cop" calms the crowd down, and continues with the direction.&lt;br /&gt;&lt;br /&gt;The truck comes back around the corner again, but where's the band?  They're still donning their instruments, back around the corner.  "Bad Cop" goes into a tirade at this point.  The two male directors are just as confused as the rest of us, who happen to be laughing gales at this point.  I poke my head around the corner as blondie tears each one of the band members in two.  (Figuratively, of course.  It wasn't that kind of dream.)  The band looks like a bad AC/DC knockoff, complete with short-pants-wearing guitarist and drunken lead.  I'm laughing again.  "Good Cop" gently directs me back to the rest of the crowd, suffering only a look of contempt from me.&lt;br /&gt;&lt;br /&gt;Finally, the band members come around the corner on the truck, playing, and we all do indeed look shocked.  There's no sound for them to play to, and the instruments aren't plugged into anything.  They're just supposed to look like they're playing.  The sound, if it can be called that, is awful.  At this point, I begin walking back down the street, laughing, and leaving the whole mess behind.&lt;br /&gt;&lt;br /&gt;And then my alarm clock went off.  Good timing, huh?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5036737130152876101?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5036737130152876101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5036737130152876101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5036737130152876101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5036737130152876101'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/08/another-dream.html' title='Another Dream.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5967913773207397509</id><published>2007-08-28T14:00:00.000-04:00</published><updated>2007-08-29T08:58:14.854-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Set Memory Usage Percentage</title><content type='html'>One of the things I did recently was to set the max memory usage on all the servers, via script.  We wanted to set it to 75% of the total available physical memory on the server, so the OS would have something left to run with.  Here's how it was done:&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;use&lt;/span&gt; admin&lt;br /&gt;&lt;span class="kwrd"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Create the scripts table, if it does not exist.&lt;/span&gt; &lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;exists&lt;/span&gt; &lt;br /&gt;  (&lt;span class="kwrd"&gt;select&lt;/span&gt; table_name &lt;br /&gt;  &lt;span class="kwrd"&gt;from&lt;/span&gt; admin.information_schema.tables &lt;br /&gt;  &lt;span class="kwrd"&gt;where&lt;/span&gt; table_name = &lt;span class="str"&gt;'scripts'&lt;/span&gt;)&lt;br /&gt;  &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;create&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; scripts (&lt;br /&gt;      lines nvarchar(4000) &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;&lt;br /&gt;    )&lt;br /&gt;  &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Clear the scripts table.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;truncate&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; scripts &lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Insert the script.  This is a script I got off of MSDN at&lt;br /&gt;--&lt;a href="http://msdn2.microsoft.com/en-us/library/aa394587.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa394587.aspx&lt;/a&gt;.  This&lt;br /&gt;--bit here is my standard methodology for inserting outside &lt;br /&gt;--scripts into my T-SQL code.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; scripts &lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'strComputer = "."'&lt;/span&gt; &lt;span class="kwrd"&gt;union&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'Set objWMIService = GetObject("winmgmts:" _'&lt;/span&gt; &lt;span class="kwrd"&gt;union&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'&amp;amp; "{impersonationLevel=impersonate}!\\" _'&lt;/span&gt; &lt;span class="kwrd"&gt;union&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'&amp;amp; strComputer &amp;amp; "\root\cimv2")'&lt;/span&gt; &lt;span class="kwrd"&gt;union&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'Set colSettings = objWMIService.ExecQuery _'&lt;/span&gt; &lt;span class="kwrd"&gt;union&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'("Select * from Win32_ComputerSystem")'&lt;/span&gt; &lt;span class="kwrd"&gt;union&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'For Each objComputer in colSettings '&lt;/span&gt; &lt;span class="kwrd"&gt;union&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'Wscript.Echo "System Name: " &amp;amp; objComputer.Name'&lt;/span&gt; &lt;span class="kwrd"&gt;union&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'Wscript.Echo "Total Physical Memory: " &amp;amp; _'&lt;/span&gt; &lt;span class="kwrd"&gt;union&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'objComputer.TotalPhysicalMemory'&lt;/span&gt; &lt;span class="kwrd"&gt;union&lt;/span&gt; &lt;span class="kwrd"&gt;all&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; N&lt;span class="str"&gt;'Next'&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Export the script to a file.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;declare&lt;/span&gt; @cmd nvarchar(4000)&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @cmd = &lt;span class="str"&gt;'bcp admin.dbo.scripts out "C:\memory.vbs" -T -c'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; master.dbo.xp_cmdshell @cmd&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Create a place to hold the results.&lt;/span&gt; &lt;br /&gt;&lt;span class="kwrd"&gt;create&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; #memresults (results nvarchar(4000) &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Run the script, inserting the results to the temp table.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; #memresults &lt;br /&gt;  &lt;span class="kwrd"&gt;exec&lt;/span&gt; master.dbo.xp_cmdshell &lt;span class="str"&gt;'cscript C:\memory.vbs'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Pull the memory amount from the temp table, using a replace &lt;br /&gt;--for the line that holds the number we want.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;declare&lt;/span&gt; @mem &lt;span class="kwrd"&gt;bigint&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @mem = &lt;br /&gt;  (&lt;span class="kwrd"&gt;select&lt;/span&gt; replace(results, &lt;span class="str"&gt;'Total Physical Memory: '&lt;/span&gt;, &lt;span class="str"&gt;''&lt;/span&gt;) &lt;br /&gt;  &lt;span class="kwrd"&gt;from&lt;/span&gt; #memresults &lt;span class="kwrd"&gt;where&lt;/span&gt; results &lt;span class="kwrd"&gt;like&lt;/span&gt; &lt;span class="str"&gt;'Total Physical Memory: %'&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Compute the memory needed from the result, which is in bytes.&lt;br /&gt;--(bytes/1024)/1024 = megabytes.  Multiply that by 0.75, or 75%&lt;br /&gt;--for the max amount of RAM we want to give to SQL.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;declare&lt;/span&gt; @maxmem &lt;span class="kwrd"&gt;bigint&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @maxmem = (((@mem/1024)/1024) * 0.75)&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Assign the memory to SQL.&lt;br /&gt;--Turn advanced options on, just in case it isn't already.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; master.dbo.sp_configure &lt;span class="str"&gt;'show advanced options'&lt;/span&gt;, 1&lt;br /&gt;&lt;span class="kwrd"&gt;reconfigure&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Set the minimum ram to 0.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; master.dbo.sp_configure &lt;br /&gt;  @configname = &lt;span class="str"&gt;'min server memory (MB)'&lt;/span&gt;, &lt;br /&gt;  @configvalue = 0&lt;br /&gt;&lt;span class="kwrd"&gt;reconfigure with override&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Set the Maximum ram to the figure we just calculated.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; master.dbo.sp_configure &lt;br /&gt;  @configname = &lt;span class="str"&gt;'max server memory (MB)'&lt;/span&gt;, &lt;br /&gt;  @configvalue = @maxmem&lt;br /&gt;&lt;span class="kwrd"&gt;reconfigure with override&lt;br /&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;--Clean up your mess.  Get rid of the script and the &lt;br /&gt;--temp table.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; master.dbo.xp_cmdshell &lt;span class="str"&gt;'del C:\memory.vbs'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;drop&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; #memresults&lt;br /&gt;&lt;span class="kwrd"&gt;go&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, why do this in a script, rather than just going into the SQL Enterprise Manager configuration panel and doing it?  Imagine doing this on 300 servers, in 4 different time zones, in about 20 minutes.  Yeah, that's why.  Using my push script, which will be published here soon, this took around 20 minutes for all 300+ servers.&lt;br /&gt;&lt;br /&gt;Moving on...&lt;br /&gt;&lt;br /&gt;EDIT: 8/29, 9:00 AM = Changed the @mem variables from 'int' type to 'bigint'.  Otherwise, any computer with more than 2GB of RAM will cause an overflow.  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5967913773207397509?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5967913773207397509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5967913773207397509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5967913773207397509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5967913773207397509'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/08/set-memory-usage-percentage.html' title='Set Memory Usage Percentage'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5406654395318499829</id><published>2007-08-28T09:40:00.001-04:00</published><updated>2007-08-28T09:46:09.661-04:00</updated><title type='text'>Vote for who, now?</title><content type='html'>Excerpt from an email I just received:&lt;br /&gt;&lt;br /&gt;"Don't forget to cast your vote and support the candidates that support your ideas, and your job!"&lt;br /&gt;&lt;br /&gt;Def: Electioneering - Something I don't think you're supposed to do at work.  &lt;br /&gt;&lt;br /&gt;Sheesh...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5406654395318499829?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5406654395318499829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5406654395318499829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5406654395318499829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5406654395318499829'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/08/vote-for-who-now.html' title='Vote for who, now?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-558615918519723454</id><published>2007-08-21T23:50:00.001-04:00</published><updated>2007-08-21T23:59:12.389-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quickies'/><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>And the hits just keep coming.</title><content type='html'>My computer at home was being intolerably slow, so I wiped it and started over.  Amazing what a fresh installation will do for a machine.  Now I get to gum it up again with all the little applications I use on a regular basis.&lt;br /&gt;&lt;br /&gt;Actually, not really.  I sat down for a bit and thought about it last night.  What I really do with my machine is play games, and surf the internet.  Nothing much heavier than that.  I do most of my development work at work, and I'm really not interested in doing it at home, so I really don't need to load SQL on here for now.  I may do so in the future, as my studying picks up again, but for now, I hardly even need a word processor.&lt;br /&gt;&lt;br /&gt;I'm still researching doing a bit of podcasting.  If that gets off the ground, I'll let you know.  Not even sure what I'm going to talk about yet.  We shall see.&lt;br /&gt;&lt;br /&gt;I also noticed today that when I changed my template, I missed the Google Analytics portion of it, so I haven't had any stats in a while.  It would be interesting to know if anyone's reading this thing.  (Seeing as nobody ever comments.  Hint. Hint.)&lt;br /&gt;&lt;br /&gt;Well, with the fresh installation and the new network gear, (a wireless router install, just finished a few moments ago), I should be good to go tech-wise for a while now.  Just figured I'd dash off a post before bed.&lt;br /&gt;&lt;br /&gt;And what the hell, I haven't done one of these in a while...&lt;br /&gt;&lt;br /&gt; - A Morals Haiku - &lt;br /&gt;Judge not by my words.&lt;br /&gt;Nor by my manner, though harsh.&lt;br /&gt;Good deeds, I have done. &lt;br /&gt;&lt;br /&gt;And with that, good night.&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-558615918519723454?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/558615918519723454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=558615918519723454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/558615918519723454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/558615918519723454'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/08/and-hits-just-keep-coming.html' title='And the hits just keep coming.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-422277114271001878</id><published>2007-08-20T10:30:00.000-04:00</published><updated>2007-08-21T23:59:40.932-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>The servers table. - REMEMBER THIS.</title><content type='html'>OK, for many of the functions I'm going to post in the near future, you're going to need a table that contains the names of all the servers you're administering.  I would suggest this, for now.  (If it changes in the future, I'll bring this post back up again.)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;create table SQLServers (&lt;br /&gt;  sname nvarchar(128) not null, -- the server name&lt;br /&gt;  ipaddr nvarchar(15) null, -- the server's IP address&lt;br /&gt;  adminusr nvarchar(30) null, -- the admin user name, like 'sa' or 'dba'&lt;br /&gt;  rouser nvarchar(30) null -- a 'read only' user&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;More later.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-422277114271001878?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/422277114271001878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=422277114271001878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/422277114271001878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/422277114271001878'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/08/servers-table-remember-this.html' title='The servers table. - REMEMBER THIS.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8742672228640865577</id><published>2007-08-16T16:40:00.000-04:00</published><updated>2007-08-21T23:59:58.907-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>The Fortress of Solitude.</title><content type='html'>I recently rearranged the basement, yet again, with K's help.  It wasn't feeling as cozy as it did before in the 'living' area.  We grabbed a couple more bamboo blinds and hung them up, smooshed things a little bit to the far end of the room, and created a much more private work/living space for myself.  This also had the effect of enlarging the exercize area as well.  A win on both points.&lt;br /&gt;&lt;br /&gt;The only problem I encountered was with moving/adding the electrical outlets.  It turns out that the ground was never connected.  Now, I have grounding at all points, but that first outlet was a beast to connect.  Ugh.&lt;br /&gt;&lt;br /&gt;Strange, though, that the first one would present the problem.  It's usually the last item in the list that presents me the greatest difficutly.  I'm not sure why that is.  &lt;br /&gt;&lt;br /&gt;K is, at the moment, off at Lowes purchasing shrubs for the front flower bed.  I have a feeling I'll be hard at work when I get home.  Hopefully there'll be time for a little sudoku before bed tonight.  I'm finally completing the 'master' level puzzles with no hints.  Though, I am still using pencil marks.  &lt;br /&gt;&lt;br /&gt;The Sudoku game I have is &lt;a href="http://www.zenofsudoku.com/"&gt;Zen of Sudoku&lt;/a&gt;. You can win little trophies for your accomplishments in the game.  So far, I've won a few for completing x-amount of games.  A couple though, can only be won by completing the more difficult puzzles without aid.  (No pencil marks, no hints, no highlighting, spotlighting, or revealing of mistakes.)  There are 4 difficulty levels; Easy, Novice, Expert, and Master.  So far, only the finaly Master level trophy eludes me.  Maybe tonight is the night?&lt;br /&gt;&lt;br /&gt;If I'm not too tired from planting, anyway.  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8742672228640865577?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8742672228640865577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8742672228640865577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8742672228640865577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8742672228640865577'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/08/fortress-of-solitude.html' title='The Fortress of Solitude.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-4657218137175085379</id><published>2007-08-07T16:25:00.000-04:00</published><updated>2007-08-22T00:00:10.580-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>What's The Recovery Model?</title><content type='html'>Quick!  Gimme the recovery model for all your databases!&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; name, databasepropertyex(name, &lt;span class="str"&gt;'Recovery'&lt;/span&gt;) &lt;span class="kwrd"&gt;from&lt;/span&gt; master.sys.databases&lt;/pre&gt;&lt;br /&gt;Didja beat me?  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-4657218137175085379?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/4657218137175085379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=4657218137175085379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4657218137175085379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4657218137175085379'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/08/whats-recovery-model.html' title='What&apos;s The Recovery Model?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6050874181190923826</id><published>2007-08-06T17:19:00.001-04:00</published><updated>2007-08-06T17:19:57.725-04:00</updated><title type='text'>Power (Tool) Play</title><content type='html'>After the hailstorm last year, we decided that the aluminum awning wasn't worth replacing, so we sold it for scrap.  I had originally put a little brick extension on the patio, which worked out well for a season or so, but the sand I used to grout it didn't hold the way I thought it would.  (Turns out on further research, I should have mixed the construction sand and the play sand, and let the mud do the rest.)  Anyway, I pulled the brick out, and dumped the sand in the compost area.  That left us with four concrete footers where there should be grass.  What to do?  I could have dug the area out and pulled them up with a big lever, but they were far too heavy to move after the fact.  &lt;br /&gt;&lt;br /&gt;The last set of footers I dealt with was when we took out the shed.  The previous owners put a @$200 shed on a foundation that would have survived a nuclear blast.  In that case, I took my trusty 8-pound sledge to them, and broke them up below the surface of the grass, enough to where I could plant over top of them and nobody would be the wiser.  This took several hours of my time.  I actually had the week off at the time, so this was no big deal, but I'm always looking for a more efficient method to my madness...&lt;br /&gt;&lt;br /&gt;Enter Home Depot's tool rental service and the Wacker brand electric breaker.  You and I know it as a jackhammer.  It was quite heavy.  I could manage it, but just barely.  I wasn't too sure how it would handle the concrete, even with the very sturdy bits that came with it.  There were two chisel bits, one wide and one narrow, and one pointed bit.  It came on it's own hand truck.  Lifting it into the truck was fun.  :-)  (As was moving it to the car, when there was some confusion about what vehicle to take it back in...)  It ran off of standard house current, so no issues with that. &lt;br /&gt;&lt;br /&gt;So how did it work?  Well, I have two things to say about that.  The first, is that this thing hated concrete with a passion.  It tore through the footers with some speed, doing in about 30 minutes what would have taken me a few hours with a hammer and chisel.  The second, is that it shook like a small, no, make that large earthquake.  The safety warning sheet said "vibration hazard".  It spoke the truth.  My arms had the feel of overcooked linguine when I was done.  But the point was, I was done.  It went very fast, and I could even get the tool back fast enough to get the 4-hour rate instead of the all-day one.  Sweet.&lt;br /&gt;&lt;br /&gt;Proof once again, that it's all about having the right tool for the job.  Speaking of which, I have a server to work on.  Where'd that sledge go...?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6050874181190923826?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6050874181190923826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6050874181190923826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6050874181190923826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6050874181190923826'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/08/power-tool-play.html' title='Power (Tool) Play'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-7142386121741879078</id><published>2007-07-27T10:23:00.000-04:00</published><updated>2007-07-27T17:05:56.765-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Where In The World Is... Column 'Sandiego'?</title><content type='html'>OK, lame title...&lt;br /&gt;&lt;br /&gt;So I'm making a change to a couple stored procs that is going to require change to a column length.  Thing is, I can't remember where all I used that column...&lt;br /&gt;&lt;br /&gt;This is actually the second time I'm posting this.  The first one was ok, this one is much cleaner.&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;ALTER&lt;/span&gt; &lt;span class="kwrd"&gt;procedure&lt;/span&gt; [dbo].[proc_find_column]&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Procedure to find all instances of a column&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- in all tables in a given database.  Supply the&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- database name and all or part of the column name.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Ex: exec dbo.proc_find_column 'databasename', 'columnname'&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Or: exec dbo.proc_find_column 'databasename', '%name'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;@dbname &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(100), &lt;span class="rem"&gt;-- The name of the database to search&lt;/span&gt;&lt;br /&gt;@colname &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(100) &lt;span class="rem"&gt;-- The name of the column to locate&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;as&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;declare&lt;/span&gt; @&lt;span class="kwrd"&gt;sql&lt;/span&gt; nvarchar(4000)&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @&lt;span class="kwrd"&gt;sql&lt;/span&gt; = &lt;span class="str"&gt;'select table_name, column_name, data_type, character_maximum_length from '&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @&lt;span class="kwrd"&gt;sql&lt;/span&gt; = @&lt;span class="kwrd"&gt;sql&lt;/span&gt; + @dbname  &lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @&lt;span class="kwrd"&gt;sql&lt;/span&gt; = @&lt;span class="kwrd"&gt;sql&lt;/span&gt; + &lt;span class="str"&gt;'.INFORMATION_SCHEMA.COLUMNS where table_name in (select table_name from '&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @&lt;span class="kwrd"&gt;sql&lt;/span&gt; = @&lt;span class="kwrd"&gt;sql&lt;/span&gt; + @dbname&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @&lt;span class="kwrd"&gt;sql&lt;/span&gt; = @&lt;span class="kwrd"&gt;sql&lt;/span&gt; + &lt;span class="str"&gt;'.INFORMATION_SCHEMA.TABLES where table_type = '&lt;/span&gt;&lt;span class="str"&gt;'base table'&lt;/span&gt;&lt;span class="str"&gt;' &lt;br /&gt;                    and table_name &amp;lt;&amp;gt; '&lt;/span&gt;&lt;span class="str"&gt;'dtproperties'&lt;/span&gt;&lt;span class="str"&gt;') and column_name like '&lt;/span&gt;&lt;span class="str"&gt;''&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @&lt;span class="kwrd"&gt;sql&lt;/span&gt; = @&lt;span class="kwrd"&gt;sql&lt;/span&gt; + @colname&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @&lt;span class="kwrd"&gt;sql&lt;/span&gt; = @&lt;span class="kwrd"&gt;sql&lt;/span&gt; + &lt;span class="str"&gt;''&lt;/span&gt;&lt;span class="str"&gt;' order by table_name, column_name'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; master.dbo.sp_executesql @&lt;span class="kwrd"&gt;statement&lt;/span&gt; = @&lt;span class="kwrd"&gt;sql&lt;/span&gt;&lt;br /&gt;--&lt;span class="kwrd"&gt;print&lt;/span&gt; @&lt;span class="kwrd"&gt;sql&lt;/span&gt;  --placed here &lt;span class="kwrd"&gt;for&lt;/span&gt; testing.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now... &lt;pre&gt;exec admin.dbo.proc_find_column 'auditdb', 'server_name' &lt;/pre&gt;gives me ...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;config_exceptions  server_name varchar  15&lt;br /&gt;databases          server_name varchar  15&lt;br /&gt;dba_errorlog_check server_name nvarchar 128&lt;br /&gt;dboptions          server_name varchar  15&lt;br /&gt;drivespace         server_name varchar  15&lt;br /&gt;job_status         server_name varchar  15&lt;br /&gt;jobs               server_name varchar  15&lt;br /&gt;liveagents         server_name varchar  15&lt;br /&gt;notifications      server_name varchar  15&lt;br /&gt;server_config      server_name varchar  15&lt;br /&gt;server_connections server_name varchar  15&lt;br /&gt;sql_servers        server_name varchar  15&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Much better...  :-)&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-7142386121741879078?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/7142386121741879078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=7142386121741879078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7142386121741879078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7142386121741879078'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/07/where-in-world-is-column-sandiego.html' title='Where In The World Is... Column &apos;Sandiego&apos;?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-1672297685376639210</id><published>2007-07-11T12:32:00.001-04:00</published><updated>2007-07-11T12:33:02.046-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>We have ways of making you talk...</title><content type='html'>Want to know your remote SQL server's IP addres, without all the NAT that's in between you two?&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;create&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; #ipconfig (results &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(250) &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; #ipconfig &lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; xp_cmdshell &lt;span class="str"&gt;'ipconfig'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; REPLACE(&lt;span class="kwrd"&gt;SUBSTRING&lt;/span&gt;(results,CHARINDEX(&lt;span class="str"&gt;':'&lt;/span&gt;,results,1)+1,LEN(results)),&lt;span class="str"&gt;' '&lt;/span&gt;,&lt;span class="str"&gt;''&lt;/span&gt;) &lt;br /&gt;&lt;span class="kwrd"&gt;from&lt;/span&gt; #ipconfig&lt;br /&gt;&lt;span class="kwrd"&gt;where&lt;/span&gt; results &lt;span class="kwrd"&gt;like&lt;/span&gt; &lt;span class="str"&gt;'%IP Address%'&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Outputs the IP address of the server, locally.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-1672297685376639210?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/1672297685376639210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=1672297685376639210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1672297685376639210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1672297685376639210'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/07/we-have-ways-of-making-you-talk.html' title='We have ways of making you talk...'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-762457722872599697</id><published>2007-07-02T11:34:00.000-04:00</published><updated>2007-07-02T11:40:37.132-04:00</updated><title type='text'>Math Mess.</title><content type='html'>OK, I have a pretty high tolerance for honest mistakes.  This however, is high cruelty.&lt;br /&gt;&lt;br /&gt;I have a new phone, and it has this little game on it.  The game is called "Adventure Quiz".  Basically, it's a little puzzle / time killer kind of game.  One of the things it presents you with is math puzzles.  You have to pick the correct operators and sometimes values, in order to make a certain equation work.  Normally, I'm pretty good at those.  The current one had me stumped.  So, being a frustrated geek, I sat down, and worked through all the permutations until I found the answer.&lt;br /&gt;&lt;br /&gt;The answer was, there was no answer.  No matter which ones you choose, the equation DOESNT WORK.  There's no way to get this puzzle correct, and win the game, thereby getting the little bunny all his much needed carrots.  The bunny is DENIED by cruel game designers.&lt;br /&gt;&lt;br /&gt;If anyone can find an answer for this, I'm all ears.&lt;br /&gt;&lt;br /&gt;(OP) represents a mathematical operator, +, -, * (multiplication), / (division).&lt;br /&gt;&lt;br /&gt;(VAL) represents one of the following numeric value choices: 18, 20, 27, or 34.&lt;br /&gt;&lt;br /&gt;The puzzle is this:&lt;br /&gt;&lt;br /&gt;35 (OP) 252 (OP) (VAL) = 34 - 13&lt;br /&gt;&lt;br /&gt;I know that 34 - 13 = 21.  That part's easy.  However, with those given values, there is no way to make that side of the equation equal to 21.  It's just not possible.&lt;br /&gt;&lt;br /&gt;Ah.  It's the little things in life.  They bring joy, and they bring pain.  If you're lucky, and you're a bunny, they bring carrots.&lt;br /&gt;&lt;br /&gt;But not today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-762457722872599697?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/762457722872599697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=762457722872599697' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/762457722872599697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/762457722872599697'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/07/math-mess.html' title='Math Mess.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6542942560864885894</id><published>2007-06-28T11:53:00.000-04:00</published><updated>2007-06-28T11:56:20.340-04:00</updated><title type='text'>Room for Backups?</title><content type='html'>This script checks your backup drive to see if you have the room for SQL backups, and emails you a nice little message if you don't.  It requires the xp_smtp_sendmail extended stored procedure, found at &lt;a href="http://www.sqldev.net/xp/xpsmtp.htm"&gt;http://www.sqldev.net/xp/xpsmtp.htm&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; QUOTED_IDENTIFIER &lt;span class="kwrd"&gt;ON&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; ANSI_NULLS &lt;span class="kwrd"&gt;ON&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- Free space checking for SQL backups to disk.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- Returns an error if the free space on the disk is &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- less than 2x the MDF total file size.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- Parameters: @letter = Drive letter that the backups are on.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- Example: exec proc_DiskSpace @letter = 'D'&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="rem"&gt;--&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- D Maxwell&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="rem"&gt;-- June 2007&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt;  &lt;span class="kwrd"&gt;procedure&lt;/span&gt; proc_DiskSpace &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;@letter &lt;span class="kwrd"&gt;char&lt;/span&gt;(1)  &lt;span class="rem"&gt;-- The letter of the backup drive.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;AS&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- Get the drive space available first.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;create&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; ##drivespace (&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    letter &lt;span class="kwrd"&gt;char&lt;/span&gt;(1) &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;    MB_free &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; ##drivespace &lt;span class="kwrd"&gt;exec&lt;/span&gt; master..xp_fixeddrives&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;declare&lt;/span&gt; @available &lt;span class="kwrd"&gt;int&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @available = (&lt;span class="kwrd"&gt;select&lt;/span&gt; (MB_free * 1024) &lt;span class="kwrd"&gt;from&lt;/span&gt; ##drivespace &lt;span class="kwrd"&gt;where&lt;/span&gt; letter = @letter)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;-- Determine how much space we need (twice as much as the total MDF file size.)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;declare&lt;/span&gt; @required &lt;span class="kwrd"&gt;int&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; @required = (&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;select&lt;/span&gt; ((&lt;span class="kwrd"&gt;sum&lt;/span&gt;(&lt;span class="kwrd"&gt;size&lt;/span&gt;) * 8) * 2)&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;from&lt;/span&gt; master..sysaltfiles &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;where&lt;/span&gt; groupid = 1 &lt;span class="kwrd"&gt;and&lt;/span&gt; fileid = 1&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; @required &amp;lt; @available  &lt;span class="rem"&gt;-- Do we have the space we need?&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;drop&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; ##drivespace&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;(0) &lt;span class="rem"&gt;-- Plenty of room for backups.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;begin&lt;/span&gt;  &lt;span class="rem"&gt;-- Not enough room.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;   &lt;span class="rem"&gt;-- For the log files.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;raiserror&lt;/span&gt; (&lt;span class="str"&gt;'Drive space for backups is low.  Please investigate.'&lt;/span&gt;, 16, 1)  &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;declare&lt;/span&gt; @srvname nvarchar(15)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;declare&lt;/span&gt; @subj nvarchar(250)&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;declare&lt;/span&gt; @msg nvarchar(1000)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;set&lt;/span&gt; @srvname = (&lt;span class="kwrd"&gt;select&lt;/span&gt; &lt;span class="kwrd"&gt;convert&lt;/span&gt;(nvarchar(15), serverproperty(&lt;span class="str"&gt;'ServerName'&lt;/span&gt;)))&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;set&lt;/span&gt; @subj = N&lt;span class="str"&gt;'Disk Space Warning on server '&lt;/span&gt; + @srvname + &lt;span class="str"&gt;'.'&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;set&lt;/span&gt; @msg = N&lt;span class="str"&gt;'Disk space is low on server '&lt;/span&gt; + @srvname + &lt;span class="str"&gt;'.  Please investigate'&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;declare&lt;/span&gt; @rc &lt;span class="kwrd"&gt;int&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;exec&lt;/span&gt; @rc = master.dbo.xp_smtp_sendmail&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;        @&lt;span class="kwrd"&gt;FROM&lt;/span&gt;            = N&lt;span class="str"&gt;'&amp;lt;FROM_ADDRESS&amp;gt;'&lt;/span&gt;,&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;        @&lt;span class="kwrd"&gt;TO&lt;/span&gt;                = N&lt;span class="str"&gt;'&amp;lt;TO_ADDRESS&amp;gt;'&lt;/span&gt;,&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;        @subject        = @subj,&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;        @message        = @msg,&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;        @server         = N&lt;span class="str"&gt;'&amp;lt;SMTP_SERVER_ADDRESS&amp;gt;'&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;select&lt;/span&gt; RC = @rc &lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;drop&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt; ##drivespace&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt;(1)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; QUOTED_IDENTIFIER &lt;span class="kwrd"&gt;OFF&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; ANSI_NULLS &lt;span class="kwrd"&gt;ON&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6542942560864885894?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6542942560864885894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6542942560864885894' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6542942560864885894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6542942560864885894'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/06/room-for-backups.html' title='Room for Backups?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8321894755994337512</id><published>2007-06-25T23:14:00.001-04:00</published><updated>2007-06-25T23:19:07.254-04:00</updated><title type='text'>I NEED ONE OF THESE.</title><content type='html'>I will own one of these before the year is out.  Mark my words.  How I have lived this long and not been familiar with this instrument is beyond me.&lt;br /&gt;&lt;br /&gt;I present: &lt;a href="http://www.rhythmweb.com/cajon/index.html"&gt;The Cajon.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=s-TTy5Q1jwA"&gt;Najib Amhali, playing the Cajon.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Don't let the first 15 seconds or so of the video turn you away.  It's around 18 - 20 seconds that the party really starts.  Stay tuned for some serious awesomeness.&lt;br /&gt;&lt;br /&gt;I MUST HAVE ONE OF THESE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8321894755994337512?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8321894755994337512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8321894755994337512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8321894755994337512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8321894755994337512'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/06/i-need-one-of-these.html' title='I NEED ONE OF THESE.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-9111764345319786905</id><published>2007-06-20T21:17:00.001-04:00</published><updated>2007-06-20T21:17:17.570-04:00</updated><title type='text'>Hm...</title><content type='html'>&lt;table cellpadding=5&gt;&lt;tr&gt;&lt;td&gt;             &lt;table&gt;        &lt;tbody&gt;&lt;tr&gt;         &lt;td height="600" valign="top" width="255"&gt;          &lt;img border=1 src="http://is3.okcupid.com/graphics/persons/DGLMm.gif" name="thebigpicture3"&gt;         &lt;/td&gt;         &lt;td&gt;                    &lt;/td&gt;         &lt;td valign="top"&gt;          &lt;center&gt;          &lt;font size="5"&gt;The Gentleman&lt;/font&gt;&lt;br&gt;          &lt;font size="4"&gt;     Deliberate     Gentle     Love     Master    (&lt;font shmolor="red"&gt;DGLM&lt;/font&gt;)&lt;/font&gt;&lt;br&gt;&lt;br&gt;          &lt;/center&gt;  &lt;!--t--&gt;              Steady &amp; mature. You are &lt;b&gt;The Gentleman&lt;/b&gt;.           &lt;br&gt;&lt;br&gt;               For anyone looking for an          even-keeled, considerate lover, you're their man. You're sophisticated.          You know what you want both in a relationship and outside of it.          You have a substantial romantic side, and you're experienced enough          sexually to handle yourself in that arena, too. Your future relationships          will be long-lasting; you're classic "marrying material," a          prize in the eyes of many.           &lt;br&gt;&lt;br&gt;               It's possible that behind it all, you're a bit of a male slut.          Your best friends know that in relationships you're           fundamentally &lt;font shmolor="blue"&gt;sex-driven&lt;/font&gt;.          You're a safe, reliable guy, who does get laid.          In a lot of ways,          you're like a well-worn, comfortable pair of socks.          Did you ever jack off into one of those?          All the time. &lt;!--/t--&gt;          &lt;br&gt;&lt;br&gt;            &lt;!-- begin exact opposite table --&gt;          &lt;center&gt;          &lt;table align="right" bgshmolor="#bbbbbb" border="0" cellpadding="5" cellspacing="1"&gt;           &lt;tbody&gt;&lt;tr height="20"&gt;            &lt;td align="center" bgshmolor="#eeeeee"&gt;             &lt;span class="tiny"&gt;     Your exact male opposite:&lt;br&gt; &lt;b&gt;The Last Man on Earth&lt;/b&gt;&lt;b&gt;&lt;br&gt;     &lt;img border=1 src="http://is3.okcupid.com/graphics/persons/RBSDm_thumb.gif" hspace="3" vspace="7"&gt;&lt;br&gt;     Random      Brutal      Sex      Dreamer             &lt;/b&gt;&lt;/span&gt; &lt;b&gt;           &lt;/b&gt;&lt;/td&gt;           &lt;/tr&gt;          &lt;/tbody&gt;&lt;/table&gt;          &lt;/center&gt;          &lt;!-- end exact opposite table --&gt;               &lt;!--t--&gt;          Your ideal mate is NOT a nut-job.  She is giving and           loving, like you, but also experienced. Avoid the &lt;b&gt;The Battleaxe (DBLM)&lt;/b&gt;          at all fucking costs.&lt;br&gt;&lt;img border=1 src="http://is3.okcupid.com/graphics/square.gif"&gt; &lt;!--/t--&gt;          &lt;br&gt;&lt;br&gt;&lt;font shmolor="blue"&gt;&lt;!--t--&gt;CONSIDER&lt;!--/t--&gt;&lt;/font&gt;: &lt;b&gt;The Maid of Honor (DGLM)&lt;/b&gt;, &lt;!--t--&gt;someone just like you.&lt;!--/t--&gt;          &lt;/td&gt;        &lt;/tr&gt;       &lt;/tbody&gt;&lt;/table&gt;  &lt;br&gt;&lt;br&gt;Link:  &lt;a href='http://www.okcupid.com/online.dating.persona.test'&gt;&lt;b&gt;The Online Dating Persona Test&lt;/b&gt;&lt;/a&gt; @ &lt;a href='http://www.okcupid.com'&gt;&lt;b&gt;&lt;b&gt;OkCupid&lt;/b&gt; - free online dating&lt;/b&gt;&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-9111764345319786905?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/9111764345319786905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=9111764345319786905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/9111764345319786905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/9111764345319786905'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/06/hm.html' title='Hm...'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-7123449975244731210</id><published>2007-06-19T14:11:00.000-04:00</published><updated>2007-06-19T14:13:03.105-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQL Code Posting.</title><content type='html'>OK, this should post with all the appropriate colors and formatting.  Let's see, here...&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Add job script&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Demonstrating adding a job, with one step&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- scheduling it, and running it, WITHOUT&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- USING ENTERPRISE MANAGER&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- NOTE: This script is for SQL 2000.  There is a &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- different method for scheduling in SQL 2005.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- First, switch to MSDB to create the job&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;use&lt;/span&gt; msdb&lt;br /&gt;&lt;span class="kwrd"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_add_job &lt;br /&gt;    @job_name = N&lt;span class="str"&gt;'TEST: Table copy to DEV_DB'&lt;/span&gt;, &lt;br /&gt;    @enabled = 1, &lt;br /&gt;    @description = N&lt;span class="str"&gt;'A test job to illustrate job management without SQLEM'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Now add the step to the job&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_add_jobstep &lt;br /&gt;    @job_name = N&lt;span class="str"&gt;'TEST: Table copy to DEV_DB'&lt;/span&gt;, &lt;br /&gt;    @step_id = 1,&lt;br /&gt;    @step_name = N&lt;span class="str"&gt;'Copy Step'&lt;/span&gt;, &lt;br /&gt;    @subsystem = N&lt;span class="str"&gt;'TSQL'&lt;/span&gt;, &lt;br /&gt;    @command = N&lt;span class="str"&gt;'select * into dev_db..test_users from test_db..test_users'&lt;/span&gt;, &lt;br /&gt;    @server = N&lt;span class="str"&gt;'CRPDEVBOX'&lt;/span&gt;,&lt;br /&gt;    @database_name = N&lt;span class="str"&gt;'dev_db'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Target the job to the server...&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_add_jobserver&lt;br /&gt;    @job_name = N&lt;span class="str"&gt;'TEST: Table copy to DEV_DB'&lt;/span&gt;,&lt;br /&gt;    @server_name = N&lt;span class="str"&gt;'CRPDEVBOX'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;-- Finally, schedule the job.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_add_jobschedule &lt;br /&gt;    @job_name = N&lt;span class="str"&gt;'TEST: Table copy to DEV_DB'&lt;/span&gt;, &lt;br /&gt;    @name = N&lt;span class="str"&gt;'One time test'&lt;/span&gt;, &lt;br /&gt;    @enabled = 1,&lt;br /&gt;    @freq_type = 1,&lt;br /&gt;    @active_start_date = 20070410,&lt;br /&gt;    @active_start_time = 141500&lt;br /&gt;&lt;span class="kwrd"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-7123449975244731210?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/7123449975244731210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=7123449975244731210' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7123449975244731210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7123449975244731210'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/06/sql-code-posting.html' title='SQL Code Posting.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-7952431921225177178</id><published>2007-06-14T09:15:00.000-04:00</published><updated>2007-06-14T09:56:40.613-04:00</updated><title type='text'>Quick Server Assessment Script</title><content type='html'>Here's one for the SQL geeks.  I have about 200 - 250 SQL servers I manage now, and I have to have a way to get familiar with them, super-quick.  Here's how I'm doing it:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/* Initial server status and configuration check script&lt;br /&gt; D Maxwell, June 2007&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;-- Get the product version and revision level.&lt;br /&gt;-- If the Edition is "Desktop Engine", upgrade.&lt;br /&gt;SELECT SERVERPROPERTY('ServerName') Server_Name,&lt;br /&gt;   SERVERPROPERTY('productversion') Revision, &lt;br /&gt;   SERVERPROPERTY('productlevel') Service_Pack, &lt;br /&gt;   SERVERPROPERTY('edition') Edition&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;-- Make sure the correct DBs are there.&lt;br /&gt;select name Databases&lt;br /&gt; from master..sysdatabases&lt;br /&gt; where name not in('master', 'model', 'msdb', 'tempdb')&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;-- See what jobs are scheduled.&lt;br /&gt;select name JobName&lt;br /&gt; from msdb..sysjobs&lt;br /&gt; where name like '%maintenance plan%'  -- These need to GO...&lt;br /&gt; and enabled = 1&lt;br /&gt; order by JobName&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- Check for job failures, getting frequency and most recent failure.  &lt;br /&gt;select count(*) Fail_Count, j.name Job_Name, max(jh.run_date) Run_Date, max(jh.run_time ) Run_Time&lt;br /&gt; from msdb..sysjobhistory jh inner join msdb..sysjobs j &lt;br /&gt;  on jh.job_id = j.job_id&lt;br /&gt; where jh.message like '%the job failed%'&lt;br /&gt; group by j.name&lt;br /&gt; order by j.name&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;-- Get the length of the job history.&lt;br /&gt;select min(run_date) History_Starts, max(run_date) Current_History from msdb..sysjobhistory&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;-- Before we get the config, make sure we get the WHOLE config.&lt;br /&gt;sp_configure 'show advanced options', 1&lt;br /&gt;reconfigure&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;-- Get the configuration.&lt;br /&gt;sp_configure&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Run in ISQLW, this gives me a nice little report for each server.  If I need to take any actions on it, I can.  If not, chalk it up and move on.&lt;br /&gt;&lt;br /&gt;Try it out.  Let me know what you think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-7952431921225177178?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/7952431921225177178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=7952431921225177178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7952431921225177178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7952431921225177178'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/06/quick-server-assessment-script.html' title='Quick Server Assessment Script'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-1036760779683494624</id><published>2007-06-07T21:56:00.000-04:00</published><updated>2007-06-07T22:25:53.015-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fiction'/><title type='text'>A little light fiction.</title><content type='html'>The rain came down, alternately in sheets, and in sprinkles.  It was typical for a mid-day May storm like this one.  There was a fair bit of wind but the overhang provided some protection.  It didn't keep him from getting a little wet, but it was better than being soaked.&lt;br /&gt;&lt;br /&gt;He looked out onto the field, wondering if the rain was going to do anything for the grass.  It had been dry for a long time, and the back field had begun to brown a bit under the torturous sun.  The rain, in a way, was welcome relief for some.  No, it wasn't the rain that bothered him.  The rain, he could deal with.  The cold, he could also deal with.  Winter was a welcome time to him.&lt;br /&gt;&lt;br /&gt;It was the combination of rain and cold, that chilled him.  It made it difficult to stand still and wait.  But he waited, for what seemed like an hour.  His watch only counted about 10 minutes.  &lt;br /&gt;&lt;br /&gt;Finally a touch on his shoulder focused his attention behind him, though he didn't turn around.  "You're late.", he said, with just as much of a shiver in his voice as in his body.&lt;br /&gt;&lt;br /&gt;"No, you're early." &lt;br /&gt;&lt;br /&gt;"Oh?  And what time is it?"  More shivering.&lt;br /&gt;&lt;br /&gt;"Seven.  Your watch must be fast again."&lt;br /&gt;&lt;br /&gt;He turned to face her, amused.  "This...", he said, tapping the timepiece on his right wrist, "...gets it's signal from the tower.  It is &lt;span style="font-weight:bold;"&gt;never&lt;/span&gt; fast.  Yours is a little wind-up toy.  Just the humidity is probably enough to send it out of sync.  Besides, I figured you'd be late, anyway.  Did you even get my message?"&lt;br /&gt;&lt;br /&gt;She sighed.  "What message?"&lt;br /&gt;&lt;br /&gt;"The email I sent you."&lt;br /&gt;&lt;br /&gt;"When did you send it?  I usually only turn that thing on for an hour or so on Saturdays."&lt;br /&gt;&lt;br /&gt;"Sooner or later, you're going to have to get with the times, you fossil."  He had stopped shivering now, and was smiling fully.&lt;br /&gt;&lt;br /&gt;"Maybe.", she said.  "In the meantime, I'm content to do things the old-fashioned way."&lt;br /&gt;&lt;br /&gt;The rain began to let up, and a few bits of sunlight started breaking through the clouds, warming a spot or two of the damp earth. "Yes, I got your letter.  It was nice.  I like your handwriting.  It's all swoopy and swirly..."  His voice trailed off as a slight blush came to him.  &lt;br /&gt;&lt;br /&gt;"I really can't believe you're still shy around me."&lt;br /&gt;&lt;br /&gt;It was his turn to sigh. "I don't know.  You still affect me, after all these years."&lt;br /&gt;&lt;br /&gt;She decided to take it as the compliment it was.  75 years later, he could still make her smile just by being himself. "Ready to go?", she asked, taking his hand.&lt;br /&gt;&lt;br /&gt;He simply nodded in response, and just as they had done for so many years, the went walking through the grass and trees, alone, together, and happy.&lt;br /&gt;&lt;br /&gt;********************&lt;br /&gt;&lt;br /&gt;I have no idea what possessed me to write this.  Just kind of had the scene in my head.  If any of my more literary friends would like to critique, please do so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-1036760779683494624?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/1036760779683494624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=1036760779683494624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1036760779683494624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1036760779683494624'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/06/little-light-fiction.html' title='A little light fiction.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-7187339209539593107</id><published>2007-05-19T23:05:00.000-04:00</published><updated>2007-05-19T23:16:28.098-04:00</updated><title type='text'>Book Of Changes.</title><content type='html'>Well, I mentioned a few posts ago that massive change was coming.  The good kind.  It's timing was rather ill-arrived at but it is a very positive change all the same.&lt;br /&gt;&lt;br /&gt;I turned in my resignation letter this past Wednesday.  &lt;br /&gt;&lt;br /&gt;I have a new job coming with a local consulting firm, doing DBA work.  I'm no longer the Windows Admin / Network Engineer / Applications Admin / Desktop Support / Web Services Admin / Web Developer / QA Tester / DBA.  Now it's just the DBA part, full time, and I couldn't be happier.&lt;br /&gt;&lt;br /&gt;I say the timing is not good since there's some family drama going on right now.  I don't expect things to get too out of hand, though.  Things are improving slowly, but surely, and I expect a good turnout, regardless of the current situation.  Nothing for most people to worry about.  I hope.  :-)&lt;br /&gt;&lt;br /&gt;This blog has been a slight source of frustration for me.  I'd update more regularly, but I feel like unless I have something major to say, it's just not worth it.  Even with adequate time to update, there's still nothing in the brain to put on paper.  I've invested far too much in this to just quit, though, so I'll see what happens as the changes continue.&lt;br /&gt;&lt;br /&gt;Ah life.  You never quite know what it's going to throw at you.  Some good, some bad.  Heads up!&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-7187339209539593107?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/7187339209539593107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=7187339209539593107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7187339209539593107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7187339209539593107'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/05/book-of-changes.html' title='Book Of Changes.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-1484963217294861121</id><published>2007-05-14T22:12:00.000-04:00</published><updated>2007-05-14T22:35:44.259-04:00</updated><title type='text'>Why I am not a Plumber.</title><content type='html'>And now, an easy to follow, step-by-step guide to discovering why I am not a plumber.  Only 40 steps, and two days.  Fun for the whole family!  &lt;br /&gt;&lt;br /&gt;Day One...&lt;br /&gt;&lt;br /&gt;1. Decide to replace the outside faucet.  It had a leak.&lt;br /&gt;&lt;br /&gt;2. Examine new, purchased faucet and existing faucet.  Discover that they are two completely different kinds and one will not replace the other.  &lt;br /&gt;&lt;br /&gt;3. Disassemble old faucet to diagnose leak.  &lt;br /&gt;&lt;br /&gt;4. Observe as old faucet disintegrates on re-assembly.&lt;br /&gt;&lt;br /&gt;5. Truck over to Home Depot to speak with 'Andrew', a 50 year veteran plumber who informs me that the Mansfield silcock assembly I am holding in my hand, is shot and will require complete replacement, along with a few other things.&lt;br /&gt;&lt;br /&gt;6. Purchase, on Andrew's advice, a pipe cutter and mid-line cutoff valve (so I can restore water to the remainder of the house) and a shiny new 10" Mansfield silcock.&lt;br /&gt;&lt;br /&gt;7. Go home and install the new cutoff valve.  Works like a charm.&lt;br /&gt;&lt;br /&gt;8. Discover that in restoring full pressure to the pipe, a pinhole leak has surfaced a mere 1.5 feet from where I just installed the cutoff.  &lt;br /&gt;&lt;br /&gt;9. Back to Home Depot.  &lt;br /&gt;&lt;br /&gt;10. Purchase a "Shark Bite" 2" coupler for the line, to replace the stretch of pipe that contains the leak.&lt;br /&gt;&lt;br /&gt;11. Go home, putting the pipe cutter back to work, and install the coupler, fixing the pinhole leak.&lt;br /&gt;&lt;br /&gt;Day Two...&lt;br /&gt;&lt;br /&gt;12. Now free to work on the actual problem (replacing the silcock) notice that the existing silcock is SOLDERED in place.&lt;br /&gt;&lt;br /&gt;13. Back to Home Depot.&lt;br /&gt;&lt;br /&gt;14. Purchase two more Shark Bites, one threaded and one standard coupler.  8' of CPVC pipe, CPVC pipe cleaner (I already own CPVC cement) and some elbows.&lt;br /&gt;&lt;br /&gt;15. Return home and COMPLETELY remove the silcock by cutting the damn thing in half and also lopping off the feed tube in the process.  &lt;br /&gt;&lt;br /&gt;16. Create a new feed tube assembly with the new pipe and elbows.&lt;br /&gt;&lt;br /&gt;17. Install and bolt in the new silcock.&lt;br /&gt;&lt;br /&gt;18. Install the couplers.&lt;br /&gt;&lt;br /&gt;19. Dry-fit the new CPVC assembly I just created.  (Inexperienced, I am.  Stupid, I am not.)&lt;br /&gt;&lt;br /&gt;20. Clean and cement together the major parts of the CPVC assembly, outside.  The cleaner and cement are rather foul smelling.&lt;br /&gt;&lt;br /&gt;21. Install the major parts of the new assembly in the couplers.&lt;br /&gt;&lt;br /&gt;22. Cement in the remaining parts in the basement.  (Again, foul odors.)&lt;br /&gt;&lt;br /&gt;23. Wait two hours for the thing to cure.&lt;br /&gt;&lt;br /&gt;24. Pressure test the whole thing.  The CPVC holds!  Success!  The threaded silcock coupler does not...&lt;br /&gt;&lt;br /&gt;25. Discover that the pressure bleed valve on the new cutoff works great.&lt;br /&gt;&lt;br /&gt;26. Wipe water from face.&lt;br /&gt;&lt;br /&gt;27. Tighten silcock coupler.  (You can do this on the fly due to the nature of the "Shark Bite" couplers.  They rock.)&lt;br /&gt;&lt;br /&gt;28. Repeat pressure test.&lt;br /&gt;&lt;br /&gt;29. Wipe water from face, again.&lt;br /&gt;&lt;br /&gt;30. After trying desperately to avoid stripping the nut on the couple with channel locks, discover that the crescent wrench is about 1.5mm too small for the job.&lt;br /&gt;&lt;br /&gt;31. This time, go to Lowes.  Purchase a new set of crescent wrenches.&lt;br /&gt;&lt;br /&gt;32. Return home, and on a hunch, re-wrap the threads before giving the coupling the tightening it deserves.&lt;br /&gt;&lt;br /&gt;33. Pressure test.  This time, everything holds.&lt;br /&gt;&lt;br /&gt;34. Attach the hose reel to the silcock outside and test.  Now the hose reel leaks.&lt;br /&gt;&lt;br /&gt;35. Remove all hose from the reel and tighten the connection to the reel.&lt;br /&gt;&lt;br /&gt;36. Test the reel again.  Success.&lt;br /&gt;&lt;br /&gt;37. Wind the thing up, and go back inside.&lt;br /&gt;&lt;br /&gt;38. Clean up, put away tools.&lt;br /&gt;&lt;br /&gt;39. Promise self, that never, under any circumstances, no matter what happens or who asks, that you will never volunteer your services as a plumber, ever again.&lt;br /&gt;&lt;br /&gt;40. Good Night.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-1484963217294861121?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/1484963217294861121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=1484963217294861121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1484963217294861121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1484963217294861121'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/05/why-i-am-not-plumber.html' title='Why I am not a Plumber.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5438315285019292610</id><published>2007-04-20T12:26:00.000-04:00</published><updated>2007-04-20T12:29:36.195-04:00</updated><title type='text'>Post Removed.</title><content type='html'>I just removed my last post from here, for several reasons, but mostly due to the fact that it made a certain person uncomfortable.  So be it.  This person is important to me, and I'm more than willing to suspend my little ranting in their favor.&lt;br /&gt;&lt;br /&gt;However, for those of you who read the post, I want to make two things perfectly clear:&lt;br /&gt;&lt;br /&gt;1. I have removed the post.  That does not mean I have changed my mind.  I still stand by every word.&lt;br /&gt;&lt;br /&gt;2. All attempts to change my mind will be considered seriously, but on the whole, completely ineffective.  I've spent the last 34 years of my life getting here.  Now that I'm here, I'm happier than ever, and I plan on staying.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5438315285019292610?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5438315285019292610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5438315285019292610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5438315285019292610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5438315285019292610'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/04/post-removed.html' title='Post Removed.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-1653481507957344448</id><published>2007-03-27T07:43:00.000-04:00</published><updated>2007-03-27T07:45:16.889-04:00</updated><title type='text'>Something different.</title><content type='html'>I decided to go ahead and change the template again.  I like this one, and it was time for a change.  Much change is afoot in my life anyway, might as well go ahead and keep the ball rolling.&lt;br /&gt;&lt;br /&gt;Note also that I added Richard Dawkins to the required reading section.  An indicator of continuing change for me?  Perhaps.  ;-)&lt;br /&gt;&lt;br /&gt;Enjoy your day.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-1653481507957344448?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/1653481507957344448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=1653481507957344448' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1653481507957344448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1653481507957344448'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/03/something-different.html' title='Something different.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3134274853643627276</id><published>2007-03-24T21:46:00.000-04:00</published><updated>2007-03-24T21:48:13.968-04:00</updated><title type='text'>Apologies, Sort Of.</title><content type='html'>I must apologize a little bit for not posting recently, but I have a very good reason.   There is potentially a massive change coming for me, and I don't want to take any chances on screwing it up.  It's a &lt;span style="font-weight:bold;"&gt;very&lt;/span&gt; positive change, so no panicking.  Now's just not the time for posting much.  I'll get back to you, hopefully with good news, in a couple of weeks.&lt;br /&gt;&lt;br /&gt;Thanks for your patience.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3134274853643627276?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3134274853643627276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3134274853643627276' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3134274853643627276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3134274853643627276'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/03/apologies-sort-of.html' title='Apologies, Sort Of.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-9163941980303161608</id><published>2007-03-02T08:27:00.000-05:00</published><updated>2007-03-02T08:47:35.145-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quickies'/><title type='text'>Two quickies.</title><content type='html'>1. Read from a help desk ticket today: "Error initializing log fowl."  I suggest upgrading from chicken to turkey, and reboot.  (For non-techies, I think they meant 'log FILE'.)&lt;br /&gt;&lt;br /&gt;2. If these guys ever come to Ohio, I will be there.  Check out &lt;a href="http://youtube.com/results?search_query=Igudesman+Joo&amp;search=Search"&gt;Igudesman and Joo&lt;/a&gt; on YouTube.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-9163941980303161608?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/9163941980303161608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=9163941980303161608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/9163941980303161608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/9163941980303161608'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/03/two-quickies.html' title='Two quickies.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5682314881337723583</id><published>2007-02-26T12:42:00.000-05:00</published><updated>2007-02-26T13:09:38.613-05:00</updated><title type='text'>Rives</title><content type='html'>I emailed the poet/spoken-word-artist/pretty cool guy Rives the other day, with a compliment and question on the poem he gave at TED in 2006.  It was all about how he would run the internet.  I was complimenting him on an excellent work.  The part in the middle about emailing the dead started funny, but became really touching.  Both K and I have lost parents, and we both really connected with it, since email is pretty much one of our main modes of communication.  Turns out that bit was ad-libbed that night, as Rives though the audience was a little to 'laughy' at that point.  He had not decided if he was going to keep that line in the poem when he wrote me back.  I hope he does.&lt;br /&gt;&lt;br /&gt;I also asked if I could transcribe that, or if there was a transcription available.  He stated that he composes in his head, and had not bothered to write that one down yet.  So here's my gift to him.  :-)  I've tried to do it in the same style he uses on his website, &lt;a href="http://www.shopliftwindchimes.com/"&gt;shopliftwindchimes.com&lt;/a&gt;.  Links added where appropriate. Here goes...&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;&lt;b&gt;If I Controlled the Internet&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If I controlled the internet, &lt;br /&gt;You could auction your broken heart on &lt;a href="http://www.ebay.com/"&gt;eBay&lt;/a&gt;. &lt;br /&gt;Take the money, go to &lt;a href="http://amazon.com/"&gt;Amazon&lt;/a&gt;, &lt;br /&gt;Buy a phone book for a country you've&lt;br /&gt;Never been to, call  folks at random &lt;br /&gt;'til you find someone who flirts really well &lt;br /&gt;in a foreign language.&lt;br /&gt;&lt;br /&gt;If I were in charge of the internet, &lt;br /&gt;You could &lt;a href="http://mapquest.com/"&gt;MapQuest &lt;/a&gt;your lover's mood swings.&lt;br /&gt;Hang left at 'Cranky'. &lt;br /&gt;Right at 'Preoccupied', &lt;br /&gt;U-turn on 'Silent Treatment', &lt;br /&gt;all the way back to tongue kissing and good loving.  &lt;br /&gt;You could navigate, &lt;br /&gt;and understand every emotional intersection.&lt;br /&gt;Some days, I'm as shallow as a baking pan, &lt;br /&gt;but I still stretch miles in all directions.&lt;br /&gt;&lt;br /&gt;If I owned the internet, &lt;br /&gt;&lt;a href="http://www.napster.com/"&gt;Napster&lt;/a&gt;, &lt;a href="http://www.monster.com/"&gt;Monster&lt;/a&gt;, and &lt;a href="http://www.friendster.com/"&gt;Friendster.com&lt;/a&gt; &lt;br /&gt;would be one big website.  &lt;br /&gt;That way, you could listen to cool music &lt;br /&gt;while you pretend to look for a job, &lt;br /&gt;and you're really just chatting with your pals.&lt;br /&gt;&lt;br /&gt;Heck, if I ran the web, &lt;br /&gt;You could email dead people.&lt;br /&gt;They would not email you back.&lt;br /&gt;But, you'd get an automated reply.&lt;br /&gt;Their name in your inbox.&lt;br /&gt;It's all you wanted anyway.&lt;br /&gt;And a message saying, &lt;br /&gt;"Hey, it's me. I miss you.&lt;br /&gt;Listen.  You'll see, being dead is dandy.&lt;br /&gt;Now, you go back to raising kids, &lt;br /&gt;And waging peace, &lt;br /&gt;And craving candy."&lt;br /&gt;&lt;br /&gt;If I designed the internet, &lt;br /&gt;Childhood.com would be a loop &lt;br /&gt;of a boy in an orchard, &lt;br /&gt;with a ski pole for a sword, &lt;br /&gt;trash can lid for a shield, shouting, &lt;br /&gt;"I am The Emperor of Oranges!"&lt;br /&gt;"I am The Emperor of Oranges!"&lt;br /&gt;"I am The Emperor of Oranges!"&lt;br /&gt;Now, follow me, OK?&lt;br /&gt;&lt;br /&gt;Grandma.com would be a recipe for biscuits, &lt;br /&gt;And spit bath instructions.  (1, 2, 3…)&lt;br /&gt;That links with Hot-Diggety-Dog.com, &lt;br /&gt;That is my grandfather they take you to &lt;br /&gt;Gruff-Ex-Cop-On-His-Fourth-Marriage.Dad, &lt;br /&gt;he forms an attachment to &lt;br /&gt;Kind-Of-Ditzy-But-Still-Sends-Ginger-Snaps-For-Christmas.Mom &lt;br /&gt;who downloads The boy in the orchard. &lt;br /&gt;The Emperor of Oranges, &lt;br /&gt;who grows up to be me.  &lt;br /&gt;The guy who usually goes to far.&lt;br /&gt;&lt;br /&gt;So if I were the Emperor of the Internet, &lt;br /&gt;I guess I'd still be mortal, huh?&lt;br /&gt;But at that point, &lt;br /&gt;I would probably already have &lt;br /&gt;the lowest possible mortgage, &lt;br /&gt;and the most enlarged possible penis, &lt;br /&gt;so I would outlaw spam on my first day in office.&lt;br /&gt;I wouldn't need it.&lt;br /&gt;I'd be like some kind of internet genius.&lt;br /&gt;And me, I'd like the upgrade to Deity.&lt;br /&gt;And maybe just like that, *pop* I'd go wireless.&lt;br /&gt;&lt;br /&gt;Maybe &lt;a href="http://google.com/"&gt;Google&lt;/a&gt; would hire this, &lt;br /&gt;I could zip through your servers and firewalls &lt;br /&gt;like a virus &lt;br /&gt;until the world wide web is as wise and wild and as organized &lt;br /&gt;as I think a modern day miracle/oracle can get.&lt;br /&gt;&lt;br /&gt;But ooh-whee, you want to bet &lt;br /&gt;just how whack and un-pc &lt;br /&gt;your mac or PC's gonna be &lt;br /&gt;when I'm rockin Hot-Shit-Hot-Shot-God.net?  &lt;br /&gt;I guess it's just like life.  &lt;br /&gt;It is not a question of if you can, &lt;br /&gt;it's, "Do you?"&lt;br /&gt;&lt;br /&gt;We can interfere with the interface.  &lt;br /&gt;We can make "You've Got Halleluia!" &lt;br /&gt;the national anthem of cyberspace &lt;br /&gt;every lucky  time we log on.  &lt;br /&gt;You don't say a prayer, &lt;br /&gt;you don't write a psalm, &lt;br /&gt;you don't chant an 'Om'.  &lt;br /&gt;You send one blessed email to, &lt;br /&gt;Whoever you're thinking of&lt;br /&gt;@&lt;br /&gt;Daddle-ah-dat-daht-daht-daht-&lt;br /&gt;da-daddle-la-da-daddle-la-da-da-daht-daaa&lt;br /&gt;.com.&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;That last bit is the tune of "In the Mood".  &lt;br /&gt;&lt;br /&gt;Thanks, &lt;a href="http://www.shopliftwindchimes.com/"&gt;Rives&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5682314881337723583?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5682314881337723583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5682314881337723583' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5682314881337723583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5682314881337723583'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/rives.html' title='Rives'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5184697888476912938</id><published>2007-02-23T09:41:00.000-05:00</published><updated>2007-02-23T14:10:51.357-05:00</updated><title type='text'>TED is cool.</title><content type='html'>TED is an abbreviation for Technology, Entertainment, Design.  It showcases elements of each with expert speakers in their field.  I recommend checking out Hans Rosling's talk on Gapminder, even if you're not interested in the field statistics.  He's just fun to listen to.&lt;br /&gt;&lt;br /&gt;Last night, I played Rives' talk for Karen.  It's very short, but very cool.  It's a poem he wrote about the Internet.  It's around 4 minutes long, and worth every second.  She suggested I link it, and so I am.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ted.com/tedtalks/tedtalksplayer.cfm?key=rives"&gt;Check it out.&lt;/a&gt;  Then, go subscribe to the podcast.  It's worth the disk space.&lt;br /&gt;&lt;br /&gt;I am the Emperor of Oranges.  :-)&lt;br /&gt;&lt;br /&gt;-D.&lt;br /&gt;&lt;br /&gt;Update: 14:07 - I emailed Rives to ask him if It's cool if I transcribe it and put it on here.  If so, I will.  If not, he'll hopefully point us to a link.  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5184697888476912938?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5184697888476912938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5184697888476912938' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5184697888476912938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5184697888476912938'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/ted-is-cool.html' title='TED is cool.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-1760583809916742251</id><published>2007-02-21T06:47:00.000-05:00</published><updated>2007-02-21T07:13:01.152-05:00</updated><title type='text'>Podcast Mania</title><content type='html'>I've been getting into podcasts quite a bit lately.  Yeah, I know, it's been around for a while, but hey: I was late to the blogging game, too.  &lt;br /&gt;&lt;br /&gt;Podcasts I subscribe to:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ted.com/tedtalks/subscribe.cfm"&gt;TED Talks&lt;/a&gt;: All kinds of topics covered by experts in their fields.  Awesome stuff.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.skeptic.com/"&gt;Skepticality&lt;/a&gt;: The official podcast of Skeptic Magazine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://penn.freefm.com/pages/podcast/431.rss"&gt;Penn (Jillette) Radio Podcast&lt;/a&gt;: Penn, from Penn &amp; Teller, speaks his mind.  Rated PG-13.  :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://girlgeniusonline.com/radio/radio.php"&gt;Girl Genius Radio&lt;/a&gt;: Old-school style radio theater, based on the online comic, Girl Genius.  If you don't read the comic, you might not get many of the in-jokes.  (So read the comic, first.  It's good.  Really.)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.npr.org/rss/podcast/podcast_directory.php"&gt;NPR Podcasts&lt;/a&gt;: I subscribe to both the Car Talk Call of the Week, and to the Wait Wait, Don't Tell Me podcasts.  Fun listening.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.frenchmaidtv.com/"&gt;French Maid TV&lt;/a&gt;: How To's, by French Maids.    What?  What?!?  I like it...&lt;br /&gt;&lt;br /&gt;Anyway.  I've been continuing to toy with the idea of a podcast.  I currently lack the software to put it together the way I want to, but I might still play with the idea.  Who knows.  I think if I want to do it seriously, I'll record about 5 or 6 of them ahead of time and see what happens.&lt;br /&gt;&lt;br /&gt;I've been feeling a bit better about things since the rant of a couple days ago.  I've still got a few issues to resolve.  There's a lot still bugging me, but I feel better equipped to deal with it.  &lt;br /&gt;&lt;br /&gt;Stay frosty.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-1760583809916742251?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/1760583809916742251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=1760583809916742251' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1760583809916742251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1760583809916742251'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/podcast-mania.html' title='Podcast Mania'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6526907646314465528</id><published>2007-02-20T11:49:00.001-05:00</published><updated>2007-02-20T11:59:51.313-05:00</updated><title type='text'>Blog venue...</title><content type='html'>Things to do when you&amp;#39;re waiting for a login prompt on a client machine...  1. Send a blog post from your text pager. Or try to, at least.&lt;br /&gt;&lt;br /&gt;Update: 11:57 AM - Added a subject in blogger.  The pager doesn't allow for a subject line.  Weird.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6526907646314465528?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6526907646314465528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6526907646314465528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6526907646314465528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6526907646314465528'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/things-to-do-when-you-waiting-for-login.html' title='Blog venue...'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-7054234160651600568</id><published>2007-02-19T07:03:00.000-05:00</published><updated>2007-02-19T12:32:05.236-05:00</updated><title type='text'>Out of it.</title><content type='html'>I am so upset and angry this morning I do not know where to begin.  I am questioning damn near everything about me and what I'm doing with myself and it freaking hurts.  I'm hard pressed to think of a single aspect of my current life that isn't pissing me off. If I had been neglecting things, I'd gladly place the blame on myself, but I don't.  Not this time.  I feel like I have been doing my damned level best and have never felt so freaking ineffective.  I'm not sad about it, just angry.  I'm feeling the need to blow it all up and start over.  Fuck this.&lt;br /&gt;&lt;br /&gt;I have no intention to turn this into a rant-blog, but suffice it to say I am in heavy vent-mode this morning.  This should hopefully be the first and last post of this type.&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;-d.&lt;br /&gt;&lt;br /&gt;Update: 12:28 PM - I've tasted a little success today, so I feel a little better.  Still in a lot of physical pain, though.  I think I'm going to pop a flexoril when I get home, and plan on an early bedtime.  This day needs to end.  Now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-7054234160651600568?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7054234160651600568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7054234160651600568'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/out-of-it.html' title='Out of it.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8443779110808179204</id><published>2007-02-17T20:51:00.000-05:00</published><updated>2007-02-17T20:52:44.450-05:00</updated><title type='text'>One step at a time.</title><content type='html'>&lt;a href="http://www.redkid.net/generator/star/sign.php"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7yBobyOnolc/RdexRScyb4I/AAAAAAAAAAk/DqHwsLj4zeE/s1600-h/yoursign.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_7yBobyOnolc/RdexRScyb4I/AAAAAAAAAAk/DqHwsLj4zeE/s320/yoursign.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5032686019178295170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So where's my Oscar?&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8443779110808179204?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8443779110808179204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8443779110808179204' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8443779110808179204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8443779110808179204'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/one-step-at-time.html' title='One step at a time.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7yBobyOnolc/RdexRScyb4I/AAAAAAAAAAk/DqHwsLj4zeE/s72-c/yoursign.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-2313970274343663765</id><published>2007-02-15T16:15:00.000-05:00</published><updated>2007-02-15T16:49:31.153-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parenting'/><title type='text'>Defying Description</title><content type='html'>When you become a parent, there are things you see things yourself that you had no idea were even a part of you.  Pride in other's accomplishments, being excited about ordinarily mundane things, ability to adapt in strange situations, enjoying poop...&lt;br /&gt;&lt;br /&gt;Perhaps I should back up a bit.&lt;br /&gt;&lt;br /&gt;I got home a little bit ago and learned that H learned a new trick today.  Karen described a diaper changing experience unlike anything I had ever heard of before.  I was going to tell her about H's craptacular diaper this morning, which was very different from recent ones, possibly indicating that he's getting over an illness, or that recent adjustments to her diet were taking effect.  Instead I got a very thorough description of her own diaper analysis.  &lt;br /&gt;&lt;br /&gt;After discussing color, consistency, and volume, she elaborated on what she could only describe as a 'poop bubble'.  Apparently the little man passed gas (tech term: FLATUS) of a quite fecund variety.  This resulted in a egg-sized bubble made of yellow, pasty poop.  It wasn't so much the description, word choices or the event itself that prompted this blog post.  Rather, it was the excitement in K's voice as she went on...&lt;br /&gt;&lt;br /&gt;and on...&lt;br /&gt;&lt;br /&gt;and on...&lt;br /&gt;&lt;br /&gt;about the 'poop bubble'.  So after much insistence, I took H-man upstairs to change his diaper myself, so that I might bear witness to the great and wonderful phenomena that is: the poop bubble.  For me his diaper was practically empty.&lt;br /&gt;&lt;br /&gt;Damn.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-2313970274343663765?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/2313970274343663765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=2313970274343663765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2313970274343663765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2313970274343663765'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/defying-description.html' title='Defying Description'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-4331659000026215382</id><published>2007-02-15T07:06:00.000-05:00</published><updated>2007-02-15T08:00:48.239-05:00</updated><title type='text'>Almost... but not quite.</title><content type='html'>Well yesterday certainly turned into the opposite of a blow-off day.  I was on call after call, trying to troubleshoot an issue regarding why a certain system wasn't working.  After checking every technical aspect we could, we determined that the reason the system wasn't processing anything was, due to the weather, nobody came in to actually use it.  I'm sure Microsoft has a patch for that.... (absent_employee.exe?)&lt;br /&gt;&lt;br /&gt;In the middle of all this, K calls and asks how the roads were.  I think my first reaction was simply to say, "Don't go anywhere."  After a few minutes of conversation, that weakened to "You probably shouldn't go anywhere.", and finally devolved to "You can try, if you really want to."  End result, car stuck in the plow-drift at the end of the driveway.  So, I came home to rescue the car and work the rest of the day from home.  &lt;br /&gt;&lt;br /&gt;The part I actually enjoyed was using the Ice Breaker.  I can't find anyplace that actually sells them online, at least the version I have.  I did find this one:  &lt;a href="http://seasonalsolutions.net/icebreaker.html"&gt;http://seasonalsolutions.net/icebreaker.html&lt;/a&gt;, which is kind of like a floor remover.  Mine is much larger, heavier, and doesn't have the T-handle on top.  It also chews through ice like E chews through, well, everything.  It made short work of the ice and snow, breaking it down to the point where it could be shoveled.  &lt;br /&gt;&lt;br /&gt;Which, of course, brings me to the part I didn't enjoy.  Shoveling is normally an exercise for me, since I do it in a specific way that doesn't hurt my back, and is much faster than normal methods.  I take a very wide stance, and use a rocking motion with my body to scoop the snow off the side of the driveway with little effort and high efficiency.  It takes under 10 minutes to clear the driveway when done this way.  This exercise does not work if there is a statistically significant amount of ice involved.  In this case, the driveway was layered with two inches of snow, a 1.5 inch layer of ice, and then another inch or so of drifted snow.  It was no match for the ice breaker, but was incredibly heavy to shovel.  After having broken it up, if I could have plowed it off the driveway, that would have been cool.  Shoveling was a nightmare that I'm still feeling in my back this morning.  I have two ibuprofen left.  For now.&lt;br /&gt;&lt;br /&gt;I threw some sand on the driveway, which was a lot of fun considering the wind, and pulled the car back into the garage.  (Did I mention the wind-chill was -5&amp;deg;?)  I cleared the rest of the driveway as best I could, and sanded the whole thing.  After I eliminated the plow-drift at the end of the drive, which took about as long as clearing the rest of the driveway, I noticed that there was still about three inches of material &lt;em&gt;on the road.&lt;/em&gt;  Once again, 'snow warriors' my ass.  Columbus' snow removal system is sub-standard at best.&lt;br /&gt;&lt;br /&gt;I holed up in the basement with my laptop for heat, and a blanket.  I had a cell phone in one hand and the house phone in the other, and managed both handily.  A few hours and some VPN-TCP/IP madness later, I was done, and free for the day.  I spent the rest of the day practicing a bit (bass) and playing off and on with E, H, and K.  We kept warm and kept our cool.  &lt;br /&gt;&lt;br /&gt;Good day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-4331659000026215382?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/4331659000026215382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=4331659000026215382' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4331659000026215382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4331659000026215382'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/almost-but-not-quite.html' title='Almost... but not quite.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3222258504949665827</id><published>2007-02-14T09:16:00.000-05:00</published><updated>2007-02-14T09:50:27.164-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>V-Day, Snow Day, Blow-Off Day.</title><content type='html'>First, and most importantly, to my wife of almost 7 years, Thank You.  I love you very much, and am looking forward to this evening.  Happy Valentine's Day!&lt;br /&gt;&lt;br /&gt;Now...&lt;br /&gt;&lt;br /&gt;Today should have been a snow day, but the client, in their infinite wisdom (!?!) decided the office was open today.  We are currently at a Level 2 snow condition.  Many surrounding counties are at Level 3.  It took about an hour to knock all the ice off of my car this morning.  Insane.  By way of explanation: &lt;a href="http://www.nbc4i.com/midwest/cmh/weather_plus/snow_emergencies.html"&gt;NBC4i&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;However, this means there are far fewer people in the office than normal, and many are coming in late.  This leads to lowered expectations, mercifully, and we should be looking forward to a bit of a blow-off day, today.  I've packed my snacks, and am ready to weather the storm, so to speak, with warmed up chili, and a newly expanded iTunes collection at my disposal.  &lt;br /&gt;&lt;br /&gt;Vive Le Snow!&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3222258504949665827?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3222258504949665827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3222258504949665827' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3222258504949665827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3222258504949665827'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/v-day-snow-day-blow-off-day.html' title='V-Day, Snow Day, Blow-Off Day.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6832091996726284602</id><published>2007-02-12T06:40:00.000-05:00</published><updated>2007-02-08T12:39:10.598-05:00</updated><title type='text'>Recovery?</title><content type='html'>Feeling off this morning, but no more so than normal, I suppose.  I do seem to have the stuffy nose back, but that could just be my usual morning stuffiness.  It tends to wear off by about 10:00 or so.  A little sore from last night's workout (weights and elliptical) so between that and the stuffiness and the headache brought on by the stuffiness, I'm a little cranky at the moment.  Could always be worse, though.&lt;br /&gt;&lt;br /&gt;I have yet to bring my music back over to the newly re-imaged and streamlined laptop.  not looking forward to that.  I have been using iTunes as my music manager lately, and I'm wondering if I'm going to regret that.  I let iTunes rearrange my music library according to it's whims, and now I'm wondering if I can get it back to the way it was.  I used to have all my music in large folders, separated by genre, rather than by artist or album.  For me, it made sense.  Not many of my tracks had ID3 tags, so it was a convenient way to keep my music together.  If I wanted a certain style, just load the folder.  Search functions in most MP3 players would handle almost any other grouping I needed.  Now, I'm not sure if I can do that again without making sure all 10 GB of my music is appropriately tagged.  Ugh.  &lt;br /&gt;&lt;br /&gt;Speaking of the newly minted laptop, I have just about everything I need on there, now.  I declined to install a couple of the more obvious administrative utilities due to lack of use, so I have a much more streamlined install on here now.  Less apps, more data, more room to grow.  It's a good thing.&lt;br /&gt;&lt;br /&gt;We shall see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6832091996726284602?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6832091996726284602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6832091996726284602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6832091996726284602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6832091996726284602'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/recovery.html' title='Recovery?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8431695263654037829</id><published>2007-02-08T08:32:00.000-05:00</published><updated>2007-02-07T08:10:51.664-05:00</updated><title type='text'>Love and Hate</title><content type='html'>Love: Got my new pager today.  The old one died due most likely to being dropped one too many times.  In my defense, the holster it was designed with was prone to slipping, and it just wouldn't stay put.  For the last month or so of it's life, I took to carrying the darn thing in my pocket instead.&lt;br /&gt;&lt;br /&gt;The new pager, a &lt;a href="http://www.uni.com.tw/pager_m90.html"&gt;Unication M90&lt;/a&gt;, seems to sit much more securely in the holster, and even comes with a backup and restore utility that lets me import my addresses, rather than having to enter them one at a time with my thumbs.  Sadly, it lacks the one feature I actually enjoyed on the other pager.  Tetris.&lt;br /&gt;&lt;br /&gt;Hate: I was attempting to install Visual Studio 2003 on my laptop yesterday, and had to make some room to do so.  I was down to 700 MB on my C drive, and that was &lt;em&gt;after&lt;/em&gt; I moved the page file.  So I went on a mad uninstall spree, and cleared up about 3.0 GB.  In the process, I must have removed something vital, because my MS Office applications have now ceased to function, claiming that there is both insufficient memory, and no access to the office shared tools.  The only thing I can remember removing other than my installs of VB, SQL and C++ 2005 that might have affected it, was the MS Office Journal Viewer.  Who knew?&lt;br /&gt;&lt;br /&gt;So, today I am burning DVDs of disk images so I can re-image my machine.  Again.  For the second time this year.  And it's only February.  Good thing I take backups.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8431695263654037829?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8431695263654037829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8431695263654037829' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8431695263654037829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8431695263654037829'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/love-and-hate.html' title='Love and Hate'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3025317478840010753</id><published>2007-02-07T07:57:00.000-05:00</published><updated>2007-02-07T08:10:51.827-05:00</updated><title type='text'>Loose Ends</title><content type='html'>I've hit the "I have so much to do I don't know where to begin." wall sometime earlier this week.  I took a half day off yesterday to take care of some things at home, and I feel better about that.  Now I need to put in a couple long days at work and catch up there.  I'd really rather not work from home in the evenings.  That just doesn't feel right.  Maybe I'll work a long day on Friday.  We'll see.&lt;br /&gt;&lt;br /&gt;Half the problem seems to be organizing my work into pieces I can handle.  I think I may spend some time in MS Project today and create a work breakdown structure for getting through these projects in proper order.  &lt;br /&gt;&lt;br /&gt;Wish me luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3025317478840010753?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3025317478840010753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3025317478840010753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3025317478840010753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3025317478840010753'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/loose-ends.html' title='Loose Ends'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-398788238731246402</id><published>2007-02-06T12:20:00.000-05:00</published><updated>2007-02-06T12:24:24.678-05:00</updated><title type='text'>Quick Sudoku</title><content type='html'>Now &lt;em&gt;this&lt;/em&gt;, I could handle...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imgs.xkcd.com/comics/su_doku.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://imgs.xkcd.com/comics/su_doku.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://xkcd.com/"&gt;xkcd&lt;/a&gt; for the good laugh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-398788238731246402?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/398788238731246402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=398788238731246402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/398788238731246402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/398788238731246402'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/quick-sudoku.html' title='Quick Sudoku'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3077507225228877927</id><published>2007-02-06T06:28:00.000-05:00</published><updated>2007-02-06T07:09:05.614-05:00</updated><title type='text'>Moody.</title><content type='html'>Seriously.  Ever have one of those days (weeks... months... year-so-fars?) where no matter what you do, you can't seem to make anybody happy, including yourself?  It's like there's always someone pissed off at you, always something left undone, always something to fix, always something that is just way off.  I'm not talking normal, everyday issues.  I can handle those.  I'm talking way out of proportion, here.  Angry to the point of fury, undone to the point of breaking and broken to the point of 'replace, not repair'.  And I'm talking off to the point of, "It will never be right anyway, so just let it go."&lt;br /&gt;&lt;br /&gt;Bah.  That's what 'quiet time' is for.  Time alone.  Time with a cup of tea and a sudoku.  &lt;br /&gt;&lt;br /&gt;Screw this.  I'm going to do that right now.  (6:42 AM)&lt;br /&gt;&lt;br /&gt;Ah.  Much better.  Mood improved. (7:05 AM)&lt;br /&gt;&lt;br /&gt;Back to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3077507225228877927?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3077507225228877927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3077507225228877927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3077507225228877927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3077507225228877927'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/moody.html' title='Moody.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-737378609895858386</id><published>2007-02-01T06:45:00.000-05:00</published><updated>2007-02-01T06:57:56.974-05:00</updated><title type='text'>Reasons to Wear Your Glasses</title><content type='html'>&lt;strong&gt;Concentration is key.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I occasionally come into work with glasses off, and don't put them on until I sit down to do 'serious work', whatever that is.  This morning, I did the same.  Had breakfast, did a little job checking, poured myself a cup of barley water, and sat down to start the day.&lt;br /&gt;&lt;br /&gt;'Holy crap, that's sweet!' was the first thing that came out of my mouth after a taste of the barley water.  I checked th 1 liter bottle for the ingredients list.  Sure, fructose syrup was second on the list, but it was second to water, and it still seemed awfully sweet... so I put my glasses on and checked out the nutritional info.  Servings per container: 22... 22?  For a 1 Liter bottle?  I flipped it over and read the front again.  Robinsons Lemon Barley Water.  Concentrated Lemon Drink.&lt;br /&gt;&lt;br /&gt;CONCENTRATE.  I had been drinking straight concentrate.  No wonder it was $6.00 per bottle.  A couple of glasses of water later, and the taste is much easier to deal with.  It's nice, but I think I'll get the orange flavor next time, instead of the lemon.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Wallpaper.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I've been making calendar wallpaper for myself for the last few months, sort of as a hobby and sort of as an exercise with the Gimp image program.  Plus it's useful to have it here at work.  So here's this month's:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7yBobyOnolc/RcHVCnXdW2I/AAAAAAAAAAM/sEYPEoaUygw/s1600-h/Feb2k7.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_7yBobyOnolc/RcHVCnXdW2I/AAAAAAAAAAM/sEYPEoaUygw/s320/Feb2k7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5026532900026014562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And because I didn't post it, the last two-month calendar I did for the new year:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7yBobyOnolc/RcHVSXXdW3I/AAAAAAAAAAU/VSEoXhGPI-Y/s1600-h/DecJan2k6-7.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_7yBobyOnolc/RcHVSXXdW3I/AAAAAAAAAAU/VSEoXhGPI-Y/s320/DecJan2k6-7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5026533170608954226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Feel free to enjoy.  The art is from &lt;a href="http://www.deviantart.com/"&gt;Deviantart.com&lt;/a&gt;.  The calendar bit is created in MS Excel.  Paste it together in Gimp on a black (or whatever color) 1280x1024 background, and you've got a calendar.  Easy.  If someone asks, I'll post step by step instructions sometime.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;-d.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-737378609895858386?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/737378609895858386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=737378609895858386' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/737378609895858386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/737378609895858386'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/02/reasons-to-wear-your-glasses.html' title='Reasons to Wear Your Glasses'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7yBobyOnolc/RcHVCnXdW2I/AAAAAAAAAAM/sEYPEoaUygw/s72-c/Feb2k7.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-7856292758896694330</id><published>2007-01-31T07:01:00.000-05:00</published><updated>2007-01-31T09:21:31.652-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech'/><category scheme='http://www.blogger.com/atom/ns#' term='Learning'/><title type='text'>The Snakes that Guard the Door</title><content type='html'>Hanging from the front door knob this morning, were two rubber snakes that a friend of ours gave to Evelyn to play with, some time ago.  Evelyn enjoys playing with them quite a bit.  They do find themselves in precarious situations from time to time, such as hanging from a doorknob.  Being respectful of the snakes, I left them where they were.  I'm sure Evelyn will find another use for them before I get home.  &lt;br /&gt;&lt;br /&gt;Progress on the 'learning Japanese' front.  Having put down the Hiragana flash cards for a few days, I was pleased to see I missed only two out of the set of 25 I have so far.  Time to add more to the mix, and keep going.  Once I get Hiragana learned, it's on to Katakana and using the audio course I have in hand.  I may look for others down the road, but I'm going to make use of what I have, first, even if it isn't the best quality.  &lt;br /&gt;&lt;br /&gt;Didn't cough nearly as much last night as I did the night before, so I was able to get some sleep.  Good thing, because I'm going to need it today.  Work has been piling up around here, and it's difficult to find time to do things lately.  I'm working out some new organizational methods now that we've acquired Office 2007.  New ways to track and keep tabs on things.  Now all I have to do is follow the plan.  Often, that's the hardest part.  :-)&lt;br /&gt;&lt;br /&gt;Speaking of new software, I've been running Vista at home for a week or so now.  I've run into a few issues, and am wondering if I should go back to Windows XP until I can get some more hardware upgrades.  What I've seen so far is:&lt;br /&gt;&lt;br /&gt;1) My sound card, a SoundBlaster Live-24, does not support the microphone under Vista.  This prevents me from using the voice capabilities of Google Chat, my Japanese language learning software, or voice recognition, which is supposed to be a great new feature of Vista.  &lt;br /&gt;&lt;br /&gt;2) The OS as a rule, is very sluggish on my system.  Granted, I am using the minimum required RAM to run it, but I do have good processor speed and peripheral hardware.  Vista also does not care for my brand-spanking-new video card.  It looked wonderful under XP, but Vista claims it isn't juicy enough for some applications or features.&lt;br /&gt;&lt;br /&gt;3) While it ran fine on the old system, and even on the old video card, Neverwinter Nights runs horribly slow and choppy on Vista.  I even shut down a lot of major processes in order to give the game more RAM.  You'd think with more ram and a newer video card, it would look OK.  It looks like stop motion animation.  Scary.  Normally, for one game, I wouldn't care.  This, however is one of my three major games that I play on a regular basis, with Half-Life 2 and Sudoku taking the other two slots.  Since most of what I do on this box is play games, you can see where this is a significant setback.&lt;br /&gt;&lt;br /&gt;4) Nero, which is the burning software that came with my DVD+RW drive, does not play well under Vista.  I can burn from other sources in Vista, but I did spend a good deal of time learning how to use Nero properly, to make DVDs and a few other projects.  While it is only an inconvenience to have to learn new burning software, I would have to do it through Media Center.  The standard burning tools in Vista refuse to work with my hardware.  This means I can back up pictures, music, and videos.  What about my other files?  I'd have to move them over the network to another machine, and back up from there.  Seems like more trouble than it's worth.&lt;br /&gt;&lt;br /&gt;Now in order run Vista the way it should be, I would have to both upgrade my RAM and my video card.  I just bought a new video card, so I'm not spending another $100 - $200 doing that.  The proper RAM upgrade for my machine would cost around $200.  I'm not doing that, either.  While I do appreciate the free copy of Vista Ultimate, I don't know that I'm ready to run with it at this time.  Maybe with the next computer.  &lt;br /&gt;&lt;br /&gt;I have also toyed with the idea of downgrading to Windows 2000 Pro, and seeing how the applications I have run on that.  If Windows 2000 would support them, that is.  I still say the best gaming system ever (to date) was my Athlon 850, running Windows 98SE.  That was the box that rocked.  Ah, those were the days.  Quake III, Diablo II,  my ATI Rage Fury 128...  *sniff*  An age of innocence, purity, and frag-fests.  Maybe I will try 2000, just to see what happens.  I can always just reset the box back to the factory settings, if need be.&lt;br /&gt;&lt;br /&gt;Looks like another re-image is in my future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-7856292758896694330?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/7856292758896694330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=7856292758896694330' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7856292758896694330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7856292758896694330'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/snakes-that-guard-door.html' title='The Snakes that Guard the Door'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3915547875801972834</id><published>2007-01-30T07:34:00.000-05:00</published><updated>2007-01-30T08:15:10.813-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health'/><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><category scheme='http://www.blogger.com/atom/ns#' term='Science'/><category scheme='http://www.blogger.com/atom/ns#' term='Quickies'/><category scheme='http://www.blogger.com/atom/ns#' term='Skepticism'/><title type='text'>Quickies: 2007.01.30</title><content type='html'>&lt;strong&gt;Two from the BA:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;And by BA, I mean Badass, and &lt;a href="http://www.badastronomy.com/"&gt;Bad Astronomer&lt;/a&gt;, interchangeably.&lt;br /&gt;&lt;br /&gt;1) &lt;a href="http://www.ipetitions.com/petition/cmonsylvia/index.html"&gt;Sign an internet petition&lt;/a&gt; to get Sylvia Browne to take the JREF Million Dollar Challenge.  Yes, I know internet petitions are practically worthless as legal documents, but it's the spirit of the thing that matters.  I'm #192 on the petition.  :-)&lt;br /&gt;&lt;br /&gt;If you don't know who Sylvia is, she was the TV psychic that told Shawn Hornbeck's parents that he was DEAD three years ago.  Real nice publicity stunt, lady.  For more on that, check out &lt;a href="http://youtube.com/watch?v=dkbkkkT6ejA"&gt;this YouTube clip from Anderson Cooper 360&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2) If you have an astronomy related question, submit it to thebadastronomer at gmail, and he'll answer it in his &lt;a href="http://www.badastronomy.com/bablog/2007/01/28/q-ba/"&gt;weekly 'Q &amp; BA' video blog&lt;/a&gt;.  I sent in mine.  We'll see if it gets answered.  (I asked about measuring distances in the sky using your hand, at arms length.  A technique I've used before, with mixed success.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HealthWatch:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;My condition improves, despite a cough that basically kept me up all night.  If not for that, I would have slept and been pretty well recovered today.  I'm self-medicating, drinking as much tea as I can, and trying to keep my activity level down.  I've been giving myself a pass on missing the workouts in the morning due to the illness.  Karen has relapsed, Evelyn is getting through the tail end, and Henry is improving daily, though he has been in "must be held" mode for the last few days.  He slept in my arms for a while yesterday, through a rousing Sudoku session, and woke up immediately when I attempted to put him down.  Daddy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Games:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I don't remember mentioning it, but if I did, I apologize for bringing it up again.  I have been addicted to sudoku for some time now.  I would encourage anyone who likes logic puzzles to check it out.  I purchased the &lt;a href="http://zenofsudoku.com/"&gt;Zen of Sudoku&lt;/a&gt; game off of &lt;a href="http://steampowered.com/v/index.php"&gt;Steam&lt;/a&gt;, and have been absolutely pleased as punch with it.  Note, you can get it cheaper off of Steam than by purchasing it directly.  In the game, you can get trophies for achieving certain goals.  I now have both my expert and master level trophies for solving those puzzles without any help at all.  I did attempt to cheat a little bit on the Master level one by printing out the puzzle and using pencil marks, but that ended up being futile anyway.  I just tried a few different solutions until I figured it out on my own.  Fun stuff.&lt;br /&gt;&lt;br /&gt;Half-Life 2 was fun, and provided several hours of enjoyable carnage.  I've replayed it a few times, in various parts, and it remains fun.  After beating the game legitimately, it's fun to go blasting back through with heavy cheating, just to see what you can get away with.  (i.e., facing a small squadron of Alien Combine soldiers and a tank with the gravity gun and a couple rocks.)  Fun stuff.&lt;br /&gt;&lt;br /&gt;And that's all for now.  Later, folks.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3915547875801972834?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3915547875801972834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3915547875801972834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3915547875801972834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3915547875801972834'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/quickies-20070130.html' title='Quickies: 2007.01.30'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-4507752480117215603</id><published>2007-01-29T07:34:00.000-05:00</published><updated>2007-01-29T07:42:18.598-05:00</updated><title type='text'>Unwelcome Guests</title><content type='html'>We have a visitor in the house, and his name is Influenza.  All four of us are ill, which makes things a bit difficult.  I have a bit of a headache, and some chest congestion as I sit and write this.  I'm taking a half day off to recover a bit more, before this week really gets into gear.  I have month-end stuff going on in a couple days, and I want to make sure I'm in form before all that hits.  K has chest congestion as well, E is downright miserable with &lt;em&gt;all&lt;/em&gt; the usual symptoms, and H is stuffy and more clingy than normal.  Ugh.&lt;br /&gt;&lt;br /&gt;More later.&lt;br /&gt;&lt;br /&gt;-d.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-4507752480117215603?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/4507752480117215603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=4507752480117215603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4507752480117215603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/4507752480117215603'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/unwelcome-guests.html' title='Unwelcome Guests'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-812496682078866256</id><published>2007-01-25T06:47:00.000-05:00</published><updated>2007-01-25T07:16:46.445-05:00</updated><title type='text'>Weird Science</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Physics&lt;/span&gt; - My Pocket Wormhole.&lt;br /&gt;&lt;br /&gt;Time and space seem to be bending around me in weird ways lately, most having to do with clocks.  I've lost time frequently lately, and not just due to sleep or distraction.  Case in point:  This morning, I got up around 4:30.  I know this because I looked at the time on my pager when I got up.  As I was leaving the room to go and get a little exercize, K asked me what time it was.  I turned and looked at her clock:  4:47 AM.&lt;br /&gt;&lt;br /&gt;Now I know darn well it didn't take me 17 minutes to pull some shorts on and walk to the foot of the bed.  I figured one of us had a clock set wrong.  So, I headed downstairs.  The time on the microwave said: 4:52.  A full five minutes to walk maybe a total of 30 feet,  down 6 steps and into the kitchen?  I don't think so.  I would normally have put the first lapse down to me falling back alseep and believing I got up normally.  In this case, on the way downstairs, that was less likely.  Something was amiss.&lt;br /&gt;&lt;br /&gt;So I booted up the computer, and pulled up www.time.gov.  Surely the government wouldn't lie to me.  About the time, that is.  The clock on the site said: 4:48.  What the heck.&lt;br /&gt;&lt;br /&gt;So, into the shower I go.  I return upstairs around 5:22, according to my watch.  My pager tells a different story, but it's only off by around a minute, and only differs from K's clock by about 2 minutes.  I head back downstairs to pack up my food for the day, and find out that my watch and the microwave are in agreement.  None of the devices, however, agree with the government.  (Pretty standard for my house.)  &lt;br /&gt;&lt;br /&gt;And I'm late for work today.  I blame wormholes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Chemistry&lt;/span&gt; - A little food science.&lt;br /&gt;&lt;br /&gt;Take about a quarter cup of pearl barley, rinse, towel dry, and roast it in a dry pan over medium heat until golden.  Then boil it in 6 cups of water for 6 minutes.  Strain the result through cheesecloth, squeezing out the liquid as much as possible.&lt;br /&gt;&lt;br /&gt;Barley Tea.  Not bad.  Add milk and sugar (or honey and lemon) to taste.  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sociology/Psychology&lt;/span&gt; - Projection of Self Loathing.&lt;br /&gt;&lt;br /&gt;I won't link it here, because I would shudder to give this person any more publicity than they deserve, but I heard the most disturbing anti-homosexuality song on Google Video yesterday.  It was basically what sounded like an obviously gay man, pleading with Jesus to save him from his temptations, all the while singing about how god hates homosexuals.  I have several takes on this, not the least of which is to have a good long laugh at someone who must hate in order to feel good about themselves.  Though in another sense, it's quite sad that a person cannot be who he is, and must hate both others and himself in order to feel accepted by a certain group of people.  &lt;br /&gt;&lt;br /&gt;K, by far, had the clear winner for Quote of the Week:  "Dude, you're so deep in the closet, you're in Narnia."  I couldn't have said it better if I tried.&lt;br /&gt;&lt;br /&gt;And with that, class dismissed.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-812496682078866256?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/812496682078866256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=812496682078866256' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/812496682078866256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/812496682078866256'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/weird-science.html' title='Weird Science'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-2837047594532156804</id><published>2007-01-23T07:46:00.000-05:00</published><updated>2007-01-23T07:59:08.738-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>The path to knowledge...</title><content type='html'>...is a pain in the butt.  But it is unfortunately necessary.  I'm currently learning several new skills at once, and it's a pain.  Full time employee, full time father and husband, and now it feels like full-time student.  I live for just 30 minutes of Half-Life or Sudoku by the end of the day.  I guess this is what life is like.  Better make peace with it.&lt;br /&gt;&lt;br /&gt;Passed out on the basement couch with Henry last night, while guests were over.  I felt bad, but he was fussy, needed consoling, some quiet space, and face it: I was exhausted.  Still am, though I slept in a bit this morning, instead of working out.  I figure since the double workout yesterday, I can safely take a day off, right?&lt;br /&gt;&lt;br /&gt;Cutting it short today, since I'm running late and have a lot to do.  Catch you later, perhaps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-2837047594532156804?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/2837047594532156804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=2837047594532156804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2837047594532156804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/2837047594532156804'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/path-to-knowledge.html' title='The path to knowledge...'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6394202920589462026</id><published>2007-01-22T06:27:00.000-05:00</published><updated>2007-01-22T07:00:48.267-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>500+ channels...</title><content type='html'>And nothing good on to watch.  Ever feel like that?  So much to choose from, but nothing sounds good.  It's like looking into the refrigerator and saying, "There's nothing to eat!"  Sure there is, just not what you want.  It becomes even more difficult when you don't know what it is that you want in the first place.  Knowing what you want is the first step to getting it.  Keeping your wants simple is the next.  Finally, be happy with what you get.  It's almost never going to be exactly what you wanted.  (That doesn't mean 'settle'.)&lt;br /&gt;&lt;br /&gt;So Evelyn has been listening to &lt;a href="http://video.google.com/videosearch?q=gorillaz"&gt;Gorillaz&lt;/a&gt; with me for a while, now.  I've even taught her to chime in with the "Oh yeah, now..." on "19-2000" the other day, when we were on our way to Tire Discounters.  That's right.  The day before the first real snow of the year, I got new tires for the Explorer.  Talk about perfect timing.  Can we also say who's driveway was clear and salted not only before everyone else's on my block, but before the main roads were even plowed?  Notice my smug grin.&lt;br /&gt;&lt;br /&gt;Speaking of which, I must comment that Columbus, Ohio, for a city that lies at the 40th parallel, has one of the sorriest snow removal systems I have seen in a while. Two major points:  &lt;br /&gt;&lt;br /&gt;First, they call their snow plows their "Snow Warriors".  I am underwhelmed.  In the first place, they're only snow plows, and in the second place, you can't 'do battle' with the snow, or anything else for that matter, if you don't show the hell up.  We were out on the major highways around 1:00 PM, and they hadn't been touched.  I guess the "warriors" were doing battle elsewhere.  &lt;br /&gt;&lt;br /&gt;Second point: Columbus prefers some sort of 'brine' solution sprayed on the roads, instead of using traditional salt.  This supposedly has two advantages, being, it stays on the road longer, and it's not as damaging to cars.  Well, considering the rain/snow/rain weather patterns we've been having around here, the brine gets washed off the road far before the snow arrives, so scratch that advantage.  As for the salt/car thing, I put safety first.  Columbus as a rule, however, puts image first.  It's everywhere you look.  Image is everything.  Substance is nothing.  Sad.  &lt;br /&gt;&lt;br /&gt;Speaking of substance, and having a bit too much of it around my midsection, I was able to get up and get another workout in this morning, but not just a straight up workout, no.  I did both the weight training, and aerobic workouts this morning.  After the mini-wheats I just had, I've got a quite a energy rush going on.  I hope that with the aid of some green tea, I can keep this going for the day.  If I do, I'm betting I'll sleep like a log tonight.  Barring getting up to change diapers, that is.  Always have to do that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6394202920589462026?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6394202920589462026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6394202920589462026' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6394202920589462026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6394202920589462026'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/500-channels.html' title='500+ channels...'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-1573551062966901180</id><published>2007-01-19T12:19:00.000-05:00</published><updated>2007-01-19T12:21:39.810-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>Geek Sandwich is...?</title><content type='html'>For those of you who haven't noticed it yet, I put the Sloganizer in the footer at the bottom of the page.  Enjoy.  If you notice it saying anything particularly funny, post it in the comments.  Just another toy.  :-)&lt;br /&gt;&lt;br /&gt;Later.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-1573551062966901180?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/1573551062966901180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=1573551062966901180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1573551062966901180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/1573551062966901180'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/geek-sandwich-is.html' title='Geek Sandwich is...?'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6858378798391495058</id><published>2007-01-19T07:20:00.000-05:00</published><updated>2007-01-19T07:27:38.489-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tai Chi'/><title type='text'>Water Boxing.</title><content type='html'>Last week, Thursday, I started the Water Boxing class at the Tai Chi school.  K asked me if knowing some other forms made it easier to learn a new one.  Since the underlying principles are essentially the same, there are some things that come easier than others.  The distinction is clearly made by my teacher, though, that what I'm working on is &lt;em&gt;not&lt;/em&gt; a Tai Chi form.  It's something else.  &lt;br /&gt;&lt;br /&gt;The moves so far really do feel like the flow like water.  There's very few clear starts and stops in the form as it stands right now.  I've learned what I think are about 18 moves, and can count only two clear transitions.  It's pretty liquid.  &lt;br /&gt;&lt;br /&gt;You know, now that I think about it, I have no idea how many moves are even in this form.  the Tai Chi form is a pretty clear 60 moves.  I haven't counted the moves on each side of the San Shou forms, but I recall it's about 40 to 50 moves.  I've heard that Water Boxing or as I think it's called, Liuho-Pafa, is a much longer form.  Ah, well.  I spent about two and a quarter years on the San Shou forms.  I suppose I'll be on this for a few years, anyway.  I just have to remember to keep practicing the other forms.  Especially the Hsing I Sword form, or what little I actually know of it.  It feels good.  (Looks pretty damn cool, too, if I do say so myself.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6858378798391495058?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6858378798391495058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6858378798391495058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6858378798391495058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6858378798391495058'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/water-boxing.html' title='Water Boxing.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-5618461934210748927</id><published>2007-01-19T07:11:00.000-05:00</published><updated>2007-01-19T07:19:27.905-05:00</updated><title type='text'>The Problem With Milk.</title><content type='html'>As a kid, I grew up choosing milk over pop about 80% of the time, give or take.  Now, I have the occasional glass, or bowl of cereal.  So my milk intake is down.  Plus, it's far pricier than water or tea, which are my main staples lately. &lt;br /&gt;&lt;br /&gt;Still a good bowl of cereal is a fine start to a morning.  So, I've been bringing milk and cereal to work in the mornings.  Separately of course.  The only issue I've been running into lately are the little ziplock storage containers that we have tend to leak, making it difficult, if not impossible for me to transport anything liquid in them.  &lt;br /&gt;&lt;br /&gt;I finally found the solution hiding in the plastic wrap drawer.  Ziplock bags.  So for a couple of weeks now, I have been using them to bring milk to work in my soft side lunch bag.  It worked like a charm.  &lt;em&gt;Until...&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;I went to make my first pot of tea for the day.  (Giant Eagle Green Tea with Citrus.  Damn tasty.)  When I returned to my desk, there was milk seeping through the lunch bag.  The plastic bag I chose this morning had a tiny leak just below the closure on one side.  The apple sitting on top of it had compressed it just enough to slowly force milk out of the ziplock, into the lunch bag, and onto my desk.  Good thing I know where the cleaning supplies are.  &lt;br /&gt;&lt;br /&gt;As leaks go, it wasn't that bad.  No equipment on my desk was touched.  The surface was easily cleaned with some 3M Desk Cleaner, and the rest of my food, including the apple, stayed dry.  The lunch bag, however, needs a good cleaning.  I wonder if it is machine washable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-5618461934210748927?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/5618461934210748927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=5618461934210748927' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5618461934210748927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/5618461934210748927'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/problem-with-milk.html' title='The Problem With Milk.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6858046644671931355</id><published>2007-01-18T11:37:00.000-05:00</published><updated>2007-01-19T07:34:51.462-05:00</updated><title type='text'>Another what the hell... 25 Peeps.</title><content type='html'>OK, so I joined a popularity contest called 25peeps.com.  Go click.  :-)  Note: Quite a bit of the pics are NOT SAFE FOR WORK.  (Read: Sexy pics.)  Tread lightly.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.25peeps.com/r/2935"&gt;25peeps.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No, my pic is not sexy.  It's the one in the profile to the left.&lt;br /&gt;&lt;br /&gt;Click, please.  Thanks.&lt;br /&gt;&lt;br /&gt;-D.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; Friday, 7:32 AM - No sooner do I make the page, I get bumped off.  C'est la Vie.  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6858046644671931355?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6858046644671931355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6858046644671931355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6858046644671931355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6858046644671931355'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/another-what-hell-25-peeps.html' title='Another what the hell... 25 Peeps.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-7330171405245213768</id><published>2007-01-18T10:26:00.000-05:00</published><updated>2007-01-18T10:27:24.145-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quizzes'/><title type='text'>Oh, what the hell.  A Quiz.</title><content type='html'>&lt;center&gt;&lt;br /&gt; &lt;a href="http://www.seductiveshorts.com/#goods/quiz"&gt;&lt;br /&gt;  &lt;img src="http://www.seductiveshorts.com/images/blogs/charlatan.gif" border="0" /&gt;&lt;br /&gt; &lt;/a&gt;&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-7330171405245213768?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/7330171405245213768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=7330171405245213768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7330171405245213768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/7330171405245213768'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/oh-what-hell-quiz.html' title='Oh, what the hell.  A Quiz.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-368399899394521762</id><published>2007-01-18T06:34:00.000-05:00</published><updated>2007-01-18T06:44:03.440-05:00</updated><title type='text'>Superfling Boogie of The Mind.</title><content type='html'>For those of you who don't get the reference in the title, check out flylady.net.  A 'Superfling Boogie' is where you remove the physical clutter from your home by getting rid of things you don't need.  It involves brutal honesty.  It involves a mental status check: is this a Need or a Want?  It involves trashing, donating, selling or otherwise re-distributing your possessions to other realms.  &lt;br /&gt;&lt;br /&gt;There are times this is sorely needed for some people.  Some more than others.&lt;br /&gt;&lt;br /&gt;What about, though, a &lt;i&gt;mental&lt;/i&gt; flinging?  Throwing away ideas and concepts that you don't need anymore?  Julia Sweeny's "Letting go of God" comes to mind almost immediately.  Though there are some things I think I understand about Zen on an instinctive level, it's the Buddhism part that bugs me from time to time.  That, however, is a whole essay unto itself.  More on that some other time.&lt;br /&gt;&lt;br /&gt;I have too many projects going on at the moment.  This is nothing new for me, as I like to keep busy.  Or at least have the illusion of being busy.  I need to narrow things down, though, since I've been getting lax in taking care of the more important things.  I'm going to drop a couple of minor tasks and start concentrating more on what I really want to accomplish, and more importantly, how I'm going to get them done.  Having a plan usually helps.&lt;br /&gt;&lt;br /&gt;Patience, persistence, perseverance.&lt;br /&gt;&lt;br /&gt;Later.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-368399899394521762?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/368399899394521762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=368399899394521762' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/368399899394521762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/368399899394521762'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/superfling-boogie-of-mind.html' title='Superfling Boogie of The Mind.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-3512643506123306316</id><published>2007-01-17T07:42:00.000-05:00</published><updated>2007-01-17T08:11:54.863-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>One of those days...</title><content type='html'>Already, it feels like it's going to be one of those days.  You know, a Wednesday.&lt;br /&gt;&lt;br /&gt;Wednesdays are typically difficult for me, for no particular reason.  Today, it started with my alarm not going off either time that I set it.  I did not just sleep through it.  There is visible evidence in the form of an "Alarm" notice when my alarm has gone  off, that was absent both times that I set it.  First it was to go off at 3:30, which it didn't.  I woke up around 4:15, and decided to snooze for a half hour, then get up and do some Tai Chi in lieu of the usual 4:00 workout.  So, I reset the alarm to 4:45.  I woke up at 5:25, again, with no "Alarm" notice on my clock.  Damn.  &lt;br /&gt;&lt;br /&gt;I hurried downstairs for a quick shower and dress.  To test it, I set the alarm for 5:45.  It went off faithfully, chirping at me and declaring "Alarm" on it's front panel.  It may be time for another alarm clock.  This one doesn't like me.&lt;br /&gt;&lt;br /&gt;I got my shower, dressed, packed the remainder of my breakfast / lunch, and headed outside.  Since I had gotten up late, I was unable to pre-heat the truck, which meant scraping frost off the windows.  For the first time this year, it was below 20&amp;deg; outside.  19&amp;deg; according to the weather report on the radio.  Nice that we finally got some real winter weather.  If only we had the snow to go with it.  :-)  I enjoyed the cold, and the truck heating up on the way to work.  Simple pleasures really are the best.  I was only a few minutes late to work, with no damage done.  &lt;br /&gt;&lt;br /&gt;Yesterday was a good day.  I had a chance to get some good things done at work, and went to pick up E at preschool.  I talked with her teachers a bit about her, and things seem to be going well.  We stopped at the library on the way home to pick up a couple of DVDs and a few new books.  We grabbed the original &lt;a href="http://animusic.com/dvd-info-clips-1.html"&gt;Animusic&lt;/a&gt; DVD and one on insects that she grabbed and seemed to want. We watched the Animusic one last night.  Some DVDs you get from the library are fine.  Some are not in such great a shape.  This was the case last night, which made the first few tracks un-watchable, unfortunately.  Though some of the really good ones were in perfect condition.  Sure, you can watch pretty much the whole DVD on Google video, but it just doesn't compare to the DVD itself.  The animation is so much clearer and smoother there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-3512643506123306316?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/3512643506123306316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=3512643506123306316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3512643506123306316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/3512643506123306316'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/one-of-those-days.html' title='One of those days...'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-6418395246516748637</id><published>2007-01-11T08:30:00.000-05:00</published><updated>2007-01-11T08:43:49.846-05:00</updated><title type='text'>Quickies</title><content type='html'>A quick plug for a cool website.  &lt;a href="http://www.ted.com/"&gt;TED&lt;/a&gt;, Technology Entertainment Design.  Check out the TEDtalks from some of the more interesting minds of today.  Specifically, I recommend the talks by Michael Shermer, and Hans Rosling.  Fascinating stuff.&lt;br /&gt;&lt;br /&gt;I'm looking into the requirements for the new Microsoft certifications... the MCITP: Database Developer one looks good, but I question how much database administration stuff the developers need to know.  Should a coder need to know how to change permissions on a stored procedure?  Good question for &lt;a href="http://www.sqlteam.com/"&gt;SQLTeam&lt;/a&gt;, maybe...&lt;br /&gt;&lt;br /&gt;Later, all.&lt;br /&gt;&lt;br /&gt;-D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-6418395246516748637?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/6418395246516748637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=6418395246516748637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6418395246516748637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/6418395246516748637'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/quickies.html' title='Quickies'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9630305.post-8550397686808435281</id><published>2007-01-10T14:26:00.000-05:00</published><updated>2007-01-10T14:38:56.968-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random'/><title type='text'>A 3 item list.</title><content type='html'>I decided sometime around 2005 that I don't do New Year's Resolutions any more.  A resolution is something that is usually a drastic change.  I don't like drastic change because of the shock value and drastic changes usually don't stick.  Slower, gradual change tends to be more permanent.&lt;br /&gt;&lt;br /&gt;So, I present my list of goals for 2007.&lt;br /&gt;&lt;br /&gt;1. Make my little fitness routine more of a habit.  I want it to be something I naturally want to do every day, rather than something forced.  This is largely a mental game, and will take some time to accomplish.  Right now, it stands with:  Tai Chi daily, usually in the mornings.  On alternating days, weight training and 30 minutes on the Gazelle.  And due to a nicely motivating letter from my physician, I am making small changes in  my diet.  Which will end up being big changes over time, but let's not push my luck.&lt;br /&gt;&lt;br /&gt;2. Work on my DBA skills.  I've been learning a lot, thanks to the SQLTeam.  I have a long way to go.  I've written a few stored procedures that work very well, and am working on my first trigger ever.  Not to mention revamping the backup system and working on a little change control monitor of my own design.  Fun stuff.  I'm still not savvy to a lot of the nuances of T-SQL, but I learn more daily.  By the end of this year, I should be a first rate DBA.&lt;br /&gt;&lt;br /&gt;3. Learn Japanese, for real this time.  I've been toying with the idea for several years now, and I think it's time to get serious.  I've been researching various audio courses, as well as methods for learning Katakana, Hiragana, and the supposedly difficult Kanji.  I've also been listening to Japanese radio on the internet, to start getting used to the rhythm of the language, which made a huge difference when I was studying Spanish.  &lt;br /&gt;&lt;br /&gt;Wish me luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9630305-8550397686808435281?l=geeksandwich.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geeksandwich.blogspot.com/feeds/8550397686808435281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9630305&amp;postID=8550397686808435281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8550397686808435281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9630305/posts/default/8550397686808435281'/><link rel='alternate' type='text/html' href='http://geeksandwich.blogspot.com/2007/01/3-item-list.html' title='A 3 item list.'/><author><name>David M Maxwell</name><uri>http://www.blogger.com/profile/02640951119435758397</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
