Tag Archives: Idiots

The dumbest man on Earth

This is one of the most incredible interviews I’ve had to date. It has plenty of very unique answers and lots of good old-fashioned awkward pause. I’m torn about how much to write down because it really gets kinda long after a while, but I’m likely to put a good deal of it though cause I know some of you will want to hang in there. So without further ado I’ll get to some Q/A.

Oh wait, I suppose I should explain the position first. I’m interviewing candidates for a group downstairs. They’re looking for a SQL guy to help them write reports, and support their current data processes and help support their new SSIS pkgs and do some SSRS stuff. He doesn’t have to know everything, but it would be nice if he had a working knowledge and could be taught. This guy has been doing this for many yrs and has a resume the size of mine. So he’s very experienced.

Q: What does sp_ in front of an sp signify?

A: It means it’s a system procedure supplied by MS.

Me: OK, and what does it do.

Him: Nothing, it just means that MS created it and gave it to you because they thought it was be useful.

Me: And can you create your own?

Him: Well of course. You can create as many as you like.

Me: So does that make them system SPs then?

Him: They’re SPs that were supplied by MS.

Me: Yeah, I got that part. How are they all supplied by MS if I can create my own? Will MS add mine to the product since I created them as system SPs?

Him: Yes. Any SP you add with sp_ will be uploaded to MS and will be included in a service pack.

Me: I don’t think I could have explained that any better myself.

Q: What are the 2 types of UDFs?

A: I didn’t know there were 2 types of UDF.

Me: Ok then.

(Now this one just boggles the mind)

Q: What’s the difference between delete and truncate?

A: I know there’s a difference but I can’t think of it. No wait, I remember. Delete deletes all the data in a table and truncate leaves space at the end.

Me: Pardon? Did you say that truncate leaves space at the end? Then end of what?

Him: Yeah, truncate leaves space but delete gets rid of all the data.

Me: Ok, so what if you only want to get rid of a few rows?

Him: That’s what you call a partial delete and you have to do that inside a transaction.

Me: Moving on…

Q: What are 2 types of cursors?

A: I know there are different types I just don’t know what they are.

(Actually one of the brighter things he’s said.)

Q: What’s the difference between Select Into and Insert Into?

A: Well, I don’t even know where you’re going with that. They’re 2 different statements and they do 2 different things. Yeah, I just don’t know where you’re going with that. It has to be somewhere though. Ok, let me think. A select statement is a query that you use to select data. And an insert you use to put data into a table. But you can use a select with an insert so I guess that makes them the same thing, so I don’t know where you’re going with that. Yeah, I just don’t know. Are you asking me if they’re different, because they’re not. Since you can use a select with an insert that makes them the same thing. Yeah, that’s right.

Me: I think you’ve misunderstood. There’s a select into statement, and there’s an insert into statement. They’re 2 different statements. I’m asking what each one does.

Him: But they’re the same thing aren’t they? Well, I mean except that one selects data and the other inserts it, but you can use them together so doesn’t that make them the same thing?

Me: Well, they both insert data, except the select into creates the table and the insert doesn’t. That’s not the only…

Him: Yeah, I know that. That’s what I was trying to say. Yeah, the select statement creates the table and the insert statement inserts data into it. Yep, that’s right.

Me: Well, that’s not entirely what I said, but let’s move on.

Him: Yeah, it’s close enough. I think we’re talking about the same thing. I’m still not sure where you were going with that though.

Q: What’s the difference between an SP and a trigger?

A: Again, I’m not sure where you’re going with this because a trigger calls an SP so that’s the difference. So a trigger is what calls an SP and the SP is what gets called. That’s the difference.

Me: Ok then. You don’t get any more succinct than that.

Q: What’s the difference between datetime and smalldatetime?

A: I’m not entirely sure what the difference is. I think that datetime only stores small dates and smalldatetime stores larger dates. No, that’s backwards. Datetime stores big dates like anything after say the 15th every month and smalldatetime stores dates from 1 to 14. Yeah, that’s right.

Me: So you’re telling me that I have to have 2 separate cols in my table for each half of the month?

Him: Well yeah. That’s why normalization is such a big deal because if you don’t create your tables properly you’ll be in big trouble because everything’ll be slow.

Me: I honestly don’t know what to say. I’ve never heard that explained in such a clear-minded fashion before. And to tie it back into normalization… just excellent.

