January 2008 Blog Posts

Wow, Dell is Fast

My mother-in-law and a friend both wanted new machines for home.  I started monitoring GotApex.com for deals and I found one that I liked this past Saturday.  I placed the order a little after 9pm Saturday night, and the order was immediately acknowledged at "26 Jan 2008 21:18:32 -0600". Everything arrived today, around 1pm.  That means they had them in my hands less than 88 hours after I ordered them.  And I just went with free, standard shipping.  Pretty amazing. Technorati Tags: Dell

posted @ Wednesday, January 30, 2008 3:12 PM | Feedback (0)

An even faster enhancement

Well, I just broke my record again I think. It's been 17 minutes since I finished the last enhancement.  Within this 17 minutes, I blogged about my previous enhancement and then completed a new enhancement. There's a 'Submit Resume' link next to each job's position number now.  When you click on that, it passes the position number to the Submit Resume page and it pre-fills the message body of the form with a statement that the person is interested in the noted position number. DotNetNuke made this really easy to do, with the following...

posted @ Wednesday, January 30, 2008 12:24 AM | Feedback (0)

Fastest Enhancement Ever!

I think I just executed the fastest enhancement ever!  Here's my VPN status window as evidence: During this 15:30 connectivity, I added support for specifying a Country on job postings on the DotNetNuke project I worked on this past weekend.  Here were the steps involved: SVN Update Edit the DB schema to provide a CountryCode column, defaulting to US Create an Enum for CountryCode, with descriptions for the 3 countries that needed to be in the list Update the Fetch stored procedure to...

posted @ Wednesday, January 30, 2008 12:08 AM | Feedback (0)

MVC and MVP Validation

I started a thread on Hanselforum regarding MVC and MVP validation.  Scott responded and I've added another post.  We're discussing where validation should be done in the MVC framework.  Here's what I wrote up as my latest post: It seems like the Model should "own" validation, but for usability, the View must be able to apply it. Ultimately, I think validation needs to be applied at the time of entry as well as at the time of persistence. I don't like self-servicing models (that can persist themselves), and I like being able to validate models in different...

posted @ Tuesday, January 29, 2008 9:32 AM | Feedback (0)

DotNetNuke: Project Completed

I just wrapped up my first DotNetNuke project.  Well, I completed the initial development anyway.  I'm sure we'll need to tweak the skin a little and the client may want some other adjustments... but the functionality is done. I downloaded DNN for the first time Friday night around 10pm.  And at roughly 11am this morning, 37 hours later, the project is complete.  Now, to be fair, I worked 27.25 of those 37 hours.  And I had done a few days' reading before I downloaded anything.  But for start-to-finish in a weekend, I'm happy. I am satisfied with...

posted @ Sunday, January 27, 2008 11:09 AM | Feedback (4)

Enum List DropDown Control

I've been wanting to try this concept out for awhile, and I finally had a reasonable opportunity.  The idea was to slap a System.ComponentModel.Description attribute onto each field of an Enum, and then bind a dropdown list directly to the Enum. I got it working and the code is pretty concise.  Please excuse the fact that I'm working in VB for this one; it's my DotNetNuke project, and I was already working in VB to edit some modules.  The code would be even prettier in C# I imagine. First, let's decorate an enum. Import System.ComponentModel here. ...

posted @ Sunday, January 27, 2008 5:29 AM | Feedback (7)

DotNetNuke - First Impressions

I worked with DotNetNuke for the first time tonight.  I must say, I'm really impressed!  Although I had some trouble during the install, I got past that and then jumped right into creating a portal. The page editing features are outstanding.  I was especially blown away at the hyperlink feature.  You can link to URLs, pages in the portal, files on your server, anchors in the text, or an email address.  And it's all very intuitive and automated for you. I was awed when I had to fix a typo in an anchor name after I had...

posted @ Saturday, January 26, 2008 4:31 AM | Feedback (0)

Error Installing DotNetNuke 4.8.0

I'm setting up DotNetNuke for a project and I got an error trying to install the database. Installing Database - Version 4.4.0...FAILURE 400 - Thread was being aborted. I couldn't find any help anywhere.  I think I figured it out though.  I was using the custom installation option and I'd get the error after what I think was about 3 minutes.  I suspect that IIS was terminating the thread because the request had been running too long. I didn't actually need to change any of the options for the custom installation, so I...

posted @ Friday, January 25, 2008 11:56 PM | Feedback (4)

Never-ending video card woes

