Dave Burke - Freelance .NET Developer specializing in Online Communities

A freelance .NET Developer

Thursday, June 24, 2004 - Posts

DevTeach2004 OT : An Accordian in the City

I never bring technical materials to read for pleasure at a conference.  I mean, if I'm not overwhelmed with technical input by 5:00 PM, then I'm at a pretty crappy conference.

But I've found the perfect after-hours and between sessions activity: bringing my accordian to conferences.  I mean, the accordian is the perfect instrument!  Rather than extol its virtues here, I'll share a pic of my Italian-made, vintage 1942 Grand Voxx taken in my hotel window.  An Accordian in the City.




Posted: Jun 24 2004, 11:45 PM by daveburke | with 4 comment(s)
Filed under:
DevTeach2004 OT : Wristwatch

Here I am at a conference in a foreign country and I've misplaced my wrist watch the day before the conference.  Maybe I should take advantage of the Canadian-USA currency exchange rate and buy a new watch while I'm here.

I'm going batty without a watch.  I don't know if I'll make it through the conference without a watch on my wrist.

Maybe I'll have to make frequent trips to the elevator.
 



Posted: Jun 24 2004, 11:43 PM by daveburke | with 2 comment(s)
Filed under:
To SPS2003 : Can't I have a setup.exe with my SharePoint Portal Server 2003?


I mean, gee-zus!  SPS2001 had a setup.exe.  Installation was a BREEZE!

SharePoint Portal Server 2003, on the other hand, has NO setup.exe.  Its setup and configuration processes are all web-based. 

Hello!  Web-based apps suck!

Okay.  MY web-based apps suck because they use brain-dead server-side controls and require a post-back for every action.  Microsoft installation web-based apps rock.

So I'm trying to install OSPS2003, working through all of the new 2003 portal and server farm concepts and all the while using a web-based configuration app to do it.

On one friggen' page, I'm asked to enter the domain\username and password (twice!) for three different configuration processes.  Then when my choices are not accepted, some CustomValidationInput control at the top of the page throws a generic message, "Please select a user which is in the Power Users Group and which has database creation rights."  That's reasonably acceptable, but then it blanks out all nine of my form fields???  I spent 15 minutes typing and retyping entries on that stupid page alone. 

You'd think that at $30,000 dollars for a server license I could get a setup.exe with SharePoint Server 2003.

Posted: Jun 24 2004, 11:37 PM by daveburke | with 1 comment(s)
Filed under:
DevTeach2004 OT : McLeans

McLeans Irish Pub is where I eat all of my meals while at DevTeach.  Well, all of my meals after 5:00 PM, that is.  You'll find it on Rue-something street in downtown Montreal.  A great place for a guy to blog in peace and quiet.

"HEY, FRANCOIS!  ANOTHER MICK'S RED OVER HERE!"


 

Posted: Jun 24 2004, 11:28 PM by daveburke | with 1 comment(s)
Filed under:
DevTeach2004 Summary : The Precursor Legacy

One of my favorite video games is Jak and Dexter: The Precursor Legacy

This post serves as a precursor of my thoughts on DevTeach before it begins, based on the .NET session schedule.

Last year I gained a lot of information about application architecture and windows forms application deployment.   Now a year past, my app architecture has evolved dramatically but I am yet to deploy a single windows forms app.  As much as I rail against web apps, I continue to be well paid to write the damn things and there's been no cry for a windows application.  (I have to build it so they will come, but have been too busy enhancing existing web apps.)

Back to DevTeach 2004, after looking at the .NET schedule I see a lot of repeat sessions from last year about Windows Forms deployment and application architecture and fewer sessions about XML.  A number of Whidbey-type sessions have surfaced, but there are also new sessions about MSMQ, Web Services, and messaging.  These are the sessions that pique my interest this year.

So as a DevTeach Precursor Legacy, I'll probably be fired-up about Windows Forms--again--and be thinking more about messaging. 

Messaging?  What the hell is messaging???

Postcursor

Now that the conference is over, I'll have to say that Cool Carl Franklin put me over the top with No-Touch Smart Client Deployment and I now have no excuses left, Tom Eberhard made me want to scrap all of my apps and rewrite them (but I did that last year and went overboard on the 3-tier thing), Kevin McNeish gave me a headache, just like last year, Ted Neward proved he IS the smartest guy in the industry, and if I was half as smart as Ted I could answer the question “What the hell is messaging???” but can't. 

I saw SQL Reporting Services in action and know that I will make the time for it, and soon.  I finally get Wiki, thanks to Rod Paddock, and I think, maybe, the biggest impact DevTeach 2004 had on me is that I am, without reservation, self-restraint or self-respect, a DotNetNuke Wannabee!  That nut Jim Duffy converted me.  He's the Main DotNet Nukester, after all.