(This is my gimme question, right? He’s done so poorly until now I really wanted him to get one.)

Q: What’s the difference between a clustered and a nonclustered index?

A: This is one of those interview questions and I don’t know where you’re going with this one either. I don’t understand this, this is one of those interview questions. This is one of those interview questions…

Me: I’m sorry, you keep saying this is an interview question, what do you mean by that?

Him: Well, this is one of those questions that they ask in every interview. And if you search for interview questions on the internet you usually come up with this one.

Me: So are you telling me that it’s purely an academic question then?

Him: No, I’m just saying that it’s a question you hear in every interview.

Me: Well, this is an interview so why don’t you answer it.

Him: Ok, well a clustered index is a global index. It’s open to everybody. And a nonclustered index is only available to certain people.

Me: I’m afraid I don’t understand.

Him: You don’t have to give permissions for a clustered index; it’s global. Everyone can see it. But for a nonclustered index you need to maintain security for it. It’s part of the MS security model.

Me: So what is it about a nonclustered index that makes you need to lock down security?

Him: I don’t know their reasoning. I just know that’s how it works.

Me: So what’s stored in a nonclustered index that makes you have to lock it down then? What info are you hiding from the general public?

Him: I’ve always wondered that. I don’t know. I just know that it makes the data more secure. That’s what all the documentation says anyway. So I don’t know where you’re going with this because this is just an interview question.

Me: Do yourself a favor and don’t say that again. I get it you think the question’s worthless.

Him: No, it’s not worthless, it’s just that it…

Me: Let’s move on before we get to the end of that sentence.

Q: Explain when you would use the ‘Having’ clause.

A: Well, ‘HAVING’ is not my forte. But it’s used when you can’t use the ‘where’ clause in the right place.

Me: When you can’t use the ‘where’ clause in the right place? I’m not sure what you mean.

Him: There are times when you can’t put the ‘where’ clause where it ordinarily goes so you have to use having.

Me: Can you name one of those times? Give me an example?

Him: Not really. That kind of thing is hard to nail down really. It’s random to begin with.

Me: Wait, what’s random?

Him: When you have to use ‘Having’. It doesn’t happen all the time.

Me: I can see how that would be hard to define something that keeps changing like that. Have you thought about asking MS to make that more stable so people know when to use it?

Him: No, I always figured it was something they couldn’t do or they would have.

Me: Would you be surprised to know that it has been stabilized?

Him: Really? When did they do that? In this last version? Cause I haven’t played with the new one yet.

Me: No, they stabilized it about 25-30yrs ago. I can’t watch you struggle through this anymore. Would you like me to give you the well-kept secret of the ‘having’?

Him: Sure.

Me: ‘Having’ is like a where clause for a ‘group by’. So if you get a result back from a ‘group by’, say you’re counting how many of each value is in a table with something like Select CustID, count(*) as CT from orders group by CustID, then that’s a result you’re getting back from a ‘group by’. You can see how many orders each customer has had. But if you want to see only customers who have had more than 100 orders, then you would add ‘having count(*) > 100’ and you’ll now only see the ones who have had more than 100 orders. So it’s really kind of a ‘where’ clause for a group by. It doesn’t move. It’s not mysterious. And there’s no secret potions or incantations you have to apply to make it work from one day to the next.

Him: Wow, yeah that makes a lot more sense. See, this is why I need to work here because I feel I could really learn from someone like you.

Me: And furthermore… I’m pretty pissed off that you would even waste my time like this. You’re clearly a complete idiot. In the 20+yrs you’ve been doing this you’ve clearly never once opened a single book. I mean, what the hell kind of moron thinks that this shit is all voodoo that nobody can understand? Computers are solid and predictable and you’re an idiot. I mean, seriously, did you really think that SPs you create get uploaded to MS and included in service packs?

Him: Well I always…

Me: Shut up. I don’t even want to know the answer. I’m afraid some of your stupid will get on me and I’ll step into the street in front of a car. I suggest you do something more suited to your intellect. Just remember, when the buzzer goes off, it’s time to pull the fries.

Ok, I made the part in blue up. I was actually very nice to him. But it sure felt good to say all that here.

So ok, that was my interview yesterday. All of these stupid answers are not only completely real, but they were compounded by his nervous laughter. So for every answer there were a couple senseless jokes and about 30-45secs of him laughing at them.