I gave up on the ATI cards.  I went back to the GeForce 6200LE PCIe card that I bought for my XP machine.  This gives me dual monitor using the DVI-I and the VGA ports.  Then I bought a GeForce 6200OC PCI card to get to 3 (or 4) screens. After Dave Yardy gave me the clue about multi-monitor support in Vista, it looked like the PCI/PCI combination would not work.  And PCIe/PCI only works if the 2 cards use the same WDDM driver.  I was hopeful that 2 GeForce 6200 cards would run the same driver and I'd...

posted @ Friday, January 25, 2008 7:20 PM | Feedback (0)

Working for the man

Rob Eberhardt's Corporate-vs-Consultant post has prompted me to talk about my experience with self-employment vs. employment. I did the self-employment thing from 1999 to 2003.  I was single during most of that time, and had no kids.  Then I came to work for Business Integration Group.  BIG was at around 10-11 people when I joined and now we're a little over 40.  I'm now married with 2 kids. I can't imagine going back to self-employment.  I worked like 50-60 hours on a good week, 100+ hours on a busy week.  The pay was so inconsistent that...

posted @ Friday, January 25, 2008 6:48 PM | Feedback (3)

Copilot is now free on weekends

Joel posted that Copilot is now free on weekends.  He's not kidding and there's no catch. I haven't used this tool yet, but I'm sure I will find a reason to now that it's free on the weekends.  This is when I'd most likely be helping someone with a problem anyway.

posted @ Friday, January 25, 2008 4:45 PM | Feedback (0)

Business Web Applications and Porn Sites

Check out David Yardy's post that shows a chat we had about Silverlight. Technorati Tags: Silverlight

posted @ Friday, January 25, 2008 2:59 PM | Feedback (2)

How Subversion just saved me a day's work

Over time, I've found that I use Subversion in more and more ways.  Slapping 'My Documents' into a repository was cool; but then putting my IM chat logs in a repository was even better.  That let me merge chat logs from work and home and use Google Desktop at work to find chats that occurred at home.  And one of my other non-conventional uses of Subversion saved me a day's work today. Aside We were having a problem with AQdevTeam that I posted about here.  Kate from AutomatedQA actually commented here that a new version...

posted @ Friday, January 25, 2008 1:58 PM | Feedback (0)

ViewData seems too constraining

I worked more last night on my ASP.NET MVC project.  Second time sitting down to work on it.  I spent the evening dealing with ViewData, trying to find the best way to wrap everything the UI needs into a nice ViewData object.  The night didn't end well. As I mentioned, I'm implementing a wizard.  The user will select one or more products, and then they will be prompted with additional steps for each product selected.  I wanted the View to be able to do something like this: ...

posted @ Thursday, January 24, 2008 10:06 PM | Feedback (1)

SQL Server JOIN conditions

Every time I write a SQL statement that has a JOIN like this... 1: SELECT * 2: FROM Products 3: INNER JOIN Categories ON Categories.category_id = Products.category_id I wonder why I can't just write it like this... 1: SELECT * 2:...

posted @ Thursday, January 24, 2008 12:15 AM | Feedback (0)

SQL Server Enhancement Idea - Inactive records

About a year ago, I had an idea for a SQL Server enhancement that I never wrote about.  I crafted a few sample queries that would utilize the feature, and I shared them with some colleagues, but I never wrote an article about it.  Needless to say, it's been in the back of my head ever since, as an "unfinished task." One problem that almost all of us face is dealing with inactive database records.  There are dozens of approaches out there, but a few are becoming pretty standard.  Personally, I've ended up using an 'IsActive' column on tables.  I noticed...

posted @ Thursday, January 24, 2008 12:07 AM | Feedback (2)

Extended MVP Pattern - Article Recap

Over the past few months, I posted several times about my extended MVP Pattern.  Since this was an ill-planned series of posts, I wanted to post a list of the articles involved. Scott Hanselman's post showing off the ASP.NET MVC framework triggered me to finally write about what I had created. Here's the list of my articles though: An Extended MVP Pattern (MVP Validation) MVC/MVP Validation - How's it done? MVC vs. MVP Criticism of my Extended MVP Pattern Response to Criticism...

posted @ Wednesday, January 23, 2008 10:42 PM | Feedback (0)

Windows Live Writer: Insert Horizontal Rule

I've been inserting a few <hr /> tags into posts recently.  In order to do this, I've had to switch to HTML view and move the cursor to the right spot, and type the tag.  Then switch back and reset focus.  Grr! Well, easily enough, I've created a Windows Live Writer Plug-in to do this.  Rick Strahl had the winning post that guided me through it. 1: using WindowsLive.Writer.Api; 2: using System.Windows.Forms; ...

