Saturday, July 25, 2009

CodeStock 2009: Day 2, Part 2

The second half of the day was much better than the last half of day one and first part of day 2...

How I Learned to Love Metaprogramming
Kevin Hazzard

As I mentioned to Kevin after his session, he took me back to the days of my computer science classes in college. Kevin has a terrific style of teaching complex topics so they are understandable to most people sitting in the room. I have no experience with the .NET dynamic language runtime (DLR), but following along the theoretical process Kevin discussed was really cool. I am sure I did not learn everything I was suppose to from the session, but I had no expectations of this to begin.

Great speaker and interesting material.

jQuery 101
Rod Paddock

Rod is another one of the .NET rock stars who has roots deep in Visual FoxPro and not afraid to let the crowd know it. I have seen Rod speak many times. Rod has been an excellent speaker for years and each time I attend his sessions, regardless of the topic, I walk away smarter. Even when I do not agree with his perspective or his approach, I get his take on it and it helps me define my position.

This was the second session I made the trip for and was not disappointed. In this session Rod took the developer from possibly knowing nothing about jQuery to knowing you could return to the office and start using it right away. Immediate value. One of those sessions that pays for the conference. I was excited about jQuery to start with based on community excitement and talking with several developers about using jQuery. Rod reinforced this feeling in spades.

My favorite part of the session was one of Rod’s simple demos. One of the attendees in the audience showed some skepticism with respect to how simple it would be to accomplish it without jQuery. You could see the spark in Rod’s eye, as if he was being set up for something great. Minutes later he demonstrated the aha-moment, which was cool to watch how he put all of it in motion.

For me it really opened up the possibilities for rich applications on the Web and the how simple it is to implement cool Web stuff inside an app. It is not just a set of controls like you might find in the AJAX Toolkit, it is a powerful programming library.

Takeaway: jQuery is a no-brainer decision for Web development no matter what other technology is involved in the Web app, and a book called jQuery in Action is a must read in the near future. It was also nice getting a chance to talk to Rod in person since I use his almost every day to help Visual FoxPro other developers.

Web UI Warfare: Choosing Between ASP.NET Webforms and MVC
Rachel Appel

This session was the battle of the Web presentation approaches between Webforms and MVC. The thing I liked about this session is the fact that there are two approaches with no clear or defined winner, and that is okay. Often I attend sessions where the speaker inadvertently tells me I am a moron because I decided on a different approach, or the opposite one they prefer. What Rachel did in this session is discuss the pros and cons of both and noted how you can use both in the same project. Picking the best of the technology as it is appropriate for the job at hand. Wow, what a concept. Rachel can be a bit brash in her discussion, but sometimes that works, and for this session it did.

Final Thoughts
The college atmosphere is fine, but scattering sessions across two buildings was not optimal for two reasons. First is the layout is anti-networking. The biggest benefit for me to attend any conference is the networking with other developers. I was able to talk with others, but not nearly as much as I do at other conferences. I met several new people, but mostly at dinner one night and at the Stevens After-party the other night. It was not a complete loss, but I am sure I would have made even more friends had the sessions been held in a concentrated area where people would have been more likely to hang out. The other disadvantage of the two-building layout is the fact it was a bit of a pain if you decide the session you initially pick is not for you and want to try out a different one. It might take 5 to 10 minutes to walk across the way, up and down stairs to the other session. The open spaces sessions were off in the corner, which I know is not conducive to the “program” where you want to suck people in as they walk by and overhear something interesting.

The conference also reinforced something about conference session scheduling: I really like the repeated sessions. I found I missed something and heard later it was good. No chance to see it when it is offered only once. I know more sessions can be offered without repeats, and this is cool, and something you can do when you are not paying for everyone's travel and lodging. Still, I prefer repeats so I can better schedule what is important to me.

Overall I was a little surprised by how many people I know in the .NET community. Some of them were even open to listening to a VFP-guy. Some of them were surprised that Alan Stevens is speaking at a conference I organize and it is on this foreign technology called Visual FoxPro. Imagine the look on their face when I showed them some Fox stuff Alan has in his family room. The horror {g}. Alan is one of the few who have established themselves in a growing .NET community, but are not afraid to let people know how cool Visual FoxPro still remains today for project development.

Also found some things to possibly bring to Southwest Fox. I walked away with some new friends and a renewed energy to learn some new technology. That might be the best takeaway of all and the part that made it completely worthwhile to take four days away from hot projects and billable work.

