Tuesday, January 24, 2006
A minor release, but looks like some major improvements, such as a new SQL Server 2005 provider that takes advantage of some new features for better performance.

I've plugged Paul Wilson's O/R Mapper before, but I don't think it would hurt to reiterate that it is a fantastic tool.  I strongly encourage you to take it for a real test run (read: complete a small but real-world application with it).  Reading the feature list and taking it for a quick spin just won't do it justice.  If you've not used an O/R mapper before, it takes a little time to adopt the right mindset.  However, I think the benefits will become very clear once you see what it is capable of.  The beauty of WilsonORMapper is in its simplicity. 

I also recommend you try Paul Welter's CodeSmith templates for WilsonORMapper.  You can point CodeSmith at your database and generate a complete set of business classes ready to handle just about everything you need to do.  I have not yet tried the new CodeSmith templates from Jason Bunting.

Full list of changes can be found on Paul's blog.

Tuesday, January 24, 2006 11:23:32 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Monday, January 23, 2006
I am very pleased to announce that www.ChristianASP.NET is now running on mojoPortal

The great news is that I now have discussion forums, which is a goal I have had for ChristianASP.NET from the beginning.  The bad news is, if you've registered for an account on this site in the past, you will need to register again.  I don't have any plans at this time to convert old user accounts.

Joe Audette and other contributors have done an outstanding job and a great service to the ASP.NET community over the last couple of years with the development of mojoPortal.  mojoPortal has been designed to run not only on Windows but also on Linux and Mac OS/X using Mono.  It features a pluggable data access layer and comes with support for MS SQL, MySQL and PostgreSQL.  Other application features include:
  • Html Content Management
  • Blogs
  • RSS Feed Aggregator
  • Event Calendar
  • Search
  • Image Gallery
  • File Manager
  • Localization
  • Skinnable Design
  • Host Multiple Sites From One Database
mojoPortal is a fantastic open-source alternative with a very bright future ahead.  I know that Joe has been hard at work to incorporate some of the latest ASP.NET 2.0 features, including updated Master Pages, Themes and skins.

Monday, January 23, 2006 12:41:41 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [3]  | 
 Friday, January 20, 2006
Why would someone offer a free service and not be getting something out of it, right? 

Truth is, I do get something out of it.  A lot, actually.  I get the pleasure of knowing that some of the web sites I host are touching lives in their church, community, and all over the world.  I get the pleasure of knowing that some are using this hosting to learn a trade that will provide income for their family.  I get the pleasure of knowing that some web sites are helping to connect friends and families around the world, including those who are missionaries.

This site also gets peoples' attention.  As a result, I've been connected to some of the greatest minds in the .NET community, both Christian and non-Christian alike.  I love it when people send me an e-mail just to let me know they visited my site, or to ask questions about ASP.NET, SQL Server, or, most importantly, faith in Christ.

My return on investment so far has been enormous, only it can't be measured in dollars ;)

Unfortunately, I'm afraid many visitors to this site might be turning away because 1) they think it's too good to be true, or 2) you get what you pay for.  I don't blame them.  I'd be skeptical, too.  If you were to ask any of my existing "customers," I think they'd say... hmm... what would they say?  I'd hope they say something to the effect of, "aw... he's all right.  Give 'em a try!"

Friday, January 20, 2006 10:37:58 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [4]  | 
About a week ago, a friend of mine pointed me to this review of WindowBlinds.  In short, WindowBlinds allows you to apply themes to your Windows, changing the look and colors of your desktop, Start Menu, window borders, buttons, and so forth.  I was intrigued and headed off to the WindowBlinds web site to download the 60-day trial.  Little did I know I was going to become consumed with downloading and trying out themes available at WinCustomize.  There are literally thousands of themes available encompassing just about anything you can imagine, including other operating systems.

My favorite so far is the Arrow theme by MikeB314.  This theme makes Windows XP look similar to the upcoming Windows Vista, including semi-transparent window borders, semi-transparent task bar, and a custom Start Menu.

I think there must be something inherently in geeks to want to tweak their machines.  Of course, I guess that holds true for just about anyone serious about their hobby or profession.  Harley-Davidson owners are well-known for customizing their bikes, guitarists can't quit collecting guitars, and Jeep owners have their slogan: "It's a Jeep thing. You wouldn't understand." 

The full version will set you back $19.95, and enables features that make some themes look even better.  It's a silly way to spend money, but for the price of a few StarBuck's you can "trick out" (what the kids are calling "customize" these days) your Windows to your heart's content.

Friday, January 20, 2006 12:12:35 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [4]  | 
 Thursday, January 19, 2006
Google finally caved in and gave its Gmail users a DELETE button.  I understand their push at getting people to archive stuff, but everybody gets a lot of e-mails they have no need for ever again.  Finally!

I admit... it took me a moment to figure it out.  I was staring at the drop-down list thinking, "Am I going blind?"

Thursday, January 19, 2006 9:28:53 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Sunday, January 15, 2006
I've always had a severe case of not-invented-here syndrome.  However, after taking a fresh look at dasBlog this weekend, I realized that there were a bunch of cool features that I was never going to get around to putting into my own blog application.  So, I decided to swallow my pride and take a serious look at converting.  Here's what I've discovered so far.
  1. dasBlog is nearly as brain-dead simple to set up as you can get
  2. 10 minutes of coding based on Scott's post and I had all my existing content imported into dasBlog
  3. dasBlog themes are extremely easy to modify and create
  4. Blog search with keyword highlighting is awesome
  5. Trackbacks, pings, comments in my RSS feed, and all the other goodies I've been missing