posted @ Wednesday, January 23, 2008 8:03 PM | Feedback (0)

Recent thoughts relative to Support

While dealing with customer support after a recent release that contained a few bugs, I've found myself having the following two thoughts very often. The word "work" is part of the word "workaround" for a reason.  As soon as I find a "fun-around" for any issue, I'll let you know.  In the meantime, please let me emphasize the "work" in this workaround. If something seems to be perfectly logical, it's probably not what the user was expecting.

posted @ Wednesday, January 23, 2008 6:55 PM | Feedback (1)

The workaround that doesn't work

Please excuse the fact that I have to use general terms and vague references here.  I hope that this story is entertaining despite the removed specifics. Before a recent release, our software allowed the user to do X.  There was a bug reported that the user shouldn't be able to do X.  We fixed the bug as part of the aforementioned release.  Then all of a sudden our users were freaking out because they could no longer do X.  We now have conflicting requirements. Don't allow user to do X ...

posted @ Wednesday, January 23, 2008 6:51 PM | Feedback (0)

Tiny little SQL trick with the IN clause

I don't know why I'd never used the IN clause in this manner before, but it just came to mind... I was writing an ad-hoc query against the sitemap table.  I needed to find any nodes where either the node label or node heading was "Course Section Mark Entry".  This felt clever: 1: SELECT * 2: FROM NavigationSitemap 3: WHERE ...

posted @ Wednesday, January 23, 2008 2:22 PM | Feedback (0)

Solve the 80% problem

David Yardy's post about project post-mortems reminded me of something I learned awhile back.  Here's the premise of David's post: Before and after developing software it is often to have the similar thoughts regarding the project. Before - "This project should be easy and quick." After - "Why was the project so complex and take so long." He then listed 5 excuses that are often used during a project post-mortem: ...

posted @ Tuesday, January 22, 2008 6:28 PM | Feedback (0)

Ditching the DVR

I mentioned in my post about 24 that we've ditched the DVR.  Any time I mention this to people in conversation, I get the immediate, "WHAT!  You were the first person I knew to get the DVR!  How could you get rid of it?"  So I figured I should provide my response here too, with a little background as well. I was quite possibly the first consumer in Cincinnati to get a Time Warner DVR.  I read about TW offering the DVR service in other cities/states, like NY, in October 2002.  I later learned that they were rolling it...

posted @ Saturday, January 19, 2008 1:53 AM | Feedback (0)

Fox's Unaired 24 Pilot from 1994

I love Fox's 24.  It looks like we're not going to have a season 7 in 2008 as had been planned, because of the writer's strike.  But to quench our thirst, Fox has released a clip from the previously unaired pilot for 24. If you're a 24 fan, go watch the clip.  However be warned that it was shot back in 1994, so the technology is quite a bit different from what we're used to.  It's probably a good thing Fox waited until technology had improved before they premiered the show. The lack of 24 this season is...

posted @ Saturday, January 19, 2008 1:03 AM | Feedback (0)

ASP.NET MVC - First Use

I've been using the ASP.NET MVC extensions tonight; this is the first time I've played with it.  My initial reaction is a bit mixed. The first thing that I got irritated by was that I cannot use any of the ASP.NET validator controls.  I was creating a login form with email address and password, and I wanted to require both of the fields.  With MVC, I can't just slap a validator on and call it a day; I actually have to write the validation logic myself.  Oh, and I can't just use a ValidationSummary control either--I have to render...

posted @ Thursday, January 17, 2008 2:32 AM | Feedback (2)

TortoiseSVN Global Ignores

I have configured global ignores for TortoiseSVN.  This helps me omit the bin and obj folders as well as other user-level files.  There's no sense in putting those into the code trunk. Then enter: bin obj *.suo *.user Release Debug Technorati Tags: TortoiseSVN,Subversion

posted @ Tuesday, January 15, 2008 3:37 PM | Feedback (0)

Extended MVP Pattern - Domain Validation

When I wrote my Extended MVP Pattern article back in November, it got some criticism.  Specifically: Each 'thing' in the model should include it's own business rules, validation rules, security, and persistance [sic] rules. I argued that I've seen times with having all of the validation (and all other logic) in the domain layer doesn't pan out.  However, what I didn't talk about in detail was that my extended MVP pattern actually satisfies the desire to put the validation logic into the domain layer. When I started creating my pattern, having the validation...

posted @ Tuesday, January 15, 2008 1:20 AM | Feedback (16)

AQdevTeam - Crash Editing Permissions

