Fantasy Football Lives!

posted on 2004-09-01 at 11:57:30 by Joel Ross

I got two guys from work to sign up this morning, so the league is a go! 8 teams is enough for me to go ahead with it. If you're in the league, the draft will take place ASAP, and we should be ready to go shortly.

Categories: Football


 

Watching The Weather Channel

posted on 2004-08-31 at 11:33:19 by Joel Ross

I've been watching the weather channel rather close lately. Why? I'm going to Myrtle Beach, South Carolina with my family on Thursday, and Frances is meeting us there. Isn't that nice of her?

Well, it would be, if Frances wasn't a hurricane! She's expected to hit the States on Friday - just as we show up. She'll hit probably in Florida, but no one knows yet. It could hit as far north as North Carolina. Either way, it's going to cause a lot of rain! The forecast calls for rain every day that we'll be there. At least the XBox will be there with me!

Of course, that's if we go. No point in going just to get evacuated. We may just take the camper and head up to Traverse City too.

Categories: Personal


 

Gmail Invites

posted on 2004-08-31 at 10:20:37 by Joel Ross

I have 12 Gmail invites. If you want one, leave a comment.

These things are getting hard to give away. At one time, they were gold. Now, they're more like Gold plated...

Categories: General


 

posted on 2004-08-31 at 10:12:54 by Joel Ross

There's a good chance my fantasy football league will die a painful death. I got all of 5 people to sign up. So if you're still interested, here's the info. Sign up before I go to bed tonight, or the league will probably disappear.

If the does get it's legs (I need 3 more at least), and you're in the league, get your draft lists ready. I'm changing the status tonight, so the draft will take place before I leave on vacation (assuming that happens).

Categories: Football


 

Still Looking...

posted on 2004-08-23 at 22:06:42 by Joel Ross

I'm still looking for a few more teams (between 5-10) for my fantasy football league. Read about the league here, but here's the quick and dirty:

URL: http://football.fantasysports.yahoo.com/f1
League ID: 352706
Password: desktop

I have to have everything in place by next Wednesday. I leave for vacation the next day, and won't get back until after the first game of the season, so it has to be ready to go by then. Please sign up! I'm desperate! I don't want to go another year in a public league!

Categories: Football


 

Trackbacks as a better commenting system?

posted on 2004-08-23 at 15:35:41 by Joel Ross

Robert Scoble has been having problems with his comments, and said a better way to get a comment to him is to blog about it, and link to him.

I thought about that, and I agree! While it's nice to have the comments all contained in one place for the poster, as a commenter, I find it hard to track where I've made comments in the past. If I blog and link, then I know what I've commented on. And that's good. And as a poster, well, I can follow track back links just as easily as I can read comments. Plus, I'll probably end up at another blog I want to read!

So look for more stuff like this:

Read this, then this, then read on.

Oh yeah, for those who don't have blogs who read this, go ahead and comment. I don't have anything against them, but for me, I'll probably post and link from now on if I have anything important to say.

Categories: Blogging


 

Setting Up Continuous Integration

posted on 2004-08-14 at 16:45:43 by Joel Ross

I've set up CruiseControl.Net for three projects now, and each time, I have to try to remember the steps needed to do it, so I figured I would just write them down, and maybe help someone else figure out the process.

First, what is CruiseControl.Net? It's a tool that tracks your project's source code for changes made (i.e, check-ins). When check-ins happen, CruiseControl.Net uses Nant to do a build. The main advantage of this is that every person on the team knows if the build is working or not. If the build is broken, members on the team receive email notifications, as well as notifications when the build is fixed. This is a much easier approach to builds than a once a week build where you don't know from day to day if the code base is in good working form. Plus the build process is automatic, meaning no need for someone to manually run the build on Friday afternoon.

