Bill Jones Jr. MVP Visual Basic

Charlotte NC - MCP C# and VB.Net - Founder and President of the Enterprise Developers Guild (.Net User Group)

  Home  |   Contact  |   Syndication    |   Login
  32 Posts | 0 Stories | 52 Comments | 32 Trackbacks

News

My wife, my pastor, my company, my boss, my friends and all my user group members reserve the inalienable right to disavow anything published here. My children will just to have to get over it. The cat doesn't speak to me anyway.

Enterprise Developers Guild - Charlotte MSDN .NET User Group

Archives

Post Categories

Saturday, October 31, 2009 #

 

Augusta Code Camp Nov. 7th

Augusta has been kind enough to schedule me to speak at their code camp.  I’ll be sharing what every C# developer needs to know about VB XML data types and in a separate session, discussing Windows Mobile development.  The list of speakers includes many of “the usual suspects”, so if you can find a way to join us, you are bound to have a good time while learning lots of new things and how to do some old things better.

Bill J


Carolina Code Camp Fall 2009
We had an outstanding code camp earlier this month. Greensboro NC, Greenville SC, Columbia SC and Charleston SC all joined with Charlotte to produce a regional event. We had over 230 in attendance, a new record. As always, CPCC afforded us an incredible venue. We had a nice assortment of Hands on Labs and an incredible array of presentations. Thanks again to all the user group leaders, MVP and local experts that shared their talent and passion with .NET geeks from across the southeast.
Bill J

How time flies!
 

Monthly Guild meetings, several code camps, an MVP Summit and oh yeah, that mobility app we did at work.  We consumed 2008 and much of 2009 working with Microsoft on a serious development effort using Visual Studio 2008, SQL Server 2008, Sync Framework, SQL Server CE, Windows Mobile 6, Vista, Windows Server 2008, Windows Communication Framework, Windows Workflow, LINQ – have I left anything out?  Learning our application requirements put Microsoft and the end of the fire hose for a change.  Deploying the mobility app put the fire hose back in the usual position.  To get all that done meant “something had to give”.  Guess it was this blog.

Now if I can just get back in the habit of bloggin’ ….

Bill J


Thursday, December 06, 2007 #

LINQ to SQL Geek Speak URL
LIVE MEETING REPLAY URL:
 
The login asks for a name so just type in your name and click the “View Recording” button. Then you can view or download the web cast. Enjoy!
Bill J

Wednesday, December 05, 2007 #

Geek Speak on LINQ to SQL December 5th

Despite some technical difficulties on my end, Lynn Langit and Mike Benkovich, from the MSDN team co-hosted my appearance on an excellent web cast today.  We gave a good introduction into the basics of LINQ  to SQL.  This feature of Visual Studio 2008 and the new .NET Framework 3.5 provides and elegant way for us to retrieve data and hydrate usable objects from the database.  Here are some links you can look at now.  Look for another post in a day or so for where you can go to download the web cast and the VB.Net code samples you don’t get to see.

Scott Guthrie: LINQ to SQL (Part 9 - Using a Custom LINQ Expression with the <asp:LinqDatasource> control) [Contains index to parts 1 thru 8]
http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx

BASIC INSTINCTS - Lambda Expressions
http://msdn.microsoft.com/msdnmag/issues/07/09/BasicInstincts/

LINQ Videos on ASP.NET
http://www.asp.net/learn/linq-videos/

Parallel LINQ
http://msdn.microsoft.com/msdnmag/issues/07/10/PLINQ/#contents

VS 2008 Samples Page
http://msdn2.microsoft.com/en-us/vbasic/bb330936.aspx

VS 2008 Training Kit on Download Page
http://www.microsoft.com/downloads/Browse.aspx?displaylang=en&productID=6527A674-9D67-40B8-A94C-D7AD0304CA0D

We’re pointing to Scott’s most recent article in an outstanding series because it also has the table of links to the preceding eight parts.  The training kit mentioned above is an outstanding resource and a “must download” for everybody moving into Visual Studio 2008.

Merry Christmas and stay tuned for a link to the Geek Speak web cast “real soon now”.


Monday, May 21, 2007 #

Orcas web cast slides…

Here are the slides for today’s (May 21, 2007) web cast on Orcas: http://www.aggelos.com/billj/Orcas_Webcast.zip

 

As soon as the web cast itself is available, I’ll post that link here also.

 

