Wednesday, January 16, 2008

WCF Brain Fart (and why you "need" base addresses)

Well, you don't really need them, unless you are using the basicHTTPBinding and want to see the WCF help page.

Or want to create a proxy from metadata.

Hmm... OK, maybe you DO NEED base addresses!

Maybe I should back up.

The other day I was showing someone how to throw together a quick WCF service hosted in a console application. This was strictly a "Hello World" type of service, and I got everything written and wired up in about 5 minutes. I didn't worry about setting up a metadata behavior or endpoint, just wanted to get the service up an running as fast as I could. I started the app and fired up IE to show the person the WCF help page (a sure sign that it works and I'm brilliant) but instead of the help page I got this error:

<faultcode >a:ActionNotSupported</faultcode>

<faultstring xml:lang="en-US">The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).</faultstring>

That really sucked.

In my haste, and my eagerness to show how fast and easy it was to get a service up and running, I forgot one minor but important thing; if you want to see the help page, you need to specify the base address if you are using the basicHttpBinding.

It makes sense; if you don't use a base address, you are sending an HTTP Get to your endpoint. Unless your endpoint knows what to do with it, it throws a fault. The wsHttpBinding is able to handle it, but the basic binding rely's on the Service Host which has some internal functionality that gives you the help page.

But since you need base addresses to use the service metadata behavior, you're just better off making sure you use it.

Friday, January 11, 2008

Codemash Day 1 part 2

After my "Ask the Exports" time, I headed over to see Keith Elder talk about Microsoft Workflow. The meat of his presentation can be found here. It was an bit of an entry level talk, which I think is desperately needed. There are still a lot of misconceptions out in the Enterprise community about what Workflow is, how it works and how it fits in with things like the .NET framework overall and Biztalk. He's doing an more "advanced" talk later today "custom activities" which I'm looking forward to.

After that I went to see Dustin Campbell do some F# stuff. I was playing with F# a bit before my laptop died (Note to Dell, you actually have to plug the fans in for them to cool the laptop down.) I haven't really had time to re-install and get back into it. Dustin's talk was almost SRO; functional programming, F# in particular, seems to be something that has gathered a lot of interest.

After dinner, I got to play a lot of "Rock Band" with Keith Elder and Scott Hanselman. Keith is scary good at the "Guitar Hero" type games. Scott claims he's never played the game before, but he did a great job on the drums! As for me... well, have I even mentioned how much "Guitar Hero"is NOT like really playing the guitar...

... speaking of playing guitar, the "CodeMash jam session" also happened last night. I didn't feel like dragging my rig up (I already got enough shit from Kaufman and Wingfield about my "larger-than-necessary suitcase) and I'm kind of glad I didn't. Most of the group seemed to be older guys with acoustics play country and CSN stuff. I doubt any of them know any "Iron Maiden", "Helloween" or even "Limozeen!" I'll track Dustin down later and make him a deal for next year; if he brings his stuff, I'll bring mine.

OK, drink now, more writing later.

Thursday, January 10, 2008

CodeMash, Day One Part One

Well, day one for me got off to a "bumpy" start. I request a wake up call for 7:00 intending to work out, and get downstairs in plenty of time for a little breakfast and the beginning of Neal Ford's keynote. Well, unfortunately, my wake up call didn't arrive till 8:00, so I didn't get to work out, missed breakfast and missed the first few minutes of the keynote.

One that subject...

I really dig what Neal Ford is saying about dynamic languages. I've been playing with Iron Python for a little while now and I see a lot of benefit in it, although it's still a bit "rough" in my opinion. If I never end up using it in a production project, it has made me re-think the way I do things in C#. He said something in his presentation that got a little chuckle out of me; compilers are basically weak unit tests and spell checkers. I remember being in school and hearing a lot of my fellow students in the computer lab "I can't understand why it didn't work, it compiled." I didn't think I would hear that after I left school, but I hear it at least once a year from co-workers. He also beat the testing drum, which I'm all for. I really wish this philosophy would catch on more widely in software development. I don't know why, but I'm still surprised when I meet with a client and find out that they have NO unit testing practices in place at all! I've been doing it so long myself, that I can't imagine developing without it.