And I don’t know about you guys, but all of the stupidity aside, I find the bit about some of those being interview questions particularly puzzling and somewhat offensive. That’s implying that these questions are useless and have no place in your day to day life.

So there you go… that’s the interview as best as I can recount it. I was taking some notes while he was talking, but I didn’t do some of them justice. Hell, just not being able to convey his laughing all the time really makes you miss an essential part of the experience. And I’m doing more interviews for this group so there’ll be more coming.

Dealing with stupid customers

As we found out yesterday there’s more that one way to deal with a customer you think is stupid.  And now matter how good or bad Cornhole was is irrelevant because he still had a customer he thought was stupid.  So whether you’re right or not isn’t important.  The bread lines are full of guys who were right.  So that’s evidently not what’ll keep you your job.  Good customer service is what’ll keep you your job.  And it’s not always easy to keep your temper in check.

I expect very little of my customers.  I know that most people know almost nothing about DBs so I don’t mind when they say something wrong, or when they ask what’s thought of as a stupid question.  What bothers me though is when they claim to not know anything about DBs but they don’t believe you when you answer their questions.  No, that doesn’t sound right to me.  This is a dangerous crossroad because your next statement can determine whether you go back to your desk after the meeting, or to HR.  Typically, what I do when they don’t believe something I say is I ask them what it is about it they’re having a hard time with.  So instead of getting into a pissing contest, just find out what they don’t like.  This way you can attack their problems one by one until they have no choice but to believe you.  I say that, but we all know those customers who refuse no matter what you say.  But by attacking their issues one by one you will quite often find that they didn’t understand what you were saying so they rejected it on the Big-Word Factor.  The Big-Word Factor has 2 sides and you never know which one it’s going to land on.  The first side is what we just discussed;  people discredit what you say because they don’t understand the big word you used.  And anything they haven’t heard of couldn’t possibly work.  The other side of that can do just as much damage.  This is when someone is so impressed with your big words that they blindly follow whatever you say.  I’ve seen this cause quite a few problems because a customer likes the sound of a word and it just gets them into trouble.  Clustering is one of those words.  More people implement clustering because it sounds cool and they don’t get what they really need.

So what do you do if the customer just insists that you don’t know what you’re doing?  Well at some point you’ve just gotta say, well it’s too bad you don’t understand what I’m talking about, but this is what we’re doing because I’m the DBA and you said you didn’t know anything about it.  So why would we do what you think is smart when you claim to have no knowledge on the topic and I do?  There’s a reason you let the brain surgeon (and not your husband or your kids) operate on your mother.  And I bet you don’t understand all the words they say either do you?  And a lot of people don’t realize this, but a really good IT guy studies just as much if not ultimately more than most doctors.  And we can experiment without any kinds of moral issues getting involved.

The stupid have fallen

This is a followup to my previous post here.

Wow, what a day.  Ok, so I just got off the phone with the tech lead for that company.  It was enlightening to say the least.  It was really a longer call than I expected or that I even wanted, but my blood pressure’s gone down a bit now.  I obviously can’t recount the entire conversation for you, but here are the highlights:

V = Vendor

M = Me

V: Hi Sean, this is Josh(not his real name) with X and I was told you wanted to talk to me.

M: No, the last thing in the world I wanna do is talk to you, but I feel in order to get our issue resolved I have no choice.

V: Yeah, Cornhole(not his real name) told me you got upset with him when he was just trying to explain to you what your issue was and then you insisted on speaking with me.

M: This is just incredible.  No I didn’t get upset with him for explaining the issue to me.  I got upset with him when I told him his explanation was flatout wrong and then he called me an idiot.  He didn’t even hint at it.  He called me an idiot outright.

V: Really?  Cause that’s not the story I got at all.  I heard that he was calmly explaining that your backups were the issue and you just exploded on him.

M: No, that’s NOT what happened at all.  That little turd actually called me stupid for not buying his assinine explanation for our issue and then I only exploded after he did that a couple times.

V:  Well what don’t you believe about it then?  Because we’ve seen that many times where backups will cause proceses to block.

