Paul Wilson's .NET Blog
Ramblings from the Creator of WilsonDotNet.com
-
Not all MVPs are signing Petition about VB
I just want to make it clear that I am one MVP that does NOT intend to sign this petition about VB.
And by the way, my background is mostly VB, with some Delphi thrown in, although I prefer C# now.
-
Job Available using the WilsonORMapper
I don't intend to start posting jobs for everyone, but since this one is about jobs using my stuff it just makes sense. :)
IMS is hiring - looking for a passionate intermediate .Net developer.
Tim Haines is looking for contractors to work from home on ASP.Net projects. He's putting together a crew of people who use the Wilson O/R Mapper tool in their development strategy. If you have an interest, get on over to http://ims.co.nz/blog/archive/2005/02/18/393.aspx and check it out. -
Mats Helander has released ObjectMapper
Mats Helander has released his ObjectMapper, with support for both NHibernate and his own NPersist (others, possibly my WilsonORMapper, may be supported in the future):
MatsSoft ObjectMapper 2005 is the flexible, power-packed yet easy-to-use O/R Editor that finally turns Object/Relational Mapping into a visual experience! Whether you prefer to begin by modeling your domain classes in UML or you have an existing database that you want to wrap, ObjectMapper is the tool for you! With ObjectMapper's powerful code generators and reverse engineering engines, you can go from database to code and mapping files in less than a minute. And ObjectMapper creates a real, object oriented class model from your relational database - not just a class model that looks like a relational database! Conversely, ObjectMapper is just as happy when asked to figure out a fully normalized relational database schema for the classes in your UML Diagrams - and to generate the actual database as well. ObjectMapper 2005 is the must-have tool for all .NET developers who are serious about their O/R Mapping. With one-click generation of all O/R Mapping settings, the room for mistakes is minimal - and if, despite this, some error should find its way into your model, the built-in Model Verifier will immediately let you know what is wrong - and usually tell you how to fix it, too!
I pointed ObjectMapper at an existing database of mine and successfully created some NHibernate mappings (very similar to my WilsonORMapper) and entity classes -- yeah !
-
WilsonUIMapper v1.0 Released
Why use a UI Mapper? Most reasons are centered around flexibility and maintainability. A good UI Mapper lets you target both Web and Windows applications, as well as making it easy to support multiple layouts and localization. Multiple layouts make it easy to provide role-specific views and/or user personalization, and the integration with your DAL or O/R Mapper makes it easy to support full paging and sorting, as well as multiple databases. A good UI Mapper also makes your UI very consistent and your code base much smaller, while letting you focus on your business logic, instead of worrying about how to create routine admin-like screens. Note that a good UI Mapper does not generate code that you have to compile and maintain.
-
JavaScript Oddity in FireFox
I have a web page that opens another popup page, and now I needed to also have it automatically redirect back to a previous page after it opened the popup. I thought this would be very easy to do, and it was in IE, but it turned out to not be so easy in FireFox.
This is what I thought would work -- it does in IE, and each of the individual lines works on their own in FireFox, but together in FireFox you don't get a popup:
window.open('NewPage.aspx');
document.location = 'PreviousPage.aspx'; // window.location doesn't help, neither does location.href
The following is what turns out to work in both IE and FireFox -- I hope this trivial piece of JavaScript helps someone out there since it took me a few minutes:
window.open('NewPage.aspx');
location.replace('PreviousPage.aspx');
-
Yang Cao started a Blog Finally
Yang Cao has finally started a blog -- he's one of the best .NET and C++ developers I know -- and he taught me quite a bit when I had the pleasure of working with him for 2 1/2 years. I remember trying to get Yang to give us a presentation on threading for a good while and he finally did -- I have never ever seen anyone else create such a complex app (multi-threaded socket server) without using little steps along the way to try to compile and fix mistakes -- no Yang just wrote it all and it compiled and worked the first time! Jerry Dennany was another of our colleagues back then that has taught me a few things -- not to mentioned saved my hide a few times.
-
VS 2005 CTP and SQL 2005 Beta Together
I swear I've seen it mentioned several times that you can run the December CTP of VS 2005 and Beta 2 of SQL 2005 together on the same machine. Can anyone tell me if it is possible, and if so where I can find the correct procedure to do so?
-
Atlanta Code Camp - Register Now
Registration for the Atlanta Code Camp, to be held on May 14 at the MS Alpharetta offices, is now open -- but limited to 200. I'm thinking of presenting something, possibly on O/R Mapping or UI Mapping, but no commitments have been made yet.
-
When Do You Recommend DNN and When Do You NOT
My client is looking at expanding into a new venture soon and I've been asked what I thought about using DNN (DotNetNuke). The rationale for this request as I understand it is that DNN can get us up and running really fast, we can build on it easily, and its proven to work, perform, and be scalable. Now I'll be the first to admit that while I have looked at DNN, I've also not actually used it in a long time, so I may be biased or ignorant. But I honestly don't see DNN getting a site up any faster than anything else unless that site consists of the canned modules or other existing modules. That may be the case for a lot of "portals" and "community" sites out there, in which case I'd recommend DNN (or Rainbow) myself, but is it really helpful in other cases? I already have MasterPages for site consistency, I already have a lot of the "content" and business-specific knowledge that my client depends on, and I already have a working role-based security and menu implementation. We'll also need to create lots of new "content" or "modules", but I don't see how DNN will simplify or speed that up -- it just seems to add constraints that aren't necessary to me -- unless of course we were creating a "portal" that DNN met most of the needs for already. I also seriously question the notion that DNN is proven -- so hopefully I can get some feedback on this one here -- no matter what the outcome. I've searched, and while I see lots of sites running DNN, I can't seem to find any hard numbers or case-studies about sites that run across multiple servers and support a very large number of concurrent users. My personal experience is that DNN is very functional if it has what you need, but the sites I've seen are typically not very "pretty", and the few larger ones I've seen seemed to really suck when it came to performance (I know of one such large community site that switched to a different CMS since they found their site basically unusable on DNN when the site kept growing). Maybe my personal experience is very limited, and maybe my googling isn't very good -- but I can't find any huge success stories (sure they are numerous small-to-medium successes) while I can easily find some people with complaints and other issues. I'm also a little concerned about the fact that I won't get to control my own schema completely, nor use things like MasterPages (and CSS seems hard too with DNN from what I've read), and I don't like having to give the aspnet user account full control over the website directories either. But I know there are a lot of people out there with real DNN experience -- so please post or email me your thoughts, both positive and negative, keeping in mind that my client is not really going to be able to use the existing modules out there for the most part (if any at all), so this is going to be a custom application -- its just a question of using DNN as a quick and proven starting point.
-
Getting Ready for my UI Mapper Release
As my readers know, I've been working on something I've called a "UI Mapper" for a little while now. Well I'm hoping to finally release something soon and I was wanting to get some opinions on how to actually do that. The "issue" is that there are several pieces to this "product", some of which I want to make an open-source standard, but some of which I would still like to make a little bit of money on ($50).
First there is the central UIMapper "framework" which totally makes sense to be open-source so that anyone can target it as a standard. This piece defines and parses the actual xml UI Mappings and contains the interfaces that must be implemented for the actual UI functionality. For instance, there is an IORMapper interface so that theoretically you can use any ORMapper, or even your own "old-fashioned" DAL for that matter. There is also an optional IResources interface so that you can localize all text using any approach you prefer. Then there are IListView, IEditView, and IEditWidget interfaces that the actual UI controls should implement if they want to be "standard" and somewhat interchangeable, at least as far as the basics go of course. My idea here is that you should be able to "map" your UI and later change the actual UI controls between those available by myself and other vendors. I hope you realize at this point that I'm trying to avoid vendor "lock-in" since you can swap any of the parts, using my ORMapper and UI controls today, and some other ORMapper/DAL and/or set of UI controls tomorrow. So this part I feel very comfortable making open source -- but I have a few questions even about this part -- should I name this part something different than "WilsonUIMapper" to make it feel more open, and does using ProjectDistributor for this make sense?
Then there are the actual UI "controls" that I have made, but which should in no way be required since I hope and encourage others to also make UI controls that target my "UI Mapper" framework. These are what I want to somehow try to sale for $50 since they represent some significant work -- but I still have several options so I still need some feedback. What I have are both Web and Windows versions of ListView (think grid) and EditView (think details) UI controls. The ListView controls allow you to specify which properties, and in which order, are columns in the list, as well as letting you specify header labels (localizable), width, alignment, format, and sortable. The built-in functionality is full support for selecting a row and paging and sorting, and filtering if you add the UI you want, as well as "links" for CRUD with optional deleting from the ListView with a confirmation dialog. A lot of people will say this isn't that different from the standard grids, and that's somewhat true, but the benefit here is that you can easily layout multiple "views" on the same data, either for more flexibility or for different languages or for different "roles", and you can even make it all user-definable if you save their preferences in your database. I also think the automatic support for paging and sorting, and deleting if you like it, is pretty slick, since the built-in grids use huge bloated datasets to "simulate" paging and sorting. So what are my options here, before I describe my EditView controls -- I can release the real executables for these ListView controls and keep the source for sale, or maybe release just one of the Web or Windows versions, or release just demos like I do now for my ORMapper. Maybe I even release the source for both of these and rely on only selling the EditView controls -- what do you think is a reasonable compromise to get people interested in "UI Mapping" while still making a little bit of money?
Finally there are my EditView and EditWidget controls, all of which come in both Web and Windows versions. The EditView controls create the overall "details" view of a single entity, existing or new, in either an editable or read-only manner. But note that the EditView controls do NOT actually "handle" the individual fields -- instead it creates an EditWidget for each field, and you can specify any EditWidget you want that implements my IEditWidget interface. I have 10 EditWidgets right now (maybe I'll have a couple more before release) that use the standard .NET controls, but you could very easily create (or get one from somewhere else maybe) versions that support your favorite 3rd party controls or your own business-specific needs. The types of things I have are "widgets" that represent single-line text, multi-line memos, read-only fields, boolean check-boxes, integer fields, number fields, date fields, single-select combo-boxes, multi-select list-boxes, and double-entry passwords. My integer and number boxes use just the standard text-boxes in Web and Windows flavors, with the appropriate validation, but you could easily create your own version using Infragistics or something else and plug them in with just a single configuration line in the mapping file. You may also want to create a more complex business-specific control, like an Address control or a custom Person Selection control -- that should also be easily doable. I think the EditView and the EditWidgets are where its more obvious how this can be a significantly "better" way to do things, at least for most of your basic "admin" screens anyhow. No longer do you have to carefully lineup 100 controls on a 100 different screens -- nor change them all when the designers want something slightly different. No longer will you have inconsistencies in your UI because integers or dates were handled one way on some screens and another way on another. No longer do you have to create separate versions for the Web and Windows, or different languages/locales -- you could even create another version of controls for cell phones if you wanted. So this I'm thinking I would only release in demo form, but I'm certainly still willing to hear your opinions as long as you keep in mind that I'm NOT going to just open-source everything.
So what do you think I should do -- and why? And what do you think of what I've laid out here -- any concerns or things you see missing that simply must be included from the beginning. Again my vision is to release the "framework" as open source so that others can also build on this, although my hope is that people will buy something from me to help compensate for my time. I also think there's a lot of value in a community of paid users from what I've seen with my ORMapper -- that may sound weird but its been very true. I get tons of feedback and suggestions and even bug-fixes and new features from my paid ORMapper users -- but I get nothing from my open-source things, unless you count tons of newbie questions that paying users seem to avoid for the most part. So please give me your thoughts now while I still have some choices remaining -- and thanks.