My project provides master pages features now!

In my previous post, I inquire about where to host an open-source project.  Well, I was just investigating the features promised by Master Pages in ASP.NET 2.0, and I realized that EZWeb provides some of those same features in .Net 1.1.  Master pages is discussed here on www.asp.net, and EZWeb provides the navigation abstraction as well as look and feel abstraction.  It does not allow for nested master pages (or nested templates in EZWeb – only one template per page), and it doesn’t automatically have a generated sitemap, but now I have the urge to develop a plugin that will automatically generate a sitemap for all ancestor pages.  Again, EZWeb will be availabe for download and contribution as soon as I get the workspace set up.

Best place to start an open-source .Net project?

I am a civilian again.  For the past week I’ve been outprocessing at FT. Hood.  Well, I’m still active duty until my terminal leave is up on May 17th, but I’m back at home, and I’ll be back to work on May 18th.  I’m looking forward to coding all day again.  


As described in a previous post, I’ve been working on a web application framework that I’ve dubbed EZWeb.  We’ll see how easy it is when I set up palermofamily.com with it so that my family can create their own websites.  All they have to know is how to type and click.  The WYSIWYG FreeTextBox will save their input as HTML.


I haven’t decided on a version number yet, but it’s not up to version 1 yet. Maybe a 0.9xx.  Definitely a BETA.  I’m planning on releasing the source online, and I’m considering sourceforge and gotdotnet.  I’m curious to know whether any reader have personal experience working with a project hosted by either of these.  I’m trying to find out which would be best for hosting this ASP.NET project source. 


I’ve been thinking more about the problem that this project solves, and I’ve come up with this:  In any web application, a common look and feel has to be established, and every page shares this common look.  EZWeb helps abstract away the look and feel as well as navigation.  The look and feel can be declaratively and programmatically controled in EZWeb, and existing pages need only make a few small changes to take full advantage of EZWeb’s features.  When I decide on a project-hosting site, I’ll start the workspace with full source and some documentation on how to install EZWeb. 


I already have two application in which I intend to use EZWeb for the look and navigation, so I’ll be able to test it even more.


Maybe I went overboard, but while working on this, I actually made it into an application that can stand by itself.  An application framework that is a full application also.  It’s an application that allows users to edit and add to their own web pages.  It has granular permissions for users with editing rights, and there is also a built-in plugins feature for reusable functionality.  The Content Editor is the default plugin, and this provides HTML editing functionality.  I plan on creating more in the future.


So, back to the point:  I’m trying to decide where to host this project.

Blogging from Frankfurt (non-technical)

This is a non-technical post.


I’m blogging from Frankfurt, Germany.  We’ve made a stop on our plane right from Kuwait back to Texas.  Tomorrow I’ll be back with my wife.  16 hours to go!!!

VB really IS case-insensitive

Some of you may read the title of this post and think to yoursefl “Duh”!, but this sneaky little feature caught up to me.  I have my library developed in C#, and I have 2 layers of base classes for all ASP.NET Pages as well as user controls, so every page and user control in my app will have certain properties and functionality.  I wrap a template around the content of every page.  To do this I have a <div /> with id of “pageContent”.  I reference this from the base classes.  I expose this HtmlGenericControl with a property named “PageContent”.  Works great and is self-documenting.  Made a page with J# and it works great.  Made a page with VB (see my IIS reinstall post), and I get this wierd compilation error.  Doh!  PageContent is referenced, and VB sees pageContent first, tries to write to that protected member and bombs on compilation.  HELLO!! That’s a capital P, not a lowercase p!!  So now I have to change the property or the member name.  No biggie.  Besides, it’s not a good practice to have member names vary only by case, but this one had slipped past me. 


I’ve learned an important lesson.  Just by writing .Net code, I can’t ensure that all .Net languages will be able to use it.  In this case, only case-sensitive languages would be able to use it, and case-insensitive languages (like VB) would bomb out.  I’ll have to do some more testing with VB to ensure that my project can reliably be extended with VB.


I did learn something rather interesting about the code interoperability feature and IL.  The library is C#.  The page is VB inheriting from a base class written in C#.  Actually the VB page is just inheriting from IL code.  Where the PageContent property was referenced was actually in C#, and the property and protected member are declared in C#, but since the VB page was executing, the IL library of mine was compiling according to VB’s rules.  Very interesting.

.NET VB ASP.NET Bug

I normally write my ASP.NET apps with C#.  With my current project, I’m supporting extensions to it, so I decided to test them with extras written in other .Net languages: VB and J#.  I wrote one in J#, and it worked just fine.  I wrote one in VB, and it bombed with this error:


Compilation Error


Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: The compiler failed with error code 2000.



Show Detailed Compiler Output:






C:WINDOWSsystem32> “c:windowsmicrosoft.netframeworkv1.1.4322vbc.exe” /t:library . . .

Microsoft (R) Visual Basic .NET Compiler version 7.10.3052.4
for Microsoft (R) .NET Framework version 1.1.4322.573
Copyright (C) Microsoft Corporation 1987-2002. All rights reserved.

vbc : Fatal error BC2000 : compiler initialization failed unexpectedly: Cannot change thread

mode after it is set.

Upon further investigation, anything written in VB.Net running against ASP.NET produced this.  Even the simplest, nothing page with Language=”VB” produced this error.  Researching this problem on Google produced some others who have had this problem with Win XP and ASP.NET 1.1.  They resolved it by uninstalling and reinstalling IIS and then reregistering the aspnet_isapi.dll.  I have been hesitant to do this because of the possibility of having to reinstall VS.  Unlikely, but I don’t have the setup files with me, so it would present a problem.  In 3 days I’ll be back at home where I have the setup files, so I’m going to try it now so I can test out .Net Nuke (which is written with VB).  So, here I go *crossed fingers on my knees praying to God*. . .