The web cast introduces the major new language elements and Visual Studio enhancements we can expect from Orcas.  The heavy emphasis on LINQ is no accident.  LINQ will change the way we program.  Scott Guthrie (http://weblogs.asp.net/scottgu/default.aspx) did an excellent presentation on the topic at Tech Ed 2006 and made the slides available.  Naturally I incorporated a lot of his outstanding slides in the LINQ portion of this presentation.  Thank you Scott!

 


Saturday, May 19, 2007 #

Charlotte .NET University Code Camp was a great success

Have you heard about .NET University (www.dotnet-u.com)?  It provides presentations and hands on labs for WPF, WCF, WF and Cardspace.  We built our spring 2007 Code Camp on that content.  We started by offering two .NET U tracks but had to expand to three.  We also offered a presentation track and an XNA hands on lab track.  Our presentations included Orcas and LINQ, SharePoint and ASP.NET sessions.  All sessions were very well received.

 

Our facility was awesome as usual.  Central Piedmont Community College and the campus chapter of the Association of Computing Machinery work with the Charlotte Chapter of the Enterprise Developers Guild to create a world class event.  CPCC has an excellent licensing arrangement with Microsoft and computer labs than must be used to be believed.  All the hardware and software we could possibly need.  Who could ask for anything more?

 

Our total registration was 145.  Based on head counts at the key note we estimated about 119 in attendance.  Using evaluation form counts and staffing levels, end of day attendance was 110.  Either number is very satisfactory.  Our “no show” rate was under 20%, again a very satisfactory number compared to our other Code Camps.

 

Over 65 focused .NET University sessions while 18 people crossed tracks.  Presentation attendance held fairly steady at about 20 per session.  Most of the eight to ten XNA attendees spent the entire day in that track.  Several .NET U attendees expressed future interest in XNA.

 

All evaluations indicated the participant would definitely or most likely attend the next Code Camp.  Two participants did not answer that question.  Even those who made suggestions for improvements are most likely to attend our next event.  We interpret that as success and that conclusion is verified by the quality ratings.

 

Instructors received overall high marks but Brian Hitney of Microsoft was the only instructor singled out for praise by name.  Guild member Karl Shifflett was very pleased with Brian’s Cardspace presen­tation and lab.

 

A consistent request for future topics includes WPF, WF, WCF and Cardspace.  Thanks to Todd Fine and Steve Porter, a lot of interest was generated in Silverlight.  SharePoint 2007 was specifically called for in the requests for future topics for both meetings and events.  Orcas and LINQ were commonly linked together and often requested as future topics.

 

Our Spring Code Camp was a complete success.  The Charlotte Enterprise Developers Guild wishes to thank all the staff, CPCC, Microsoft and the attendees for another outstanding event.  Here’s a list of our presenters and event staff:

Code Camp Staff and Charlotte Presenters

Bill Jones, Jr., MCP, MVP, President, Enterprise Developers Guild, Code Camp Committee, Presenter

Bill assisted Eric by coordinating scheduling, presenters and volunteers.  In the run up to Code Camp, Bill performed the email blasts to event staff, the membership and the final reminder to registered attendees.  He also presented “Orcas and LINQ” introducing the upcoming features in the next release of Visual Studio and taking a shallow dive into the power of LINQ.  The LINQ portion of the presentation was taken from the excellent slide deck presented by Scott Guthrie at Tech Ed 2006.

 

Eric Notheisen, MCP, Vice President Enterprise Developers Guild, Code Camp Chair, Presenter

            Eric chaired the Code Camp Committee and provided the primary liaison between the Guild and CPCC.  In addition to coordinating committee activities, Eric specified and then tested the image requirements on the .NET U lab computers.  He arranged a guest wireless connection for Code Camp presenters.  He also created the Code Camp CD and arranged to produce the copies handed out to all participants.  And finally, after printing the staff name badges, Eric presented two Card Space sessions on one of three .NET U tracks.

 

Mark Wilson, Vice President for Facilities Management and webmaster Enterprise Developers Guild, Code Camp Committee

            Mark carried the heavy load behind the scenes of making this event happen.  His focus was to get attendees registered, get them oriented to the facility, get them to the morning coffee setup, get them into their registered sessions, and then get them feed at lunch time.  He created signage and got the contributor banners hung.  He even arranged to get the lunch paid for by a contributor. He also put up the Code Camp website, getting address lists published to Bill and keeping up with the registration counts.  The counts were a critical element in scheduling the third track of .NET University.  On “the day”, Mark arrived with name tags printed for everyone who registered.  Then he and Brian Gough swung into action and “made it happen”.  To put it mildly, Mark’s efforts on Code Camp day are critical to creating a successful event.

 

Brian Gough, Vice President Enterprise Developers Guild, Code Camp Committee, Presenter

            Brian headed up an outstanding contributors effort.  Our local support was outstanding.  Thanks to Microsoft, O’Reilly and APress, every attendee was able to choose a book.  Morning coffee setup, pizza for lunch and afternoon snacks and drinks were provided by local contributors.  On the day of the event, Brian worked closely with Mark to “make it happen”.  On top of all that, Brian made an excellent presentation on the new features available in Windows SharePoint Server 2007.

 

Sylvia Walker, Vice President Enterprise Developers Guild, Code Camp Committee, Presenter

            Sylvia performed the critical function as a member of the Code Camp Committee of assembling and getting the lab manual’s printed.  Our lab manuals include an opening statement by the Guild President as well as a list of contributors and their logos.  For this Code Camp, Sylvia made her maiden voyage as a presenter, leading two Work Flow Sessions.  Her efforts were very well received and we now have another Guild resource for our monthly meetings. Sylvia also presented two sessions on Workflow Foundation.

 

Dan Thyer, Board Member Enterprise Developers Guild, Code Camp Committee, Presenter and Contributor

            Dan is a principal in Logical Advantage and draws most of his technical staff from the ranks of Guild members.  He was one of our first webmasters and has been instrumental on our board for many years.  Dan was an active member of the Code Camp Committee and his company provided the morning coffee setup, snacks and drinks for the event.  He and Marty Elvidge also of Logical Advantage, worked together to run two .NET U sessions on WCF.

 

Brian Hitney, Microsoft DE, Code Camp Committee, Presenter

            Brian is our “new” DE in the Carolinas.  We put “new” in quotes because he hit the ground running and seems to have been our DE much longer than the calendar indicates.  He has given us excellent support in all our user group efforts, but particularly with this Code Camp.  In addition to arranging for outstanding “swag”, Brian presented a Card Space Session and arranged for some excellent presenters to join our efforts.  Todd, Steve, Chris and Josh all ran excellent sessions and were on the bill thanks to Brian.

 

Ghayth Hilal, Board Member Enterprise Developers Guild, Code Camp Committee

            Whenever the Guild has an event, Ghayth tells us “Whatever you need me to do, just let me know.”  And then he does an excellent job no matter what we ask.  He is well known at CPCC and very familiar with the facility, so he has become an even more critical resource this year since we moved our regular meetings there.  For this Code Camp, he was moving all the time, helping where help was needed.  He also acted as lab assistant for a Card Space session.

 

Bill Plummer, Board Member Enterprise Developers Guild, Code Camp Committee

            Bill was at the first Guild meeting back in 1998 and has been a great supporter and board member.  For this event, he helped stuff the pick up truck with boxes of books to get them in place for the event.  Then he went on to “lab assist” on a WF session and one of the presentations.

 

Carolyn I Konieczny, Board Member Enterprise Developers Guild, Code Camp Volunteer

            Always an active supporter, Carolyn was a big help in the Friday night set up.  On the day of the event, she acted as a “utility player”, doing what was needed, whenever it was needed.

 

Marty Elvidge, Enterprise Developers Guild, Code Camp Presenter

            Working with Dan, Marty presented for two session of WCF.  These sessions were an excellent fit as Marty is an architect who specializes in SOA and made a presentation on that topic at our January meeting.

 

Bert Gowens, Enterprise Developers Guild, Code Camp Volunteer

            Bert works with Sylvia and assisted her with two well received Work Flow sessions.  This is the first time Bert has participated in a Guild event, but we expect to see much more of him.

 

Pat Jones, Enterprise Developers Guild, Code Camp Volunteer

            Pat has worked with SharePoint over the last several years and is involved in the design and management of the new Windows SharePoint Server version 3.0 site being constructed by US Software Developers in Charlotte.  Pat helped with dinner reservations, registration and perhaps most importantly took numerous photographs at the event.

CPCC Code Camp Staff and Presenters

Farhad Javidi-Namin, Program Chair for Simulation and Gaming at CPCC, Code Camp Committee, Presenter

            Farhard suggested an XNA Game Development track as soon as we started working on the Code Camp.  His XNA Presentation to the Guild in March was well received, so we were pleased with the opportunity to provide hands on experience for our members.

 

Alberto Botero, Program Chair for Programming at CPCC, Code Camp Committee, Presenter

            Working with Farhard, Alberto prepared the actual labs.  As a CPCC professor, Alberto was well qualified to lead the Code Camp XNA Lab sessions.  His efforts were well received.

 

Hal Lohn, Information Technology Project Leader at CPCC, Code Camp Committee, Facilities Liaison

            Hal worked closely with Eric to get the facilities and resources needed to support our Code Camp.  He even provided his own office as a place for to lock up our “swag”.

Page Kelly, Information Technology Technician at CPCC

            Page acted as on-site network and lab PC support for the Code Camp

Scott Lewis, Supervisor, Infrastructure Systems at CPCC

            Scott managed the development of the PC image used by the Code camp participants.

Nawal Hopkins, Information System Analyst

          Nawal created the image for the PCs and with Page Kelly made sure the image was up and running on all 150 PCs available for the Code Camp.

Frank Granger, Director, Presentation-U

          Frank made the copies of the CDs for the participants.

Columbia Enterprise Developers Guild Code Camp Staff

Chris Eargle, President Columbia Enterprise Developers Guild, Code Camp Volunteer

            In the midst of launching a new user group in Columbia, Chris has been working with our Code Camp Committee to “see how it’s done”.  Along the way he volunteered to help out so we were certainly delighted with his participation.  His energy and willingness to do what it takes indicates he will have a successful new user group in Columbia.

 

Lide Winburn, Officer Columbia Enterprise Developers Guild, Code Camp Volunteer

            After driving in from Columbia, Lide was working our registration table before 7:30 AM.  Talk about “above and beyond”!  Lide was a big help at the event and we were delighted to have his participation.  He is an important asset to the new Columbia user group.

Guest Presenters

Todd Fine, MVP and Regional Director, Wintellect Atlanta, Code Camp Presenter

            Due to a registration surge the week before Code Camp, we had to add a third .NET U Track.  While we had staffed for a possible third track, we came up short on WPF instructors.  Todd was kind enough to agree to do a third session.  In Charlotte, we refer to him as “Iron Man”.  Working with Steve, Todd was able to add a short Silverlight talk at the end of each WPF session that became one of the high points of our Code Camp.

 

Steve Porter, Wintellect Atlanta, Code Camp Presenter

            Steve did an excellent job with a WF session.  Being fresh back from the Mix conference, he was able to work with Todd to deliver quick Silverlight demo at the end of the WPF sessions that was extremely well received.  We have invited Todd and Steve back to present Silverlight at one of our regular meetings.

 

Joshua D. Carlisle, Viewfusion Solutions LLC Raleigh, Code Camp Presenter

            SharePoint is a hot topic in our market.  The new release offers much better performance than previous releases.  Josh presented SharePoint development from an ASP.NET point of view to a very interested audience.

 

Chris Love, Extreme Web Works Raleigh, Code Camp Presenter

            While Windows development is becoming more prevalent in our market, ASP.NET is still the most frequently used .NET UI.  Chris offered an excellent presentation on techniques, tips and tricks to create more professional ASP.NET websites.

 


Sunday, March 04, 2007 #

I like Visual Basic.NET because…

 

A professional picks a tool for logical reasons.  As a professional business programmer, I pick VB.NET.  Before I expound further on my choice, you should know whether or not I am qualified to have an opinion.   Certified in C# and Visual Basic.NET, I was lucky enough to be chosen as Microsoft MVP in Visual Basic.NET in 2006.  I founded and head up a 1500+ member .NET User Group in Charlotte, the Enterprise Developers Guild (www.DevelopersGuild.org).  We routinely have eighty to a hundred attendees at our monthly meetings.

Frame of Reference

What is my frame of reference?  Raised as a Navy Air brat, I naturally spent several years as a Naval Flight Officer.  Early in a brief service career, I got a classified briefing on the computer systems the made the A-6 Intruder such a potent weapons system.  My immediate thought was if that’s what DOD can do with a special purpose computer, what is being done with IBM Big Iron in the civilian world?  EDS recruited me after I left the service and I got a chance to find out.  The SED (Systems Engineering Development) program provided excellent training in computer fundamentals by teaching me how hardware, operating systems and compilers work.

 

Several decades of software development required that I master many software development environments – “Mastered” as in have been well paid to learn and use extensively.  Here is a brief list with some parenthetical observations:

Mainframe Basic Assembler (fundamental), mainframe and PC COBOL (productive, very small executables), numerous Basic dialects (minis then PCs), Pascal (sweet!), Turbo Pascal (fast!), Object Pascal (fast and sweet!), dBase, Clipper, FoxPro for Windows (outstanding!), Visual Basic 1 (evaluated), 2 (evaluated), 3 (finally adopted), 4 and 5 (paid well), MS Access VBA (productive), Delphi (awesome OO!), VB 6 (very classy), light C++ (awkward), Java (excellent teaching tool for OO introduction), VB.Net and the Framework (hard to beat!), C# (still awkward).

 

That’s the short list.  I also became proficient in numerous scripting, utility and reporting environments and several command languages for various operating systems.  Let’s not forget the specialized data entry devices in the late seventies. 

 

Much of my experience is with what I call small unit tactics.  My teams usually consist of five to ten developers.  Most of my applications serve hundreds of users with usually less than a hundred simultaneous connections.  As I said, I am a business applications programmer.  A lot of my experience is in the financial sector, but also includes law enforcement, health care, accounting and some manufacturing.  Many of my engagements involved large volume database processing and reporting before we called it Business Intelligence.

Lessons Learned

It is safe to say that I am a software development expert – a seasoned veteran.  My career teaches three huge lessons:

1) Bottom line (productivity) beats technology hands down