From there I went to see Joe O'Brien present "Ruby:Testing Mandatory." I have to admit, I was definitely handicapped here since I have zero experience with Ruby, but I'm always interested in anything that can enhance my test-driven chops (very helpful when I evangelize this to clients). It did get me more interested then I had been in Ruby. I have been playing with Iron Python for awhile now, but I've decided I need to make some time for Ruby as well.

After that I went to see Jay Wren talk about Castle. I've heard a lot about Castle, but never really used it. It was pretty interesting.

Scott Hanselman's keynote was great! Had a great, funny intro followed by some very cool stuff for IIS 7. I've been playing with IIS 7 for a few months, but clearly haven't even scratched the surface with the HTTP Modules. More stuff to start playing with when I get home.

Served my first tour of duty in the "Ask the Experts" lounge. It was pretty cool; I didn't get a lot of people coming in for "hard-core" stuff; got one person looking for book recommendations (but that's another blog post), one person who had an interesting challenge which I will blog about later, but for the most part it was kind of an hour and hanging out and talking with Catherine Devlin and Darrell Hawley. I've never met Catherine, and if I want to continue learning Python, I should definitely start reading her blog. I hadn't seen Darrell in awhile and it was fun to talk to him again.

Off to the next session. To be continued...

Thursday, November 08, 2007

Sympathy

As an unbridled capitalist, I never thought I would be siding with a union of any kind. I've never been a member of a union and have never desired to be. Don't get me wrong, I think there was a time for unions. But we don't have children working in coal mines anymore. And from my point of view the unions have succumbed to the very greed they claim to rail against.

But as I learn more and more about the Writers Guild of America strike I become more sympathetic to their arguments, but not for the reasons they would like.

The crux of the complaint is probably best explained by this video the writers of "The Office" posted about the strike.

Some people watch that and see people complaining about their boss screwing them out of pay for extra work. What I see is ANOTHER indication that the Hollywood STILL doesn't "get" the Internet and the change it is going to make in the way media is consumed. They still view it as nothing more than a marketing media, when in reality it is a delivery medium.

I see the television changing so much in the next five or so years that the concept of a "television channel" will be completely obsolete. It all started with Tivo. I remember the day I got mine (generation one) and it's not an exaggeration to say that it completely changed the way I watched television. I never had to worry about being home in front of the TV when my favorite show started. I'm not what I would call a "TV Junkie" by any means, but there are a handful of shows I really hate to miss. I now longer had to make a choice, or be worried about missing my favorite show. I just knew that at a certain point in time the show would just be on my Tivo for me to watch whenever I wanted. It seems so simple now, DVRs are pretty much everywhere, but it was a big change at the time.

The next step was the Internet. Well, more specifically it was the widespread available of cheap high-speed access to the Internet. To be honest, I think the only people I know who still use dial-up are my parents! I'm hoping this changes before I arrive for Thanksgiving next week, but I'm not holding my breath.

Anyway, this wide availability of high-speed Internet made high quality video over the Internet a practical reality. It took iTunes to demonstrate that not only was there a market for this type of media consumption, but that people were even willing to pay for it! Now all the major networks offer (or are preparing to offer) their content (meaning whole shows, albeit with commercials) for download. Products like Microsoft Windows Media Center and Slingbox, not the mention the new generation of Tivo, will continue to offer new possibilities for using the Internet as a delivery method of content.

So, it's really discouraging to hear what is behind this strike. Clearly the networks think of "web content" as a sort of second class form of entertainment. Instead of trying to keep their customers rooted in the past they should be embracing these changes and finding new models to do business in. Instead of fighting this new market they need to find a way to embrace it. Consumers want these things. It's in Hollywood's best interest to provide them.

And don't get me started on movies!

Monday, November 05, 2007

A Blast From The Past

I had a bit of an unusual assignment from a client last week. I had to find a copy of Visual Interdev. Yeah, that one.

  MS_VStudio6Pro

The client in question has system that exports information from their common data model into a specialized one depending on client and purpose. Basically it dynamically crates an Access database from scratch and then copies data into it. The problem is that it does all this in VBScript. It's a ton of processing, and it all occurs in the pages life cycle. Understandably, this causes issues when the client has either a lot of data to export, or a complex destination schema. They are running into the inevitable problem now; processes are timing out.