Done!  It worked.  I can use VB.Net again!  I’m glad I backed up my IIS configuration because the reinstall cleared it, but a simple restore, and it’s as if I never did anything.  .Net Nuke is up and running. 


This was a very curious problem indeed.  Why were VB pages the only ones affected?  Maybe we’ll never know. . .  🙂

GUI for MSDE! SQL Web Data Administrator

I use SQL Sever Developers’ Edition, but I have also experimented with MSDE.  As a developer, I think it’s important to be familiar with all the tools (I also use Web Matrix from time to time).  This free download from Microsoft makes working with MSDE so easy!  For those who may not have access to SQL Server, this tool makes MSDE very accessible.  You must have either IIS or Cassini running as your web server(Cassini comes with Web Matrix – free).

A completely automated web site/application framework

UPDATE:  Has been released at http://workspaces.gotdotnet.com/ezweb


My current pet project is called EZWeb.  I don’t know if that name is already trademarked, but that’s what I call it.  The purpose of EZWeb was originally to serve as a product that would allow Joe User to have a website that was easy to maintain through a web interface.  It would have a WYSIWYG editor for page content, file uploading, and it would allow Joe Owner to add other users with granular permissions of what part of the website they had control over.  The user can add as many pages and sub-pages as the hosting space allows.  I have reconsidered developing for the purpose of being a product (I don’t think I want to mess with that type of scenario), and I’m now developing it as a complete framework for web applications.  It’s developed with ASP.NET, so it can be extended with any .Net language.  Here’s a screenshot of an admin screen that allows configuration of every page: 


As you can see, the editor has control over the page title, the template for the pages and its children(templates can be easily changed and can be different within the site.  If a template is not specified, the page uses its parent’s template), the color scheme for the page (defined by the template for allowed colors), and the plugin the page implements.  The default plugin in a content editor that supports file uploading.  Alternately, a page can implement another plugin that is available for the site.  For proof of concept, I make a “clock” plugin, and when implemented on the page, no page content is displayed if it exists, and my clock plugin (which is just a user control) displays the current time.  I have plans to make a photo album plugin, a blog plugin, etc.  Other packages can be incorporated as a plugin.  For instance, I was going to use nGallery for the photo album plugin.  Next on the admin screen is controling what child pages exist.  When you add a new one, the program creates the new page on the disk with its own config file.  Also you can add as many regular hyperlinks off the page to different areas of the site or wherever.  It can even be a script hyperlink.  Then, below that, is the editor area.  This controls what users are allowed to modify this page.  There are granular permissions, and the permissions inherit and override similar to NTFS. 


My goal for this is to serve as the main framework for an application.  The user object can be modified to the needs of the app, and EZWeb will abstract away the navigation.  For instance, some people have Intranets that have different web apps scattered all over the page, but everything else is just regular HTML.  Well, this automates the website part of it so that you don’t have to manually edit HTML anymore.  ASP.NET fit directly inside EZWeb seamlessly, and you can keep the benefits of EZWeb navigation while hiding the template if you internal web app has its own look and feel – or you can make the look and feel an EZWeb template (very easy to do) and configure it that way. 


When I get back to the states, I plan on setting up a site for my extended family.  It will serve as a kind of family tree website with each family having a part of the site.  The parents, in turn, can create areas beneath that for each child if they so choose.  Each person will have a login, and editing permissions can be configured so they have control over their page and its sub-pages, but they will not have change access to other parts of the site.  With a photo album plug-in, anyone will be able to choose the phoe album plugin, click save, and then they can immediately start uploading pictures.  Free beta testing!!


I’m thinking about releasing the source as a gotdotnet workspace, but I haven’t decided yet.  I’m curious to know if there are any .Net projects out there that may overlap with the goals of this one.

Initial Posts

I’ve been writing my previous posts offline.  Donny has been nice enough to set me up with this Blogspace, so here are my initial posts with more to come.  Been in Iraq with the Army for the past year.  I’m getting back home this week.  Most importantly, I can’t wait to see my family.  Less importantly, I can’t wait to get back in the technology whirlwind!!

Addicted to blogs?

I have a routine:  I try to wake up in the mornings as early as possible.  I walk 1/2 mile to the Internet Cafe through the Kuwait sand.  I synchronize my Outlook Express and SharpReader with my blog feeds.  I then use Net2Phone to call my wife over the ‘net for $.02 a minute.  Later in the day during my spare time, I read the previous days blog posts.  I suppose that I’m average among blog-readers in the number of feeds to which I subscribe.  I only read technical content, so I have whittled down some feeds that don’t provide that.  I just finished reading yesterday’s posts (about 160 posts).  I hit the arrow keey to move on to the next one, and, to my disappointment, I had finished them all.  I thought to myself, “That’s it?  But I want more!”  Does that mean I’m addicted to reading blogs?  It took me 1.5 hours to go through 160 posts, and I know I could subscribe to more feeds, but I need to maintain balance.  When I get back to work in the states, I know I won’t have as much reading time available, so I need to discipline myself.  Is there a Blogs Anonymous anywhere around north Austin?

Great XML DataBinding post

Check out this post on xml databinding in IE.  If your Intranet web app will be run with IE 5+, this is a great way to quickly display data.  The xml file can be generated dynamically, so it works well.