Posted: Jun 24 2004, 11:16 PM by daveburke | with no comments
Filed under:
When a new Power Supply Unit makes your day

I have no practical skills whatsoever, and yet I can open up a computer and fix darn-near anything that needs fixing.  Oh, I hate doing it, of course, but I can do it. 

While I was shutting down the home office network I put my hand on my PDC server (Boomer), a 5-year mom-n-pop 550Mhz machine, and it was so hot that my skin was smarting afterward.  Not good.

Thankfully I had a new power supply unit sitting on the floor for over 8 months that was sent to me by my Systems Admin at HQ (the best darn System Admin in the world!) when my previous PDC (Rocker) started sounding like it was spitting out rocks from the Power Supply fan assembly.  I decided Rocker had earned a long overdue retirement and I relocated PDC duties to Boomer.

Yawn....

Hey, this has a subject line about a new Power Supply Unit.  You were forewarned!

But it was a good thing that happened to me today, one of those processes that went so smoothly from start to finish that you were sure you were in for a good beating of some kind or other.  But Boomer remains cool.  Calm.  Its still pissed about Sharepoint Server 2001 being on the machine (now for almost three years running), but otherwise is in good humor.

A Good Interview Question

I was the lead in interviewing several developer hires in recent years.

I remember interviewing for a job myself while I was in a true Dilbert space several years back.  I spent more time in Photoshop (because I wanted to and had nothing else challenging to do) rather than in Visual Studio building web applications.  If I had plugged-in friends back then, my nickname would have been Wally.  So at this one interview I was asked a number of great technical questions about writing applications in Visual Studio and VB.  Needless-to-say, I didn't get the job.  But I remembered how effective those questions were and how they motivated me to get my act together if I wanted to escape Dilbertville and get back into the game.

When I did re-enter the world of the living and was asked to oversee the interview of prospective developers, I compiled a list of twenty good questions that anyone qualified to write code on my team had to know.

I can say that the questions were definitely helpful, but we all know there's much more to determining the best candidate than basing it on a percentage of accurately answered questions. 

I conducted my last interview four years ago.  Now I'm sure that interview questions should be both technical and non-technical in nature to determine more about the "person" rather than focus only on his or her developer accumen.

For instance, I think an excellent question would be, "Do you like to drink beer more than eat?  Or do you like to eat more than drink beer?"

Any candidate who responds, "Can I get a third option?" would get the job on the spot.

DevTeach2004 OT : THIS is not my beautiful presenter group!

How?  How did I get here?

I've always been a solitary conference animal.  More to the point, I'm a solitary animal, period, but at conferences I become a social animal in spite of myself.

I arrive at beautiful Montreal on a Saturday evening, check in to the Montreal Sheraton, drop my bags in my room, and scurry back down to the lobby to see if I have the opportunity to engage fellow nerds, network, reach outside of myself and be a social animal.

In the lobby is a guy making an analogy about asynchronous behavior, comparing it to making a frozen pizza. 

“Synchronous behavior requires the user to sit by the stove watching the cheese melt; asynchronous behavior allows the user to watch the first two segments of a Star Trek episode until the oven timer sounds.”

"Hey, this must is the place!" I thought.

I recognized the fellow talking as a presenter from last year.  Then others joined in the circle that I also recognized as presenters from last year.  This was confirmed when one of them added to the asynchronous soliloquy, "Yes, but if the oven timer doesn't ring, then you have burnt pizza.  So you have to properly handle your callback procedures!"

"Whoa, this is definitely the place!"

When there was a break in the action I introduced myself.

"Dave Burke. Hi!"

No one said they liked my blog. No one said they read my blog.  But they said "Hi!" back.  So it was a start.

More and more nerds appeared.  Then the conference organizer showed up. 

I quickly approached him.  "Dave Burke.  Hi!" and we shook hands.

"Hi!  Okay, I can fit five in my car."

This was when it hit me.  This was the Presenter's Only Dinner meeting place.  And here I was, saying "Dave Burke.  Hi!" to everyone like some schmo off the street looking for a free meal.

It's a weird feeling to be in the middle of a group of 20 presenters assembled for a Presenter's Only Dinner, chatting away like they went to kindergarten together, and you're the only one in the group who is not a presenter.

I was in control of the situation though. Not a problem.  "Dave Burke. Bye!"

Posted: Jun 24 2004, 10:11 PM by daveburke | with 8 comment(s)
Filed under:
DevTeach2004 : Enhancing the VS.NET Design-Time Experience

Enhancing the VS.NET Design-Time Experience. 
Kevin McNeish. 
NET246.

These session notes serve primarily to share the content of the session and as a reference for me.  They may also provide some value to those interested in the session topics. Some of the information found in these notes may be inaccurate due to my typing errors or a lack of understanding of the subject matter. DevTeach policy is that session material is available online to registered attendees only, so I cannot respond to any requests for session PPTs or source.