M: No you haven’t.  Listen, I realize that everyone can’t spend their days studying SQL, but one simple fact is that backups don’t block processes.  Period.  I’ve been doing nothing but DBs in SQL Server for over 15yrs against TBs of data and nowhere have I ever seen a backup block a process.  The problem is that you’ve got like 3 tables with TABLOCK in that sp and that’s what causing your blocking.  Don’t you think it’s funny that it only clears up AFTER you kill that process?

V: Where did you get the code?  Those sps are encrypted.

M: Encryption only stops amateurs.  And while we’re at it, what’s this script I hear about that you’ve got to unconfuse SQL to give you the real spid for the process?

V: Where did you hear that backups don’t block processes?  It’s well-known here that it’s one of our biggest problems.

M: No, your biggest problem is your TABLOCKS.  And I heard it from the truth. 

V: What is a tablock?

M: A table-level lock.  You’re locking the entire table just to read data.

V: I don’t know about that, I’ve never seen the code because it’s encrypted.

M: Well I do and that’s your problem.  Now what about this script I kept hearing about from Cornhole?

M: Did you get my email?

V: Yeah.

M: And you can see the place in the code where you’re locking the whole table?

V: Yeah.

M: So how is it that you lock the entire table and you claim that it’s the backup blocking everything?  Haven’t you noticed that the backup only decides to block stuff when this process is running?

V: That does sound a little suspicious when you put it that way.  What can we do?

M: Let me take those TABLOCKs out of there so I can query these tables without locking everything up.

V: I just saw your email signature and I’ve never heard of an MVP before, but I just looked it up.  Are you really one of those guys?

M: Yeah.

V: Wow, so I guess you really know what you’re doing then.

M: I’ve hung a few DBs in my day, sure.

V: Do you mind if I write you again if I have any questions?

M: I suppose that depends on whether you’ll let me change that stupid sp or not.

V: Yeah, go ahead.  I’ll have to have a talk with our devs tomorrow and try to convince them to put this in our next build.  Honestly, I’m only a tech lead here because I’ve been here a few months longer than anyone else on the support team.  We get all this stuff from the devs and they won’t tell us anything.

M: So what about this script I keep hearing about.  The one that tells you how to unconfuse SQL and give you the right spid for a process?

V: That’s a script the devs have and they won’t show it to me either.  I just tell my guys something else so they won’t know I haven’t seen it.

M: Wow, that sucks man.  You do know though that a script like that doesn’t exist, right?  It’s completely bullshit.

V: Yeah, I hate this place.  I’ve been suspecting for a while now they they were lying to me, but what can I do?  I need this job.  I’m just lucky to be working.  I have no idea what I’m doing here.

M: I don’t know what to say to that.  You’re right, you are lucky to be working these days.  But pick up a couple books on your own and learn SQL.  Don’t rely on them.  There are websites, blogs, etc.  I myself run a site.

So in short, I really started to feel for this guy.  He ended the call apologizing 100x for the grief they’ve caused me and he’s going to go out right away and start watching my vids and trying to learn more.  He asked if he could write me with questions, and I said, of course dude, anytime.  That’s what I do.

And y, he sounded about 22 as well.  Turns out I was right.  I asked and he was 21 and this was only his 2nd job and they brought him in from nothing and “trained” him.  I’d say he’s got some work to do.  But I personally consider this exchange a success.

Why can’t voodoo be real?

I had a very interesting talk with a vendor this morning.  Ok, it wasn’t really interesting as much as maddening.  I swear, it’s guys like this that are going to be the death of me.  I know I shouldn’t let them get to me but sometimes they do.  You know how it goes, you try to explain something and it just escalates until you’re upset.  Anyway…

OK, so they were having blocking issues in the DB.  The vendor was trying to convince the app team to turn off the SQL backups because they were interfering with their processes.  That’s when they called me.  Frankly, I can’t believe they called because the vendor was very adamant and this is the kind of thing our app groups do on their own without consulting us at all, so I’m more shocked than anything.  But I knew this was going to be a bad call the second my app guy told me what was going on.

Here’s the conversation as it took place just a couple hrs ago.  It took me this long to regain my strength.

V = vendor

M = me

M: Ok, I’m here now.  So explain to me what’s going on.

V: Well, we’re having severe blocking issues in the DB and after looking at it we noticed it’s the SQL backups causing it.  So what we need to do is stop the SQL backups.

M: Backups don’t hold locks in the DB so there’s no way for it to be causing blocking.