2) The only constant is change

3) Whatever you code, somebody has to change.

 

For the last year I have been working in C# because that’s the opportunities presented in my local market.  To paraphrase Dan Appleman from his early VB.Net book, if someone wants to pay you to code C# it is your professional duty to take the money.  Frankly I don’t remember if Mr. Appleman made the point, but a contractor often makes more money doing a C# application because it takes longer than doing the same work in VB.  I have not seen any rate differential in favor of C#.

Legacy

C# is one of the legacy languages in my list.  It has roots firmly planted in 8-bit processors when 640K was “all the memory anyone would ever need” and parallel processing was not massive, it wasn’t even a consideration.  C and all its derivatives are case-sensitive because saving a pass through the compiler was important on an 8-bit UNIX box.  When was that?  Was it the seventies or the eighties?  Memory management dominated C thinking before C# again because it enabled a simple compiler.  Pointers are beyond me.  I learned how to code pointers so I could debug but vowed never to use them.  Talk about a maintenance nightmare… can you say “memory leak”?

 

We got over memory management in the sixties.  Case sensitivity has never been an issue outside of the C world that I remember.  Squirrelly brackets are unique to C and its legacies.  So are “||” instead of “OR” and “!” instead of “NOT”.  There’s a reason for that.  Most of us quit bit shifting after we left Assembler.

 

