Tuesday, June 15, 2004

A good friend of mine does custom wood and iron work.  This guy is a true craftsman, and he's now following his passion full-time.  He came by the house a couple of weeks ago and showed me a wooden case he had made for his Palm, simply because he was tired of the ones on the market.  My jaw hit the floor.  I immediately asked him to make me a case for my Pocket PC.  Take a look: http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=5705021663

Everyone that has seen it has been amazed and said, “He should sell these!”  I asked another friend of mine to put it up on eBay to see what it might sell for.  If you know of anyone that might be interested... please pass the link along!

Update: The eBay bid has long passed.  Maybe I'll post pictures of it on this site later.

Tuesday, June 15, 2004 11:46:00 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  | 
 Friday, June 11, 2004

I just discovered CodeSmith.  Regardless of the what type of development you do -- be it C#, VB.NET, ASP.NET, WinForms, SQL, ASP or even VB4, for crying out loud -- you must have this tool.

Some of you might ask, “Where have you been?!  I've been using this tool for [some_unbelievably_long_period_of_time]!!!”  Sure, I heard about it a long time ago.  I guess I was just “too busy” to see what it was really all about. 

WHY, OH WHY DIDN'T I DOWNLOAD CODESMITH SOONER?????

I never much cared for code generation tools.  Usually you have to conform to someone else's idea of what a stored procedure, data class, business class, etc. should look like.  CodeSmith is so much more than a code generation tool.  If you can create a template for it, this sucker will crank it out.  I can see now how I could automatically generate 90% of my stored procedures, data and business access layers, exactly the way I want.

I'm sitting here kicking myself, HARD, thinking about all the hours and hours of mind-numbing cut & paste / search & replace I could have saved myself over the last year using this tool.  Oh, well... at least most of it was billable hours...

Friday, June 11, 2004 12:40:00 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  | 
 Thursday, June 10, 2004

<primal_scream>WHY DO THESE THINGS HAPPEN?!?!</primal_scream>

I've been fighting with Microsoft Exchange Server 2003 all morning.  This week I have tasked myself with moving our Exchange to a new server.  I moved the mailboxes earlier this week, and everything has been working just fine.  This morning, I decided to cut loose the old server.  Let me give you a piece of advice.

NEVER, UNDER ANY CIRCUMSTANCES, EVEN THINK ABOUT DELETING A SERVER USING THE EXCHANGE SYSTEM MANAGER.

It's my fault, I know.  My inner system admin instincts fired at the last second, "Don't do it, boy! I'll get the blame for it!"*  But, it was too late.  The damage was done.  Now my Active Directory is in some kind of limbo where it thinks the old server is still an Exchange server and everyone's Outlook is failing to connect – despite the fact that everyone's mailboxes are on the new server!

One of the problems, I've discovered, is that the new server needed to be configured as the Master under the Routing Group Members.  However, the Information Store and related services are failing to start when the server reboots.  I was successful in starting the services manually, so our e-mail is currently back up.  I'm not confident that the services will automatically restart the next time we need to reboot the server...

From what I've read, what I did actually solves problems in some cases.  My decision wasn't entirely wrong.  Cie la vie, I suppose...

For future reference, the proper way of removing an Exchange 2003 server from your domain is to uninstall Exchange.  DUH.


* Foghorn Leghorn

 

Thursday, June 10, 2004 9:23:00 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Sunday, June 06, 2004

My friend and former coworker Joe Audette has posted an article on setting up a development environment for Mono.  Joe has worked primarily with Microsoft technology over the last several years, and has only recently begun his descent into the Linux domain.  As he completes this series of articles, I'm sure he will provide many bits of wisdom to anyone who wishes to make the same journey.

Setting Up a Development Environment for mono - Part 1 Choosing and Installing a GNU/Linux Distro

Sunday, June 06, 2004 1:57:00 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Saturday, June 05, 2004
My good friend and former coworker, Josh Evitt, finally caved in and started a blog.  Welcome, Josh!
Saturday, June 05, 2004 8:49:00 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  | 
 Friday, June 04, 2004

This is mostly for my own reference, but here is a series of interesting articles on SQL Reporting Services.  My company currently uses and recommends Cognos, which is used in comparison in these articles.  I've got a project coming up that I will probably use Reporting Services for.  Anyone care to share their experiences?

MSSQL Server 2000 Reporting Services: A New Paradigm for Enterprise Reporting

The Authoring Phase: Overview Part I

The Authoring Phase: Overview Part II

Managing Reporting Services: Data Connections and Uploads

Managing Reporting Services: Report Execution and Standard Subscriptions

I also ordered Professional SQL Server Reporting Services.  I'll post a review of my discoveries over the next few weeks...

Friday, June 04, 2004 12:12:00 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Friday, May 21, 2004

Many developers use Panels to programmatically show and hide different sections of a page, such as for a multi-step wizard interface or different areas of administration. Here is a series of overloaded methods I came up with for making it easier to show and hide Panels on a page.  You'll notice that some of the overloads include a parent control, for cases where you need to show/hide a Panel inside another Panel or PlaceHolder.

1  #region private void ShowPanel(...)   
2
3  private void HideAllPanels(Control parent)
4  {
5   foreach (Control c in parent.Controls)
6   {
7    if (c is Panel)
8    {
9     c.Visible = false;
10    }
11   }
12  }
13
14  private void ShowPanel(Panel showPanel)
15  {
16   ShowPanel(showPanel, this);
17  }
18
19  private void ShowPanel(Panel showPanel, Control parent)
20  {
21   foreach(Control c in parent.Controls)
22   {
23    if (c is Panel)
24    {
25     c.Visible = (c == showPanel);
26    }
27   }
28
29  }
30
31  private void ShowPanel(string panelID)
32  {
33   ShowPanel(panelID, this);
34  }
35
36  private void ShowPanel(string panelID, Control parent)
37  {
38   Panel p = (Panel) parent.FindControl(panelID);
39   ShowPanel(p, parent);
40  }
41  #endregion
Friday, May 21, 2004 2:16:00 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 

I sure wish I could afford one of these!

http://www.poetictech.com

http://www.mypce.com

Friday, May 21, 2004 11:54:00 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [3]  | 
 Wednesday, May 19, 2004

Why haven't I blogged more?

I've been asking myself that question the last couple of weeks.  I had such great aspirations when I created this Web site and my own Blog engine.  I could say that I've been too busy.  Yes, I have been very busy, but, I think that is a cop out.  Just how much time and effort does it really take to make an entry?

No, I think the real issue is I haven't decided yet who my audience is.  I don't have someone, real or fictional, that I imagine to be my reader.  I think it would be much easier and more natural, if I could imagine I was writing an email to a good friend.

Once I discover who my reader is, then I think I'll have a story to tell.

Wednesday, May 19, 2004 7:11:00 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [4]  |