Certification Bug

by John 23. February 2011 05:16

Everytime someone mentions certification, I get all amped up to get certified again.  I got my MCSD (Microsoft Solution Developer ... for Visual Studio 6.0) back in 1999, and while it didn't give me superpowers, it was certainly nice to have that little graphic on my resume.  That certification has long since expired, and with each new version of Visual Studio, I am constantly reminded of just how "out of date" I am.  

This morning, I was asked if I knew my MCP ID, and it reminded me that I have been meaning to look into certification again, now that my company has a training budget reimbursement program.  It's always a little more incentive to complete when someone else is picking up the tab.  Weird how that works. lol

Well, so I went out to the MCP site and started poking around the tests, requirements, etc and found the process is still very much the way it was 10 years ago; only now things are more expensive.  And, as usual, Microsoft doesn't even offer training materials for all of the tests. Specifically, the Windows Communication Foundation (70-513) MCTS test.  No e-books, no self-paced training kits, just a 3 day course that costs far too much and yields far too little information. Similarly, the final exam to get the MCPD certification, is the test: PRO: Designing and Developing Web Applications (70-519); which also has no training materials other than a FIVE day training course.

Now for the big dilema: Do I get the self-paced training books or the interaction practice tests?  In the past, I've used the books along with the practice tests with decent success.  The books are a nice precursor and the practice exams (at least the Transcender exams) provided a more "real life" test, and gave high detailed results, along with information relating to each and every question - if it's wrong, if it's right, why it's wrong or right.  I don't have a lot of spare time on my hands, so whichever I get will be a long and random process; it could take, perhaps even a year for me to get the certifications (I hope not, but I've known people who haven that long).  Also, books cost half of what the practice tests cost; although I expect (hope) the practice tests are more thorough and a better overall preparation.

Now, granted, I am looking at certification materials for VS 2010, not 2008, so it's a bit newer and it could take some time to get them released, but still, there's no mention of when the new testing materials might be released.

However, here's why I don't like looking into certification.  Here's a practice test question:

An ASP.NET page contains the following markup:
<asp:EntityDataSource ID="dataSource" runat="server" 
ConnectionString="name=EntityConnection" 
DefaultContainerName="AccountingEntities" EnableFlattening="False" 
EntitySetName="Invoices" 
Select="it.[InvoiceNumber], it.[Amount]"> 
</asp:EntityDataSource> .

blah blah blah rest of the question.

I don't know of a single programmer who uses scripted datasource objects in their web forms, yet all the documentation and courses teach that method.  It reminds me that being an MCP only means that I've learned how to take the tests; but has no bearing in the real world.  So, each time I think about getting certified, I end up talking myself out of it.  However, I know the market value for certified people and employers do like abbreviations after your name...

Guess I'll buy a book and see how it goes; then re-evaluate the situation.

Tags: , ,

General | Programming | .Net

How Not To Keep A .Net Developer Amused

by John 4. February 2011 10:01

I'm no spring chicken, but I'm no dinosaur either.  However, I have been around long enough to remember when using HTML templates and populating them in some server-side compiled DLL was all the rage in high-powered web development; a precursor even to VB6's WebClasses.  Do any of you remember the ridiculous hype those WebClasses received - particularly at VBITS 1998 (maybe it was 99, I'd have to check my tote bag to be sure)?  Well, anyway, it was super-duper showcased.  All the power of VB6 in a dll, but still running on a webserver, serving up html pages like pancakes at an IHOP.

 

Now, do you remember actually doing any real development with those webclasses? I bet most of you tried it, realized the one major flaw, and quickly abandoned the technology.  If you wanted to make so much as a single character edit to the HTML page, you had to recompile the DLL, stop/start the MTS package hosting the DLL and most likely stop/start the IIS website as well.  Not exactly the most developer friendly deployment scheme.

 

Now... imagine that same situation, but instead your code engine is Power Builder.  Add to that, an enormous amount of Javascript, some of it custom, the rest as part of old js-based menu system (Joust - remember?).  For that extra little topper, toss in multiple framesets.  Ooh, that's right. I said it. I said frames.  HOW COOL where frames when we got HTML 3.2?!? Oh man, they were the best thing ever.  How many corporate websites ran on frames? Just about all of them.

 