Learning your second language with a significant syntax difference is hard and scary.  Imagine going from Assembler to COBOL before you knew very much!  After you have mastered your second language, your third is easier.  Your fourth comes fast and then you’re on your way.  As Ken Spencer, North Carolina Microsoft MVP/RD is quick to point out: “Learning twenty-five or so languages teaches you what’s important.”  It also teaches you what to look for.

 

Going from C to C++ is more like a version migration since the syntax is expanded, not changed.  Java introduces libraries so there is definitely a learning curve, but syntax remains comfortable for C programmers.  At least it gets us out the memory management madness everybody else left in the early seventies.  C# introduces a new Framework, but should be a fairly easy step into the Microsoft world for Java programmers.

Framework

The Framework is really what .NET is all about.  It is a superb addition to our tool set and proves why Object Oriented development is works.  “Talk about your code reuse...”  Developing in .NET is 80% Framework and 20% language.  Even VB professionals must master C# so we can use all the code sample resources available on the Internet.

C Derivatives Popularity

So if I’m “right” about VB, why are the C derivatives so popular?  It’s free.  Beginning in the eighties universities built their computer degree programs around UNIX and C because it was cheap.  New graduates wanted to stay with what they knew.  Business types and new programmers fell for the “transportable” myth.  Basic and COBOL are supposed to portable too, but anybody with any real experience had already found out the “transportability” limits your options and kills productivity.  The Pascal P-Machine came closest to achieving the transportability goal.  If you know what a P-machine is, you are either a historian or a very seasoned veteran. Yes, I know about Mono.  Have you ever used it?  I haven’t.  I’m more interested in Borland Kylix, the Linux Delphi.  I haven’t used it either.

Productivity

For developers with a wide range of language ability, the C family is counter-intuitive.  It may be mathematical, but mathematical program proofs are a bigger myth than transportability in the real world.  It is supposed to generate small, fast executables.  That may have been true pre-Framework, but C# uses what Tennessee Microsoft MVP/RD Billy Hollis calls the VB.Net runtime – the CLR. 

 

Actually the tightest code I ever generated on a PC was with Realia COBOL.  “Back in the day” I got a utility program done in half an hour and generated a 48K executable using Realia COBOL.  That’s right – Kilobytes NOT Megabytes.  So except for memory management and pointers (ugh!), COBOL gets at least as close to the metal as C does.  Shocking isn’t it.  About that same time the smallest Clipper application I could get was 250K plus.  Of course the runtime is baked into the Clipper EXE.  COBOL compiles down to Assembler.

 

Did you notice the claim of half an hour to write a simple utility?  It was primarily a table lookup and my COBOL was very rusty, but no language does simple tables better than COBOL.  It would take me an hour or so to do the same thing in VB.Net today, but it would probably have a Windows interface and at least tool tips for help.  Yes, our tools are more productive, but all of us, including the check-signers, expect a lot more from an application today.

 

Expecting more is what Visual Studio and the Framework is all about.  We are doing more, so the high productivity gains we have achieved in the last twenty years have barely let us keep up our productivity levels – maybe.

 

