Jay Harris is Cpt. LoadTest

a .net developers blog on improving user experience of humans and coders
Home | About | Speaking | Contact | Archives | RSS
 
Filed under: Events
Jeff Blankenburg came up with a good idea! As I go through my LinkedIn connections, I see that not many of them have recommendations. And it's not that these people don't deserve them--many of these connections I consider to be amongst the brightest people in the industry. As a community, and in many cases simple as a people, we don't often take the time to help each other out. We may pat each other on the back for recognition of talent, but we don't often do so in a public forum. Social Networking sites like linked in are phenomenal for things like job hunting, not necessarily for the networking but because potential employers will peruse these sites to gather information about a candidate, and these recommendations can go a long way towards impressing the employer.

Enter Contribupendence Day! Jeff came up with the idea for one grand call-to-action where the entire community gets together to "tell the world about the people we work with." Everyone should comment / recommend / praise their friends, colleagues, associates on sites such as LinkedIn or Plaxo. No strings attached. No expectation that they will return the favor. Just do a good deed for your buddy, because that's what we should all be doing anyway, everyday.

I have a few folks that I have been meaning to recommend, and I just haven't gotten around to it. This is good motivation, and a great idea. You should, too.

Today we celebrate our Contribupendence Day.

Thursday, July 03, 2008 11:29:43 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback

Filed under: Events
Our first Lansing Day of .Net has come and gone. Plenty of people are blogging about it. After a stressful final week of creating designs for swag and for attendee badges, buying refreshments, and making last minute schedule changes, the event ran smoothly, and I am quite happy with the outcome. The group did an amazing job putting it all together. We had great attendance, phenomenal sponsorship, and great sessions. Corey Haines stepped in at the last minute for a speaker that was unable to make it, and did a commendable job by any standards, let alone that he assembled the entire talk within 24 hours. Once registration had closed, and things had settled down, I was also able to see sessions by Michael Eaton on Castle ActiveRecord, Jay R. Wren on Castle Windsor, Patrick Steele on Castle MonoRail, and WCF with James Bender, all of which were also well done.

It was also great to meet-in-person the people I've been chatting with on Twitter or over the phone while organizing the event, as well as getting to know so many new people. I will see you all again, hopefully with you wearing my Lansing Day of .Net "i was there" t-shirt or drinking beer from my "i think i was there" pint glass! (They, too, turned out exactly as I had hoped.)

"Hey. That's my art!" It is very cool to this web developer to see people walking around wearing my artwork.

Thank you, again, to all of the organizations that sponsored the event, without whom the event wouldn't happen, to all of the speakers that helped us all learn new things about our craft, and to all of the attendees that made this event worth while.

We need to do this again next year!

Thursday, June 26, 2008 4:24:51 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback

Filed under: Events
The day's agenda for Saturday's Lansing Day of .Net has been posted. Registration will open at 7:30am with the first session starting at 8:30am. There will be 24 sessions throughout the day, spread across 4 rooms and 6 timeslots. Sessions will be divided by a 15 minute break, and an hour break for lunch. The final session will end at 4:30, when the closing and final raffle will be held.

Saturday's schedule:

7:30 - 9:00 - Registration and Check-in
8:30 - 9:30 - First Sessions
  • Programming with Literal XML and Embedded Expressions (Paul Kimmel)
  • The Entity Framework (Tim Golisch)
  • Data Access with NHibernate (Len Smith)
  • MicroISV: Start Your Own Software Company (Patrick Foley)
9:45 - 10:45 - Second Sessions
  • Well, Isn’t That Spatial… [SQL Server 2008 Spatial Data Type] (Jason Follas)
  • LINQ For SQL - CRUD! (Joe Kunk)
  • An Introduction to Castle ActiveRecord, or Stop Writing CRUD! (Michael Eaton)
  • Regular Expressions can be your friend (Vijay Jagdale)
11:00 - 12:00 - Third Sessions
  • IronRuby, the DLR and Silverlight (Carey Payette)
  • Windows Live: An API for Web 2.0 (Martin L. Shoemaker)
  • Everyday Inversion of Control (Jay R. Wren)
  • Structure and Guidance for Organizing Applications within Visual Studio (Keith Elder)
12:00 - 1:00 - Lunch
1:00 - 2:00 - Fourth Sessions
  • Be a Rules Follower: Windows Workflow Rules Engine (Michael Wood)
  • Test Driven Development in C# (Philip Japikse)
  • Monorail: An MVC Implementation on ASP.NET (Patrick Steele)
  • Manage Complexity With Agility (Alan Stevens)
