I will be in Las Vegas all next week for Live! 360.
I'll be attending with my dev group at work. If you will be at this conference, please look me up! I'm staying at the Planet Hollywood hotel.
This website is now running on my own web servers. Took a bit longer than I expected, but I finally got it done.
Please report any wierdness that you see, by adding a comment to this post.
As a cost cutting measure, I will be moving this website from PowerDNN to my rack-mounted servers. I'm being forced to cut down on all unnecessary costs. Currently I pay $50/month to host this site and the WheelMUD site. I can't afford that anymore.
I wanted to give everybody a heads up that the site will be down intermittently in the next 5 days. The biggest hurdle will be the DNS servers. The DNS changes can take up to 72 hours for some people.
Just remember, this site is not going away. Don't Panic! GANGNAM STYLE!
Your invisible and friendly system administrator.
Just a heads up for everybody that follows me on Twitter. I will be winding down the @systemwidgets account. I'm moving away from software development as a career, and moving into SQL\Data Warehouse development.
The new Twitter account is @Datasome.
I was testing one small SSIS package in several different versions of BIDS. I discovered that Visual Studio 2012 (BIDS) does not do a good job of visually distinguising disabled objects.
Here are screenshots for each version I tested:
Clearly visible differences.
Uh-oh. Houston we have a problem!
This issue has been reported over at Microsoft's Connect website. Here's the link: SSIS in VS2012 - Way too hard to distinguish disabled items - accessibility issue
I rode the Frontrunner train to work today. I got to the Frontrunner station in Provo (700 South University, just before the bridge going north). I bought a round trip ticket. It cost me $10.20. The round ticket gives me the right to use all forms of transportation for the day. This includes Frontrunner, TRAX, and the bus system as part of the pass. The actual pass looks like a bigger movie ticket. Interestingly enough, nobody checked that I had actually purchased a ticket.
I went to http://www.rideuta.com to check out what the itinerary looked like. The instructions there were fairly clear. The routes were clearly marked with numbers and colors for TRAX routes. The bus routes were marked with route numbers and addresses. The one confusing thing is that the routes do not say if they are TRAX or Bus. I had to click on the link in the web page, and even going to the second page, it was not clear which one was what.
The train shook a lot less than I expected. The only part that had a lot of vibration was the segment between South Jordan and Murray stations. I rode on the second floor of the train car. I sat at one places that had a table. There were quite a few people with laptops. The free WiFi was actually pretty good. I was able to browse my email and websites on my Samsung Galaxy Note 2 without any issues at all. The cabin was a bit cold at foot level. Make sure to stay way from doors, until you get to your destination. When the door opened at Murray station, I got hit with a freezing blast of cold air. I imagine that it would be miserable for those seating by the doors.
The seats were not all that comfortable, but they were bearable for the time I was on the train. I felt that the seats were made with people smaller than me in mind. They were quite narrow. It felt like a coach seat in an airplane. There are pods of 4 seats, 2 facing the other seats. There were single seats in several nooks in the first floor of the car.
The driver announces the stop clearly. The stop names matched what was on the UTA's website. The northbound route on Frontrunner is called Route 750 FRONTRUNNER, Provo.
I got off the Murray station, right behind the IHC hospital campus. I walked towards the campus, and was quickly on the island for the TRAX tram. I figured that was where the TRAX station would be. Indeed it was. I needed to get on the Blue line going southbound. It was marked clearly on the end of the island's roof. There were large red and blue dots with the destination printed out. There was also a digital display showing when the next 3 trains would come by. It was extremely cold on that platform. I ended up zipping up my coat, putting on my hat and gloves.
The TRAX tram shoot violently at times. Reminded me a lot of metro cars I've ridden in the past. The ride to the Winchester St. stop took about 3 minutes. Nobody checked my that I had a ticket.
The announcement for the station that I needed to get off was rather confusing. It is a good thing that I know the landmarks around where I work. I heard "Fashion Place Stop". I was expecting Winchester Street.
The marked route on the itnerary was Route 701 BLUE LINE, MURRAY.
The buses where clearly marked and I was able to find it quickly when I got off the TRAX tram. The itinerary said that I needed to get on Route 209 EAST, Murray. There were three 209 buses. I got on and asked the driver if this one would stop by the Fashion Place Mall. He told me yes. A few seconds later, he told me that the bus behind him was leaving right now. He signaled the other bus (don't know how he did it), and the other bus stopped paralell to the one I was in. I got off, and onto that one. I was impressed with the bus driver. That's dang good service!
The driver on the new bus was extremely cheerful and helpful. He cracked me up! I had forgotten that there was a stop right in front of Fashion Place Mall. The driver asked me, worriedly, if I was getting off, and I told him that I was getting off the next one. He smiled, and we were on our way. We got to my stop, and I wished everybody a Merry Christmas.
I walked to my office, which was just about 3 to 4 minutes from the bus stop. The total time was around 1 hour and 15 minutes.
Now to see how the return trip goes this evening...
As a past developer, I got the now famous FizzBuzz question in interviews several times. I thought I play around a bit and do FizzBuzz in T-SQL.
Here is a simple script that prints out the results:
DECLARE @counter INT
DECLARE @output VARCHAR(8)
SET @counter = 1
WHILE @counter < 101
SET @output = ''
IF @counter % 3 = 0
SET @output = 'Fizz'
IF @counter % 5 = 0
SET @output = @output + 'Buzz'
IF @output = ''
SET @output = @counter
SET @counter = @counter + 1
I formatted this a bit for easier reading. Source: Pinal Dave
Here is a sample script if you want use native SQL Server features and a dataset result:
WITH NumberRange (CurrentNumber)
SELECT 1 AS CurrentNumber
SELECT CurrentNumber + 1 FROM NumberRange
WHERE CurrentNumber < 100
CurrentNumber AS Number,
WHEN CurrentNumber%3 = 0 AND
CurrentNumber%5 = 0 THEN 'FizzBuzz'
WHEN CurrentNumber%3 = 0 THEN
WHEN CurrentNumber%5 = 0 THEN 'Buzz'
ELSE CONVERT(VARCHAR(3), CurrentNumber)
END AS Result
This uses a Common Table Expression (CTE). Hopefully, this helps the readers.
I've tried a few textual duration functions that were floating around the Internet. I finally hit on something that is exactly what I want. Here's the T-SQL script to create a scalar function to use in your monitoring and admin scripts:
CREATE FUNCTION [dbo].[GetDuration]
@startTime DATETIME, @endTime DATETIME
DECLARE @duration INT, @hours INT, @minutes INT, @seconds INT, @totalSeconds INT,
@stringdate VARCHAR(12),@durationText VARCHAR(200),@milliseconds INT
SET @durationText = ''
SELECT @stringdate = CONVERT(varchar(12), DATEADD(ms, DATEDIFF(ms, @startTime, @endTime), 0), 114)
SET @hours = substring(@stringdate,1,2)
SET @minutes = substring(@stringdate,4,2)
SET @seconds = substring(@stringdate,7,2)
SET @milliseconds = substring(@stringdate,10,3)
IF @hours > 0
DECLARE @hourText VARCHAR(12)
IF @hours = 1
SET @hourText = ' hour '
SET @hourText = ' hours '
SET @durationText = cast(@hours AS VARCHAR(3)) + @hourText
IF @minutes > 0
DECLARE @minuteText VARCHAR(12)
IF @minutes = 1
SET @minuteText = ' minute '
SET @minuteText = ' minutes '
SET @durationText = @durationText + cast(@minutes AS VARCHAR(3)) + @minuteText
IF @seconds > 0
DECLARE @secondText VARCHAR(12)
IF @seconds = 1
SET @secondText = ' second '
SET @secondText = ' seconds '
SET @durationText = @durationText + cast(@seconds AS VARCHAR(3)) + @secondText
IF @milliseconds > 0
-- Only show milliseconds if that's the only time unit
-- that is not zero
IF len(@durationText) < 3
DECLARE @millsecText VARCHAR(25)
IF @milliseconds = 1
SET @millsecText = ' millisecond'
SET @millsecText = ' milliseconds'
SET @durationText = @durationText + cast(@milliseconds AS VARCHAR(3)) + @millsecText
Comment if you use it. :)
I just had a very unpleasant experience with a trial version of a SSMS addin. This addin reset my keyboard layout, and didn't restore it back to what I had.
I went the usual route of trying the different customization dialogs. However, I was miffed when I found this:
I can't change the shortcuts in SSMS! Arrrggghhh! So now I turned to Google to see if there was a non-UI way of doing this...
This first article I found, said to look for User.vsk in C:\ProgramData\Microsoft\Microsoft SQL Server\100\Tools\Shell. There was nothing there.
SSMS keeps the key shortcuts in a file called User.vsk. Incidentally, when I did a global search on my hard drive, I noticed that Visual Studio uses a file with the same name, but in a different directory.
I actually found it in C:\Users\YourUserName\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell. I deleted User.vsk from that file, and restarted SSMS. The mangled short-cuts are still there. . So I look at the contents of the directory again, and notice that there are 3 files with the *.vsk extension.
I delete Current.vsk and User.vsk, and TADA! The default shortcuts are back. Make sure that you have all copies of SSMS closed, before you delete these files. Otherwise, like zombies, they'll be back.
Yes! Now I can stop being irritated by this. Whew!
A while back, I created a little utility to edit ASP.NET membership services database. The instructions only talked about DotNetNuke. I've now added instructions on how to use it on regular ASP.NET membership databases.
There previous blog post is DotNetNuke user manager - Winform App. The new app is called MembershipUserManager. I've included, as usual, both the source and binaries. The source is now a Visual Studio 2010 solution. It actually uses .NET 2.0, so older versions of Visual Studio and SharpDevelop can use the source.
The ReadMe.txt file, in the zip files, has instructions on how to setup regular ASP.NET membership and DotNetNuke.