The check-signers don’t care about tools and technology.  They want low-learning curve Windows and web applications that solve business problems.  The business side can’t judge what the best tools and techniques are and shouldn’t be bothered with that unless our recommendations are going to impact the budget.  It is up to software professionals to use the best tools for the job at hand.  By making it easy for us, Microsoft has had great success in getting us to choose SQL Server, Visual Studio, ASP whatever, VB.Net and C#.

Why Visual Basic?

So why do I like Visual Basic?  My first introduction was VB 1.0.  I passed.  I looked again at VB 2.0 and passed again.  When VB 3.0 shipped the product uptake was breath-taking.  Now we had something!  With the exception of FoxPro for Windows, it was the most productive Windows development environment available at the time.

 

VB.NET is strictly a pragmatic decision for me.  First, let me remind you I’m coding C# forty hours a week.  I only get to do VB.Net when I’m coding for myself, maybe ten or fifteen hours a week.  I actually went through a dry spell where I didn’t do anything significant in VB for several months.  I had convinced myself that I was as productive in C# as I was in VB, but not so.  When I got back into a VB project, it gave me at least a 10% boost and it may be as high as 20%.  VB.Net is definitely the language of choice for all my own work.

 

So why am I more productive?  Everything I have come to expect in a computer language is there and easy to find.  Why is there no numeric check built into C#?  Where’s the “With” statement?  Where are nifty “My” functions?  “End If” works for me.  “Select Case” feels right, “Switch” is awkward.  I like “Next”.  I really do not understand why we don’t have a “CAST” function in C# and VB.NET like the one in Delphi, but “DirectCast” comes close, so I’ll have to be happy until I take time to roll my own with generics.

 

Case insensitivity in VB is certainly a help.  When I type in a variable name, VB cases it correctly giving me a direct visual signal that I got the name right.  When I first saw that feature in Apple /// Business Basic I was in love!  Remember, intellisense is a “new” thing; I’m talking deep into the last century here.  Yeah, I know you get a squiggly under an undefined variable name in C#, but I have lots of techniques for generating squiggles in my code so that is not always definitive.

 

VB scans.  In C# I really have to pay attention to find things.  With most languages -- COBOL, dBase derivatives, Pascal derivatives, and VB derivatives – I can quickly scan a section of code and detect flaws or lines of interest.  I expected that skill to come with C# after a month or two, but it hasn’t yet.  The language is just awkward.  The “!” is certainly a thrill to someone who has read “NOT” in countless languages.  I really like the “?” operator.  NOT!  (Now that’s the way to use “!” with “not”).

 

VB scans.  That makes it easier to maintain.  Now obviously you can write bad code in any language, but you don’t hear about re-writing a routine to put in a maintenance change in VB nearly as often as you do with C#.  We ran into the re-write instead of fix phenomenon in Assembler because even good code could be so hard to understand, but we were ashamed when it happened.  C# programmers have no shame, they just “refactor”; me included.  VB programmers generally don’t re-write working code.  We might enhance it, but we don’t have time or budget to re-write working code.  We just have too much to get done.  Check-signers would really like that aspect of VB if they knew what was going on.

So that’s why I like VB.NET

After decades of experience and countless computer languages, Visual Basic.NET is a simple decision for me.  I must be productive (Lesson 1).  I need to adopt new Framework classes and techniques quickly (Lesson 2).  I need to produce code that I or any professional can easily maintain (Lesson 3).

 

To use a John Wayne line from a vintage Western movie – “You do what you want.  Most people usually do.”  Just don’t ask me to maintain C#.  Oh wait; I make more money because C# takes longer and I can just “refactor”.

 

Never mind.

 

 

   Bill Jones Jr.

   MCP C#, VB and MVP VB.NET

   Enterprise Developers Guild

   Charlotte MSDN User Group

   www.DevelopersGuild.org

    

 


Saturday, August 05, 2006 #

Our data layer project has the usual hundreds of generated files.  Several months ago that was no issue, but over the last month or so things began to get slower and slower.  My first attempt to get back to reasonable performance was to break the data project out of my main solution.  For the last few weeks even the separate project was hard to work with.  I turned off Ankh, the Subversion add-in for Visual Studio.  That seemed to help a bit.  I even tried turning off Norton when loading the project but was still faced with load times of 5 to 7 minutes.  Performance didn’t get any better after the project was loaded.  Simple click and traverse operations were painfully SLOW.

 

So I called for help.  After trying all the Google suggestions to no avail, I emailed the Charlotte Radiology development team.  Matt Duffield came through.  He suggested selecting Tools / Import and Export Settings … / Reset All Settings.  We’re using Visual Studio 2005 Team Suite, but I would expect this fix to work most editions of the IDE.

 

Matt reports that he has to perform this operation every so often to keep the performance up on the IDE.  We haven’t seen any side effects, but then Matt and I both favor the standard settings.  It does NOT affect our add-ins.

 

So how much did it help?  My data project was taking well over 6 minutes to load.  After the fix it loads in 15 seconds.  “We report, you decide.”

 

  Bill J

 

 


Sunday, June 25, 2006 #

April started with a BANG!  Doug Tunure, our Microsoft Developer Liaison, recommended me for the MVP – Most Valuable Professional award in Visual Basic and I was accepted!!!  Yes, I intended to post that immediately right here, but April was consumed with hardware issues and the Visual Studio 2005 Lab Fest. 

 

Let me thank publicly all my friends and fellow Guild members for their warm congratulations.  When folks who really know you concur with an award – well, it meant a lot to me.  Thanks guys!

 

Lab Fest: My user group, the Enterprise Developers Guild, joined forces with Central Piedmont Community College, Microsoft and our Lab Fest sponsors to put on a “hands on” training event designed to provide a useful developer experience with new products and tools.  Thanks to incredible support from CPCC, Microsoft, and our most able volunteer staff, we are able to provide a “priceless” world class training event for Guild members and the students and staff at CPCC.  Please check out the Guild Lab Fest page and frequent our local sponsors. 

 