V: Of course backups hold locks.  Everything holds locks.

M: No, they don’t hold locks.  There’s never been a case where a backup has blocked a process.

V: We see it all the time.  And you’ll just have to trust me because I do this for a living.  I’m very familiar with this app and this is how we always fix this issue.

M: You always fix your poor coding issues by having people not backup their data?

V: You can backup your data, but you have to schedule downtime every week to do it… to keep it from blocking.

M: I really don’t want to finish this conversation, but I’m developing this morbid curiosity about where this is leading.

V: What does that mean?

M: Well, you clearly know nothing about SQL and you’re doing your customers such a huge disservice by making them turn off their backups when all you have to do is fix your query.

V: What do you mean I know nothing about SQL, you’re the one who thinks backups don’t cause blocks when I see that all the time.

M: No, what you see all the time is your process causing blocks and people running backups.  Because I’m on your server now and I can see the blocking you’re referring to and it has nothing to do with the log backup, it has to do with your process on spid 201.

V: I thought you were a DBA.  When there’s severe blocking in a system SQL Server sometimes reports the wrong spid.  Our tech lead assures us that this is coming from the backup.

M: Well, if you’re just going to insult me we can end this call right now because I really don’t have time for this.  I can’t teach every moron who writes an app for SQL everything they need to know to support it.

V: Now who’s being insulting?

M: Oh, that would still be you.  Because you know nothing about SQL and you hop on the phone and start calling me an idiot because you don’t know how to troubleshoot a simple blocked process.  Since we’ve been on the phone, I’ve looked at the sp that’s causing this and the problem is simple; you’ve got a hardcoded TABLOCK in 2 of your queries.  That’s what causing the blocking.  Have you ever bothered looking at this process to see what it’s doing?

V:  No, because it’s the backup causing it.  There’s nothing wrong with the code.  We run this at several customer sites and nobody ever complains.

M: Ok, let me try something different here… if SQL’s reporting a different spid for the blocking process, how does your tech lead know that this incorrect spid points back to the backup?  Why couldn’t it be pointing to one of the many other processes running right now?

V: He’s got a script that can tie them together.

M: I would love to see that script.  Maybe I could learn something, huh?  But if SQL itself gets confused about the spid and doesn’t report it right in sysprocesses, then how can he tie it to the right process in his script?  Wouldn’t SQL tie it to the right spid and present it to us the right way to begin with?

V: He won’t show anyone the script because he says it’s too advanced and we don’t need to know how to do those types of things. 

M: Wow, that’s convenient isn’t it?  Let me try something different here.  Because now this is like a train wreck I just can’t turn away from.  When you kill the backups at other client sites, does the process clear up right away?

V: No, unfortunately, the database can’t recover from something that’s been blocked by a backup so we have to kill our process to and then things work fine.

M: My, you’ve just built your own little world in there haven’t you?  You’ve got excuses for everything.

V:  They’re not excuses.  It’s how databases work.  Where did they find you anyway?  Have you ever been to any SQL Server classes? Maybe they should send you to some.

M: No, I’ve never been to any SQL classes.  I’ve never needed them.  And if you call me an idiot again you’re gonna find out what else I can do.  In fact, I’m a hair away from calling the CEO of your company and letting him know what kind of stupid, snide little ass he’s got working for him.  So you’d better watch your tone with me boy and remember I”M the customer.  So you don’t tell me what to do and you don’t get on the phone with me and call me an idiot.  And here’s something else for you.  Before I even got on this call I ripped your access from the box because I don’t want you touching anything on our server.  Nobody’s turning off our backups, and nobody’s ever touching our server.  And I’m actually done with you.  I’m not going to troubleshoot this with you one more second.  Here’s what I want.  I want you to escalate this to your team lead and I’ll fight this out with him.  I want a call with him at the next available opportunity.  You are out of this issue.

V: Look, I’m sorry if you thought I was being

S: Shut up.  I’m done with you.  The next call I get had better be from your team lead.  Good-bye.

I’m telling you guys, if voodoo were real I’d be sticking pins in this guy’s ass for the next month.  And the sad thing is I doubt it’s his fault.  He’s got some jackass yanking his chain and this is probably just some kid who they’ve taught to be this way.  He sounded like he was probably in his early 20’s.  I still haven’t heard from his tech lead, btw.