I definitely will keep CodeStock on my radar for next year. Maybe I will even submit some sessions abstracts.

Labels: , ,

CodeStock 2009: Day 2, Part 1

The second day of CodeStock was the day I was really focusing on since seeing the schedule.

Josh Holmes, Microsoft

"Simply" great. I have seen Josh present elsewhere and came in with low expectations for this keynote. In fact, when I went to bed the night before I told myself I would not be disappointed if I overslept and missed this session. I am glad I did not. This was a keynote about common sense and being thought provoking. It succeeded. Josh was well prepared and it was obvious to me this was not the first time he ran through this session. A little of my faith was restored in the Microsoft Developer Evangelist contingent at the conference.

ASP.NET MVC - Soup to Nuts
Peter Mourfield

This is one of two sessions I spent $300 to see. I am in the process of deciding whether we are going to use ASP.NET or something else for one of our customer projects. MVC is a Microsoft technology add-on to ASP.NET to help speed up Web development based on Model-View-Controller pattern. If I had not done some homework beforehand I would not have even learned what MVC stands for.

Peter was obviously unprepared and unrehearsed. He told us about the Julia Childs cut and paste approach to presentation, which is a seriously sound approach to successful presentations. One key though, the code you cut and paste must work. It did not. Honestly, Peter was one of the worse presenters I have seen at any conference and I have been to dozens over the years. If I could rate this session on the eval a zero I would because that is the value of what I got from it. Terrible, terrible, terrible. I am guessing more than 60% of the people left before it was a quarter over. The session took up two slots. I tried to stick it out, but eventually bailed at the half way point because it was just too painful to watch. No takeaways from this session, just in case this was no obvious.

Starting a Software Company
(Panel Discussion)

On the plus side, the benefit of bailing from the MVC session allowed me to sit in on this session and it was terrific. I am normally not a fan of panel discussions as they usually get derailed to off-topic discussions and often are controlled by a "loud mouth complainer" in the audience or a dominant speaker on the panel. Neither of these happened. I have started three software companies in my career. It was good listening to others talk about the approaches and what they think is formula for success. It confirmed some of the approaches I have taken over the years and made me think about other things to consider as White Light Computing tracks on positive growth for the foreseeable future.

There are a couple of things I like in this session. First is the discussion of the current economic times referred to as a nuclear winter. Several pundits declare these are the worst times seen by our generation. But successful companies like Hewlett Packard, Coke, GE, Adobe and Microsoft were all created during down times, so the panel speakers were encouraging people to start new businesses during these times. Honestly, I have started two businesses in Michigan during the current 9 year recession the state is suffering through. It is not easy and is fraught with risks. Yes, there are times when I reconsidered joining a company as a W2 employee, but I really love my job where I report to customers instead of the pointy-haired-boss.

Some key common sense points:
1) Luck is important.
2) Surround yourself with smart people.
3) Don't develop in a vacuum.
4) Break vision into manageable chunks (having a vision is also important {g}).

One of the attendees is a young man who probably was 12 or 13 years old. He asked an insightful question if it was okay to start a business today that would fund what he really wants to do: game development. After the session I ran into him and passed along some advice: follow your heart, believe in what you want to do, and trust your instincts. Someday we will see this young man doing some great things in the gaming industry.

This session also lead to some terrific conversations at Alan Steven's after party. I met someone who is considering starting his own company in the Knoxville area. I passed along as much advice as I could. The key to starting any business is knowing it is not easy and it is not all peaches and cream.

Open Spaces - Marketing yourself and your company
(not rated)

Marketing to me is a dark art. I read in Whil Hentzen’s The Software Developer Guide how nothing works. I definitely understood the point in Whil’s book, but the reality is: doing nothing will give you the same results. Several people offered the moderator some suggestions. I looked at this session as something of a brainstorming opportunity. In a brainstorming session there are no bad ideas, but instead of taking it all in, I felt like we were more in a debate about what works and what does not work. It was unfortunate because there were a number of terrific ideas thrown out and I am not sure any of them were absorbed. Several of the ideas thrown out take time and effort. I believe the moderator was looking for something easy and finding the silver bullet. Unfortunately it is not always easy.

The thing with marketing is building brand recognition and getting people to call to do business with you or your company. With the Internet available we have more avenues available to get brand recognition than ever before, and many of these avenues cost very little to try.

