For those that missed the announcement last week (like I did), the latest version of CruiseControl.Net has been released.
I plan on checking it out this week, then possibly upgrading our Build environment on Saturday. There are some modifications that I am really excited about:
- Log4Net is used. (Default: Rolling file appender for logging server output.) If the traditional Log4Net configuration block is included in the application configuration file, I will probably change that to the ADONet appender, instead.
- Users can volunteer to fix a broken build. How sweet is that!?!
- <prebuild /> section allows custom tasks to run prior to the build. This one is a big bonus; previously, if something went wrong with the build, often the external log files (NUnit, FXCop) from the previous build would get included in the current build’s report. Now the prebuild can give them the boot.
- Caching is used on WebDashboard. We have some huge log files and some not-so-powerful build servers. Sometimes it takes the machine a while to process the XSL. I am hoping that caching will help with that.
- WebDashboard can stop and start projects. I am very excited about the ability to pause individual projects without having to modify the setup or stop the entire service.
This seems like a nice package (Release Notes). I am eager to pull it down and give it a go.
One gotcha that everyone should be aware of: Old versions of the dashboard and CCTray are incompatible with the new version of the service, so both will need to be replaced. Give your development team a heads-up, so they know to replace their tray installation as soon as the new server version is installed and online.
This just toasted two hours of my morning, and ended with a “Huh. I never would have thought of that!” moment. And whenever I have one of those, I like to toss the problem and the solution up here in the hopes of saving two hours from someone else’s morning, someday.
Problem
We have a Scorm course. The course is coded in Flash and heavily relies on FLVs. For one of our client’s sites, we just rebuilt the Staging environment, upgrading to Windows 2003. Ever since the rebuild, this course in question hasn’t worked in the Staging environment. It works fine in Production, but not in Staging. It’s the same code, but it works in once place and not in the other. I hate it when that happens.
Turns out that we didn’t have and needed a MIME for FLVs.
Solution
Crack open INetMgr. (These directions are for IIS6)
- Right-click the server, and hit ‘Properties’
- In the Properties window, click the “MIME Types…” button
- In the MIME Types window, click “New…”
- Extension: .flv
- MIME Type: video/x-flv
- OK, OK, OK, you’re done
Thanks to Don DiCicco for finding the solution to this one. He googled up a link to a similar post on this same problem / solution. And thanks to good ol’ JT for posting the original solution, whoever you are.
I’m finally leaving the apartment world and entering the brotherhood of the house-poor. The process is exciting, interesting, and oftentimes overwhelming. However, last week when the home inspectors came to check the place out, I was amused by yet another situation where my QA skills applied. Functional testing, automated testing, performance testing: it was all done.
Ways to Performance Test a House:
The water system
Turn on every water faucet in the house at the same time. Can the system handle it? Does the water pressure drop? Can the well pump keep up? Turn on the outside water faucets and the sprinkler system. How does it do now? If the house can handle it, you should not have to worry about the shower getting cold when the toilet is flushed.
The electrical system
Similar to the water system test, what happens when you turn on every light in the house? How about if you also start the dishwasher and the clothes dryer? The air conditioner, too? Maybe do the water test at the same time, since the well pump draws from the power system, too. Get some electrical system meters to make sure the power does not die down when the load is high.
Ways to Functional Test a House:
The electrical system
Aside from making sure that the lights to actually turn on, the outlets work, and that the doorbell actually dings, there are some other cool tricks that were done against my house. I forget the name of the toy, but the inspectors had this cool gadget that would simulate a short in the system, like someone splashing water on an outlet or getting frisky with a fork. The gadget would test that the GFCI outlets would actually trip under such a scenario. Purposely overloading the system to make sure that the safeguards did their job. It’s like pulling the network cable from a MSCS Cluster to make sure that the servers would actually fail over. I thought this one was the most fun of all the night’s tests.
Ways to Security Test a House:
I used to carry a long expired medical insurance card in my wallet. Sometimes I would lock myself out of the house, most commonly when I took the garbage out, and I would use the card to pop the door and get back in. (I would always have my wallet with me, even if I forgot my keys.) I wasn’t thrilled that I could do that, but it did come in handy from time-to-time.
I’m sure there are other ways to test a house. Anyone else have any creative tasks?
Microsoft has announced that the upgrade to Internet Explorer 7 will be “high priority” in Windows Update, essentially forcing the upgrade on XP users everywhere (news.com). Microsoft has released a toolkit to disable automatic delivery of the browser upgrade, however this is a pro-active path; if a user does nothing, they are going to get the new version. My poor grandma (Usability: What Would Grandma Do?), who has no idea about any of this, is getting the upgrade. If you have Windows XP, and you have an internet connection, you pretty much are destined for this upgrade.
Now, I don’t think that is entirely a bad thing. Far too many people just blindly use this paperweight we call a computer. They don’t read manuals, they don’t educate themselves on this thing, they just start pressing buttons. When they get a phishing email about “Your bank account has been compromised. Please send me your account number and password so that I can fix it,” they reply with their credentials. “Click here and win an iPod” and they click. “Check out this email attachment of dancing babies” and they get yet another virus. Because of this we have to monkey-proof computers, and add far too many security checks on systems, and overall make developer-life a little more painful. So, I think this is a good thing. Yeah, I drank the Microsoft kool-aid, but I’m all for this automated upgrade to help make up for the swiss cheese that is Internet Explorer 6. I’m going to continue using Firefox as my browser, anyway, but if this makes my OS a little more secure…good!
But what does this mean to us, the development / testing community? Test now. Test often. In a few short months a few million people will unknowingly get IE7, and at that time we will no longer have any excuse about whether or not our systems work. Our stuff needs to work on IE7-Day. So download the beta, and start testing your web apps to make sure everything still works. Microsoft hasn’t been too browser-compliant in the past, and other than competition from Firefox I don’t see a lot of reason that they would start, so there is good reason to suspect things might break. Start testing now, or you will be scrambling in a few months when your help desk lights up like a Christmas tree.
Many .Net developers that have experience in presentation-layer development have previous exposure to this one, but to those who haven’t, I must share: Request.ApplicationPath is evil! Request.Application path should never be used. Ever. I hate it!
It’s misgivings are most commonly exposed when concatenating strings to the end of it to create a URL of some sort.
sURL = Request.ApplicationPath & “/someDirectory/somePage.aspx”
This is evil. Neither will work in all situations due to the method’s inconsistency with trailing slashes.
If the application root is in a sub-directory, say “http://server/myRoot/index.aspx”, then the appPath is “/myRoot”. Note: there is no slash at the end, and the above sURL gets a value of “/myRoot/someDirectory/somePage.aspx”.
If the application root is not in a sub-directory, say “http://server/index.aspx”, then the appPath is “/”. Note: there is a slash at the end, and the above sURL gets a value or “//someDirectory/somePage.aspx”. In this case, rather than requesting
“http://server/someDirectory/somePage.aspx”, wonderful Internet Explorer requests “http://somedirectory/somePage.aspx”. (I don’t fault IE for this. I commend it. It is actually one of the few cases where IE doesn’t kludge together a band-aid for Developer mistakes.)
So, don’t use Request.ApplicationPath. Ever. With no exception. You could make a method, perhaps MyUtilities.ApplicationPath, that checks to see if the return contains a trailing ‘/’, and if it does, give it the axe. This will turn your domain-root appPath to an empty string. Use your new method rather than Request.ApplicationPath, and all will be well with the world. But, don’t do it! Don’t make a new method. That just continues the evilness.
Use Page.ResolveURL(”~/someDirectory/somePage.aspx”) or the counterpart Control.ResolveURL if you want it to be relative to the control’s location. This is the only scenario you should use. ApplicationPath is evil!
In yet another post on the Xbox 360 and associated games and accessories, I am excited about the upcoming game lineup for Xbox Live Arcade. Contra has to be one of the coolest video games in the history of video games. I lost weeks of my life to that game. In addition, Frogger, Galaga, Dig Dug, Pacman, Defender, Sonic, and Street Fighter have all been announced. I’m going to be glued to my television, with nostalgia oozing out of my pores, once these things hit XBLA.
It is a bit old news by now, but this is all from E3. You can read all about it on microsoft.com.
Everyone is always seeking the old cliché, “a bigger piece of the pie.” I propose a new cliché, penned by a colleague, Dennis Burton: “Make the pie bigger.”
In my experiences and interactions with other people, when someone gets a bigger piece of the pie it is usually at the expense of the person that used to have that portion. A simple Google for “bigger piece of the pie” returns a slew of articles about somebody who is miffed because their buddy is getting a larger percentage that they are, or the buddy is miffed because somebody stole their piece. I say, “Make the pie bigger.” When the pie gets bigger, so does your piece of it.
Our company has a revenue sharing bonus at the end of every year. Anyone who has been with the company for three years evenly splits up 1% of the total revenue for the year. For 2006, roughly 20 people will be eligible for that bonus. Hypothetically, let’s say we made $10m in total revenue this year; that means I get a nice check in January for $5,000.
$10m x 1% / 20 people = $5,000.00/person
I could just seek a bigger piece of the pie, off Dennis, and I would get another $263! However, depending on what I did, Dennis is miffed because he lost his job or his wife his miffed because Dennis is dead.
$10m x 1% / 19 people = $5,263.16/person
But, what if I instead try to make the pie bigger? Let’s say some recruiter at “XYZ Placement Services” called me up trying to give me a job, and I refer the head-hunter to our head recruiting guy. Soon, we have a new Corporate-to-Corporate deal with “XYZ Placement Services,” helping them fill job openings, and suddenly we are an $11m company. I gross another $500, which is $237 more than if I off’ed Dennis. Dennis, his wife, and the other 18 eligible people are happy because they also gross another $500, and to top it all off, my boss is thrilled because I just brought in another cool million, so he gives me a raise!
$11m x 1% / 20 people = $5,500.00/person
So, do not be concerned with getting a bigger piece of the pie. Change your focus to making the pie bigger; it will make everyone else happy, too, and you might just get a raise in the end. And, if you are the boss, provide incentives for making the pie bigger, like revenue or profit sharing bonuses; you will look better, too, when your team is contributing to the bottom-line of the company.
If you are new to testing, are looking for some experience in testing, or just want to have fun breaking things, check out the WordPress Bug Hunt on 5 July 2006. The WordPress clan is holding a Bug Hunt against versions 2.0.4 and 2.1 in true “fixing them as fast as we can break them” style, as volunteer coders will be jumping on the bugs as fast as you can get them logged. These guys would truly appreciate any help you can supply, and you can have some fun unleashing all of those crazy testing / breaking / hacking tactics that sit in your closet.
WordPress is what runs this site, so your assistance ultimately helps me out, too.
Last weekend was the wife’s birthday. She hates having 14 different remotes to control the entertainment center; none of the “universal” remotes that came with any single component are really universal. The Comcast PVR universal remote cannot change inputs on the receiver. The receiver’s universal remote cannot access the PVR functionality of the Comcast box. So, for her birthday I got her a Logitech Harmony Advanced Universal Remote for Xbox 360. She loved it—or at least, the idea—but it sucked, so we returned it the same day.
I have heard great things about the Harmony remotes. The Harmony 360 is just another choice in the product line, with a few modifications:
- It controls the Xbox 360, out of the box
- It contains Y, X, A, B buttons to ease use of the Xbox via the remote
The Harmony 360 is nearly identical to the Logitech Harmony 550, except for different colored display (green vs. blue), different color casing (Xbox White vs. Black / Grey), and a few button changes (Y, X, A, B replace the Info / Guide buttons, though Y is sub-labeled ‘Guide’ and B is sub-labeled ‘Info’).
This is, or was, my first experience with the Harmony remotes. I am not a fan of this remote. Most of my distaste lies from the programming / editing software for the remote that is installed to your computer.
The interface is unbelievably slow After all, performance is important to me. The installed application (not a browser application) would regularly take 5+ seconds to switch between screens.
The “future proof” codes were incorrect
For my A/V Receiver, my Comcast PVR cable box, and for my TV, the codes were incorrect. Though it identified my receiver, a brand new Panasonic SA-XR57 released only a month ago, it didn’t even know the receiver had a DVR input. As the only other component-video-equipped input on my XR57 besides TV, I use it for my Xbox. The problem here is that the software forces you to choose an input for the Activities macros, after which you can specify additional custom commands. My “Play Xbox” activity macro included ‘Turn on the Receiver’, ‘Set the Receiver to TV Input’, then a custom ‘Set the Receiver to CustomInputDVRCommand’. A kludge. A hack. I’m not a fan.
The “smart help” wasn’t so smart The remote comes complete with a Smart Help feature via a Help button right on the remote that assists you when things go wrong. Because of my incorrect codes, the remote would do things wrong, but the Help would retry in an infinite loop. “Is your TV on?” No. [Sends IR command] “Did this fix the problem?” No. “Is your TV on?” No. [Sends same IR command] “Did this fix the problem?” No. “Is your TV on?” … It is quite annoying.
The remote went back into the box after 2 or 3 hours of trying to get it set up correctly. It was more hassle than the 14 other remotes. It was not worth $129.99. I am just going to save some cash, and pony up for a Pronto TSU7000. Touch screen, configure my own button layout using my own bitmaps (for the UI side of me), more programmable interface (for my Developer side of me), and a lot more control over how I want my remote to be.
The folks over at SvN found this gem. In another case of “Let’s all point and laugh” or “Don’t be that guy,” I direct you to Usability.gov, courtesy of the U.S. Department of Health and Human Services. Note the side-nav article on “Navigation: Left is Best.” Note how the navigation is on the right side.
Hanlon’s Razor. “Never ascribe to malice, that which can be explained by incompetence.”
|