We use AQdevTeam for internal task tracking as well as for Quality Assurance Problem Report (QAPR) items.  Not long ago, we started getting an error whenever we try to edit item permissions. Here are the reproduction steps: Click on Administration->Permissions Select a project Click on Permissions After clicking leaving this dialog with "Don't terminate the application" selected, we get another error: I think we're pretty much hosed. Technorati Tags: AQdevTeam

posted @ Monday, January 14, 2008 5:45 PM | Feedback (1)

Larry's Any Text File Indexer

For you Google Desktop users out there (it should be all of you), be sure to grab Larry's Any Text File Indexer.  This allows me to search code files quickly when VS.NET isn't running. Technorati Tags: Google Desktop

posted @ Monday, January 14, 2008 5:41 PM | Feedback (5)

Multi-Monitor Support - A New Clue

My good friend David Yardy posted something about MaxiVista and Windows Vista.  He had a link to a support article from Microsoft discussing multiple monitor support in Windows Vista. This support article has the following information:   Two, three, or more monitors: •Graphics adapter A with two outputs in an x16 PCIe slot, plus another graphics adapter B with one or more outputs in another x16 PCIe slot. Both A and B use the same WDDM driver. •Graphics adapter A with two outputs in...

posted @ Saturday, January 12, 2008 6:59 PM | Feedback (0)

Whistle while you work

For several months, I've been listening to a custom station on Pandora.  I use OpenPandora too, except I've downloaded the code for OpenPandora and made some changes.  Maybe one day I'll email the project owner and see about getting my changes merged in. But anyway... for years I listened to CDs that I had ripped.  But my collection grew old.  Then I tried listening to WEBN online, but the commercials were absurd and annoying. Pandora is simply amazing.  If you've never tried it, give it a 2-5 day trial and you'll probably never listen to anything else from...

posted @ Wednesday, January 9, 2008 1:04 AM | Feedback (1)

Print to PDF on Vista (x64)

The tools that I've previously used for printing to PDF haven't been working for me in Vista.  Upon a quick Google search, I found this article that links to CutePDF.  I had CutePDF installed and working in Vista x64 in less than 2 minutes.  And it's free.  Excellent! Technorati Tags: Vista,64-bit,PDF

posted @ Wednesday, January 9, 2008 12:13 AM | Feedback (0)

Excel 2007 Conditional Formatting QuickStart

Someone was asking me how to do some simple conditional formatting in Excel.  Here's a quick demo. The data I'm using is to the right, pretty basic.  I want to highlight all cells in column A where the value is between 15 and 20. Start by selecting column A and then going to the Conditional Formatting menu in the 'Home' ribbon.  Under 'Highlight Cell Rules,' there is conveniently a 'Between' selection. That brings up a window to select the value range and define how to highlight the cells....

posted @ Tuesday, January 8, 2008 2:27 PM | Feedback (1)

Google Desktop - Search Desktop by default

I swore that Google Desktop used to provide a means for setting it to search the desktop by default, instead of the web.  Jess confirmed this for me.  He's running version 5.1.0707 and I'm running version 5.7.0712.  I guess they decided to take this feature away for some reason.  Jess found the option on the 'Display' tab of the desktop preferences.  But the option isn't there for me. I decided to jump into the registry to see if anything jumped out at me.  Sure enough, something did.  The key HKEY_CURRENT_USER\Software\Google\Google Desktop\Deskbar has REG_SZ setting for "search_type."  The value was...

posted @ Tuesday, January 8, 2008 9:47 AM | Feedback (4)

My approach to code, according to a co-worker

Someone that's been working for BIG for a long time has recently joined my project.  She and I have overlapped a little bit here and there, but haven't officially worked together on a project before. She just told me that she likes my approach to code, but I responded that I wasn't sure I had a single approach.  She then came back with this: "An impulse towards perfection tempered by realism and experience." I take that as a huge compliment.  We'll see if she still thinks that after working on our million-line monster for awhile!

posted @ Monday, January 7, 2008 12:59 PM | Feedback (0)

(not) Chasing the Shiny new Rock

I sent the following message to my development team today: All, Many have asked me over the years why we don’t switch to .NET 2.0.  Well, now 3.0 and 3.5 are out.  Today, a CodingHorror blog post references a quote that sums it up quite nicely: Users don't care whether you use J2EE, Cobol, or a pair of magic rocks. They want their credit card authorization to process correctly and their inventory reports to print. You help them discover what they really need and jointly imagine a system. ...

posted @ Monday, January 7, 2008 11:33 AM | Feedback (1)

No wonder it didn't work