2:15 - 3:15 - Fifth Sessions
  • Enhancing Windows and Web Applications with Microsoft Presence (Chris Woodruff)
  • Introduction to WPF (Jennifer Marsman)
  • Introduction to Dependency Injection using Spring.NET (Ryan Montgomery)
  • Agile Games (Amanda Laucher)
3:30 - 4:30 - Sixth Sessions
  • Agile Project Management with Scrum (Dan Rigsby)
  • SQL Server 2008 for Developers (Sam Nasr)
  • Distilling the Dynamic Language Runtime (Josh Holmes)
  • Getting Started with WCF (James Bender)
4:30 - 5:00 - Closing and Raffle

Monday, June 16, 2008 10:40:52 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback

Filed under: Events
GLUGnet (the .Net User Group in Lansing & Flint) is organizing a Microsoft .Net 2.0 Certification Study Group in pursuit of the “Microsoft Certified Technology Specialist / Web-Client Development” certification. GLUGnet started one in Lansing, and I thought it would be a good idea for us to fire one up in the Flint area, as well.

We will be using the MCTS Self-Paced Training Kits for Exam 70-536 (Microsoft .NET Framework 2.0 Application Development Foundation) and Exam 70-528 (Microsoft .NET Framework 2.0 Web-Based Client Development). Both books are available from Amazon for around $45. Attendees will self-study one chapter per week, and meet together once a week to discuss that chapter as a group. If we miss a week due to holidays, we can decide to either double-up the next week, or to just skip the week and cover that chapter next time. At the end of each book, we will take the applicable exam. Each of the two exams are $125 each, and the schedule has us certified around mid-January.

Exam 70-536 : Microsoft .NET Framework 2.0 Application Development Foundation. (Training Kit | Amazon)
            Study: June – September. (16 weeks).
            Exam: End of September.
 

Exam 70-528 : Microsoft .NET Framework 2.0 Web-Based Client Development (Training Kit | Amazon)
            Study: October – January. (13 Weeks)
            Exam: Mid-January
 