IComponent interface in common between Web Controls and Windows controls.

Applying design-time attributes to your components. 

Sample code with session.

Component -> subclasses a Textbox.  (Doesn't yet look like a text box.)

Subclass Microsoft's User Controls.

Override Text .  if (!(this.DesignMode && value == this.Name))

Can't check it in constructor in design mode.

mmSolution.cs grabs the process ID and determines the current instance of VS.NET.  DTE is the highest object of VS.NET. Use GetDTE() to get a reference to all of the VS.NET elements.

Automated data binding.  Business object raises events with user control responding to that event.  Added four properties to his controls:  BindingFlag, BindingProperty, BindingSource, BindingSourceMember.

Attributes.  Attributes are classes.  For BindingFlag [Category("Data"), Description(...), DefaultValue()]  DefaultValue for Reset popup enabled.

BindingSource.  Dialog [...] popup created using the automation object of VS.NET.

mmTextBox.  Editor(typeof(mmBindingSourc.., typeof(UITypeEditor) as attribute.  Must override GetEditStyle (to modal) and EditValue.

Get the IWIndowsFormsEditorService and display the form.

The dialog box calls the automation object are returns a list of the business classes.  The GetBusinessObjects retrieves XML business.config file. Business.config uses object relational mapping.

Can override default property window behaviors.  Attributes.  On the class (for example) [ToolboxBitmap(typeof(TextBox))]

Adding controls to a toolbox.  Customize Toolbox default list.  Look for HLM\Software\MS\VS\7.1\AssemblyFolders to add registry entry.

MS Partners get the VS Integration Kit.

Design-Time attributes are inherited (with exception of the ToolboxBitmap.)

MmTextBox : TextBox, ImmBindingSimple
Implements ImmBindingSimple as an interface

Passes the interface to the Bind control method.

Registers the control to the PersistenceManager listener.

Public class mmStateChangedEventArgs : EventArgs

Summary:  It was great listening to Kevin again.  He was one of my favorite presenters from last year.  As for the session content, I'm blown.  Blown!  I will keep on keeping on with my current IDE experience, but will review these techniques and Kevin’s presentation materials when working in Windows Forms. 10 out of 10.

Posted: Jun 24 2004, 01:13 AM by daveburke | with no comments
Filed under:
DevTeach2004 : Extending DotNetNuke with Custom Content Modules


Extending DotNetNuke with Custom Content Modules. 
Jim Duffy. 
NET217

These session notes serve primarily to share the content of the session and as a reference for me.  They may also provide some value to those interested in the session topics. Some of the information found in these notes may be inaccurate due to my typing errors or a lack of understanding of the subject matter. DevTeach policy is that session material is available online to registered attendees only, so I cannot respond to any requests for session PPTs or source.

Had projector problems on getting started.  Didn't phase Jim a bit.

Modules are containers that plug into tabs.  Compiled .NET Private Assemblies.

Free DNN 2.0 Modules
- Users Online
- Private Messaging  http://www.smcculloch.net
- Multipage Control  http://www.bonosoft.com

Go to File Manager, Add File, select Custom Module, then the ZIPPED custom module.

Rule #1, don't mess with core code.

Module container features
- security mechanisms
- look and feel (container skins, minimize/maximize)
- caching

Module Controls
- Modules have at least two controls: view/edit
- View controls are used to display data and allow data to be selected
- Edit controls allow updates to the data with data entry forms

PortalModuleControl Class as the base class for modules.  Properites: isEditaable, UserID, HelpFile, TabID, etc...

Portal Module Identification Information

Module Title, Module Key, Stored in ModuleControls table, Used when calling specific controls

All based on a key structure.

Presentation Layer: .ASCX files.

Business Logic Layer contains ModuleNameInfo and ModuleNameController classes.

Data Access Layer - Abstraction Layer with the overrideable functions.  The abstraction layer talks to the data-specific layer for SQL, Access, etc...

Abstract layer in DataProvider.vb.

A second project is created for Data Access containing the SqlDataProvider class.

Steps
- create SQL objects
- create primary project
- create dataprovider project
- code bll, dal, and dataprovider

DontNetNuke CodeSmith templates.

DNN Jungle has project templates
 Http://dnnjungle.vmasanas.net as well as CodeSmith Templates

DNN Project Templates in VS.NET.  Sweet!

Table: ItemID, ModuleID, Message...

Store Provider projects in the providers folder of the project you're working with.

Be specific with namespaces and other naming to avoid conflicts with other modules.

Each ASCX control in module has key "Edit", "View", etc.. to determine which module to display.

Edit Module Definitions has control keyword, title, and source  ASCX location.

Summary:  I wanna be a DotNetNuke man.  9 out of 10.

Posted: Jun 24 2004, 01:10 AM by daveburke | with 2 comment(s)
Filed under:
More Posts Next page »