I've set up my old blog home page and RSS feed to automatically redirect to the new blog at http://blog.christianasp.net/.  However, if you're a subscriber, I would appreciate if you would go ahead and update your subscription to the new link.  I believe all my old blog links will continue to work here.

Sunday, January 15, 2006 11:58:02 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [5]  | 
 Tuesday, January 03, 2006
Looks like my friend Josh has made it a New Year's resolution to turn up the volume on his site The Guitar Blog.  There's been a outbreak of new posts in the last few days :) 

Anywho, if you're a geek who likes to pick-n-grin (and from my experience there's an inordinate number of geeks who are also grinnin' pickers), then get yerself subscribed to The Guitar Blog and send Josh some of your link love.  Er... whatever it is you call lots of track-back-pack-ping-ding ... just go check it out, ok?
Tuesday, January 03, 2006 10:58:00 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  | 
 Thursday, December 29, 2005
MySQL Schema Provider version 0.91 includes new support for Extended Properties CS_IsIdentity and a bug fix for GetTableData().

MySQL auto_increment doesn't work exactly like SQL Server's IDENTITY. I believe that auto_increment is equivalent to IDENTITY(1, 1). However, auto_increment behaves differently from IDENTITY when used with multi-column primary keys.  See the MySQL Reference Manual for details.

Note: I compiled this against CodeSmith version 3.1.6, so you may need 3.1.6 (or later), or recompile the provider if you are on a previous version of 3.x.

Download version 0.91
Thursday, December 29, 2005 10:19:00 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Sunday, December 25, 2005
I would like to wish you, wherever you are, a very Merry Christmas!  May God bless you and your loved ones.
There were sheepherders camping in the neighborhood. They had set night watches over their sheep. Suddenly, God's angel stood among them and God's glory blazed around them. They were terrified. The angel said, "Don't be afraid. I'm here to announce a great and joyful event that is meant for everybody, worldwide: A Savior has just been born in David's town, a Savior who is Messiah and Master. This is what you're to look for: a baby wrapped in a blanket and lying in a manger."

At once the angel was joined by a huge angelic choir singing God's praises:
Glory to God in the heavenly heights,
Peace to all men and women on earth who please him.
As the angel choir withdrew into heaven, the sheepherders talked it over. "Let's get over to Bethlehem as fast as we can and see for ourselves what God has revealed to us." They left, running, and found Mary and Joseph, and the baby lying in the manger. Seeing was believing. They told everyone they met what the angels had said about this child. All who heard the sheepherders were impressed.

Mary kept all these things to herself, holding them dear, deep within herself. The sheepherders returned and let loose, glorifying and praising God for everything they had heard and seen. It turned out exactly the way they'd been told!

-- Luke 2:8-20, The Message
Sunday, December 25, 2005 10:45:00 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Sunday, November 27, 2005
While recuperating from massive quantities of turkey and trimmings, I began work on a CodeSmith custom schema provider for MySQL 5.0

As Josh frequently says, “Nerd alert! Nerd alert!”

The journey has been quite a learning experience so far.  Creating a custom schema provider requires that you create a class that implements the IDbSchemaProvider interface.  This interface exposes a couple of properties and several methods required to query definitions for all tables, views, stored procedures, keys, indexes, and so forth.  Since I’m targeting MySQL 5.0, I’m using the new INFORMATION_SCHEMA support wherever possible.  The provider also depends on the latest MySQL Connector/Net.

Download ChristianASPNet.MySQLSchemaProvider version 0.90

Instructions:
  • Make sure you have MySQL Connector/Net 1.0.7 or later installed
  • Make sure CodeSmith is not running
  • Extract and copy the ChristianASPNet.MySQLSchemaProvider.dll assembly to /Program Files/CodeSmith/v3.0/SchemaProviders (or wherever you have CodeSmith installed)
The next time you run CodeSmith and create or modify a data source, MySQLSchemaProvider should now show up in the list of available Provider Types.

UPDATE (12/23/05):
Apparently you will need CodeSmith version 3.1.4 or later to use the assembly in the download.  You may be able to use a previous version of CodeSmith 3.xx if you compile the source yourself.  Also, be sure to use the following format for your MySQL provider connection string.

Server=localhost;Port=3306;Database=databaseName;Uid=userName;Pwd=userPassword

UPDATE (12/29/05): Download the latest version 0.91.

For more nerdy details, read on...

I’ve also included a simple SchemaTest.cst template that I created as I was writing the custom provider.  It doesn’t do anything special or even demonstrate best practices.  It’s just an ugly test harness. I include it in case you are interested in having a quick way to query the objects in your MySQL database.

There are a few methods I have not been able to implement (yet).  GetCommandParameters() returns parameter definitions for a given stored procedure.  MySQL 5.0 INFORMATION_SCHEMA does not support the PARAMETERS table at this time.  I tried to use MySQL Connector/Net’s MySqlCommandBuilder.DeriveParameters() method, which is supposed to work in version 1.0.7, but threw a NULL reference exception in my testing.

GetCommandResultSchemas() returns the schema of the result sets that are output from a given stored procedure.  However, if the stored procedure requires parameters, then we’re back to the previous issue.

I also chose not to implement GetExtendedProperties(), since I don’t yet know what would be relevant to a MySQL developer.  I am a MySQL newbie, after all.

Happy templating!
Sunday, November 27, 2005 11:50:00 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  |