The point to all of this reminiscing is that some places have not realized the sins of the past and still, to this very day, run setups exactly as described above.  I know this because my newest client site is one of those places.  Yes. A major entity in the area is powered by classic asp, powerbuilder, javascript and frames (not even iFrames, real life frames. You remember:

 

<frameset cols="100%" rows="72,*">
	<frame name="title"   src="/webap_buildTitlePage.htm"  scrolling='no'   marginwidth='0' marginheight='0' APPLICATION='yes' noresize>
	<frame name="menu"    src="/webap_plan_menu.htm"  scrolling='auto' marginwidth='0' marginheight='0' APPLICATION='yes'>
</frameset>

 

Yep. It must be one of the dirtiest secrets in all of this city's IT departments.

 

Now, for the title of this post... I was recently handed, literally, hand-delivered 40 (FORTY) printed pages of Power Builder code and told to use this a guide to replace one function of a classic web app with a new .net page.

 

I understand the department doesn't have the resources or time for a full site redesign, development, etc... but this is not the first time we've tried this "lets replace this one function with .net and stay on the migration path" idea.  I'm reminded of the adage: "The road to hell is paved with good intentions." Yes, it's good to start thinking about moving away from PB/JS solutions, but trying to do it in this patchwork style only leads to bad things.

 

Oh, and lastly, when you deliver this stack of wasted paper and explain how you were the lead architect for the system 12 years ago and still brag on its flexibility and power, maybe you should realize that you've hired a "new age tech guy" to replace all of that stuff and this isn't your hayday anymore.  

 

It's a cold, harsh truth that, especially in IT, the *moment* you think you're finally ahead of the curve, you realize you've just been lapped.  I'm still fighting to stay in the race and as proud as I am about some of my past victories, I certainly would not expect any one of them to still be around today. 

Tags: , , , , , ,

Programming | .Net

A BlogEngine.Net Widget On The Way

by John 31. January 2011 12:38

I've had a BlogEngine.Net for about a year on my other site and one thing has always bugged me about their LinkList widget.  There's no (simple) way to order the lists.  You essentially have to add them the way you want them to show the first time.  If you find something else to add later, too bad buddy, it's going at the bottom.  Well, I finally got tired of that and started looking into what it takes to do give some order to the chaos.

 

I'm running the BE in SQL Server mode, so it was pretty easy to figure out the data is stored in a table... which table and how was something far more complex than I had imagined.  I did finally find the table (be_DataStoreSettings), but what I found was a nightmare of embedded XML - inside some other XML.  Oof.  Honestly, I'm not much of an XML guy. I've been dabbling in and around it for years, but I've never really spent too much energy learning the ins and outs of XSL or the XDoc DOM, etc.  So when I found a xml-based SerializedStringDictionary object as the value of the widget settings, I was a little put off.  

 

The first time I needed to arrange the links, I just manually edited the XML and saved it back to the database.  However, a few weeks ago, I had to do it again and thought: Well, I've done it more than once, I'll have to do it again - might as well write a little app to help out.  So, I began digging into the source code for BE.Net and I quickly realized something: is this thing super-architected, or what?!  To top things off, C# is not my primary language. Meaning, I can get the point and I can hold a conversation, but in all truth, I still look up some things up pretty frequently when the syntax doesn't easily translate in my VB brain.

 

So, naturally, I started writing a down'n'dirty vb/asp.net page to pull back the data, allow me to sort it, then send it back.  Then I remembered seeing something the Ajax Control Toolkit that allowed for drag'n'drop capability.  Behold: the ReorderList control!  First, I had to learn how to use that thing, then I had to somehow populate it with a collection it can handle (which meant translating the XmlNodeList I got back from the database into something that implements IList).

 

Tappity-tap-tap later, I had my own little DictionaryItem class implementing an IDictionaryItem interface, so I can easily use the generic List(Of T) collection to send to the control.

 

Now my LinkList data is parsed, displayed and orderable via drag'n'drop, all that's left is saving the new list back to the database!  It turns out, the ReorderList control is something of a ... how shall I say... less-than-intuitive control.  I (mistakenly) assumed the list items would be readily available in, for example, the Items collection property.  Well.... yes and no.  Yes, there are a ton of items in the collection, but none of them are actually my objects. Each item has a Controls collection, which houses another Controls collection and so on - but at the root, is just a literal control with the text of the item being displayed within an HTML table/row/cell/control.  This is no good. This means I have no way to iterate through all the items in the ReorderList control, at one time, and save off their new orders.  After some trial and error, I decided to go ahead and use a Session variable housing the working collection of DictionaryItems that would get modified in the ReorderList control's ItemReorder event.

 

After those kinks were all sorted out, the page was done.  I could load the page, select any of my LinkList widgets, and sort the order of the items displayed.  It works wonderfully.  Then it occurred to me: "I bet other people would like this option too!".  I had previously searched through the discussion board over at CodePlex for widgets allowing me to sort items and there were zero hits.  So now, it's up to me to provide one.  And that's okay.

 

However, I will now need to convert this little utility to something a bit more BE.Net friendly.  First off, I have to convert to C#; which should not be a big deal.  But, more importantly, I will have to start using their control hierarchy and their database functions (to get the table prefix and db-login information, etc).  I've found the "How to create a widget" documentation and am going through it now.  The one thing I'm not sure of is if I will have to change how any part of my code works when the blog is configured to use XML files instead of SQL Server.  I guess I'm going to have to install a blog locally and test to find out for sure.  I thinking that I won't have to do much, if anything at all, since the way they built the app doesn't really care how the data gets to the business layer - and for the most part, my code doesn't really care either.  I habitually separated out the business functions from the database interaction from the start, so I'm in good shape, I think.

 

I'll post the widget here when it's ready for testing and I'll announce it officially on the BE.Net forum as well.  Until then...

Tags: , , , , ,

Programming | C# | SQL Server

About Me

I'm a .Net developer in St. Louis, MO working for Phase5 Consulting. 

Professional Info

Tag cloud