This week I am starting a Tic Tac Toe Kata in response to a programming exercise by a future employer. (Wave to you!)
Here are my rules for performance of the kata:
And here is the kata:
What we have in mind is a simple Tic-Tac-Toe program.
At the least this program should:
We would like you to use Ruby as the programming language. (My Pleasure!)
So, in my next posting I’ll be into project setup, prerequisites, and the first story or two.
Update 3/17/09: Add RDoc to expected deliverables.
Yo All Followers.
This blog has had downtime and lost data due to my hosting provider’s server move and my own error in choosing a custom DNS config within my virtually-hosted node.
What does that mean to you?
I hope you all like to follow me again. More Ruby goodness up and coming.
Regards,
Pete the Ruby Evangelist.
Well, Jamie Cansdale has been getting heat over time from M$ over TestDriven.Net, formerly NUnitAddin.
M$ turned up the heat over the last week, and seemingly put it to HIGH yesterday.
Ian Ringrose simplified the discussion :
“Is it safe for me as a developer without a large legal department to work with Microsoft technology? “
FransBouma says : “Nail on the head.”
Yes… Nail on the head.
I’m debating between moving my career in one of two ways :
Study ruby on rails, leave Microsoft development, move my career in a new direction. I feel immediate happiness in this endeavor.
Study Microsoft Certified Professional Developer (MCPD) / .NET 2.0. Give in to “the state”, admit that a governmentally structured certification machine also has a thriving job market. Join a Microsoft Consulting Firm full time and be a valuable contributor to their technologies.
Updated: 20 June 2007 12:35:00. This rounds out the pro/con list to more clearly present my perspective on what direction to take my career.
Here is a 1-2-3 for building your own VB.NET 2.0 Console application that will allow the upload of SSIS packages to SQL Server storage in the MSDB folder of your choice. The process also allows correct operation of XML Configurations on the packages (other configurations should work too, not tested by me in production though).
Here goes!
Module Module1
Sub Main()
Dim packages As System.Collections.Specialized.StringCollection = My.Settings.packageManifest
Dim pkgName As String
Dim fileName As String
Dim processContinue As Boolean = True
For Each pkgName In packages
Dim pkgFilePath As String = My.Application.Info.DirectoryPath + "\" + pkgName + ".dtsx"
If Not System.IO.File.Exists(pkgFilePath) Then
Console.WriteLine("Package " + pkgName + ".dtsx is not found on the local file folder.")
processContinue = False
End If
Next
For Each fileName In System.IO.Directory.GetFiles(My.Application.Info.DirectoryPath, "*.dtsx")
pkgName = System.IO.Path.GetFileNameWithoutExtension(fileName)
If Not packages.Contains(pkgName) Then
Console.WriteLine("File " + pkgName + ".dtsx is found on the local file folder but is not included in the .config
section.")
processContinue = False
End If
Next
If Not processContinue Then
Console.WriteLine("Please verify that all files in the .config
section are on the local folder.")
Console.WriteLine("Please verify that all files in the local folder are listed in the .config
section.")
Else
For Each pkgName In packages
PackageHelper.SaveToSQL(pkgName)
Next
End If
Console.Write("Press Any Key ...")
Console.Read()
End Sub
End Module
Imports Microsoft.SqlServer
Public Class PackageHelper
Private Shared Function loadSSISPackage(ByVal pkgName As String) As Dts.Runtime.Package
Dim dtsapp As Dts.Runtime.Application = New Dts.Runtime.Application
Dim pkg As Dts.Runtime.Package = dtsapp.LoadPackage(pkgName, Nothing)
Return pkg
End Function
Public Shared Sub SaveToSQL(ByVal pkgName As String)
Dim dtsapp As Dts.Runtime.Application = New Dts.Runtime.Application
Dim pkgFilePath As String = My.Application.Info.DirectoryPath + "\" + pkgName + ".dtsx"
Dim ssisFolder As String = "\\" + My.Settings.targetSSISMSDBfolderName
Dim ssisServer As String = My.Settings.targetSSISserver
Dim ssisPackagePath As String = ssisFolder + "\" + pkgName
If Not dtsapp.FolderExistsOnSqlServer(ssisFolder, ssisServer, Nothing, Nothing) Then
Console.WriteLine("Server:" + ssisServer + " Folder:" + ssisFolder + " SSIS Msdb Folder is not found on server. Check Project Settings (Settings.settings).")
ElseIf Not System.IO.File.Exists(pkgFilePath) Then
Console.WriteLine("Package: " + pkgFilePath + " The file specified is not found in the " + My.Application.Info.ProductName + " current directory.")
Else
Console.WriteLine("Saving package to SQL (" + ssisServer + ") " + ssisPackagePath + " Starting ...")
Dim pkg As Dts.Runtime.Package = PackageHelper.loadSSISPackage(pkgFilePath)
If dtsapp.ExistsOnSqlServer(ssisPackagePath, ssisServer, Nothing, Nothing) Then
Console.WriteLine("Saving package to SQL (" + ssisServer + ") " + ssisPackagePath + " Removing Previous Instance ...")
dtsapp.RemoveFromSqlServer(ssisPackagePath, ssisServer, Nothing, Nothing)
End If
Console.WriteLine("Saving package to SQL (" + ssisServer + ") " + ssisPackagePath + " ...")
dtsapp.SaveToSqlServerAs(pkg, Nothing, ssisPackagePath, ssisServer, Nothing, Nothing)
Console.WriteLine("Saving package to SQL (" + ssisServer + ") " + ssisPackagePath + " Complete")
End If
End Sub
End Class
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="SSISPackageInstaller.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<SSISPackageInstaller.My.MySettings>
<setting name="targetSSISserver" serializeAs="String">
<value>CHMW003732</value>
</setting>
<setting name="targetSSISMSDBfolderName" serializeAs="String">
<value>Deployment Test</value>
</setting>
<setting name="packageManifest" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>stageGAAPUploadReserves</string>
<string>packageNotFound</string>
</ArrayOfString>
</value>
</setting>
</SSISPackageInstaller.My.MySettings>
</userSettings>
</configuration>
Well, after a 20 year separation from teh Cult of Mac, I have finally returned. It is nice to see the tight tight integration of EVERYTHING on the Mac.
While all things round and sweet are looking chipper, my former web hosting is dead and gone. I recovered a few posts, all others are basically lost forever. (Well, at least until I can manually rebuild the posts from MySql backup).
Happy New Year anyway!
So I just watched the “5 minute video” by Iron Designer for .NET
Very sexy. Very very sexy.
As an MSDN subscriber (thanks to my corporate sponsors employers) and MCP (SQL Designer test or something, I’ve forgotten), this is very enticing…
AND .NET has failed me in several situations where I was trying to do something “outside the box”.
How does Ruby on Rails compare to this ?
Well the 10 minute video is almost a religious experience to many. AND Ruby and Rails DOES NOT fail us in situations where we wish to go “outside the box” in order to accomplish something.
That is all
Malcolm Gladwell at TED 2004 describes the research of Howard Moscowitz for Campbell’s Soup / Prego.
The lessons learned from Howard beautifully correllate with Kathy Sierra’s Quantum Mechanics of Users
If users are asked for their preference, they will likely tell you something very common and rather vanilla. When given the experience of the choices, say during a taste test, the aggregated results are NOT similar, and in fact group around a handful of common choices.
My take on this is that during Design Investigation for software – be it website, desktop application, even for print – if at all possible, build the DEMO of the choices involved and get the trial user into the experience and THEN ask the user what is their preference.
This approach in awareness of user preference, user experience, and human variability could take the design into the “I Rock†space of the passionate user.
http://headrush.typepad.com/creatingpassionateusers/2005/12/thequantummec.html#trackback
Peter John Fitzgibbons (Gillies)
My father is John Cecil Joseph Gillies (John Cecil Gillies)
My grandparents :
Robert Cecil Gillies and Millie(Mildred?) Gillies were separated in 1940s.
Millie and Ted married in 1961. Both deceased in 1979.
My aunts :
Roberta, Virginia and Ivy are all living. Roberta is now in Windsor, NS, CA. Her husband Roger passed away serveral years ago (2000?).
I am looking for anyone who shares this ancestory. I would like to learn who you are.
I want you to know that John Gillies is terminally ill and will pass away sometime in the next 10 days.
You may email me at peter.fitzgibbons@gmail.com
So, I’m perusing my GMail Spam folder today just to see if any non-junk is in there…
and what do I find on the quick-rss toolbar??? SPAM RECIPES!!
Like so…