By all measures, the Visual Studio 2005 Lab-Fest was a rousing success.   We averaged well over 8 on a “Richter Scale” of 1 to 9 on our participant survey questions.  Total attendance was 70 software developers in the following categories:

 

1 Lab-Fest Project Manager

4 Lab-Fest Instructors

5 volunteers

5 proctors

55 participants

 

One of our instructors, David Catherman, developed most of the code and training documents.  The project manager was Brian Gough.  He was also the spark plug that got the whole “hand on” training bit going.  Our “closer”, the guy who pushed the event to completion, was Eric Notheisen.  Eric took a couple of vacation days to pull all the materials together and work with CPCC to verify the machine images.  David, Eric, Marty Elvidge and I performed instructor duties.  Proctors included Brian Gough, Jonathan Jackson, Joe Walling (Greenville chapter), Larry Anderson and Ghayth Hilal.  Sylvia Walker, Derrick Exum and Condy Giambertone provided the volunteer efforts all the events require to achieve success.

 

As you can see, the Enterprise Developers Guild is “covered up” with talented people willing to “turn to” to get things done.  Initial planning is underway for a SQL 2005 Lab Fest in October or November.  Go to the Guild site and register as a member to get on our mailing list so you can keep informed of our plans and progress.

 

Hardware: May was consumed with a hardware issue.  I allowed my vendor to put “el cheapo” memory in my Acer Ferrari 64-bit laptop to take it from the standard two 512 mb chips configuration to the desired two 1 gig chips.  Figuring out that is was a memory issue consumed weeks.  If you get screen freezes or unexpected black screen crashes on a laptop, look to your memory.  Don’t chase the overheating phantom like I did.  Figuring out which chip took even more weeks.  Understand, this was done on an after hours, weekend basis with insufficient local vendor support.  Jerry P. (Chaos Manor column) has told us for years that we need to use Crucial memory to avoid issues.  Wonder if I have finally learned?

 

Luckily, my primary development machine is a company supplied desktop.  However, all of my Guild, MVP and personal emails were iffy for the entire months of April and May.  There’s nothing quite like prepping for a major volunteer event when not sure if your email is going to work.

 

Did I mention I started a new gig in April?  And then there was the beach trip in June.  Ok, ok, so I’m whining.  It’s a fine whine and it’s my blog. 

 

  Bill J

 


Sunday, March 19, 2006 #

Are you still using Framework 1 or 1.1?  Are you using DNN 3?  Did you know there is a function to convert a data reader object into a dataset built into DNN 3?  Neither did I, so I wrote one.  And then I found one Dan Thayer of Logical Advantage had sent me in an email a few months ago.  Dan uses reflection, so his is pretty slick.  If you want to see Dan's solution, let me know.  I'm sure he would be happy to lend his permission for me to publish it.

 