The application is a ASP Classic web application written in notepad. For the time it was written, and the tools that were available to the developer, it's a pretty well designed and built application, but it's definitely showing its age.

The client wants to convert this to .NET, which I am 100% behind. The problem comes when a client with a system based on old technology wants to simply "convert" the application from one platform to another. The client in question hasn't indicated that this is their mind set, but I've had several clients in the past who have felt I should just be able to run their ASP Classic application through a conversion wizard and be done with it, so I'm mentally getting my ducks in a row if this turns out to be the case.

Not only does technology change, but architectural techniques and practices evolve. A design which may have made sense even five years ago can easily be rendered obsolete by changing business needs just as much by advances in technology.

The key problem with the current application is that the majority of the heavy lifting takes place in the page life cycle. Doing a "one-to-one" conversion from ASP Classic to .NET will make it run a bit faster, but you still have the underlying problem; the wrong part of the application is doing all the work. Sure, the increased performance may help for a while, but eventually there is going to be more and more data as their client base increases and they are going to have the same problem again. By performing a conversion like this the client is just reinvesting  in the wrong architecture.

In this case, it's clearly time for a ground-up redesign of the application.  Clients can often balk at this as on the surface it can present a larger investment; discovery must be done, a design phase is required and it's likely that nothing from the previous version can be salvaged.

But this situation also presents a lot potential positives that may sway a client as well. For one thing, the promise of a system that will grow with the business, not require the business to grow around it. An opportunity to overhaul the user experience may be a way to increase productivity. Perhaps your client have been clamoring for services that your current architecture can't support. Now is the time to look into including these and perhaps introducing new revenue streams. There are lots of ways to find ROI (besides just "Oh, it will work better") in situations like these, and it's very important to find these to make the redesign attractive to the client.

Monday, October 29, 2007

If You're Reading This, It Means I'm Dead

That's right, dead-tired of not having my own website!

I am now the proud owner of JamesCBender.com, although like the second Death Star, this site is not yet fully operational. However, thanks to the magic of Microsoft Silverlight you will soon be seeing the most elaborate "Under Construction" page the net has ever known!

Saturday, October 20, 2007

Reliable Messaging with WCF at Day of .NET

Thanks to everyone who came to my session this morning. I really enjoyed presenting it and hope you all enjoyed it and got some valuable information. I would love to hear from you all in the future about how you are using WCF, and how the information I presented has helped you design your services infrastructure.

As promised, here is a link to a zip file with my slide deck and the two demos I presented. If you are running Vista the MSMQ demo will have to be run in Visual Studio running with elevated privileges the first time you use it. This is because, as I pointed out, if the queue it uses does not exist it will try to create it. As I mentioned I DO NOT condone this as a best practice in an actual application, but it made the demo easier.

Thanks again for coming out!

Monday, October 01, 2007

Twittering Away The Day...

