Thursday, January 31, 2008

The Freestyle Entrepreneur onto WordPress

My other blog, The Freestyle Entrepreneur, is now on self-hosted WordPress with an all new, classy theme and platform. WordPress is super-powerful and will serve us well for quite some time. I especially enjoyed this implementation because I learned a ton and I can leverage it for some other blogs I'd like to produce. I encountered some interesting technology challenges I'll post here soon. For now, I'm glad to be done with this phase!

Is this how you handle Microsoft conference calls?

I saw this on Jeff Julian's blog this morning. OK, so I'm a dork but I think this video is hysterically funny.

Jeff's a good guy. I met him when he was an instructor for an early TFS 2005 300-level class. That's when I first heard about GWB. He's an MVP, author, and very active in the community.

Tuesday, January 29, 2008

AT&T Ratcheting up on my 'Evil Companies' List

It really pisses me off when a company nickel and dimes me. You got a good service? Great. I'll pay for it. But don't nickel and dime me.

Hilarious (but not...) article on the price of data communication via SMS on AT&T.

Someday, I want to find a reasonably-priced media alternative and say 'kiss off' to all the companies like AT&T, Time Warner and Insight that nickel and dime me for cable, Internet and phone. Grrrr.

Monday, January 28, 2008

Posting Code on Blogger