Anyway, setting it up isn't really that hard. There's just a few steps needed. First, you have to download CruiseControl.Net, Nant, and NantContrib. NantContrib has extra tasks (such as source control system integrations) that aren't part of Nant. Optionally, you can also download Nunit (more on that later). Extract the files into a known directory structure. Personally, I like the following directory structure:

/Sourcecontrol
  /BuildProcess
    /CCNet
    /Nant
    /Nunit
  /CurrentCode
    /Project1
    /Project2

Sourcecontrol would be your root, and all of your current code would be in the current code folder. I put the NantContrib dlls directly into the nant/bin folder and haven't had any issues, but there is another way to completely avoid any conflicts that could occur. Personally, I haven't had any issues doing it this way.

Next, install the ccservice by running installutil (located in the Windows/Microsoft.NET/[version]/ folder. Make sure the files are writeable in the folder (/CCNet/Server folder). Edit the ccservice.exe.config file to ensure the ccnet.config key is pointing to the ccnet.config file in the /CCNet/Server folder. You can also move this file elsewhere if you want. Also, if you want to use the cctray service, which allows a tray icon to tell you the current build status, then turn remoting on. Once that is done, the service can be started. You'll also probably want to change the startup type to be automatic, so it runs when windows starts, rather then having to manually start the service after every reboot.

Once the service is ready to go, we need to configure the ccnet.config file to define our projects. For now, I'll describe the process for one project, then afterwards, highlight what needs to change for multiple projects.

Here's an example config file:

<cruisecontrol>
  <project name="[Project Name]">
    <webURL>http://www.mydomain.com/ccnet</webURL>
    <schedule type="schedule" sleepSeconds="60"/>
    <modificationDelaySeconds>10</modificationDelaySeconds>
    <sourcecontrol type="vault">
      <executable>c:\program files\sourcegear\vault client\vault.exe</executable>
      <username>[BuildUser]</username>
      <password>[Password]</password>
      <host>www.mydomain.com</host>
      <repository>[Repository]</repository>
      <folder>$/CurrentCode</folder>
      <ssl>False</ssl>
    </sourcecontrol>
    <build type="nant">
      <executable>c:\sourcesafe\BuildProcess\NAnt\bin\nant.exe</executable>
      <baseDirectory>c:\sourcesafe\CurrentCode\</baseDirectory>
      <buildFile>C:\Sourcesafe\CurrentCode\cruise.build</buildFile>
      <buildTimeoutSeconds>300</buildTimeoutSeconds>
    </build>
    <publishers>
      <xmllogger>
        <logDir>..\website\log</logDir>
      </xmllogger>
      <email from="buildmaster@mydomain.com" mailhost="[Mail]" includeDetails="TRUE">
        <projectUrl>http://www.mydomain.com/CCNet</projectUrl>
        <users>
          <user name="[name1]" group="buildmaster" address="name1@mydomain.com"/>
          <user name="[name2" group="developers" address="name2@mydomain.com"/>
        </users>
        <groups>
          <group name="developers" notification="change"/>
          <group name="buildmaster" notification="always"/>
        </groups>
      </email>
    </publishers>
  </project>
</cruisecontrol>

Here's the highlights. The webURL is the IIS mapped site to the /CCNet/Web folder, which is where you'll go to see the history of the builds. We'll talk about setting that up in a bit.

This file is set up for Vault source control, which is a very solid source control system. I've been very pleased with it. I've also set it up against Visual Sourcesafe, and that works very well too. If you do it against VSS, up the modificationDelaySeconds, as the check ins are not atomic. They are with Vault. Anyway, you set up a folder in the source control system to monitor. In this case, it's the CurrentCode folder.

To see how to set up the system for other source control systems, and which ones are supported, see the CruiseControl.NET website.

The build type is Nant, meaning it will use Nant to process your builds. You set up the base directory, and which build file to kick off.

The last major section is the email section. You set up who it's from and how to send it, and then which users get email and when. A notification of change will notify the users whenever the build status changes, and always will, well, always send emails when a build takes place.

Let's talk website now. The CCNet/Web folder is the website that tracks everything. Set up a sub folder in IIS pointing to the /CCNet/Website/Log folder, and then edit the web.config in the /CCNet/Web folder. Make sure the logDir value is log, and the serverLogFilePath points to /CCNet/Website/Log. That's it for the website.

Almost done now. The next part is the Nant build files, which do the building of the project. For simplicity, we'll use the solution task to build the solution. You can also use the csc task to build the files, but it is a little more involved, and there's debate as to whether it's a better way to do it or not. Personally, I think the solution task is good enough for most needs, and the custom csc task is useful when you need more control over how the files are built.

Anyway, here's a sample build file (cruise.build)

<project name="[Project Name]" default="go">
  <target name="go" depends="Update,Build" />
  <target name="Update">
    <exec basedir="." program="c:\program files\sourcegear\vault client\vault.exe" commandline="GET $/CurrentCode -host www.mydomain.com: -username [BuildUser] -password [password] -repository [Repository] -destpath C:\Sourcesafe\CurrentCode\"/>
  </target>
  <target name="Build" depends="Update">
    <nant buildfile="project.build" target="Debug" inheritall="true" />
  </target>
</project>

I won't go into the details of how Nant works, but this basically says the default target is "go", and go depends on Update and Build. The update task retrieves the latest version from Vault, and the Build target uses a sub-nant file to do the build.

Now, the sub-nant file, and we're done!

<project name="NCM.PLC.Website" default="Debug">
  <target name="Debug">
    <solution configuration="Debug" solutionfile="[MySolution].sln">
      <webmap>
        <map url="http://localhost/[MySite]/[MySite].csproj" path="c:\inetpub\wwwroot\[MySite]\[MySite].csproj" />
      </webmap>
    </solution>
  </target>
</project>

This tells nant to do a build based on the solution file. The webmap is used for any websites in the project.

Once that's done, check in a file in the /CurrentCode folder. The build should fire automatically.

That's it. Go forth, and integrate continuously!

Or, if you're still reading, here's some more information. Tip: Get the project loading in VS.NET on the build server. Once you do that, the build process will be much easier.

If the build process isn't behaving, run the cruise.build file manually and see where the process is dying.

The /CCNet/cctray folder contains the tray application. Fire it up, and change the settings. Set the server to be tcp://www.mydomian.com:21234/CruiseManager.rem. The port 21234 is the default port. You can change this if you'd like. Once you enter that, it should connect to your build server, and you'll see the build status.

And we can't forget unit testing! Optionally, you can use the Nunit2 task to run any unit tests you have also. Here's a sample task for it. Just add this to a target that gets run during the process.

<nunit2>
  <formatter type="Xml" usefile="false" />
  <test assemblyname="[MyTests]\bin\Debug\[MyTests].dll" appconfig="[MyTests]\[MyTests].dll.config" />
</nunit2>

Just add the unit test DLL to your solution, and it will get included in this.

Maybe some day, I'll go more in-depth into the Nant build file, but for now, this should be enough to get started.

Categories: ASP.NET


 

Starting the Offshore Process...

posted on 2004-08-13 at 23:29:00 by Joel Ross

On my current project, we're starting one of the offshore components today. We will probably have them start it on Monday. It's a lot of work (nothing we wouldn't be doing anyway - just sooner than we planned on) to get it ready to go.

We're taking a slightly different approach than I originally thought we would. At first, we planned to ship an isolated piece of functionality to them, and have them build it soup to nuts. Then, after talking to a few people who have dealt with our off shore team (actually, they used our India partner. We will be using our Asia partner), we decided to mainly package up UI functionality, as that is what they had the most success with.

Now that we're actually doing it, we're blending the above two approaches. I will be handling any shared business logic, and data access (well, generating the data layer). They will handle business logic specific to their piece, and the UI they need for it, as well as the windows service they will need to develop.

Our approach has been to give them a database, a DLL with the needed API they can program against, a souce control environment that has skeleton projects they will need, and a set of requirements and process flows. Their first task is to provide us with a detailed design of what they will do, including more details on the process flow such as method calls, pseudo logic for each piece, etc. I already have an idea of how I would do it (that's how I made the APIs they will need), and I'll compare my version to their version. Once those two match up, they'll start coding, and we'll break up pieces into day long tasks. We'll check their code daily, and (at least initially) we'll integrate their code into our code base once it's done.

The first meeting is Monday to talk to them about the process. It should be interesting. I'll keep you posted.

Categories: Consulting


 

New Toys And Some Random Stuff

posted on 2004-08-13 at 12:15:25 by Joel Ross

I just ordered two new books, and I can't wait to get them. What are they? Coder To Developer, and Code Complete, Second Edition.

I was talking to my boss, and told him I wanted to read Code Complete, and he was floored that I haven't read it yet. He said the first edition was the first programming book he ever read, and that I should definitely read it.

While I am waiting for them to get here, I picked up a copy of Writing Secure Code, Second Edition. I read the first edition (we got a bunch of copies of it at work) and I liked it. Some didn't relate to what I do (when was the last time you worried about a buffer overrun in .NET?), but it was a good read. The second edition looks like it has more info on SQL injection, web input, and .NET stuff, so it'll be good to go through it over the weekend.

I also ordered a TiVo, and that should be here shortly. It's a 120 hour Phillips. Unfortunately, I don't have DirecTV, so I can only record one thing at a time, but that'll be better than the VCR we're using right now. My wife and I watch a lot of TV (probably more than we should), but what else are you going to do when your daughter goes to bed at 8 every night? Kind of hard to go out while she's sleeping...

One last note. Happy Left Hand Day. Today is the day to celebrate a lefty. I guess I don't qualify, because I write right-handed. But I played soccer a lot in highschool and college, and I'm left-footed, and dribble a basketball with my left hand. Does that count?

Categories: General


 

In Celebration Of The First NFL Game This Year...

posted on 2004-08-10 at 12:19:38 by Joel Ross

...I've started a fantasy league at yahoo. And it's open to all of my faithful readers!

Here's the info you'll need:

URL: http://football.fantasysports.yahoo.com/f1
League ID: 352706
Password: desktop

I've set a maximum of 16 teams, so it's on a first come, first serve basis to get a team. Also, it's free, so there's no cost. My only request is that you don't sign up if you're not going to participate throughout the whole season. That doesn't mean making trades, dropping players, etc every week, but at least updating the weekly roster to get any players on a bye week out of the lineup.

I'll spell out the league settings below, but for those who aren't into the NFL enough to do full blown fantasy football, I also started a Survivor Football league. Basically, each week, you pick one team that is a "sure fire" pick, and if they lose, you're done. If they win, you live to pick again the next week. That's open to 50 people, so feel free to sign up for that too! Here's the info:

URL: http://football.fantasysports.yahoo.com/survival
League ID: 13669
Password: desktop

I'll eventually start a Pro Football Pick 'Em and College Football Pick 'Em once they become available, and I'll post that info when I get it.

Anyway, the scoring is basically the same as the default scoring that Yahoo uses, with a couple of caveats, which are highlighted below.

Draft Type: Autopick. Once everyone is signed up, I'll set the draft status to ready, and we'll get our teams.
Scoring Type: Head to head
Trade Deadline: November 19th
Playoffs Week 15 & 16 (Week 17 seems to be a week where lots of players sit out)
Scoring: Same as Yahoo's except that field goal and PAT misses count against the kicker.

So there you have it. Go to the league page to see more detailed rules. I'll see how it goes this year, and tweak them next year, and hopefully make this an annual thing!

Categories: Football


 

<< 1 ... 113 114 115 116 117 118 119 120 121 122 123 124 >>