<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-17407535</id><updated>2011-07-19T16:20:30.834-05:00</updated><category term='table variable'/><category term='Python'/><category term='hack'/><category term='Visual Studio'/><category term='Help'/><category term='javascript'/><category term='PDF'/><category term='Stored Procedure'/><category term='ActiveRecord'/><category term='Troubleshooting'/><category term='IMultiQuery'/><category term='SQL Server 2000'/><category term='BelongsTo'/><category term='.Net'/><category term='Generator'/><category term='Hibernate'/><category term='Logging'/><category term='Perl'/><category term='Castle'/><category term='Encryption'/><category term='mapping'/><category term='SATA Fix'/><category term='Google'/><category term='Blingo'/><category term='Code Generator'/><category term='Firefox'/><category term='Ruby'/><category term='Alias'/><category term='browser'/><category term='HTML'/><category term='GPG'/><category term='CCL'/><category term='NHibernate'/><category term='Mono'/><category term='DetachedCriteria'/><category term='Criteria'/><category term='Defensive Programming'/><category term='chess'/><category term='Regular Expression'/><category term='ORM Framework'/><category term='Data Partitioning'/><category term='Reflector'/><category term='Help Compiler'/><category term='database'/><category term='DOS'/><title type='text'>Learning by doing</title><subtitle type='html'>My experiences with computer programming, using c#, Mono, Ruby, Rails, SQL Server 2000, and MySQL.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17407535.post-9096061056330019996</id><published>2009-04-17T10:36:00.004-05:00</published><updated>2009-04-17T11:24:07.191-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CCL'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Behind the times with NHibernate 2</title><summary type='text'>I am so behind the times ... NHibernate 2.0.1 GA was released last fall and 2.1.0 Alphas are coming out.  In the mean time, Hibernate.org has been subsumed by Redhat's JBoss.   The url www.hibernate.org doesn't take you anywhere useful, and following the javascript menu to projects / services / hibernate still doesn't get you anywhere -  pure garbage.   It is clear that JBoss wants to sell you </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/9096061056330019996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=9096061056330019996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/9096061056330019996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/9096061056330019996'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2009/04/behind-times-with-nhibernate-2.html' title='Behind the times with NHibernate 2'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-6502386291656307787</id><published>2009-03-18T08:50:00.003-05:00</published><updated>2009-03-18T09:00:25.417-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DOS'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>ADDPATH NT/DOS command line script</title><summary type='text'>(Yes, We say script now instead of batch ... times are changing).Here is a stupid little batch file that I have written several times.  It adds a single argument to the path in your current command-line session (so it is not permanent).@echo offif "%1" == "" goto end_scriptset path=%path%;%1:end_script</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/6502386291656307787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=6502386291656307787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6502386291656307787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6502386291656307787'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2009/03/addpath-ntdos-command-line-script.html' title='ADDPATH NT/DOS command line script'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-4332533533946293131</id><published>2009-03-02T11:14:00.003-06:00</published><updated>2009-03-02T11:46:15.124-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Iron Languages on DLR</title><summary type='text'>The "Iron" languages that run on the .NET DLR (Dynamic Language Runtime) are making progress.  I just noticed that IronRuby has a release on RubyForge.To be honest though, I have moved to Python as my script language of choice, with Perl as the ever-present fallback.  Iron Python seems like it is coming along nicely.  Iron Python 2 can even host itself.  I can't wait for MonoDevelop or </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/4332533533946293131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=4332533533946293131' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/4332533533946293131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/4332533533946293131'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2009/03/iron-languages-on-dlr.html' title='Iron Languages on DLR'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-2319976921233156592</id><published>2009-02-19T21:03:00.005-06:00</published><updated>2009-02-19T21:30:54.244-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><title type='text'>The Castle Project will facilitate native SQL.</title><summary type='text'>I just spotted this on FishEye ... an example native SQL query.  You'll need source from SVN or a recent download from the build server - more recent than patch 5551 by mzywitza on 17 February 2009.This is very nice, allowing parameterized SQL without the hacks that I used (you can search here for some of my old blogs on the subject).</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/2319976921233156592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=2319976921233156592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/2319976921233156592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/2319976921233156592'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2009/02/castle-project-will-facilitate-native.html' title='The Castle Project will facilitate native SQL.'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-6346338362433590954</id><published>2009-01-29T10:23:00.003-06:00</published><updated>2009-01-29T11:22:57.365-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Regular Expression'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Search and Replace in Visual Studio 2005</title><summary type='text'>I usually have to look this up, so I am posting it to my blog.Visual Studio 2005 has a "Regular Expression" option on the "search and replace" dialog.  (Previous .Net editions had it as well.)  I occasionally want to rewrite several lines of text without writing a macro or wearing out my fingers.  Here's what I do ...If I have a file with several lines ofDECLARE R1  = VC WITH CONSTANT("TEST1")</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/6346338362433590954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=6346338362433590954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6346338362433590954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6346338362433590954'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2009/01/search-and-replace-in-visual-studio.html' title='Search and Replace in Visual Studio 2005'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-4949496548329072068</id><published>2008-11-25T12:10:00.001-06:00</published><updated>2008-11-25T12:10:29.044-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>PdfPoster - a simple fix for Windows</title><summary type='text'>I have tried a couple of times over the last 3 months to use PdfPoster on some Erwin documents.  Unfortunately, I am using Windows XP on my work PC.  It was clearly documented that I needed to install PyPdf 1.11 or higher, so I did easy_setup to install 1.12.  Recently, I tried "C:\test&gt;pdfposter -vvv -s 2.0 SCHEDULING.pdf scheduling_2x.pdf" ... and received a nice traceback (see below).  This </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/4949496548329072068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=4949496548329072068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/4949496548329072068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/4949496548329072068'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2008/11/pdfposter-simple-fix-for-windows.html' title='PdfPoster - a simple fix for Windows'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-3675820418391262049</id><published>2008-09-25T15:44:00.000-05:00</published><updated>2008-09-25T15:44:00.314-05:00</updated><title type='text'>Google Chrome and Iron</title><summary type='text'>I'm sure most of you have heard of Google's new WebKit based browser "Chrome".  Well, a German company has released a more privacy friendly version called "Iron", with the browser usage tracking removed.  Their site is written in German, but here is a translation thanks to Google's Language Translation tools.I haven't had a chance to try it out yet, but I'm glad someone is taking advantage of the</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/3675820418391262049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=3675820418391262049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/3675820418391262049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/3675820418391262049'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2008/09/google-chrome-and-iron.html' title='Google Chrome and Iron'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-1750490456113546047</id><published>2008-09-02T14:35:00.001-05:00</published><updated>2008-09-02T14:35:16.943-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python Turtle and Links</title><summary type='text'>I just discovered the Turtle graphics module for Python 2.5 using the Tk graphics library.  It is very "kid friendly", and it sets up a screen when you make your first function call.  This was very fun, just like when I first played with LOGO on my Commodore 64!&gt;&gt;&gt; from turtle import *&gt;&gt;&gt; clear()&gt;&gt;&gt; down()&gt;&gt;&gt; goto(66,66)&gt;&gt;&gt; for step in range(24):...     right(105)...     forward(100)...&gt;&gt;&gt; up()&gt;&gt;</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/1750490456113546047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=1750490456113546047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/1750490456113546047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/1750490456113546047'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2008/09/python-turtle-and-links.html' title='Python Turtle and Links'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-2673343279377488899</id><published>2008-08-30T22:59:00.003-05:00</published><updated>2008-08-30T23:08:22.363-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='chess'/><title type='text'>The pains of brower page refresh</title><summary type='text'>I like to play Chess sometimes, and I like the MKGI Chess Club.  It is great for guys like me who do not have time to play a complete game in one sitting.  The site uses a "postal chess" model, where I can play a move in several games, then wait for my opponent to move, or go on with my day, and check later or the next day.The site has an unfortunate quirk.  It allows you to write notes about the</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/2673343279377488899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=2673343279377488899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/2673343279377488899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/2673343279377488899'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2008/08/pains-of-brower-page-refresh.html' title='The pains of brower page refresh'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-6479626601350580713</id><published>2008-06-19T15:05:00.001-05:00</published><updated>2008-06-19T15:06:31.772-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python 2.6 beta 1 and 3.0 beta 1</title><summary type='text'>Python is sticking pretty close to their release schedule for Python 2.6 and 3.0 as documented in PEP 361.  They released Python 2.6 beta 1 and 3.0 beta 1 today.  If you&amp;apos're curious about their progress, check the 2.6 release notes.By the way, I noticed that they fixed a problem with one of the rotating log handlers - it was using a simple filename instead of the full file path when deleting </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/6479626601350580713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=6479626601350580713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6479626601350580713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6479626601350580713'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2008/06/python-26-beta-1-and-30-beta-1.html' title='Python 2.6 beta 1 and 3.0 beta 1'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-9071418324045899018</id><published>2008-03-01T13:02:00.004-06:00</published><updated>2008-06-19T13:19:45.619-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Monitoring SQL Server on the cheap</title><summary type='text'>Use WMI with Python.  Thanks to Tim Golden, Python on Win32 (I use ActiveState Python) can use COM to talk to WMI.  WMI allows you to run SQL-like queries to determine available memory, free disk space, database size, transaction log size, transaction log space available, when a database was last backed up, ... all of the good stuff.Any DBA knows that databases need free disk space and frequent </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/9071418324045899018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=9071418324045899018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/9071418324045899018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/9071418324045899018'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2008/03/monitoring-sql-server-on-cheap.html' title='Monitoring SQL Server on the cheap'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-6685688341238708429</id><published>2008-01-01T11:37:00.000-06:00</published><updated>2008-01-01T11:39:16.945-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logging'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Custom Python Logging Handler</title><summary type='text'>Python has some nice basic logging facilities, but I really wanted a rotating logger that would rotate on each execution.  I tried the obvious - just specifying class=MyModule.MyClassName, but I received a NameError exception for my trouble.After some hacking on /python25/lib/logging (a big no-no!), I did another google search and discovered that I could just import the class in my application, </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/6685688341238708429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=6685688341238708429' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6685688341238708429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6685688341238708429'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2008/01/custom-python-logging-handler.html' title='Custom Python Logging Handler'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-3950265070107151492</id><published>2007-12-13T14:12:00.003-06:00</published><updated>2008-02-19T14:03:02.535-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Perl or Python?</title><summary type='text'>Recently at work, we have been discussing the question of Perl versus Python for file copy, ftp, email and other daily, weekly or monthly automation / integration tasks.  We considered Perl because some existing tasks had already been written in it, and Perl has a reputation as the System Admin's language of choice.I took a task that needed automated and wrote it in Perl 5.8, then refined it </summary><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/3950265070107151492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/3950265070107151492'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/12/perl-or-python.html' title='Perl or Python?'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-277068903509483895</id><published>2007-11-13T14:14:00.000-06:00</published><updated>2007-11-13T14:31:24.602-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Castle'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><title type='text'>Moving to NHibernate 2.0</title><summary type='text'>NHibernate 2.0 is not even close to release, but it is shaping up nicely.  Oren Eini (His blog is called Ayende @ Rahien) has a list of interesting new features.Dario Quintana has something to say as well.  He has contributed some code to the uNHAddins for Active Record Detached Query support.The Castle development team is considering pointing to NHibernate Trunk (which will be released as 2.0 </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/277068903509483895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=277068903509483895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/277068903509483895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/277068903509483895'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/11/moving-to-nhibernate-20.html' title='Moving to NHibernate 2.0'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-992456066649657645</id><published>2007-08-30T13:49:00.000-05:00</published><updated>2007-08-30T13:57:12.320-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ORM Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Mono and ProMesh.NET</title><summary type='text'>I follow the Mono Blog aggregator, and Miguel de Icaza mentioned that a user had tested ProMesh.NET on Mono, and it ran without any changes!  That in in itself was cool, but when I took a look at ProMesh.Net, it looked like a well designed framework, perhaps comparable to MonoRail.  The framework is ORM agnostic, and the biggest weakness might be it&amp;apos;s view templates, but they have a great </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/992456066649657645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=992456066649657645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/992456066649657645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/992456066649657645'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/08/mono-and-promeshnet.html' title='Mono and ProMesh.NET'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-847284444214741946</id><published>2007-08-28T08:24:00.000-05:00</published><updated>2007-08-28T09:32:18.223-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><title type='text'>My take on Enums in SQL Server</title><summary type='text'>I am a registered user on SQL Server Central, and I read a good article there on "Enums in SQL Server".  I thought that I would quickly present my own humble solution to this problem, although I do not mean to imply that my way is better - you can decide for yourself.First, the problem to be solved is to represent a limited set of choices, where new choices would typically require a developer&amp;</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/847284444214741946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=847284444214741946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/847284444214741946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/847284444214741946'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/08/my-take-on-enums-in-sql-server.html' title='My take on Enums in SQL Server'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-3607159328127146597</id><published>2007-08-20T08:50:00.000-05:00</published><updated>2007-08-20T09:29:33.500-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Generator'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><title type='text'>Auditing a SQL Server database</title><summary type='text'>I do not believe that I have covered this before, but the Active Record Code Generator can also generate audit records for your database tables.  The template that I wrote (SqlAuditTrigger.vm)  adds records to an AuditChanges table, with a related AuditFields table containing the table and field name.  I think that this is a fairly compact solution, but I also added code to the trigger to ignore </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/3607159328127146597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=3607159328127146597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/3607159328127146597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/3607159328127146597'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/08/auditing-sql-server-database.html' title='Auditing a SQL Server database'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-4102268709826208550</id><published>2007-08-17T15:27:00.000-05:00</published><updated>2007-08-17T16:21:40.202-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Encryption'/><category scheme='http://www.blogger.com/atom/ns#' term='GPG'/><title type='text'>I love Bouncy Castle!</title><summary type='text'>Today, I needed to send some private data to another company, and I could not get FTP with SSL to authenticate over our firewall, so I had to sent an encrypted file over FTP.  The other company has a GPG public key, so I looked around for a bit on the web (yes, I googled c# gpg encrypt open source) and found a message that mentioned Bouncy Castle on the 4th or 5th page (why was it so far down the</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/4102268709826208550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=4102268709826208550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/4102268709826208550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/4102268709826208550'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/08/i-love-bouncy-castle.html' title='I love Bouncy Castle!'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-4428285475308127355</id><published>2007-08-13T16:40:00.000-05:00</published><updated>2007-08-18T10:06:44.518-05:00</updated><title type='text'>What happened to VS2005 Data Pro Power Tools?</title><summary type='text'>I was reading a blog on MSDN, with a link to some cool Power Toys for Visual Studio 2005 Team Edition for Database Professionals.  So today, I had some time to install the VS2005 TE Service Release 1 so I could grab the power toys, but the microsoft link is dead!  The developer went on a vacation (literally), so it might be a while until this gets fixed.Oh, by the way, O’Reilly Hacking Visual </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/4428285475308127355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=4428285475308127355' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/4428285475308127355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/4428285475308127355'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/08/what-happened-to-vs2005-data-pro-power.html' title='What happened to VS2005 Data Pro Power Tools?'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-5961038131782116134</id><published>2007-08-11T12:33:00.000-05:00</published><updated>2007-08-11T13:11:17.988-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Generator'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><title type='text'>NHibernate hbm xml template</title><summary type='text'>Friday, I added an NHibernate mapping.hbm.xml template.  I mainly wanted to show that the code generator can be used for other purposes than just Castle ActiveRecord, and NHibernate is an easy target.  Jim R. has requested that I add HasMany (aka ManyToOne) mapping properties and attributes.  I think this is going to push me to refactor the schema extraction code.Some of my future goals for the </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/5961038131782116134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=5961038131782116134' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/5961038131782116134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/5961038131782116134'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/08/nhibernate-hbm-xml-template.html' title='NHibernate hbm xml template'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-2883517930960191037</id><published>2007-08-08T16:36:00.001-05:00</published><updated>2007-08-08T16:42:18.386-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Generator'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><title type='text'>Improved Model generation in Code Generator</title><summary type='text'>I have improved the Inequality test in the model template, as requested by JimR.  This was another case where it worked well for me, only because I followed the convention that primary keys are named ID, and foreign keys are named SingularOfTable_ID.  I know that I should really push the Inequality test into the template, but for now, I have corrected it in the DbFieldInfo class.</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/2883517930960191037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=2883517930960191037' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/2883517930960191037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/2883517930960191037'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/08/improved-model-generation-in-code.html' title='Improved Model generation in Code Generator'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-6854044688050392478</id><published>2007-08-06T09:37:00.000-05:00</published><updated>2007-08-06T12:53:07.531-05:00</updated><title type='text'>Features of the Code Generator</title><summary type='text'>I just updated my code generator to optionally generate validation attributes.  This simple change includes App.config file entries for all check boxes, and a new checkbox for "Validation" - aka validation attibute generation.  While I was making this change, I realized that I really need to pass a CodeGenerationContext object to the DbTable, DbField and ModelGenerator classes.  The requester can</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/6854044688050392478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=6854044688050392478' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6854044688050392478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6854044688050392478'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/08/features-of-code-generator.html' title='Features of the Code Generator'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-5511529499088974382</id><published>2007-08-02T14:38:00.001-05:00</published><updated>2007-08-02T23:06:37.088-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Generator'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><title type='text'>ActiveRecord Code Generator</title><summary type='text'>Thanks to some recent interest in the community, I have made a few more changes to ActiveRecord Code Generator.  First, I added a browse button and a dialog, using some code supplied by Jim R.  I don&amp;apos;t care for the folder browser dialog, but it is built in to .Net 2, so I use it.  Second, I fixed a few bugs that crop up when a table does not match my arbitrary table and field naming scheme.</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/5511529499088974382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=5511529499088974382' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/5511529499088974382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/5511529499088974382'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/08/activerecord-code-generator.html' title='ActiveRecord Code Generator'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-8683754482202838232</id><published>2007-07-30T13:56:00.000-05:00</published><updated>2007-07-30T14:00:21.772-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Generator'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><title type='text'>Updated ActiveRecord Code Generator</title><summary type='text'>Today, I updated the ActiveRecord Code Generator a bit.  I checked in changes to use primary and foreign key details from INFORMATION_SCHEMA.  The original code used naming conventions to decide what various fields were used for - ID = Primary Key, Field_ID = Foreign Key to table Fields.  If you want to use naming conventions, let me know and I can add a setting in App.Config to allow this (along</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/8683754482202838232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=8683754482202838232' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8683754482202838232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8683754482202838232'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/07/updated-activerecord-code-generator.html' title='Updated ActiveRecord Code Generator'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-7519993502134640509</id><published>2007-07-29T19:58:00.000-05:00</published><updated>2007-07-29T20:05:03.883-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Hacking FireFox 2 Menus</title><summary type='text'>Today, I was inspired to hack the context menu in Firefox 2.0, removing "Send To" and "Send Image".  I googled for a solution, and found step-by-step directions for Firefox 1.0.  So, I started digging, and the over-all instructions were good, but I only needed to comment out the menu options in browser.xul, and not touch the javascript in browser.js.  The original instructions were a bit vague, </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/7519993502134640509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=7519993502134640509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/7519993502134640509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/7519993502134640509'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/07/hacking-firefox-2-menus.html' title='Hacking FireFox 2 Menus'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-2055892483724176897</id><published>2007-07-28T18:49:00.000-05:00</published><updated>2007-07-28T20:52:44.641-05:00</updated><title type='text'>Castle Active Record Code Generator</title><summary type='text'>I have finally released my Code Generator to Google Code as Active-Record-Gen.  What does it generate?  It generates ActiveRecord classes mainly, but I have used it to generate stored procedures and sys-admin scripts as well.  This code generator does not (yet) generate a full Windows application project or a Mono-Rail web site, but the generated code could be used in either.  In fact, with a few</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/2055892483724176897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=2055892483724176897' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/2055892483724176897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/2055892483724176897'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/07/castle-active-record-code-generator.html' title='Castle Active Record Code Generator'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_66O60Tuucmg/RqvvD9lFM9I/AAAAAAAAAAc/KU_2_jmONWQ/s72-c/AR-Gen-Complete_2007-07-28.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-6627860926457615692</id><published>2007-05-17T16:18:00.000-05:00</published><updated>2007-05-22T12:35:00.114-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stored Procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><title type='text'>Castle ActiveRecord class with stored procedures</title><summary type='text'>Update 05/22/2007: No response from the community.  I think Hammett is working on releasing a new version of Castle (It's much more than just ActiveRecord!), so I have not received any feedback on my patch.I have just posted patch AR-156 to Castle&amp;apos;s ActiveRecord project to add support for XML free mapping of insert, update and delete stored procedures to ActiveRecord classes.  This requires </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/6627860926457615692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=6627860926457615692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6627860926457615692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6627860926457615692'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/05/castle-activerecord-class-with-stored.html' title='Castle ActiveRecord class with stored procedures'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-8329657181089131121</id><published>2007-05-15T12:16:00.000-05:00</published><updated>2007-07-28T17:54:00.134-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflector'/><title type='text'>Reflector, Doubler and Unit Testing</title><summary type='text'>Update: the latest versions of Reflector and Doubler are working well together.I just noticed that Jay Flowers has released a version of the Doubler Add-In that works with the current Reflector by Lutz Roeder.   I tried installing Doubler in a sub-directory under Reflector, but it failed to load, so I had to move it into the Reflector directory.  The current version of Doubler generates test </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/8329657181089131121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=8329657181089131121' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8329657181089131121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8329657181089131121'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/05/reflector-doubler-and-unit-testing.html' title='Reflector, Doubler and Unit Testing'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-8888811468531938876</id><published>2007-05-04T10:38:00.000-05:00</published><updated>2007-05-07T13:21:45.488-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><title type='text'>NHibernate 1.20 is released!</title><summary type='text'>NHibernate was released May 3, 2007 and they have a migration guide for those of you who do not follow changes in the svn.  This release supports stored procedures, and as you can see in the screen shot above, I am working on adding SQL stored procedure generation to my ActiveRecord Generator.  I have templates for INSERT, UPDATE and DELETE now, and I will write a SELECT by primary key today.  </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/8888811468531938876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=8888811468531938876' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8888811468531938876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8888811468531938876'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/05/nhibernate-120-is-released.html' title='NHibernate 1.20 is released!'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_66O60Tuucmg/RjtVGqX__bI/AAAAAAAAAAU/_uGDaMnJaTc/s72-c/AR-Gen-2007-05-03.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-6355203724150708597</id><published>2007-04-27T13:10:00.000-05:00</published><updated>2007-04-27T14:40:14.721-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Defensive Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><title type='text'>If it can go wrong, it will!</title><summary type='text'>If you've been reading my blog, you know that I am developing an application using Visual Studio 2005 and Castle's ActiveRecord framework.  Recently, I bought Visual Studio 2005 Pro so I could use Crystal Reports.  Believe it or not, The user was able to install my application without a working version of .Net 2.0 around.  As far as I can tell, they did a Windows Update, and somehow it corrupted </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/6355203724150708597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=6355203724150708597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6355203724150708597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6355203724150708597'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/04/if-it-can-go-wrong-it-will.html' title='If it can go wrong, it will!'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-2680745918388635287</id><published>2007-04-26T12:55:00.000-05:00</published><updated>2007-04-26T12:56:30.427-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SATA Fix'/><category scheme='http://www.blogger.com/atom/ns#' term='Blingo'/><title type='text'>I won 2 fandango tickets</title><summary type='text'>I know this entry is off-topic, but yesterday was pretty amazing.  A co-worker told me about , and I signed up last month.  Blingo is a search engine that uses Google's database for results, but as you search, you have a chance to win something.   Blingo has "Thousand Dollar Thursdays" and sometimes they even give away an automobile!   So yesterday I was trying to figure out why my ABit A8N SLI </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/2680745918388635287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=2680745918388635287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/2680745918388635287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/2680745918388635287'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/04/i-won-2-fandango-tickets.html' title='I won 2 fandango tickets'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-7920316994229441198</id><published>2007-04-11T15:38:00.000-05:00</published><updated>2007-05-22T12:43:57.176-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><category scheme='http://www.blogger.com/atom/ns#' term='Castle'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='Generator'/><title type='text'>Defensive Programming with ActiveRecords</title><summary type='text'>[Update 1: finished the entry, and added some compilable code.][Update 2: Updated the compilable code - improved the Property setter code.]Recently, I have been working on a project with Castle&amp;apos;s ActiveRecord support.  Since I am changing my database schema as I discover new requirements, and adapt to new data sources, I occasionally run into query / model / table mismatches.  Now, gross </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/7920316994229441198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=7920316994229441198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/7920316994229441198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/7920316994229441198'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/04/defensive-programming-with.html' title='Defensive Programming with ActiveRecords'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_66O60Tuucmg/Rh1wDzIO8MI/AAAAAAAAAAM/hYEBTzIr68c/s72-c/ActiveRecordGenerator_04102007.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-8178771430239022662</id><published>2007-03-23T18:09:00.000-05:00</published><updated>2007-03-23T18:34:47.181-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Hibernate Shards for data partitioning across databases</title><summary type='text'>Google has donated Hibernate Shards - a Java 5 add-on to Hibernate that allows application driven data partitioning with your custom or their pre-build configurations.  One thing that caught my eye was that when they covered partitioned Native ID generation (aka Identity), they mentioned having Database A use a range 0-200000, Database B use range 200001 - 400000, etc.  I know that MySQL cluster </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/8178771430239022662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=8178771430239022662' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8178771430239022662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8178771430239022662'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/03/hibernate-shards-for-data-partitioning.html' title='Hibernate Shards for data partitioning across databases'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-8730037290041401088</id><published>2007-03-16T22:48:00.000-05:00</published><updated>2007-03-16T14:51:18.107-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Help Compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='Help'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>HTML Help on .Net</title><summary type='text'>As I have said before, I am developing with Visual Studio 2005 on .Net 2.0.  This summer, I will be creating an application with integrated html help.  Of course, my first inclination is to refresh my knowledge of help systems by acquiring Microsoft's HTML Help SDK.  The HTML Help Workshop looks like it will do light project management, and it even has an image cropping and screen capture program</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/8730037290041401088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=8730037290041401088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8730037290041401088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8730037290041401088'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/03/html-help-on-net.html' title='HTML Help on .Net'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-1266434914902571342</id><published>2007-03-09T11:56:00.000-06:00</published><updated>2007-03-13T17:53:09.187-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><category scheme='http://www.blogger.com/atom/ns#' term='IMultiQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='Castle'/><title type='text'>ActiveRecord support for MultiQuery</title><summary type='text'>I have submitted a patch to add MultiQuery support to ActiveRecord.  The link is at http://support.castleproject.org/browse/AR-139.  I added ActiveRecordMultiQuery.cs and updated ActiveRecordBaseQuery.cs to allow subclasses to be aggregated (added) to the MultiQuery.  I did this to speed up initialization of a form (I know ... premature optimization is the root of all evil).  If you like this </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/1266434914902571342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=1266434914902571342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/1266434914902571342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/1266434914902571342'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/03/activerecord-support-for-multiquery.html' title='ActiveRecord support for MultiQuery'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-8874440395647897980</id><published>2007-03-08T16:10:00.000-06:00</published><updated>2007-05-22T11:36:27.552-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stored Procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><category scheme='http://www.blogger.com/atom/ns#' term='Castle'/><title type='text'>Castle ActiveRecord calling a Stored Procedure</title><summary type='text'>Update: I have contributed patch AR-156 that allows full integration of Insert, Update and Delete to ActiveRecord models.If you've been reading my blog lately, you know that I have been seriously testing the Castle ActiveRecord framework out.  I really love it, but I have an existing Microsoft SQL Server database with many stored procedures in it.  I have tested the ActiveRecord model out, and I </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/8874440395647897980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=8874440395647897980' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8874440395647897980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/8874440395647897980'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/03/castle-activerecord-calling-stored.html' title='Castle ActiveRecord calling a Stored Procedure'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-9123492911224299085</id><published>2007-03-06T15:47:00.000-06:00</published><updated>2007-03-08T16:20:52.781-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><category scheme='http://www.blogger.com/atom/ns#' term='DetachedCriteria'/><title type='text'>Castle ActiveRecord with DetachedCriteria</title><summary type='text'>My current development environment is Visual Studio Express C# Edition (read that as free), Castle ActiveRecord's latest svn trunk(usually within a few days), and NHibernate svn trunk.  As of NHibernate version 1.2.0, there is a very cool new class out there ... DetachedCriteria.  This class lets you set all of your Castle relational attributes like BelongsTo, HasMany, etc. as lazy fetch, and </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/9123492911224299085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=9123492911224299085' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/9123492911224299085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/9123492911224299085'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/03/castle-activerecord-with.html' title='Castle ActiveRecord with DetachedCriteria'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-6165032910493377782</id><published>2007-02-28T16:40:00.000-06:00</published><updated>2007-02-28T18:41:41.006-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><category scheme='http://www.blogger.com/atom/ns#' term='Castle'/><title type='text'>Wading through mud with Castle ActiveRecord</title><summary type='text'>Lately, it feels like I've been wading through mud.  As if the ActiveRecord library has been doing nothing but preventing me from getting my work done.  In my dreams, I could call MyEntity.Find() with a list of ICriterion objects, and get back what I want.  I was having problems with that, because I want to select several object, left joining to a notes table, and return only the most recent note</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/6165032910493377782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=6165032910493377782' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6165032910493377782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/6165032910493377782'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/02/wading-through-mud-with-castle.html' title='Wading through mud with Castle ActiveRecord'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-991727322587018900</id><published>2007-02-23T14:42:00.000-06:00</published><updated>2007-05-25T14:53:53.312-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Criteria'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><category scheme='http://www.blogger.com/atom/ns#' term='BelongsTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Castle'/><category scheme='http://www.blogger.com/atom/ns#' term='Alias'/><title type='text'>Castle ActiveRecord with Criteria and Alias</title><summary type='text'>Update May 25, 2007: ActiveRecord now supports DetachedCriteria, which eliminates the need for the SlicedFindAll that I wrote below.  It is nice when a library moves to add support for such commonly needed functions.  So in summary, use Detached criteria instead of the code below.  It is still a nice example of using NHibernate sessions.I have a history log, where each history record "belongs to"</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/991727322587018900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=991727322587018900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/991727322587018900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/991727322587018900'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/02/castle-activerecord-with-criteria-and.html' title='Castle ActiveRecord with Criteria and Alias'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-117105878201048270</id><published>2007-02-21T14:14:00.000-06:00</published><updated>2007-02-23T13:44:25.965-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><category scheme='http://www.blogger.com/atom/ns#' term='Castle'/><category scheme='http://www.blogger.com/atom/ns#' term='mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>What is an Active Record anyway?</title><summary type='text'>While looking for Castle ActiveRecord examples, I found a blog by David Hayden - post 1 (design pattern overview), post 2 (some details on a possible implementation) and post 3 (using the Castle Project).  David had a series of articles about Rocky Lhotka's .NET Business Objects (one for each chapter), which I have also read and tried to apply.  Don't get me wrong, Rocky's CSLA library works, but</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/117105878201048270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=117105878201048270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/117105878201048270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/117105878201048270'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/02/what-is-active-record-anyway.html' title='What is an Active Record anyway?'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-117089612327270027</id><published>2007-02-07T18:32:00.000-06:00</published><updated>2007-02-23T13:45:11.281-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActiveRecord'/><category scheme='http://www.blogger.com/atom/ns#' term='Castle'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Finding database model information in Castle and ActiveRecord</title><summary type='text'>Since this is my first post on the subject, let me introduce the Castle project - a .Net framework that I have been exploring recently.  It has a project that tries to mimic ActiveRecord in  Ruby-On-Rails, although the Castle version of ActiveRecord uses NHibernate.  The good news is that an ActiveRecord class doesn&amp;apos;t require any XML configuration or mapping files.  The somewhat bad news is </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/117089612327270027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=117089612327270027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/117089612327270027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/117089612327270027'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2007/02/finding-database-model-information-in.html' title='Finding database model information in Castle and ActiveRecord'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-116543479230780954</id><published>2006-12-06T13:50:00.000-06:00</published><updated>2007-02-23T14:09:57.029-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><category scheme='http://www.blogger.com/atom/ns#' term='table variable'/><title type='text'>Table Functions in SQL Server 2000 and up</title><summary type='text'>I recently added a customer tagging feature to our billing system.  Users needed to be able to see a list of associated tags in their reports, so I needed to be able to collect all tags for a customer into a single string.  Below is a rough approximation of the table schema.  I did some research, and ended up creating a user-defined function (UDF) that returns a TABLE variable.  Inside the UFD, I</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/116543479230780954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=116543479230780954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/116543479230780954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/116543479230780954'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2006/12/table-functions-in-sql-server-2000-and.html' title='Table Functions in SQL Server 2000 and up'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-116370422300758838</id><published>2006-11-16T13:00:00.000-06:00</published><updated>2006-11-16T13:23:34.543-06:00</updated><title type='text'>The Rails Way</title><summary type='text'>There is an excellent article on recommended coding practices "The Rails Way" .  The authors are espousing a commonly held coding practice - use base classes or mix-ins (Modules in Ruby) only when code would otherwise be repeated.  This reinforces the DRY (Don&amp;apos;t Repeat Yourself) philosophy that Ruby encourages and facilitates.A helpful reader offers further explanation for those Rails </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/116370422300758838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=116370422300758838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/116370422300758838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/116370422300758838'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2006/11/rails-way.html' title='The Rails Way'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-115082693692764870</id><published>2006-06-21T12:43:00.000-05:00</published><updated>2006-11-09T11:15:10.126-06:00</updated><title type='text'>Online Gaming with Eternal Lands</title><summary type='text'>Note: I wrote this entry while I was still playing Eternal Lands.  I have recently stopped playing, but I thought I should share my thoughts anyway.For the past few months, I have been spending time in a free online role playing game - Eternal Lands.  The game allows "player kill", but only on certain maps or certain areas, and you receive a warning message before you enter these areas.  I </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/115082693692764870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=115082693692764870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/115082693692764870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/115082693692764870'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2006/06/online-gaming-with-eternal-lands.html' title='Online Gaming with Eternal Lands'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-113891686639544996</id><published>2006-02-09T12:35:00.000-06:00</published><updated>2006-02-09T12:35:28.106-06:00</updated><title type='text'>Installing Ubuntu Dapper Drake</title><summary type='text'>A fellow IT guy walked past my desk and asked about the 400 MHz Celeron box that I had tied to my switch box.  I informed him that this was my Linux test box.  He said that we have much better boxes than that in our storage room, and invited me to shop.  I pulled out a Dell 4100 - with an Intel 815 chipset and ATI Rage 128 Pro graphics.  I plan on installing this one as a true server - Apache, </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/113891686639544996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=113891686639544996' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113891686639544996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113891686639544996'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2006/02/installing-ubuntu-dapper-drake.html' title='Installing Ubuntu Dapper Drake'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-113691277904919173</id><published>2006-01-10T10:23:00.000-06:00</published><updated>2007-05-25T13:18:32.189-05:00</updated><title type='text'>SQL Quirks - count and sum</title><summary type='text'>I was reminded of a little quirk of SQL recently, and I thought I would share it with my readers.  I will be going over the SQL in a manner suitable for beginners, but the quirk that I refer to could catch an intermediate student of SQL.  I will use some simple SQL to illustrate my point.-- 1. create temporary tableCREATE TABLE #test1(id int not null ,name varchar(50) not null) ;-- 2. declare </summary><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113691277904919173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113691277904919173'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2006/01/sql-quirks-count-and-sum.html' title='SQL Quirks - count and sum'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-113587632711236970</id><published>2005-12-29T11:07:00.000-06:00</published><updated>2005-12-29T11:12:07.123-06:00</updated><title type='text'>AppTrain: A Rails Form Generator</title><summary type='text'>If you've been thinking about trying out Ruby On Rails, you just have to check out theAppTrain project on Ruby Forge.There is a step-by-step guide to form generation as well.  AppTrain is currently an alpha release, but it still looks quite handy.  If you want to install it, use the quick-start.  The AppTrain Project seems very committed to making it easy to build rails apps.  First, they created</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/113587632711236970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=113587632711236970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113587632711236970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113587632711236970'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/12/apptrain-rails-form-generator.html' title='AppTrain: A Rails Form Generator'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-113503671135558121</id><published>2005-12-19T17:40:00.000-06:00</published><updated>2005-12-19T17:58:31.366-06:00</updated><title type='text'>SQLServer2000: Capture output of EXEC statements</title><summary type='text'>About 2 years ago, I discovered that I could capture the results of an EXEC (@string_variable) statement.  We had a server process that logged in as System Admin (SA), so it could perform a directory scan, bulk insert any files it found, and move those files to a "processed" subdirectory.This process can be used to run any DOS command, and inserts each line of text as a record into a table.  We </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/113503671135558121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=113503671135558121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113503671135558121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113503671135558121'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/12/sqlserver2000-capture-output-of-exec.html' title='SQLServer2000: Capture output of EXEC statements'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-113459311536169388</id><published>2005-12-14T14:39:00.000-06:00</published><updated>2005-12-14T14:45:15.370-06:00</updated><title type='text'>Use and Abuse of XML</title><summary type='text'>This may be considered a rant by some, but here goes.XML is a data structure which is easily parsed by 3rd party applications.  This does not mean that the data can be easily interpreted as information, that is the responsibility of the XML data designer.   Depending on your audience, you may have to spell out units (pounds, kilograms, minutes, seconds, etc.).   Also, XML IS NOT FAST.  Do not use</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/113459311536169388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=113459311536169388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113459311536169388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113459311536169388'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/12/use-and-abuse-of-xml.html' title='Use and Abuse of XML'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-113449737159839537</id><published>2005-12-13T12:00:00.000-06:00</published><updated>2005-12-13T12:09:31.606-06:00</updated><title type='text'>How to flag spam on BlogSpot</title><summary type='text'>I like Blogger.com, but it has a fair amount of blog-spam.  I was searching on the keyword "blacksmith" today, and ran across a number of spammer pages, with javascript that removed the "Flag Content as Objectionable" button.  If you are a programmer, you can easily flag these pages anyway, by viewing the HTML source, and searching for "flag".  Look forvar ID = 1234567; and surf tohttp://</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/113449737159839537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=113449737159839537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113449737159839537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113449737159839537'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/12/how-to-flag-spam-on-blogspot.html' title='How to flag spam on BlogSpot'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-113209311371219104</id><published>2005-11-15T16:16:00.000-06:00</published><updated>2005-11-15T16:32:51.970-06:00</updated><title type='text'>How does Rails scaffolding select HTML input tags?</title><summary type='text'>Recently, a reader saw my fix for SQL Server booleans, and asked me a followup question: why does Rails display a yes/no selection instead of a checkbox? The short answer is look in {RUBY_HOME} /lib/ruby/gems/1.8 /gems/actionpack-1.10.2 /lib/action_view/helpers, but your path may vary depending on whether you are using gem, "edge rails", etc. Anyway, look in the file "active_record_helper.rb" for</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/113209311371219104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=113209311371219104' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113209311371219104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/113209311371219104'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/11/how-does-rails-scaffolding-select-html.html' title='How does Rails scaffolding select HTML input tags?'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112931874370386638</id><published>2005-11-14T18:00:00.000-06:00</published><updated>2005-11-15T16:32:05.760-06:00</updated><title type='text'>Data warehousing - finally!</title><summary type='text'>I finally helped some friends set up a data cube. It mostly involved creating a specialized view that had one numeric field (in our case - a count), a date field, and a number of categorical "dimension" fields. We used Seagate Info, now from Business Objects to actually work with the data. So no, I didn't write my own data cube explorer. The client couldn't afford that, and I didn't really want </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112931874370386638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112931874370386638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112931874370386638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112931874370386638'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/11/data-warehousing-finally.html' title='Data warehousing - finally!'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112957656724914057</id><published>2005-10-17T14:05:00.000-05:00</published><updated>2005-10-17T14:16:07.256-05:00</updated><title type='text'>Planning for failure - embedded systems</title><summary type='text'>Here's a short story about total system design, and planning for failure.Last friday night, I was filling up my truck with gas, and I did the "pay at the pump" thing, using my credit card.  After I filled my tank, the pump's display helpfully asked "Do you want a receipt? Yes / No".  I usually say no, but I wanted to remember the price per gallon, so I said "Yes."  Within 2 seconds, it said "</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112957656724914057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112957656724914057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112957656724914057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112957656724914057'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/planning-for-failure-embedded-systems.html' title='Planning for failure - embedded systems'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112931441943104081</id><published>2005-10-14T13:17:00.000-05:00</published><updated>2005-10-14T13:26:59.430-05:00</updated><title type='text'>SSPI connection for Rails SQLServer connection adapter</title><summary type='text'>Recently, I added support for SSPI (a connection that uses your local user account to authenticate you on the database server without supplying another password).  To use an SSPI connection, do not supply a username or a password. sqlserver_adapter.rb:   username    = config[:username] ? config[:username].to_s : ''...   # Use integrated security   if config[:integrated] or (username == '' and </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112931441943104081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112931441943104081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112931441943104081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112931441943104081'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/sspi-connection-for-rails-sqlserver.html' title='SSPI connection for Rails SQLServer connection adapter'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112931341574802970</id><published>2005-10-14T12:53:00.000-05:00</published><updated>2005-12-08T18:11:53.550-06:00</updated><title type='text'>Rails connection_adapter SqlServer fix for boolean fields</title><summary type='text'>I tried to use Ruby on Rails with Microsoft SQLServer recently, and I kept having problems with my "bit" fields. Looking on the web, the Rails repository claims to have fixed this, so I downloaded the new adapter from svn. It didn't work for me, so I started hacking. I really need to send this as a diff to the ActiveRecord maintainers, with test code to prove that it works. By the way, I am using</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112931341574802970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112931341574802970' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112931341574802970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112931341574802970'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/rails-connectionadapter-sqlserver-fix.html' title='Rails connection_adapter SqlServer fix for boolean fields'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112922737937735093</id><published>2005-10-13T12:49:00.000-05:00</published><updated>2005-10-13T13:16:19.393-05:00</updated><title type='text'>.Net Strings - LastIndexOf in c#</title><summary type='text'>Today, I tried to use string methods IndexOf and LastIndexOf to parse a directory entry string that I received across an SSH channel.  I guess I should have read the method description closer, but I expected LastIndexOf to find the last space character in a string.   The signature I wanted to use is:public int LastIndexOf(char, int, int);  Reports the index position of the last occurrence of a </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112922737937735093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112922737937735093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112922737937735093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112922737937735093'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/net-strings-lastindexof-in-c.html' title='.Net Strings - LastIndexOf in c#'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112877649288558380</id><published>2005-10-08T07:53:00.000-05:00</published><updated>2005-10-08T08:11:33.400-05:00</updated><title type='text'>Upgrading Ubuntu from Hoary to Breezy</title><summary type='text'>For those of you still running Ubuntu Hoary, I have upgraded 2 computers to Breezy now, and I like the improvements just fine. There is a more up-to-date software selection, including PHP5, Ruby, Rails, Mono 1.8.x and MonoDevelop. If you want to pull from Packages.DotDeb.Org, you can even try out MySQL 5.x.  I haven't done that yet, but I have found some instructions on the Ubuntu Forums that I </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112877649288558380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112877649288558380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112877649288558380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112877649288558380'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/upgrading-ubuntu-from-hoary-to-breezy.html' title='Upgrading Ubuntu from Hoary to Breezy'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112872429164831894</id><published>2005-10-07T17:09:00.000-05:00</published><updated>2005-10-14T15:11:59.700-05:00</updated><title type='text'>Ruby On Rails (Resources)</title><summary type='text'>Here are some links that I consider essential to working with Ruby on Rails.Ruby On RailsRubyForge.orgRuby Code SnippetsWhat is Ruby on RailsI have Rails running on Win32 and Ubuntu Linux (Breezy) so far, with MS SqlServer and MySQL as back-end databases. I just wish Ruby and Debian developers could come to a conclusion about package management between apt-get and gem.  The debian team wants to </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112872429164831894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112872429164831894' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112872429164831894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112872429164831894'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/ruby-on-rails-resources.html' title='Ruby On Rails (Resources)'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112863900100685239</id><published>2005-10-06T17:47:00.000-05:00</published><updated>2005-10-07T17:43:12.693-05:00</updated><title type='text'>SQLServer 2000 (TSQL) Resources</title><summary type='text'>They have an awesome collection of tips at ...BigBold.com SQL SnippetsI check their ruby and rails sections as well.(This page will be updated as I dig through my links.)</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112863900100685239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112863900100685239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112863900100685239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112863900100685239'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/sqlserver-2000-tsql-resources.html' title='SQLServer 2000 (TSQL) Resources'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112838062466146173</id><published>2005-10-03T17:46:00.000-05:00</published><updated>2005-10-03T18:03:44.666-05:00</updated><title type='text'>Using a spreadsheet to simplify data entry</title><summary type='text'>I've used a spreadsheet for data entry on a number of occasions.  It is quite handy!   All it requires is a string concatenate function, and a bit of cleverness.  This is great for "quick-n-dirty" data entry, or for searches.  The comma separated list is usually used for "SELECT * FROM TBL WHERE X IN (  ##  excel text goes here ## )".# to build a comma separated list=CONCATENATE("'", A2, "',")# </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112838062466146173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112838062466146173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112838062466146173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112838062466146173'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/using-spreadsheet-to-simplify-data.html' title='Using a spreadsheet to simplify data entry'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112837953082959525</id><published>2005-10-03T17:37:00.000-05:00</published><updated>2005-10-03T17:45:30.833-05:00</updated><title type='text'>SQLServer 2000: Concatenate fields in a table</title><summary type='text'>Here's a handy way to create a comma-separated list from a small lookup table.  I put the most interesting statement in bold.-- BEGIN CODE  -- silence the "rows affected" message SET NOCOUNT ON ;  -- create a temp table CREATE TABLE #temp(id int identity(1,1) not null, state varchar(50) not null); -- insert a few states for our example INSERT INTO #temp(state) values('AK'); INSERT INTO #temp(</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112837953082959525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112837953082959525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112837953082959525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112837953082959525'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/sqlserver-2000-concatenate-fields-in.html' title='SQLServer 2000: Concatenate fields in a table'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112837745793254977</id><published>2005-10-03T16:59:00.000-05:00</published><updated>2005-10-03T17:36:51.866-05:00</updated><title type='text'>Capture output from SqlServer 2000</title><summary type='text'>Here is a method of capturing the output of a command executed by the system shell. It is typically called from the SA account, and used to automate maintenance tasks. I do not recommend that you allow other users to send statements to a command shell.--- BEGIN CODEDECLARE @s varchar(255);-- our commandSET @s = 'DIR C:\TEMP\*.EXE' ;-- the temporary tableCREATE TABLE #tCmdOutput( output varchar(</summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112837745793254977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112837745793254977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112837745793254977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112837745793254977'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/capture-output-from-sqlserver-2000.html' title='Capture output from SqlServer 2000'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17407535.post-112836186215181122</id><published>2005-10-03T12:43:00.000-05:00</published><updated>2006-01-25T12:05:36.276-06:00</updated><title type='text'>Introduction</title><summary type='text'>Hi! I am a computer programmer, working for the last few years with C# and Vb on .Net 1.x and Windows. At prior jobs, I have written Java, FoxPro for Windows, MFC, C, Visual Basic and Fortran. I have more experience with SQLServer 7 and 2000 than with any other database, writing huge stored procedures for invoicing, etc. Recently, I have started looking at Ruby and Rails, and I intend to comment </summary><link rel='replies' type='application/atom+xml' href='http://roytate.blogspot.com/feeds/112836186215181122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17407535&amp;postID=112836186215181122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112836186215181122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17407535/posts/default/112836186215181122'/><link rel='alternate' type='text/html' href='http://roytate.blogspot.com/2005/10/introduction.html' title='Introduction'/><author><name>Roy Tate</name><uri>http://www.blogger.com/profile/18358836279191006548</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