A fellow blogger recently posted some unformatted code samples on his Blogger blog and...well, it was tough to read to say the least (hey, at least he's posting code). I did some investigation and found:
Update (4/1/2008): I finally did this. My steps:
  1. Download latest syntax highlighting code
  2. Expand .rar with WinRAR
  3. Uploaded all the syntax highlighting files to Google Pages
  4. Followed instructions here to change my Blogger template. (NOTE: remove errant link close tag...it's already closed)
  5. Updated above template code with pointers to my code files hosted on Google Pages
  6. Saved Blogger template
  7. Wrap code with pre tags as described here.

Sunday, January 27, 2008

ArcReady

One of the avenues for learning I've leveraged this past year is the Microsoft-sponsored ArcReady three hour in-person, bi-monthly seminar. It's held in a dozen or so cities but mine (Columbus, OH) is coming up on February 4th. Click here to register.

[...and before you look at the remaining post and say TLDR: ArcReady is free, there's usually good swag and there are some very cool/smart folks that attend...]

I enjoy ArcReady because more than likely, you won't see a line of code. As developers, we're constantly exposed to writings and presentations with lots of code. For the most part, I like that and feel it's the best way to learn about software development. However, always approaching from a developer perspective tends to lose the forest for the trees.

My opportunities to code have certainly declined over the years but I enjoy coding and can [gasp] actually read a code book and enjoy it (vs. using it as a reference). However, I'm constantly amazed at how frequently technologists fall to pieces when it comes to compiling an entire solution. We spend so much time and expend so much effort in becoming great developers that we never take a breath and say, "Hmmm, should I really have coded a message queueing application from scratch?" Or, for example, we never stop to ask ourselves, "Can I really create something superior in security to Active Directory?" Or even, "These classes are brilliant, but should I have used interfaces instead?"

At times like these, your 5% time investment into something like ArcReady comes in handy. ArcReady (among other venues) helps you to think about software solutions holistically. We need to be more aware of solutions that are out there, tested, in production, and providing value. What's SaaS? What's SOA? What's PopFly? Should I be using them? Are they a better solution than custom application development?

This type of exposure to non-development learning helps us as technologists remain aware of what's out there and help prevent the limiting of our thinking. So, if you're a developer, considering branching out of developer-only content and expose yourself to a bit of solution architecture. ArcReady is a great venue for this.

Bonehead of the Week: PB Furniture

My wife kicked into an organizing spree last week purchasing a companion shelving unit to house kid stuff matching one we already have. I took an hour or so putting this second unit together Saturday. I'm one screw away from finishing and...crap, this one isn't the same color. You've got to be kidding. Explicative. Explicative. Explicative.

Yep, the new one is "espresso" with the old being "honey". C'mon, get real people. I'm completely pissed at myself for not checking and/or noticing sooner. Taking this guy apart isn't tough but putting it back into the need-to-be-a-packaging-engineer packaging feels daunting. Well, I managed to get it close and re-pack it with some semblance...and off to Easton I go.

My wife called ahead and Pottery Barn Kids told us to just have our receipt and pull into a little, nearby driveway. Ok, fine. Well, they've changed the traffic patterns at Easton and it's a PITA to get around; but I finally plunk myself in the right spot.

I hop out of the T-Blazer and blam, Mr. PBK is wheeling my replacement shelves out. Is this guy psychic? We exchange boxes and he inquires, "You just called a few minutes ago, right?" [Nope...but I'm hijacking these "honey" shelves nonetheless, pal.] About then, a mini-van pulls up. Yep, you guessed it: two people pulled into this loading dock, both at Easton, both at exactly the same time--both retrieving the exact same thing. Doooo-dooo-dooo-dooo. Creepy, right?

Needless to say, I checked for the "honey" color prior to departing. Yep. "honey". Grumble. Grumble. Metrosexual. Grumble. Well now I'm an expert. I set up my "honey" shelves in about 25 minutes.

All is well (and organized) now! Unfortunately, due to my push to get this task checked off my list, a 45 minute task became a 4 hour task. Super.

Friday, January 25, 2008

January CONDG Meeting

Hit the Central Ohio .Net Developers Meeting last night. You'll find me there almost every month but last night was especially cool.

Mike Wood presented on .Net Workflow (WF) as a rules engine. This is Mike's fourth time in recent weeks delivering this presentation around the Heartland (Microspeak for Ohio, Ky, Michigan, Tenn) District and it showed. The talk communicated the ins and outs of a complicated but feature-rich product with clarity and passion. It was one of the best I can remember in recent months...although I tend to get really geeked out about WF and BPM.

I must admit an "ah, ha" moment in approaching .Net WF as a rules engine. (It seems fundamental and a no-brainer that the heart of WF is a rules engine but...) I had always just thought of it as a mostly-graphical (drag/drop) method to lay out a business process...like a mortgage application approval process. Did someone from Credit approve it? Yes, then "route" to Accounting, etc. But WF is so much more. By persisting business rules in WF (simply XML .rules files behind the scenes), we can bring significant maintenance improvements to our code.

Think about a business rule change in your code today. A scary prospect, right? Well, hopefully, you've surrounded your rules with great test coverage (in my best Judge Schmales: "hmmmm? hmmmm?") making it somewhat easier. However, you still need to recompile and re-deploy assemblies, etc. And, more importantly, you need to make sure your change to the rule doesn't cascade into other rules causing unexpected outcomes with your business logic.

With WF rules, you use the rule editor to make the change and the XML gets serialized out to the .rules file. WF handles priorities, chaining, etc. Push that file out into your prep/test environment, test like a banshee and push it to production. Very cool.

WF also provides lots of helpful features such as hierarchical or rule priority execution forcing certain, higher priority rules to execute first. Additionally, one can persist workflow state out to a relational store, interrupt workflow midstream (step 8 of 10 contains a business rule that needs to change...all objects currently before 8 must experience this change), or even host business rules outside of WF.

Overall, Mike gave a great presentation. He engaged the audience and shared some very helpful information. I'll definitely recommend this to my clients given the right situation.

Additionally, there are lots of new developments with the group:
  • CONDG is now a non-profit group
  • New board members were elected:
  • CONDG sponsorships are now being accepted:
    • Annual: $2000
    • Single meeting: $250
    • SWAG: $50
  • Sponsorships should result in dinner being catered in (Nice! No more 15 minute throw down a Chipotle burrito or starve until arriving home at 8:30!)
  • CONDG has formed a sub/sister group entitled the Mid-Ohio Connected Systems Developer Group (MOCSDG). Not sure how to pronounce that but I'm soooo there! More details to come.
  • And, finally, CONDG has begun working in closer conjunction with COSPUG, the Sharepoint/MOSS user group.
Way to kick off the year, guys. Very exciting developments. I'm looking forward to a great year of learning and contributing (my ADO.Net Entity Framework talk got pushed back to May but I'm on the hook for a February grok talk...I'm thinking about a mobile 3.5 LINQ to Amazon demo.)

Wednesday, January 23, 2008

ADO.Net Entity Framework: Upcoming Presentations

I'm scheduled to deliver a presentation in March May (got pushed back) on the new ADO.Net Entity Framework. It went beta3 back in December and the samples are here. You'll also need an instance of SQL 2005 (could be Express), this clandestine Visual Studio patch (be patient...takes forever to install), and the EF Tools (last released with the December CTP2).

Other than from 10,000ft. and a familiarity with O/RM tools (EF does that but a whole lot more), EF is close to an unknown for me. This will be a good challenge to teach myself the technology and then effectively convey that understanding to the folks attending the presentation. However, EF looks like an excellent opportunity to accomplish a common LOB task more productively -- something I'm uber-passionate about -- so I don't think it will be an issue. I'm also delivering the talk internally in February for practice and may pitch it to a code camp if things turn out well.

Best articles I've found so far:
ADO.NET Entity Framework Overview
Introducing ADO.NET Entity Framework
ADO.NET Entity Framework (yes, Wikipedia...hey, it's straightforward)
Microsoft’s Data Access Strategy

Tuesday, January 22, 2008

Central Ohio Day of .Net

Michael Wood, co-founder of the Cincinnati .Net User Group just announced the Central Ohio Day of .Net for Saturday April 19th at the Roberts Center in Wilmington, Ohio. The conference, formerly known as the Cincinnati - Dayton Code Camp, is a no-brainer: free, good location, [what appears to be] strong presenters and a great networking opportunity. I plan to submit a topic to present. Hope to see you there!

.Net Framework 3.0 SP1

Released. What's fixed.

Friday, January 18, 2008

Tuesday, January 15, 2008

Why I Hate Good Conferences: CodeMash Wrap-up

A good conference like CodeMash really throws me off-kilter. I spend two days in uber-technology / developer land only to return to reality with a crashing blow. I'm sure my manager hates me with a passion afterwards too. I summon up a dozen or so new, cool (well, at least I think they're cool) ideas in my head and I pour them all into emails and just start firing. Mind you, they're well-thought-out but I'm sure it's a bit overwhelming.

Oh well, at least I'm passionate.

It's tough for me to manage my expectations after speaking at length with cool folks like Josh Holmes and witnessing great presentations from Brian Prince, Bill Wagner, and Scott Hanselman (yes, these are Microsoft-centric folks...see CodeMash 2008: Day 1 post). As a slightly-introverted person, it surprises me how much I enjoy meeting and interacting with the kinds of interesting people attending CodeMash. I also tend to become a deer in headlights with all the great directions I could take given exposure to all these smart technologists.

I must temper my ADHD/ADD (no, I don't really think I have this...well probably not, but no offense to anyone who does) and typical lack of patience; seek focus, and get a plan together. I'm definitely going to snag some ASP.Net 3.5/C# 3.0 and MOSS books. I also want to up the bar on my public speaking in terms of frequency, quality, and breadth of audience. Finally, I'm pledging to continue to focus on relationship building [with the community] and my technology evangelism endeavors. Whew, that ought to keep me busy for a while.

...and I'm not afraid to admit: F# is a bit over my head. Looks cool but I'll let the science/match folks leverage that one for now. My interests are more on the line of business, pragmatic applications anyway.

As in last year, great work organizers. Until next year!

Monday, January 14, 2008

Flash: Silverlight Dominates World!

Persuading NBC to host the Olympics online using Silverlight 2.0? Brilliant. Completely brilliant.

Personally, though, as a developer, Silverlight is cool but I'm just exhausted from hearing about it 24x7. ;-)

Thursday, January 10, 2008

CodeMash 2008: Day 1

Well, day on of CodeMash 2008 is just about up. I'm in the last session of the day for me: F#. It's a functional language...code is data and all that. I can't say I'm mastering it or how I might leverage it but that's what CodeMash is all about: exposing yourself to topics and concepts one wouldn't normally be exposed to. I think of it as trying to minimize the "I don't know what I don't know" factor. I hate stumbling upon a great solution to a problem a few months after the problem was resolved with a more complicated solution.

I tried to keep myself out of the box most of the day attending sessions on:

I was also honored to gain an invitation to lunch with the keynote speaker Scott Hanselman. (Thanks Josh, Jeff.) It was a big group (~30) but he spoke of some interesting perspectives about how to get things done (i.e. release products) at Microsoft. He sounded as though he was already a bit frustrated at all the legal garbage often dictating Microsoft actions...after working there just 13 weeks. I've never seen Scott speak but he gave a very entertaining and informative presentation on IIS7. I got the impression Scott could give a good presentation on cantaloupes...he's just that kind of guy. I'm going to try to ask him how he became so comfortable on the podium. He's been speaking for years so...probably experience.

My other priority (aside from learning) for the conference is to meet folks. Now I'm an ISTJ (Myers-Briggs) so the days can be a bit tiring for an introvert! However, I must forge on and keep my energy up. In meeting people, I'm hoping to get the name of my firm out, help with recruiting, and engage myself in the community.

Tomorrow, I'm going to trend back closer to my domain:

  • Silverlight
  • WWF
  • Agile
  • C# 3.0

I'm also looking forward to socializing with folks from my firm (6 attendees + 2 sales/recruiting), and the other CodeMash attendees. QSI is sponsoring a happy hour and I'm hoping our sales guy will bust out the Amex Gold tonight!

Overall, again this year I am wildly impressed with the organization and variety of sessions coordinated by a non-profit, volunteer group. Jim Holmes, Brian Prince, Jeff Blankenberg, Josh Holmes, John Hopkins, Jason Follas, and a host of others I'm forgetting. Great work!

Tuesday, January 08, 2008

JeffreyHunsaker.com

I splurged this weekend and bought JeffreyHunsaker.com. Currently, it redirects to my Blogger blog at EffectiveThoughts.blogspot.com. Eventually, I'll use Blogger's new domain mapping functionality to assume this URL or I'll move over to self-hosted WordPress...not sure yet.

You're probably saying, "You go by Jeff...why didn't you get JeffHunsaker.com or Hunsaker.com". Because I missed out on it by a month. Another Jeff Hunsaker (no not the SCO COO...SCO blows) bought it in early November. Bummer. Oh well, close enough.

CodeMash...Opens Wednesday!

Looking forward to attending CodeMash tomorrow through Friday. Should be a jam packed with good content.

Here's my agenda (cool Silverlight Alpha 1.1 Refresh application). You can also catch me at the following:
  • Leon Gersing Vendor (Cardinal Solutions) Session: Friday 1:25PM Ballroom F
  • Me on the Expert Panel: Friday 10:15AM & 2:20PM
Hope to see you there. I'll probably be hanging at Cardinal's sponsor booth when not in a session...stop by and say hello!

Friday, January 04, 2008

Amazon Edges the Bookstore

In an unusual turn of events, the stars aligned yesterday and I got a full hour by myself to pursue one of my favorite activities: browsing at the bookstore. You're probably asking, "what's so striking about that?" Go have two kids and you'll have your answer.

I love browsing at the bookstore. Particularly a big, national bookstore...like Barnes and Noble. Grab a cup of Starbucks and just lose track of time. Ahhh. A lot of my enjoyment stems from the uninterrupted quiet time. Sure, my cell is in my pocket but there aren't any of the normal distractions (see above: two kids...I love 'em though!). Secondly, I love to read and learn. What better place than in the bookstore? Typically, I like to browse by subject: technology, business/management/leadership, current events, history, economics are a few of my regular stops.

Despite my bookstore love, it remains an incomplete experience. The online retailers trump bookstores with (1) superior pricing, (2) reader reviews, (3) sales/popularity/related data, and (4) availability/inventory. Walking into a bookstore, it appears they have every book on earth but as I start to browse, I discover a lot of "this book is really identical to...". I was surprised at how reliant I've become upon online reader and sales rankings. I just don't have time to thumb through enough books (and enough pages of each) to find the one I think would be best. Also, a good bookstore might not even stock the "best" book for my needs. Without a global inventory, I would be none the wiser.

Prior to my visit, I spent a fair amount of time browsing Amazon and picking out the top 3-4 books in a given category I wanted to read through and potentially purchase. But, it took a lot of time and the bookstore only ended up having around 50-60% of the books I wanted to review. Sure, I can "look inside" on Amazon but the content is a subset and flipping those pages online just isn't the same.

There's opportunity here in some fashion or another--I think for the brick and mortar bookstore. Seems like something surrounding print on demand and ready access to review and sales data at the bookstore would complete the picture:
Ah, Lincoln on Leadership, this looks good. [Thumb through...read a few pages] Ok, show me the reviews on this book (scan/read ISBN# and up pops some sort of projection/browser). Hmmm, strong reviews. Are folks buying this? What else are they buying? Does the bookstore have that? Sigh, they don't have it...BUT, they will print it up for me right now if I want to read it. And, the price is reasonable because it wasn't shipped, etc. And, they'll give me 20% off if I end up buying it (so they don't have this random book hanging out on the shelf). Cool!
And for goodness sake, please highlight the book I'm looking for on the shelf. Make it flash or something. How do people find books in these places?

The pricing differences are significant too. B&N brick and mortar wanted $25 for Microtrends while it's $17 on Amazon. That adds up quickly. Typically, I queue up my books spending at least $25 so I can achieve free shipping. Great, I just beat the bookstore by 25%. I like that. Oh, and usually, I'm not charged tax via Amazon. Stick it to the man [publisher...the author typically gets screwed on profits]!

While on the subject of pricing, a discussion of the public library seems warranted. (Yeah Ben Franklin! What a stud.) I enjoy the library too--especially the one in my community--I can reserve via the web and I get email notifications when reservations are in or my books are due. At the same time, the library annoys me too. (Ok, it's free so I can't really complain.) However, their selection of newer books remains weak (by nature) and the 3-4 week check out period isn't long enough for me (I tend to read about 5 books at a time...picking up the one that suits my mood...ok, it's strange but it works for me).

Overall, with the exception of adding a coffee bar and far better selection, brick and mortar bookstores haven't really changed that much in the past well, 20-30 years or so. It's time for an evolution of brick and mortar bookstores and a merging in of technology. Having reviews and other data points accessible during the browsing experience would significantly improve the bookstore experience.

Wednesday, January 02, 2008

Demos using VirtualPC without a LAN Connection

Typically, when delivering a demo for a server-based product, I create a VirtualPC or VMWare instance of the server product and then show the VirtualPC instance full-screen. I recently developed a demo for Team Foundation Server and Visual Studio 2008 Team Suite. I used a Rosario VPC instance for the TFS server but because VSTS 2008 released RTM, I went ahead and installed it directly to my laptop. So, VSTS 2008 on the laptop connecting to the Rosario VPC instance. Lovely.

About 18 hours prior to my demo, I realized I wouldn't have IP connectivity and that I had been relying on my home network's NAT capabilities for divvying out IP addresses. Rhut rhoe, Raggie.

Fortunately, the folks at Microsoft foresaw this and created the Loopback Adapter. If you need to configure your machine similarly (IP "connectivity" while disconnected) and you wish to avoid the ever-embarassing "Media Disconnected" status message from an IPCONFIG call, just use the "How to install the Microsoft Loopback Adapter" instructions.

Afterwards, within the VPC instance, select Edit...Settings...Networking. Choose "Microsoft Loopback Adapter", wait for the adapter to acquire the simulated IP address (169.x.x.x), and wala, you're "networking".