Are you kidding me?

This one has me going so much I had to blog for a 3rd time today.  I keep finding boxes that have failing backups and other processes.  These jobs have been stopped for weeks in some cases.  And why you ask?  Hah, that’s a good question.  The reason why they keep failing my most learned internet peeps is because the previous DBA was running them under his own personal acct.  He had scads of jobs and other processes running under his acct… as did the DBA before him and the DBA before him. 

Are you people kidding me with this crap?  Ok, for those of you who don’t know enough to be sure why I’m upset, you never run anything under your own acct… or anyone else’s acct for that matter.  Even if you don’t leave this gig, you’ll still be forced to change your password at some point and there’s no way you can keep up with every job, service, ssis pkg, script, website, credential, etc that you’ve got running under your acct.  And then you’ve gotta get everyone else involved to help you find it because you keep getting locked out every 5mins.

When IT was young you could excuse these things because we were still figuring things out then, but there’s just no excuse for this level of idiocy anymore.  Come on guys, straighten up.

A Nice SQL Virus

I’m being forced off of my powershell kick here for a few mins to talk about viruses.

Why do companies refuse to allow scanning exceptions for DB files?  Do you really think that anyone’s written a SQL virus?  I really can’t remember ever having see an actual virus that attacks SQL files.  Actually, I take that back.  There is one virus that attacks DB files and drags performance so far down you can barely use the system.  In fact in my performance realm I actually classify this virus as an official DOS attack against my DB.  It’s called virus scan.  Virus scans are the only thing I’ve seen that specifically target DB servers to bring down the performance.

So if any of you non-SQL admins out there are running AV on your servers w/o exception policies for your DB files, turn yourselves in because you’re officially launching a DOS attack against your own servers.

But I promise I’m not bitter.

My favorite vendor code.

I was given this code the other day to review before it gets run against prod.  It’s code that a vendor wrote to help us clean-up some of the bad and old records in this one app table.

There’s really not much to say about it except that it’s by far the best vendor code that’s crossed my desk in a long time.

I hope you enjoy it as much as I do.

 BEGIN TRANTable1
SET touchedwhen = GETDATE(),
touchedby = 'mysupport',
statuscode = 'CISPA'
WHERE createdwhen < '2009-01-01 00:00:00.000' AND statuscode = 'AWDP'
-- Where createwhen < getdate()-1 and statuscode = 'AWDP'

ROLLBACK
COMMIT

So once I got this and the email chain I started based off of it was priceless.  I don’t feel really right about printing the email chain here, but rest assured that I’ve defended the logic of this query perfectly.

Whatever, I’m done.

Well, since I hear everyone is enjoying these today, I just finished my last phone screening and here are the nuggets I’ve discovered this time.  Man you just learn so much interviewing.  If any of you really cared for me though you’d shoot me right in the ass.

Q:  What’s a bookmark lookup? (his resume says he’s a query tuning expert)

A:  If there’s no PK on the table, SQL will keep a bookmark table that tells it what the PK should be and it uses that to lookup the data.

Q:  Say you have a prod server with the DB on D:\ and you need to restore it to a dev server that has no D:\.  But it does have an E:\… how would you restore that DB to E:\ instead of D:\?

A:  You have to restore it to the full recovery mode.

Q:  What is IsAlive vs LooksAlive? (he’s also a big clustering guy)

A:  LooksAlive mode when you want to hide the cluster from hackers so you put it in LooksAlive mode and IsAlive mode is when you have an internal box and you want to allow it to be seen from the network. (I’m so far beyond speechless I don’t even know what to do with myself.  Now I know why VanGough ripped off his ear.)

Q:  When would you use log shipping vs mirroring?

A:  Log shipping is what you use when you want to run it in full mode and mirroring is the same thing only you do it in simple mode…

Somebody make it stop!! The voices are getting so LOUD!!!

Somebody kill me.

I just had an initial phone screen with a guy who wants the DBA gig I’ve got open.  Here are the last 2 questions I asked him with his answers.

Q:  Say you have a prod server with the DB on D:\ and you need to restore it to a dev server that has no D:\.  But it does have an E:\… how would you restore that DB to E:\ instead of D:\?

A:  FTP.

Q:  Can you name 2 server-level security roles?

A:  DBA and Dev.

Sorry I asked.  I’ll just be over here.