The group will be meeting every Tuesday from 6pm-7pm at the Crossroads Meeting Room in the Cromaine District Library, Crossroads Branch in Hartland, MI ( http://tinyurl.com/4kpgul ). The facility will hold 30 people, and has Wi-Fi available. The first meeting will be next Tuesday (June 17) from 6pm-7pm. I realize that the 17th is short-notice, but I wanted to get rolling. Because of the short notice, this first meeting will be just getting a feel of who is interested, getting to know everyone, discuss everyone's experience with 2.0, and discussing the format. We will then each read through the first chapter on our own throughout the following week, and the first chapter will be discussed by group on the following Tuesday, June 24.

I still encourage anyone that is interested to go. This group is open to the community and anyone is welcome.

I hope to see you there.

Tuesday, June 10, 2008 3:01:19 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback

Filed under: Mush
Michael Eaton started it, and it sounds interesting, so I'll jump on the bandwagon, too. I need to post something, and maybe this will be a good writing exersize to get the posts flowing again. So, in 500 words (exactly, not counting the bold questions), how I took a flying leap into software development. And feel free to post your own answers, too.

How old were you when you started programming?
When I was 13 (1992) on the family's first computer: a shiny new 486DX2-66, with 8MB of RAM, and those big-honkin' VLB I/O and Video cards.

How did you get started in programming?
Before that computer, I had never used one before, other than typing class in school or playing MathBlaster or Oregon Trail in the library. I destroyed that machine a quite few times by running every .com or .exe on the machine just to see what it did. (FDisk is a very bad application for the uninitiated to play with.) Knowing how the thing worked led to manipulating it for my own motives: a full set of startup configurations in config.sys/autoexec.bat to eek out every last Kb of base memory. Anything to make Wolfenstein or Doom run just a little faster. And the obsession with video games led me to start writing my own when VB3 launched in '93. Woo-hoo, I could write games!! And I could trash that computer even faster.

My mother bought a Iomega Ditto drive to back up her files every night, so that when I trashed it she wouldn't loose anything.

I started playing around with web programming in mid-94 with my AOL account, and completely bailed in Windows programming in favor of Web in 1995 when I signed up for one of the first accounts on GeoCities.

What was your first language?
Batch Language. Or Visual Basic.

What was the first real program you wrote?
A vertical scrolling shoot 'em up in VB3, similar to Raptor (I loved that game) or Tiger-Heli. Even made my own sprites and bitmaps in Paint!!

What languages have you used since you started programming?
Classroom-only: C++, Perl, PL/SQL, Scheme, and QBasic.

Personally/Professionally: ActionScript (Flash), ASP, C, C#, CSS, HTML, Java, JavaScript, Lingo (Macromedia Director), PHP, Ruby, T-SQL, VB, VB.Net, VBScript, and XML.

What was your first professional programming gig?
The first code-for-food was in 1995; I got about US$150 for building a few web pages Baypoint Communications.

The first full-time gig was in 1999 at Navistream in Rochester, NY (Now BrandLogic) as a New Media Developer. My college's career center didn't have any positions for Web Development, and I was having a tough time finding an internship. I weaseled my way onto the Career Center web site for RIT (near my home town) and found a posting for Navistream. I contacted the company directly and landed an interview. When the interviewer asked me how I found out about them, I told them the story. They were impressed with my initiative and I got the job.

If you knew then what you know now, would you have started programming?
Yes. Absolutely. It is a little difficult at times, but it is definitely something I love doing. Unless I could have been a professional racecar driver.

If there is one thing you learned along the way that you would tell new developers, what would it be?
Do it for You, not for Them. In this business, it is essential that you keep the passion and spirit that made you like programming in the first place, otherwise it becomes a chore. Find a company that will encourage that passion, and stay connected with other like-minded people through things like user groups, conferences, or even Twitter.

What's the most fun you've ever had...programming?
I particularly enjoy projects that are off the reservation. Amazing things happen when developers get some down-time to go code whatever they want.

Friday, June 06, 2008 11:11:51 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback

Filed under: Events
Lansing Day of .Net, 21 June 2008 - I'll be there!
The Lansing Day of .Net site is online : http://www.dayofdotnet.org/Lansing/
Use the site to:
  • Register for the event
  • View sessions details and the event agenda
  • Find out who will be speaking at LDODN08 or to get information about speaking there.
  • Learn about event sponsors or to learn how to sponsor the event.
  • Get a blog badge to place on your own site and let the world know that you'll be there!
Go there now! Check it out!
Tuesday, May 06, 2008 10:47:17 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback

Filed under: Events
Tuesday, April 29, 2008 9:31:00 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback

Filed under: Events
Lansing Day of .Net, 21 June 2008 - I'll be there!
The first ever Lansing Day of .Net will be held on Saturday, June 21, 2008, at the Lansing Community College West Campus, in Lansing, MI. The event, hosted by Greater Lansing Users Group for .Net, is a one day by-developers-for-developers conference regarding topics related to .Net development, and best of all, it is free. Registration is not yet open, but will be soon. Keep an eye out on glugnet.org and dodn.org for more information.
"We have a great facility and a big chunk of time, we just need to fill the slots with all the brilliant speakers in the area. So if you are willing to come and share your expertise with your fellow developers in the area, please lend a hand." ~ Jeff McWherter
LDODN is currenly looking for interested speakers. If you are interested, please email "program (dot) director (at) glugnet (dot) org" by Wednesday, May 14. Submissions will be selected by Monday, 19 May, and will receive email confirmation.
Tuesday, April 29, 2008 8:58:32 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback

Filed under: NAnt | Task Automation | Tools

Scott Hanselman posted an entry yesterday about Managing Multiple Configuration File Environments with Pre-build Events. His design uses pre-build events in Visual Studio to copy specific configuration files to the default file name, such as having "web.config.debug" and a "web.config.release" configuration files and the pre-build copying the appropriate file to "web.config" based on which build configuration you are in. This is a great idea, but large web.config files can get tedious to maintain, and there is a lot of repeated code. Even using include files as Scott suggests would help, but major blocks, such as Application Settings, may have to be repeated even though only the values change. This exposes human error, since an app setting may be forgotten or misspelled in one of your web.config versions.

At Latitude, we manage this problem through NAnt. One of our former developers, Erik Nelsestuen–brilliant guy–authored the original version of what we call "ConfigMerge". Essentially, our projects have no web.config under source control. Instead, we have a web.format.config. The format config is nearly identical to the web.config, except all of the application settings and connection strings have been replaced with NAnt property strings. Rather than have a seperate web.config for each environment and build configuration, we simply have NAnt property files. Our build events (as well as our automated build scripts) pass the location of the format file and the location of the property file and the output is a valid web.config, with the NAnt property strings replaced with their values from the environment property file.

It's simple. It only takes one NAnt COPY command.

default.build

<project default="configMerge">
  <property name="destinationfile"
    value="web.config" overwrite="false" />
  <property name="propertyfile"
    value="invalid.file" overwrite="false" />
  <property name="sourcefile"
    value="web.format.config" overwrite="false" />
 
  <include buildfile="${propertyfile}" failonerror="false"
    unless="${string::contains(propertyfile, 'invalid.file')}" />
 
  <target name="configMerge">
    <copy file="${sourcefile}"
        tofile="${destinationfile}" overwrite="true">
      <filterchain>
        <expandproperties />
      </filterchain>
    </copy>
  </target>
</project>

For an example, lets start with a partial web.config, just so you get the idea. I've stripped out most of the goo from a basic web.config, and am left with this:

web.confg

<configuration>
  <system.web>
    <compilation defaultLanguage="c#" debug="true" />
    <customErrors mode="RemoteOnly" /> 
  </system.web>
</configuration>

In a debug environment, we may want to enable debugging and turn off custom errors, but in release mode disable debugging and turn on RemoteOnly custom errors. The first thing we will need to do is create a format file, and then convert the values that we want to make dynamic into NAnt property strings.

web.format.config

<configuration>
  <system.web>
    <compilation defaultLanguage="c#" debug="${debugValue}" />
    <customErrors mode="${customErrorsValue}" /> 
  </system.web>
</configuration>

Next, we need to make NAnt property files, and add in values for each NAnt property that we've created. These property files will include the values to be injected into the web.config output. For the sake of simplicity, I always give my property files a '.property' file extension, but nant will accept any file name; you can use '.foo' if you like.

debugBuild.property

<project>
   <property name="debugValue" value="true" />
   <property name="configMergeValue" value="Off" />
</project>

releaseBuild.property

<project>
   <property name="debugValue" value="false" />
   <property name="configMergeValue" value="RemoteOnly" />
</project>

Finally, we just execute the NAnt script, passing in the appropriate source, destination and property file locations to produce our environment-specific web.config.

nant configMerge -D:sourcefile=web.format.config -D:propertyfile=debugBuild.property -D:destinationfile=web.config
web.config output

<configuration>
  <system.web>
    <compilation defaultLanguage="c#" debug="true" />
    <customErrors mode="Off" /> 
  </system.web>
</configuration>

And that's all there is to it. This is extendable further using the powers of NAnt. Using NAnt includes, you can put all of your base or default values in one property file that's referenced in your debugBuild.property or releaseBuild.property, further minimizing code. You can use Scott's pre-build event idea to have each build configuration have its own NAnt command to make mode-specific configuration files.

Feel free to use the above NAnt script however you like; but, as always YMMV. Use it at your own risk.

Enjoy.

Friday, September 21, 2007 10:00:26 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [4] - Trackback

Filed under: Mush

I need to just make time to blog. I’m finding that I am getting behind, further and further, as the bleeding edge of technology pulls out ahead of me. [sarcasm]Keeping up to date is hard.[/sarcasm].

I am working on a few things to try to get myself back up to speed, beyond just the on-going procrastination over Microsoft .Net 2.0 certification. Last month, I attended Jay Wren’s talk on IoC with Castle at the Ann Arbor .Net Developers Group. Though we’ve been using Castle within our LMS for a few months now, patterns is definitely one of my weak points in developer-land, so I did pick up a few concepts on Dependency Injection. It was a great talk, and I got some swag!

Last week it was back to AADND for Michael Wood’s talk on Windows Workflow Foundation. I haven’t had much any exposure to Windows Workflow Foundation other than to not call it WWF. This stuff blows me away, and makes me even more jealous that we haven’t converted the LMS out of .Net 1.1. I wish I could have made it to the GANG meeting tonight on WF, just to learn more.

Tomorrow is another meeting, and another “Geek Fest” as my wife so lovingly refers to it as. Heading west to MSU for GLUG’s meeting on C# 3.0 by Bill Wagner. There’s going to be a bit on Code Rush, too (I love CodeRush!). Maybe I’ll win more swag!

Wednesday, September 19, 2007 10:10:30 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] - Trackback