I am testing a change that I'm making for the school project.  This is a mission-critical change as it pertains to Ohio state reporting.  I executed the stored procedure that is being changed and looked at the results, and they appeared to be incorrect. I undid all of my changes and ran the procedure again.  Sure enough, the new version is missing some data that should still be coming out.  I re-applied my changes using the redo command in VS.NET.  The fact that there were 666 actions made as part of the change is a bad sign, and I...

posted @ Friday, January 4, 2008 9:28 PM | Feedback (0)

Making IntelliSense work inside PlaceHolder

I'm doing development on my new machine for the first time today.  Our project is running .NET 1.1, which means we must use Visual Studio.NET 2003.  Less than 2 minutes into my coding, I realized I forgot to make an imperative fix to Studio. Out of the box, VS.NET 2003 doesn't provide good IntelliSense inside PlaceHolder controls.  I don't know why this was overlooked and never fixed, but oh well.  The fix is easy though: Open "C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Common7\Packages\schemas\xml\asp.xsd" in Notepad++ ...

posted @ Friday, January 4, 2008 8:41 PM | Feedback (0)

Video Card Update (still unresolved)

ATI wrote: These are only troubleshooting steps to assist to try and resolve the issue at hand. There are two possibilities here: 1) one of the video cards; 2) the system. Since you state that the cards work fine individually, the issue could be system related. However, can you get the video cards replaced and try, do you have the same issue? I am responding with: This is a brand new Dell machine with brand new video cards (which came from Dell too). ...

posted @ Friday, January 4, 2008 4:44 PM | Feedback (0)

Notepad++ in Windows Explorer Context Menu (Vista 64-bit)

I had noticed that Notepad++ wasn't showing itself in my Windows Explorer context menu.  This was only the case on my 64-bit Vista install. Donn Felker provided a solution that made me happy again. Technorati Tags: Vista,64-bit,Notepad++

posted @ Thursday, January 3, 2008 7:58 PM | Feedback (6)

Ahh... that makes sense!

Here's the pattern of leap days.  Every 7th leap year, or 28 years, February 29th falls on a Friday.  However, because 2100 is not a leap year, this shifts the pattern.  The pattern shifts again at 2200 and 2300, but will remain steady at 2400 because 2400 is a leap year. The pattern for paydays that fall on leap day is essentially every other time that leap day falls on Friday, since paydays are every other week.  But the shifts at 2100, 2200 and 2300 affect that too.  What's not seen below is that there are actually back-to-back Friday...

posted @ Thursday, January 3, 2008 6:08 PM | Feedback (3)

The problem has been solved, but another has surfaced

2/29/2036 is a Friday; 1 have occurred in 28 years 2/29/2064 is a Friday; 2 have occurred in 56 years This is also a payday; 1 have occurred in 56 years 2/29/2092 is a Friday; 3 have occurred in 84 years 2/29/2104 is a Friday; 4 have occurred in 96 years 2/29/2132 is a Friday; 5 have occurred in 124 years This is also a payday; 2 have occurred in 124 years ...

posted @ Thursday, January 3, 2008 5:01 PM | Feedback (0)

A problem I have to solve

We get paid bi-weekly on Fridays.  For those of you on bi-weekly paydays, you know that twice a year you get a little treat where you get 3 paychecks in a single month. This year, our 3-paycheck months fall in February and August.  The fact that February is a 3-paycheck month is interesting to me as this is only possible because 2008 is a leap year and the 29th happens to be on a Friday and it falls on our pay cycle too. It's been bugging me to figure out how often this can happen.  Actually, I want...

posted @ Thursday, January 3, 2008 4:45 PM | Feedback (0)

Video Card Woes, Situation Worsening

ATI responded back to me pretty quickly.  However, the message was useless, stating simply to use the latest drivers, which of course I was.  I responded again and just restated the same problems as follows: I have installed the latest drivers but I'm still not having any luck. With a single card in place, everything works wonderfully. But when I put the 2nd card in (they are identical cards), the quality of the display drops significantly to where it's unusable. Moving windows around does not force a redraw, popup windows are not displayed correctly, etc. ...

posted @ Wednesday, January 2, 2008 10:45 PM | Feedback (1)

Video Card Woes, continued

Well, I wrote VisionTek on December 21, and I haven't heard back from them yet. So, I just sent the same message to ATI directly.  We'll see if they have the courtesy to respond. The box for the card touts the ability to run 2 of the cards and control up to 4 monitors.  I am thinking that in order to do that effectively, I'll need to be running off the DVI ports only and not one of the VGA ports.  This would require a DVI-I to dual VGA splitter Y cable.  I hunted around a bit and...

posted @ Wednesday, January 2, 2008 9:02 AM | Feedback (0)