Last week I attended the Arc Ready event Microsoft hosted here in Columbus. Josh Holmes spoke about "Web 2.0" (and no Tim, writing about it in a blog is not that same as saying it, so you can't punch me) and mentioned, among other web sites, Twitter.

For those of you who aren't familiar with Twitter, it's been described as 'blogging on crack." In reality, it's a web-based "micro-blogging" service that allows it's users to send frequent, short updates about what they are doing at any particular moment. This can be done via it's web interface, an instant messenger client (Windows Live Messenger is conspicuously absent from the list of supported clients) or from you phone via a text message.

I had played with Twitter in the past, but I didn't do much with it. Mostly because I didn't realize how many other people were using it. I also didn't realize that it was accessible via IM, which makes it much more appealing then having to fire up the web page every time I want to "twitter" about something.

I'm going to give "twittering" a try over the next couple weeks and see how it goes.

Monday, September 17, 2007

DevCares recap

Thanks to all the people who came out for my DevCares presentation last Friday in Cincinnati. I had a great time and I hope the material was helpful. It was almost as fun as watching my Browns rack up 51 points on Sunday. J

Just kidding. But any win for us this year is going to be welcome.

Anyway, I'm providing a link to the materials as promised. I'm including the "ppt" files for those of you with Office 2007 and slide shows for those of you without. I'm also including the completed solution for the "Custom Channels" presentation.



As I mentioned, I will be at the Dayton .NET Developers next Wednesday the 26th presenting Microsoft Patterns and Practices Service factory for WCF. I will also be presenting the DevCares content again in Columbus on Friday September 28th. And if you can't just get enough of me, or just want some more .NET goodness, I will be speaking on "Reliable Messaging with WCF" at the Day of .NET in Ann Arbor on October 20th.

Hope to see you all there!

Sunday, August 26, 2007

Beware the Workspaces of Team Foundation Server


I've been using Team Foundation Server since its first beta at quite a few clients and I like to think that I know a bit about it, but I learn something new every day.


Today I learned a little bit about workspaces.


For those of you new to, or unfamiliar with TFS, your work is done in the context of a workspace which maps local working folders to source control folders. This is a cool way to manage your source control mappings and allows you to do some pretty cool things such as cloaking folders (more on that in another post) and maintaining multiple working versions of the same project (helpful for sandboxing). It's similar to a working folder in Visual Source Safe, but with more features. Think of it as your working folder on steroids.


However, there are some little… idiosyncrasies that you need to be aware of.


By way of background, I am working on a project that requires Windows XP. I run Vista at work and home and since this is a short-tem project (which I actually hope to upgrade to Vista at some point) I didn't feel like setting my machine up to dual-boot. Another reason is that I have someone helping me on this project, and I didn't think he'd take kindly to me telling him "… oh, by the way, I need you to re-image your machine and set it up for dual-boot. I know you have deadlines and all, but you know, whenever you have a few minutes…" So, I created a Virtual PC for my development environment. My plan was to get the Virtual PC all set up with the appropriate third party software and drivers and get it configured so that it could just be copied to any developers working on it and we could start rolling.


This is where I found out that Team Foundation Server Workspaces are NOT strictly local creatures. This was discovered when, in an effort to get the VPC's setup for each developer, we managed to delete workspaces that not only were not associated with the project in question, were not in use on the VPC at all. We got them back, but it was a bit of a pain in the rear.


When you select "Manage Workspaces" from the "FileSource Control" menu in Visual Studio, you will see all workspaces listed that your account has access to, regardless of which physical computer they are listed on (see below). The killer is that you can actually delete and change a workspace from a remote location.




Keep this in mind when working with Team Foundation Server. And be careful out there!

Monday, August 06, 2007

PWN3D!

This is probably old news, but I can't stand these "news" shows that do this, so to see them on the other side is a nice change. If nothing else, it's payback for "outing" Fake Steve Jobs.

Enjoy!


Friday, July 27, 2007

Long Time, No Blog

Hi everyone!

I've been busy for awhile, but I'm starting to get some time freed up, so you should start seeing more regular content here.

For now, you'll have to accept the following rant to make up for the lapse:

<Rant>

I have a latest pet peeve: tools or applications that claim to be Vista compatible where the first step in the installation instructions is "disable UAC." This was doubly troublesome due to the fact that this particular tool required UAC to be disabled not just for installation, but for using the tool!

In my opinion, if you're going to claim Vista compatibility, you should support something as important as UAC. To require it to be disabled while you're installing is bad enough, to insist that you KEEP it disabled is ridiculous!

</Rant>

Thursday, June 21, 2007

Coming to Findlay!

For anyone in the area, I will be presenting "Building SOA based .NET applications with Microsoft Patterns & Practices Service Factory" at the Findlay Area .NET User Group Tuesday, June 26th at 5:30PM. You can get more details about my presentation and FANUG at their website www.fanug.org

See ya there!

Sunday, June 03, 2007

I’ve been published!

Sweeet!

I hope you all find it informative, and please don't forget to rate it.

Monday, May 07, 2007

Day of .NET Recap

I should probably start this blog post by apologizing to everyone who attended my session for not being able to show a working demo. I did find out that I made two small errors; my resource file (the one I created in the first step) was miss-named. Therefore, when my pre-compile step tried to execute, it failed as it was unable to fine the file. I renamed the file, complied and it worked. Also, the "completed" solution didn't work because I tried to run it from Visual Studio when it was not in an elevated state. I will be sending the starting solution and the completed solution to the DODN organizers to post, with the slide deck, on the website. In the meantime, you can drop me an e-mail if you just can't wait and I'll mail it off to you.

But, this reminds me of something I didn't get to in my presentation; once you add the request for elevated privileges to your application, you MUST run Visual Studio with elevated privileges in order to run your application. If you'll remember from the presentation, your applications by default run under your standard user token. Once the application begins, without being elevated, it does not have access to the administrative token anymore. This will also affect you if your application attempts to perform an action requiring elevation and you HAVE NOT run Visual Studio in elevated mode. The solution it to right-click Visual Studio and select "Run as Administrator" which will ask you to confirm that you want to launch the application in elevated mode before starting the application.

Search (the part we ran out of time for)


Those who were disappointed with the search capabilities of Windows XP will be happy to know that the search facility in Vista is completely new and much faster and more user friendly.

Newer Microsoft applications (Windows, Office, SharePoint, SQL Server, Exchange, etc.) are built on a common search technology engine. It's important to understand that the engine technology, NOT the binaries are the same; the new search technology is simply packaged into a number of different forms. While the binaries are not the same, the similarity in the underlying technology allows for techniques used for one system to be used in another.

From a user standpoint, this translates into faster searches with the ability to be more specific about what you are looking for. This is possible because Vista takes a documents metadata into account when performing a search. For example, if you wanted to find all e-mails about vacation from Michelle, your search term would by "from:Michelle vacation." The "from:Michelle" property/value pair tells Vista to find all document with a property of "from" and a value of "Michelle." This can be used for any metadata property that is exposed by any document type in your system.

This common search functionally being deployed to the desktop also allows for Vista search functionality to be used in your application utilizing a specialized OLE DB provider and some extensions to standard SQL.

In order to utilize this search, you need to use a special OLE DB provider capable of accessing the operating systems indexing service. Out connection string is:

Provider=Search.CollatorDSO;Extended Properties=\"Application=Windows\";

For example:

SELECT System.Title,

System.ItemFolderPathDisplay,

System.ItemNameDisplay,

System.Document.CharacterCount,

System.Document.LastAuthor

FROM systemindex

WHERE SCOPE = 'file:C:/Users/Public' AND

CONTAINS('Day Of Dot Net')


This SQL is very similar to any other query you might write to query data from a table; you are selecting fields from a data store where certain conditions are met. In this case the values we are selecting are system values that will return metadata about files. We are searching "systemindex" (Vista's search index data store) where the file contains the string "Day of Dot Net" in the c:/users/public folder. In this case we are treating the systemindex like any other database table.

You can take this query and use it to populate either a data reader or a data set and manipulate the data just as you would for any other SQL query.

This provides us with another powerful tool that can be utilized in our Vista applications to enhance our applications value and provider a better user experience. And best of all, the other things discussed in the Day of .NET session, this is already built into Windows Vista. It's there, ready for you to use today!

Wednesday, April 25, 2007

Guitar Hero… too?

Well, I was planning on making this blog a review of Guitar Hero II for the Xbox. But, I have been unable to find a copy. Every store that I've been to (both of them!) have been sold out. Not hard to understand, since each store only seems to get one copy at a time.

So, as time goes on the odds of me getting GH2 soon decline. The primary reason is that as the weather starts to get nice, I tend to spend less and less time inside, and less of that time playing video games. I also refuse to be one of those guys who spends his weekend going from store to store looking for the one copy of the game in the city. This explains why I still don't have a Wii; I refuse to buy one until I can casually walk into a store and pick one off the shelf without being crushed in a throng of people. I also refuse to pay $800 for a console on eBay that retails for $250 in the store. Maybe if I were a hard-core gamer it would be different, but I'm not.

I did try the Playstation 2 version as Best Buy last week.

As someone who has been playing guitar for quite a while, I wanted to see how the game compared to the real thing. Best Buy has a two song limit on the demos. I choose "Carry on Wayward Son" by Kansas and "YYZ" by Rush on the basis that they were the two songs I was remotely familiar with (being a prog-headed music snob) and have actually played in a band scenario.

Well, big shock, but the game is nothing remotely like really playing the guitar. It's primary skill requirement is rhythm, but basically the game is Simon with a fancy control. Having said that, I did find the game to be a lot of fun. And will probably pick up a copy.

But at this rate, probably not till the fall.

Thursday, April 05, 2007

Dawn of a New Day… of .NET

The Great Lakes Area .NET User Group, The Ann Arbor .NET Developer Group and the Northwest Ohio .NET User Group are all co-sponsoring the "Day of .NET" on May 5th in Ann Arbor. More information can be found at their website.


Day of .Net May 5, 2007 - I'll be there!


This is a great opportunity to come and see some cool .NET stuff, learn some new tricks and participate in the .NET community.

There will be some great speakers, and I will be presenting "Windows Vista for Developers" for anyone who missed it at the February DevCares event.

See you all there!

Wednesday, March 28, 2007

iHippie


Generally, I don't like to repost content from other blogs, but I saw this on "The Secret Diary of Steve Jobs" and I thought it was funny enough to pass along:




Thanks Fake Steve!

Sunday, March 25, 2007

Code Camp

The Dayton/Cincinnati code camp was held today. Alexei, Arnulfo, Monish and I attended.

The Journey

Arnulfo's job apparently was to organize logistics. His "plan" was to have Monish and I meet him at the office at 4:30 (AM) and then go pick up Alexei on the way.

Arnulfo overslept. After hanging out at the office till about quarter of five, Monish called and woke him up. So we were a bit late. We then drove past the meeting point for Alexei, so more back tracking. We used Google maps to get us to our destination, but that was difficult. Many of the side streets we had to take between the freeway and the event were not labeled, or not labeled well. But we eventually made it.

1st Session: Practical Caching in ASP.NET 2.0 - Joe Wirtley

This was an OK session. We are going to be doing some data caching on my current project. The speaker talked a bit about static page and user control caching to. You don't have access to Session from cached user controls, so he showed us a work-around.

2nd Session: Layouts, Styles, Templates in WPF - Drew Robbins

I know Drew has given this presentation a few times, but I haven't seen if for over a year and half. I have to say that WPF is more impressive than its first incarnation. I kind of blew it off at first, thinking it was a neat toy, but seemed like a lot to go through, especially since it wasn't really on the horizon as far as being deployed. But, Drew showed some cool demos so I'm interested. I'll have to pick up Petzolds book and play with it.

3rd Session: Extending ASP.NET with Http Handlers and Modules - Joe Brinkman

This was a pretty interesting session about writing (you guessed it) custom Http Handlers and Modules. The speaker explained the page life cycle, and how sometimes it's more efficient to have a handler respond as opposed to an aspx page. He also showed some cool ways to use Modules to handle some authentication, compression and string substitution. The speaker was from DotNetNuke, and that framework uses several of these, so I'll download it and give it a look.

4th Session: Intro to XNA - Bill Steele

This one was for me. The fact is I haven't made much progress on my project. I downloaded and setup the XNA development tools, and fired up the starter project, but I wasn't really sure what to do after that. There is a little documentation for XNA, but if you don't have experience writing games, it's kind of hard to get your head around. This was a big help. I also learned that the next rev of XNA will be out next month, and that the new version will work with Visual Studio (the current version requires C# Express). I've went ahead and downloaded the framework and Anim8or (the recommended asset creation tool) but will probably wait until next month to avoid having to install Express.

5th Session: Balancing WCF Performance and Security - Darrell Hawley

This was a pretty helpful session that compared and contrasted the differences (both for performance and security, as per the title) of the various WCF bindings. There were some pretty marked differences. It was pretty helpful in determining which binding which binding to use where. One of the big strengths of WCF is the ability to have multiple bindings for the same service AND change these via configuration. So, you can expose your service via WS to the outside world, which provides interoperability, and TCP internally, which provides speed. There wasn't time to go into MSMQ, so I'm going to play with that a little on my own and how it "stacks" up.

6th Session: Improve Your Testing With Open Source Test Tools - Jim Holmes

I already use Team Test for most of my testing needs. Obviously, as good as Team Test is, it doesn't do everything, so I decided to check this out and see what was out there that was new and cool. There were a couple standouts. The first one, Fitnesse, is (according to their website) a tool to compare customer's expectation to the actual results. I also am interested in Pairwise, which is a case generation tool that helps test situations where conditions overlap. Watir looked kind of interesting as well. It basically does the same thing (on the surface) that Team Test’s Web Test does, but where a web test simulates web interaction by comparing query strings, Watir allows you to actually interact with specific fields on a web form. I don’t know what it will really offer that web tests don’t, or if it’s simply a better tool, so I’ll have to check it out. The only “drawback” is that it is Ruby based. I don’t have anything against Ruby per se, but I’d like to not in stall anymore stuff on my computer than I really have to.


All in all it was a great code camp and I got a lot of information and ideas out of the session. I’ll definitely be back next year, and would encourage everyone else who is able to also attend.

Thanks to everyone and CINNUG and The Dayton .NET Developers Group for putting on a great event!

Thursday, March 22, 2007

An Open Letter…

Dear Asshole who broke my car window, tore out my dashboard and took my stereo along with the seven CD's under my seat,

On the off chance you are actually reading this, I just want to let you know what a pain in the ass you caused me today.

Because of your actions:

  • I was made to wait in the parking garage on one of the windiest days in recent memory waiting for the police
  • I was forced to listen to the angry ranting of your other victims (three more in all) as they started to trickle into the garage as the work day ended
  • I will have to go to the police department tomorrow and get a copy of the report
  • I had to go out of my way to the Kroger in German Village and buy clear shipping tape to fashion a "temporary window"
  • I had to drag my laptop through said Kroger, because you've shown me that I cannot trust people enough to leave anything of value in my car, apparently even if it is part of the car, which puts me in a bit of a bind
  • I had to file an insurance claim
  • I had to miss the .NET user group meeting
  • I will have to take time off of work tomorrow to take my car in for repair
  • I will have to pay a $500.00 deductible
  • I will have to rent a car for about a week and a half
  • I have already had to recount the story seven times to seven different people, and none of my friends, family or co-workers even know it happened yet, so I'm looking forward to having to tell the story about a dozen more times
  • I have been tempted to drop the "f-bomb" on this blog, which I promised myself when I started it I would never do

I know this probably doesn't mean much to you. You obviously don't care about anyone. Given that the best you seem to be able to do is stealing, I'm guessing that you really don't care about yourself either. And that's fine; frankly I don't care about you either. Aside from my anger, and wishing you were there so I could throw your ass over wall to the street seven stories below, you are worthless to me. I imagine you are pretty much worthless to everyone in your life as well.

So, what's it like being someone who contributes nothing to the world? If you died would anyone care? Or even notice? Maybe your fence? I'm guessing you are doing this to purchase drugs, so maybe your dealer? But then I imagine that there are hundreds of you on the street, and when you are gone you will be easily replaced. Maybe the next one will be a little taller or shorter. Maybe a little thinner or fatter. But I'm guessing no one will notice that someone has even taken your place. What's it like to be so worthless that you essentially interchangeable with any other loser out there?

What do your parents think of what you do? Do you even have parents? Are they just as bad? Or do they simply not care?

In any case, I'm sure that in the rare moments that you do think about your "life" and how little you've made of it, I'm sure you blame someone, anyone except you for the situation you are in. Your parents, the police, society, schools, whatever. But deep down you must know that's all bullshit. Even if you don't want to face it, only you are responsible for the waste your life has become.

Can you even look at yourself in the mirror? I wouldn't be able to.

The items you stole are just "things" and I will easily replace them, like you are easily replaced. Actually, some of those CD's were imports, so they will probably be harder to replace than you would be.

As for the CD's, I can't imagine you are going to fence them. You CAN'T expect to get much money for them. Even at a used CD store you may get $10.00 for the lot. Did you take them for personal use? I somehow doubt that you are sophisticated enough to enjoy CD's by Dream Theater, Porcupine Tree, Mozart, Rush or my CD of "Great Moments in Italian Opera."

As for the CD/MP3 player, it was about five years old, and not state-of-the-art when I did buy it USED. By the way, the MP3 feature hasn't worked for years. While I'm sure you are a drug user, I admit I have no idea what you choice of drug is, but I hope the $0.50 you get for it buys you enough junk to make it worth it.

But, at the end of the day you are a worthless scumbag who probably won't live to see 30, not that you appear to have anything to look forward to. Oh well. I can only take solace in the fact that I am a better person than you, and that is something you can't ever take away from me.

--Bender