Anyway, it was right after I discovered the second preexisting solution to the same issue that I decided to install the VB Snippet Editor (http://msdn.microsoft.com/vbasic/downloads/tools/default.aspx) so maybe I can reduce the number of times I re-invent the wheel.

 

If you are lucky enough to already be doing production work in Framework 2, all this should be unnecessary.  I’ve seen a load function in the dataset (or data table?) in 2.0 that uses the data reader as input.

 

When we implemented this function, we coded a couple of overloads making the name parameters optional.  Yes, I know we can use the optional attribute directly on the parameters, but that doesn’t play well with some of the less sophisticated CLR languages.  Look it over.  Add it to your Snippets if you like it.  Oh and yes, the VB Snippet Editor requires Framework 2 to run, but it doesn’t mind if you save J#, C# or Framework 1.x code.  The Snippet Editor is definitely a handy tool.

 

     Bill J

        ''' -----------------------------------------------------------------------------
        ''' 
        ''' Uses the dataRdr schema to create a DataTable.  Populates the new DataTable
        ''' from the dataRdr and loads it to a DataSet using the tableName provided.
        ''' 
        Public Shared Function ReaderToDataSet(ByVal dataRdr As IDataReader, _
                                             ByVal tableName As String, _
                                             ByVal datasetName As String) As DataSet
            Dim myTable As New DataTable
            Dim myDS As New DataSet
            Dim myRow As DataRow

            Try
                SetTableSchemaHelper(myTable, dataRdr)
                myTable.TableName = tableName
                myDS.Tables.Add(myTable)

                Do While dataRdr.Read
                    myRow = myTable.NewRow()
                    For i As Integer = 0 To dataRdr.FieldCount - 1
                        myRow(i) = dataRdr.GetValue(i)
                    Next
                    myTable.Rows.Add(myRow)
                Loop

                dataRdr.Close()
                Return myDS

            Catch ex As Exception
                Throw New ApplicationException("ReaderToDataSet - " & ex.Message)
            End Try

        End Function

        ''' -----------------------------------------------------------------------------
        ''' 
        ''' Helper method to add columns to a table from a schema table loaded from
        ''' a DataReader object.  Note the target table is accessed by reference.
        ''' 
        ''' -----------------------------------------------------------------------------
        Public Shared Sub SetTableSchemaHelper(ByRef dtTable As DataTable, _
                                             ByVal dataRdr As IDataReader)
            Dim mySchema As DataTable
            Dim myCol As DataColumn

            mySchema = dataRdr.GetSchemaTable

            For i As Integer = 0 To mySchema.Rows.Count - 1
                myCol = New DataColumn
                With mySchema.Rows(i)
                    myCol.ColumnName = DirectCast(.Item("ColumnName"), String)
                    myCol.AllowDBNull = DirectCast(.Item("AllowDBNull"), Boolean)
                    myCol.AutoIncrement = DirectCast(.Item("IsIdentity"), Boolean)
                    myCol.Unique = myCol.AutoIncrement
                    myCol.DataType = DirectCast(.Item("DataType"), Type)
                    If myCol.DataType Is System.Type.GetType("String") Then
                        myCol.MaxLength = DirectCast(.Item("ColumnSize"), Integer)
                    End If
                    myCol.ReadOnly = DirectCast(.Item("IsReadOnly"), Boolean)
                    If myCol.Unique = False Then
                        myCol.Unique = (myCol.DataType Is System.Type.GetType("GUID"))
                    End If
                End With
                dtTable.Columns.Add(myCol)
            Next i

        End Sub


Saturday, February 25, 2006 #

You really need to check out Scott Hanselman's 2005 Ultimate Developer and Power Users Tool List: http://www.hanselman.com/blog/ScottHanselmans2005UltimateDeveloperAndPowerUsersToolList.aspx

I'm not saying you will use everything Scott suggests, but I've already done several installs and I'm not done yet.  I knew about FireFox and BgInfo, but forgot to bring them along to my latest machine.  NotePad2 was new to me, but immediately became my default text editor.  As I get through more of the FireFox extensions, I'll sing out if anything grabs me by the lapels.

  Bill J

 


Sunday, January 08, 2006 #

So when is a server really a server?  On ASP 2 set up you get a nice Steve Guthrie blog entry telling you how to init all the built in providers.  Following the bouncing ball I went out to my SQL 2005 and set up an empty database.  When running aspnet_regsql.exe, I didn’t see my new database.  Inspiration suggested I hook up the new database to VS 2005, but then I got struck by the “dummo ray”.  The Server stack is really for servers – machines or IP addresses – and will not connect to an instance of SQL Server no matter how many times you point, click and type.  However, once I added the instance to the Data Connects stack, life was good.  I’m not sure why a SQL Server instance (machine name\instance name) has to be in the Data Connections to get the new empty database to be recognized by aspnet_regsql.exe – but it worked for me.  Now if I can just find the new MMC plug-in for ASP.NET configuration so I can reset the connection string default…

 

The ASP.NET Config tool is at the bottom of the Website menu.  I used the tool to select the provider for storing the site management data but was never really sure what I was selecting since all the tool (web page) shows is “AspNetSqlProvider”.  The web config didn’t show any connect string definitions until I defined a data source.

 

We don’t create new web projects anymore.  Now we must open new “web sites”.  Either the web site open didn’t give me an opportunity to create a new virtual or I missed it.  At any rate, I used the old tried and true method of the IIS manager to get my test virtual directory established.  After that, it was easy to create my new web site where I wanted.

 

When I tried to add the DNN 4 Starter Kit to my templates, I had to open the zip by selecting VsContentInstaller.exe with the “Open With” option.  It works great when you find the right tool.

 

To finish up my first outing with the new installation of ASP.NET 2.0 by dropping a a data grid on the page and getting that going in short order.  Next I dropped a Report Viewer control and got that going quickly also.

 

Knowing ASP.NET 2.0 “is gonna be great” and proving it to yourself with shipping product is outstanding.  We need to start using this in our daily work just as soon as we can.  It really is a big advancement in our primary tool set.


Monday, June 06, 2005 #

Keynote- Mr. Ballmer gets way more out of a slide than I do.  Primary theme is connectivity, as it has been since Windows 95.  The document handler in Longhorn looks awesome.  After using a nifty search capability to reduce the number of target docs, they zoom in and all the docs began to wysiwyg render - graphics  and all.  As I said, awesome.  To stress security, they showed us several times that a corporation can wipe a lost PDA or even set it to wipe itself after a defined number of login failures.  Never said anything about how to restore it when the boss finally remembers his password.  We also saw "Virtual Earth" where map view and aerial photos can be merged in the same display. 

 

Some interesting stats

Developer tool penetration:

.NET 43%

Java 35%

Win 32 but not .NET was #3 but I didn't get the percentage.

 

Global framework penetration:

Some .NET 90%

No .NET 10%

 

Implementation of the WS Test 1.1 defined by Sun Microsystems

.NET 2.0 25-45% faster than .NET 1.1

.NET 2.0 200% faster than IBM Web Sphere

 

Mr. Ballmer and friends did a nifty job of showing us ".NET in Office".  Using the Office tools in VS 2005, they showed us a dashboard app hosted in Outlook with all sorts of drill down and custom screens.  Really looks interesting.  Does raise a ton of dependencies when you start down that path though.

 

Team Services- If you got the VSTS (Visual Studio Team Suite) pricing announcement as part of your Universal a couple of weeks ago you are probably as confused as I was when Will Read brought it to my attention.  Evidently somebody heard our squeals of "WHAT?" because we actually had a cabana session "Adopting Visual Studio 2005 Team System On a Budget".  Here's the short version.  If you have a active Universal (retail about $2700) when VSTS ships, you can pick a role (Architect, Developer or Tester) and get that package as part of your Universal, no extra charge and including the Team Foundation Server (TFS) for 5.  If you want all roles, you can get it for $1000 under this scenario.  If you want to implement a team, you have to buy seat licenses for the various roles.

 

MSFT is clearly looking at Rational customers with this one.  In that arena if you don't charge enough, "it must not be enterprise ready".  That quote comes from a Rational customer, not MSFT.  Retail for the full VSTS is like $10K, but who buys retail?  If you are a partner, there's probably a deal.  If you are under a volume license, there is probably a deal.  Pricing is complicated but two things are clear.  They are really hung up on this role stuff and Visual Studio pricing is going to change.  Here's what we know about pricing now: Express $49 (per language, I think); Standard $299/$199 upgrade; Professional $799/599 upgrade; Team Systems - who knows?  For real info check out http://msdn.microsoft.com/howtobuy or call your rep.  For Team System http://lab.msdn.microsoft.com/teamsystem.

 

There should be a 180 day eval.  If we manage that carefully, we could get a small project done and see how the product stacks up.  We'll certainly need the eval if the pricing stays were it is now.

 

The VSS guy was close by and told us the SourceSafe Admin tools get a big bump in capability and that web access "is in there" as we expected.  I'm glad we still have VSS because I'm really beginning to wonder how much time I should spend on Team Systems.

 

eLearning- This is looking very good.  Go to http://www.microsoft.com/learning/default.asp it is definitely worth the trip.  Sondra and her crowd have a serious push on to help us spin up in Visual Studio 2005 and SQL Server 2005.  No only are excellent courses being offered for online and local viewing, but hands on web Virtual labs should get us way down the path very quickly.  Stay tuned, Sondra's also trying to get the User Groups a deal.  By the way, what are "solutions" in SQL Server 2005?

 

Jeff Prosise- His membership, roles and profiles ASP.NET 2.0 presentation just keeps getting better.  By the way, don't forget to run aspnet_regsql.exe to et the automagic databases and tables initialized for ASP.NET 2.0.  Jeff causally showed us a nifty web site admin tool available in VS 2005.  We're trying to work out a date for Jeff to visit the Guild.

 

Billy Hollis and Rockford Lhotka- If you think these two are good on their own, you ought to see them on the same platform.  They did an architectural session on Smart Clients.  Good stuff and confirmed some suspicions I've had for a long time.  WinForms can be a silver bullet when you need client capability in a disconnected application.

 

  Bill J

  Orlando


Tuesday, June 07, 2005 #

OK.  This is out of sequence.  I know that.  I'm just getting this stuff up here as fast as I can.  This post is for user group members everywhere, but is primarily written for the members and leaders of the Enterprise Developers Guild.  We've got a group to be proud of guys, but I'm sure we'll make it even better.

 

Sunday at Tech Ed was INetA Summit day.  We've come a long way in the last year.  We meet with the Culminis folks - the "INETA" for IT Pros.  We have a lot in common, but we have some significant differences as well. 

 

INETA NORAM (NORth AMerica) has new officers.  Here is our current organization:

 

INETA NORAM - Board of Directors

Chris Pels - President

Sara Faatz - VP

Jason Beres - Secretary

Treasurer - Dave Noderner (July 1 to June 30 fiscal)

 

Division VPs

Morgan Baker - VP Community Activities

Chris Wallace - VP Membership [UG relations]

Brian Tinkler - VP Marketing

Bill Wolff - VP Speakers Bureau

Devin Rader - VP Technology

 

Non-voting Board Members

Bill Evjen

Amy Sorokas - MS

Samantha Spears- Exec Director (info@ineta.org)

 

Here are the Worldwide leaders:

Latin American (LatAm) - Jose Berrios

Middle East/Africa (MEA) - Goksin Bakir

Europe - Damir Tomicic

North America (NORAM) - Chris Pels

(missing one more region)

 

Some interesting stats: INETA is 3.5 years old, has 800 User Groups affiliated worldwide representing over 370,000 members

 

Here are some random observations -- things I learned at INETA camp (unless otherwise noted, applies to us and not necessarily IT Pros):

 

Organization: Most groups are very informal and are not incorporated.  Most do not charge dues, but if you charge dues, your reasons to incorporate increase.  Those groups that are incorporated and have regular elections seem to have a problem with transition or with people getting elected and not fulfilling responsibilities for one reason or another.  If you incorporate, you have to have bylaws.  If you have bylaws you almost have to have some form of elections.  If you have elections you are almost certainly only two cycles away from a problem.  Look at our model.  We have about a dozen highly involved worker bees.  We have another twenty members or so who come to meetings very regularly.  We have maybe a hundred or so who come to one or two meetings and most big events every year.  If we have elections, I would not expect any significant increase in meeting turn out unless someone was trying to hijack the group.  Unless we can figure out a way to limit voting members to active members, I'm not sure how to get effective elections.  Guess that means I'm "el Presidente for life" until we can come up with another plan that insures the continued success of the Enterprise Developers Guild.  By the way, we can have bylaws without incorporating, so we could take this one step at a time.

 

Finances: An Alabama leader pointed out that you can have a bank account without incorporating.  You should be able to avoid IRS problems as long as you have multiple signatories on the account, although you might have to shop banks or officers within a bank to get someone who has been around long enough to do what you ask.  Seems the Patriot Act can get in the way -- depending on who's looking at you.  Calling yourself a "community club" might help get you into the right pigeon hole.  Beware that having a bank account might open you up to some kind of liability if you get a staving lawyer and a stupid judge involved.  Our technique of avoiding all this looks better and better.

 

Web Presence:  Check out www.INETA.org.  It is definitely improving.  The vast majority of the .NET groups use Dot Net Nuke.  I actually got to pick on Shaun Walker and his stalwart crew.  But never fear, I made sure he understood how much we appreciate his -- and the group's -- development efforts.  Devin Rader, our new Technology VP, is talking up an ESS format.  That would be an RSS feed for events so INETA could consume and publish our events and we could do the same for INETA and surrounding groups.  We got the word to Shaun as to what our top three issues are - Event Management, Membership Management (where DNN already does a great job), and Sponsor Support (we actually wrote down "marketing", but sponsor support is what I heard).  The second most commonly used portal was the Community Starter Kit.  Those guys made the excellent point that they had no rev issues as there has been only one release.  Something to be said for that.

 

One final thought... Ron over at Culminis made an excellent point -- unfortunately it was mostly to me and not to the goup -- consensus seems to indicate that the IT Pro groups can increase participation with community outreach events but that the learning curve is so intense for the >NET groups that we have to stay focused on the technology.  However, the Charlotte IT Group does something we can ALL emulate.  They give out extra raffle tickets if you bring in food or clothing donations.  That resulted in literally tons of donations last year.  We can ALL adopt that one.

 

Bill J

Orlando