I think coming up with marketing ideas is way easier than figuring out if they work. I am not sure I can measure any one thing I have done as working, but one thing is for sure, the entire approach I have taken over the years is working.

I shared as much wisdom and experience I could, but most of my ideas do take time and effort. They have worked for me and White Light Computing. Hopefully the moderator and others in the room will benefit from them.

More to come on the second half of day 2, and my final thoughts...

Labels: , ,

CodeStock 2009: Day 1, Part 2

After lunch, more sessions...

DevBasics: The ASP.NET Page Lifecycle
Jay Harris

Jay took us through the ASP.NET sequence of events and explained what they were, when they happened, some gotchas and tips for the event, and how you might use them in your Web app.

The session was well prepared, clear and definitely basic as noted in title and abstract. One thing that would have helped is demoing more of the events and discussing practical uses of the events. Not being critical here, just a suggestion. It was a good session.

Key takeaway is a better understanding of the ASP.NET page lifecycle. I also learned there is a Web site where speakers can set themselves up to be rated by those that attend their sessions ( Interesting how many of the speakers I checked out have only one or two people rating sessions. I have always wondered why it is so hard to get feedback from people through evals.

Programming SQL Server T-SQL
Joe Kunk

One word to sum up the problem with this session: rehearsal. It was painfully obvious that Joe did not put the time into rehearsing this session. He started telling us how he was working on the materials the night before, which is never a good sign. He also noted it was a 200 level session, yet the first 75% of the session was definitely 100 level. The last 25% of the session was the meat of the session and it unfortunately was rushed. If I was Joe I would focus on the last 25% of the material, expand it a little and find you have a terrific session.

I went into this session hoping to get some golden nuggets for my work with SQL Server. For me personally, I believe my weakest development point (vs. configuration/administration) with SQL Server is T-SQL so this was a perfect opportunity to jumpstart the refinement of my skills in this area. Lately I have been working a lot with VFP data-based customer projects. I spent the better part of 7 years doing mostly SQL Server and all of a sudden the tides went the other way for the last couple of years. So I am a little rusty {g}.

All that said, I walked away with one silver nugget which means the 75 minutes were beneficial. Joe showed us how you can include the column headers in copying the result set of a query. This was a two-fer. One, I did not know I could select all the records (Ctrl+A after clicking on the row) and copy the result sets from SQL Server Management Studio to the clipboard. That was cool to learn. The second nugget is the option in SQL Server Management Studio to include the column headers in the clipboard. You get to these from Tools | Options, then in the dialog tree view Query Results > SQL Server > Results to Grid. Check on the option to "Include column headers when copying or saving the results".

Key takeaway was the already mentioned nuggets.

The Basics of ASP.NET
Jeff Blankenburg

Jeff never fails to take a great session and disappoint. He was one-for-five on demos (crashed and burn). I guess having seen him before should be elated with the one demos that worked even a little. Microsoft should be ashamed that a Developer Evangelist is this unprepared to present to a paying audience. I have to believe this session was one of his canned sessions he does with customers in his day-to-day job with Microsoft. This session further erodes my confidence in the people who are suppose to help us developers learn and adopt Microsoft technology.

Also, if you have a session that covers the basics, shouldn't this session be at the beginning of the first day instead of the end? It could be another scheduling conflict as Jeff mentioned he arrived just before his session so maybe he asked the organizers to put him where he got slotted. There are several sessions out of order, but I also know scheduling sessions slots is not a trivial exercise.

Jeff covered Master Pages which is something I think is cool and something I know we use on the Southwest Fox Web site. It brings consistency to the look and feel and makes it easy to develop pages. He covered the AJAX Toolkit too. I feel he focused way too much on the AJAX Control Toolkit which is obviously dated compared to more cutting edge stuff like jQuery. There were other topics like LINQ and Web services, but by that time he lost my interest. Still, I answered a question correctly before anyone else and won a Twix candy bar.

Takeaway: never waste another session slot by seeing Jeff speak. (sorry, I tried to be as positive as I could)

Deep Fried Bytes - Live (Podcast recording)

Over the years I have taken part in podcasts with respect to being interviewed. What I have learned is the hosts make it look a lot easier than it really is. I am fascinated by podcasting. I think podcasts bring terrific value to the developer community. At CodeStock I was introduced to Deep Fried Bytes which is a popular technology-oriented podcast hosted by C. "Woody" Woodruff and Keith Elder. I was interested in seeing a live podcast recording. There was some interesting discussion and questions from the crowd. Most of the time the hosts knew the expert to help answer the question. It was a remarkably smooth process.

Earlier in the day I listened to a speaker tell me how the .NET platform allows for developers to easily develop applications on the Web, desktop, and mobile platforms. During the panel of Microsoft Developer Evangelists I asked a question about what Microsoft is doing with respect to competing with the iPhone based on the lack of development and stunted growth of the Windows Mobile platform. It is well known how poorly Microsoft has competed on this platform and appears they are standing still while Apple and RIM eats their lunch. I got the canned answer on how Microsoft takes the challenge and is working on Windows Mobile 6.5. Yawn. The battle is lost. They need to deliver Windows Mobile 7 and have a kick butt response to the iPhone if they have a prayer of competing.

Evening Social

After hours there were games and finger food at one of the local sponsor's office. There were people pretending to be rock stars on the XBox and lots of board games. I stayed for a while and Steve Bodnar got us involved in a group of people who headed out to dinner at a local Japanese restaurant. There was some fun discussion and laughs, ongoing tweets, and some decent food. Typical geek dinner.

The afternoon was a mixed bag for me. In reality, I was interested in two sessions on the second day and could have skipped the first day all together without worrying about getting value from the conference. So any wins were a bonus for me.

Labels: , ,

CodeStock 2009: Day 1, Part 1

CodeStock is a developer gathering in Knoxville, Tennessee that drew 376 people from around the country. The conference is a community event, meaning it is put on by developers. Most of the sessions are based on the Microsoft stack (.NET, SQL Server, Visual Studio), but has business topics and some open source coverage as well. You can attend 10 sessions over two days and there is one keynote each morning to start out the day. I attended the conference for one reason, to jump start my learning of ASP.NET to help my make the decision if we are going to use it a project we are hoping to work on later this year. The decision is simple, use the Microsoft stack, or use something else like Ruby on Rails with other open source technologies. This decision is as much technical as it is a business decision, and one I struggle with each time I sit down and think about it.

The event registration cost me $45 because I registered late (normally $25). This is ridiculously cheap even considering the cost structure of the conference. The conference facility is a local college in Knoxville, and not tied to a specific hotel. Lunches are less expensive boxed sandwiches, chips, cookies and soda. Speakers travel is not covered. Sponsors cover a significant part of the cost structure for this type of event. It is supported by a passionate group made up of volunteers. While there are a lot of things in common with a standard conference you might go to, the entire infrastructure and business model are completely different. The entire trip with air miles supported airfare cost me around $300. I shared a room with Steve Bodnar to also curb costs.

One thing I learned at the conference is the way sessions were selected. People voted months ago on topics. The votes were based on title and the abstract - without a speaker name. I did not take part in this because I was late to the party and quite frankly would have been out of my element in the selection process strictly based on me being an ASP.NET noobie. I don’t know for sure, but I suspect the organizers don’t want this to be a popularity contest, and to have people vote strictly on topics/technology. I am sure this could happen, but the reality is I choose the sessions on content *and* speaker. This might sound snobish to some, but speakers make up the core of the conference and make or break a session. No matter how important a topic might be to me, if I know a speaker is weak, or does not prepare well I know I will not get value out of the session. I have been quoted as saying there are certain speakers I would listen to no matter what the topic is because I know I will learn something new out of the session. This is only reason I attend conference sessions.

Honestly, I believe this process watered down some of the session content and delivery at CodeStock. Granted, as you will read soon, there were some terrific sessions put on by talented and prepared speakers. There also were some terrible sessions put on by talented, but unprepared speakers. The difference was easy to witness, and literally painful to watch. As a person who has put on dozens of presentations, I felt bad for them. On the flip side, I really enjoyed watching other talent and passion flow in other sessions.

Open Spaces Keynote
Alan Stevens
(not rated)

Alan is a star in two communities (both in VFP and .NET). You might not know, but Alan is more of an “unconference” kind of guy than a prepared session slot kind of guy. His passion is bringing developers together to discuss ad-hoc topics. This is what open spaces is all about. Someone kicks off the conversation with a question or statement, and let controlled chaos ensue. This opening keynote was Alan's introduction to open spaces and his several escalator ride pitch to convince you to follow him to the land of un-session nirvana. His passion oooozes on stage, and he convinced many to follow by posting a session topic in one of the many slots.

The reality is, open spaces is a lot like the discussion you will find in the corridors at a conference. The unplanned “hallway sessions” that usually start with a couple people discussing something, and others join in and before you know it you get a flow of ideas and answers to questions. These sessions bring as much or more value than one of the planned slot sessions going on in the rooms at the same time.

The problem I have with the open spaces approach in this format is the slots are filled randomly and they compete directly with a schedule I already picked out in advance. What I mean about the randomness is you could have two related topics but get them out of order with respect to some background and advanced discussions on the same topic. The cool thing about it is you have alternatives to the rare open slot when none of the planned sessions meet your taste. The open spaces are also during lunch, so for us uber-geek conference attendees who see lunch as more time to learn it can be a bonus session.

Back to the Basics: What is .NET?
Keith Elder

Keith is a well prepared speaker. His session delivered a nice overview of .NET and the basics needed to get started from someone who obviously has expertise.

I thought this was a great way to start the conference. Keith explained how .NET is managed code, described as "developers don't have to manage memory." He also explained how it was cheaper than Java. I don't understand the entire math equation, but it had to do with IIS being a "free" app server compared to needing BEA, WebSphere, or WebObjects. This is the first time I have heard anyone tell me .NET is cheap and IIS was free. {g}

One of the key advantages of .NET is the single development platform for mobile (WinMobile), Silverlight (Web), Windows desktop, and Linux with Mono. This is a pretty powerful concept that is not promoted to me by Microsoft, and a heavy discussion point in the LAMP arena. I have a little problem with the "mobile" perspective since I believe Microsoft does not compete well on this platform and are getting their butts' kicked by Apple and Research in Motion (RIM - Blackberry).

He gave us a quick overview of the Visual Studio IDE, and explained the large ecosystem of developers creating tools and components for VS developer to purchase. This has been one of my sour points with the Visual Studio experience: the total cost of ownership. I have been spoiled with VFP. Literally we have it all in the box. The Visual FoxPro IDE supports the language and app development, has tools and components, a report writer, and data (local and backend). Sure you might have to purchase some ActiveX controls here and there, but normally these are for specialized cases and most VFP apps are fine with the canned controls and tools. I asked Keith what the real costs for the average developer is with VS.NET once you license all the components to get the real job done. His answer was very wishy-washy. I have heard from other developers in the past it could be as much as a couple thousand dollars per developer on top of the costs of purchasing Visual Studio .NET. Not a trivial decision for any development shop.

The meat of the session was in the coverage of the .NET framework, code, and the assembly DLLs. Keith covered all the base compilers and how others can be included for other languages. I thought his overview of the Intermediate Language (IL), the Common Language Runtime (CLR), the Dynamic Language Runtime (DLR) was well done. He showed us the Global Assembly Cache (GAC), and briefly covered the Red Gate .NET Reflector (which is very cool, and scary if you think the ReFox decompiler is evil).

Key takeaways from this session were some clarification on .NET and where things are on the machine, .NET Refector is going to be extremely helpful from a learning perspective, and how well .NET plays on platforms that are important to me. I really thought the session was well done. Keith is an experienced speaker and a name I already knew going into the conference. I would definitely see another session he presents.

Useful jQuery tips, tricks, and plugins
Elijah Manor

It would have been real helpful if organizers had scheduled this *after* Rod Paddock's jQuery 101 session. I am not sure if this was a scheduling problem of speaker availability or not, but it would have probably been rated a little higher if I had known jQuery a little more. Elijah is a respected person and expert in this field. He is a prolific tweeter as I have learned since the conference. His tweets are filled with lots of pointers to some extremely useful resources. I know I have learned more from him since the conference than I did in his session.

The session was packed. I got there late and ended up leaning against the back wall during the session, which is not conducive to learning, at least not for me.

Key takeaways from this session include VS 2008 SP1 includes support for jQuery, Firebug is awesome for Web development, the jQuery FlexGrid plugin rocks, and follow @elijahmanor.

Open Spaces
(not rated)

I grabbed my boxed lunch and headed to open spaces. Honestly, I don't recall the topic (writing this blog entry a month after the conference without any notes). Obviously this was not much value. I bailed early.

More on day one to come...

Labels: , ,