Misfit Geek

Fustrated by Design !

MaximumASP

Say good-bye to the MisfitGeek!

September 2, 2010 | Comments | Uncategorized

And MisfitGeek.com

This will be my last post as Microsoft’s Opinionated Misfit Geek.

No, I’m not leaving Microsoft, I’m just trying to grow with it.

In 2001 when “The Misfit Geek” was born, it was a persona that I thought Microsoft needed. I joined Microsoft with a lot of experience working with both Microsoft AND Non-Microsoft web development technologies and Microsoft needed to understand and expand it’s view of the web development world.

I felt, back then, that Microsoft also needed more people who would really speak their mind (in private and in public) even when doing so would be un-popular.

Times have really changed. The technology has changed (ours and every one else’s), Microsoft culture has changed, and I probably have too.

So, the “Opinionated Misfit Geek” is no longer a persona that has a place at Microsoft.

As a result, MisfitGeek is retiring.

Since the MisfitGeek brand is my own and I intend to use it again one day, I’m retiring the brand and the web site in the next day or two. (I’ll continue to Tweet at MisfitGeek since my Twitter account is strictly personal and not endorsed or promoted by Microsoft.)

So…. Who will replace the Misfit ?

Let me introduce you to MSJoe (MSJoe.com)

The Homepage at MSJoe.com is running the beta version of the Orchard CMS. Since Orchard is still in pre-release and the blogging story for Orchard is not cast in stone yet, I’ll be blogging at www.MSJoe.com/blog with will be running on GraffitiCMS Migrated to ASP.NET 4.0

Please change your RSS subscriptions and bookmarks.

More coming soon ….

Post Removed.

August 19, 2010 | Comments Off | Uncategorized

I’ve had to remove this post :)

A developer emailed me this weekend because he had just taken a position in a large software development organization and his first task was to present a discussion top management as to the relative strengths and weakness of developing new web based functionality in ASP.NET versus JSP.

During the .COM boom I did a lot of Java development. While I liked the language very much, there was much I disliked about the experience (at least as it compared with my expectations).

The middleware back in that day was cumbersome and the write once / run anywhere mantra (which I don’t think was ever entirely true) was really exacerbated by the middleware implementations. (Though JBoss happened later and I think JBoss is a super implementation.)

I never grew to like JSP. Working with JSP had little in common with the experience of working with Servlets or EJBs – where I spent my time.

The evolutionary pace of JSP seems to have really slowed and now that Sun has been acquired by Oracle who knows what will happen to Sun’s development technology. (The futures disclaimers that appear across the Sun/Java sites might indicate a cause for concern.)

ASP.NET, PHP, Python, and Ruby / RoR are all modern, evolving web development technologies.

So WHY would a company choose to do new development in JSP?

In a word – immutable Servlets.

If I had a great deal on intellectual property in Java Servlets (more than I could reasonably port out of Java in my required time frame) and I COULD NOT modify the Servlets – then I’d probably choose JSP. JSP is hard wired to talk to Java Servlets.

Of course, if I COULD modify the Servlets, my first architectural preference would be to expose the Servlet functionality through XML Web-Services, or if performance issues demanded it, via Sockets directly.

Java, .NET and PHP all have Sockets APIs.

One advantage that .NET has over PHP for this purpose is that .NET supports a binary component model so one could start building Web based UI to expose the Servlet logic and as new development progressed the Servlet architecture could be slowly migrated to .NET objects.

All in all, the question got me wondering how many folks are dealing with updating and extending existing Java infrastructure.

How are you doing it? What technologies are you choosing ?

Buttons with Mouse-Over Behaviors – Redux

August 16, 2010 | Comments | Uncategorized

I recently posted some CSS and HTML snippets for a buttons collection I was using for a Menu style UI

Scott Koon from www.LazyCoder.com posted a comment with a better way (thanks Scott).

This way I don’t have to set the CSS Class for each button. Just contain them in a div.

Here is the CSS

CSS
  1. div input:hover
  2. {
  3. background-color: #BFCBD6;
  4. }
  5.  
  6. div input
  7. {
  8. vertical-align: middle;
  9. text-align:center;
  10. width: 150px;
  11. height: 40px;
  12. border: 1;
  13. border-color: Silver;
  14. background-color: #465C71;
  15. color: White;
  16. }

And here is the markup.

ASP.NET Markup
  1. <%@ Page Title="Home Page" Language="C#"
  2.          MasterPageFile="~/Site.master"
  3.          AutoEventWireup="true"
  4.          CodeBehind="Default.aspx.cs"
  5.          Inherits="Button_CSSSelector._Default" %>
  6. <asp:Content ID="HeaderContent" runat="server"
  7.              ContentPlaceHolderID="HeadContent">
  8. </asp:Content>
  9. <asp:Content ID="BodyContent" runat="server"
  10.              ContentPlaceHolderID="MainContent">
  11.    <div style="text-align: center;">
  12.       <h2>Administration</h2>
  13.    </div>
  14.    <hr /><br />
  15.    <div style="text-align: center;">  
  16.      <asp:Button ID="btnAdminUsers"     runat="server"
  17.                                         Text="List Users"
  18.                                         PostBackUrl="" />
  19.                                         &nbsp;&nbsp;  
  20.      <asp:Button ID="btnAdminActivate"  runat="server"
  21.                                         Text="Inactive Users"
  22.                                         PostBackUrl="" />
  23.                                         &nbsp;&nbsp;
  24.      <asp:Button ID="btnAdminEvents"    runat="server"
  25.                                         Text="Locked Out Users"
  26.                                         PostBackUrl=""  />
  27.                                         &nbsp;&nbsp;                      
  28.      <br /><br />
  29.      <asp:Button ID="btnAdminRoles"     runat="server"
  30.                                         Text="Roles"
  31.                                         PostBackUrl=""  />
  32.                                         &nbsp;&nbsp;
  33.      <asp:Button ID="btnAdminAccess"    runat="server"
  34.                                         Text="Access Security"
  35.                                         PostBackUrl=""  />
  36.                                         &nbsp;&nbsp;
  37.      <asp:Button ID="btnAdminSettings"  runat="server"
  38.                                         Text="Application Settings"
  39.                                         PostBackUrl=""  />
  40.                                         &nbsp;&nbsp;
  41.      <asp:Button ID="btnAdminReporting" runat="server"
  42.                                         Text="Reporting"
  43.                                         PostBackUrl=""  />
  44.                                         &nbsp;&nbsp;
  45.      <asp:Button ID="btnAdminMisc"      runat="server"
  46.                                         Text="Misc"
  47.                                         PostBackUrl=""  />
  48.                                         &nbsp;&nbsp;
  49.    </div>
  50. </asp:Content>

Enjoy !

Video: http://www.asp.net/webmatrix/videos/creating-a-consistent-look

 Tutorial: http://www.asp.net/webmatrix/tutorials/3-creating-a-consistent-look

It’s WordPress !

My PHP friends accuse me of being a Microsoft shill and my co-workers chastise me for my use on non-Microsoft technology, so it should be interesting to here the response to my decision to move my blog from Graffiti to WordPress.

Graffiti served me well.

In fact I think it’s a GREAT application that turned out to be an unsuccessful product for Telligent.

It’s business failure had nothing to do with it’s quality as a CMS / Blogging Engine.

In any event. Some time ago Telligent discontinued GraffitiCMS and “Open Sourced” it.

As an Open Source application GraffitiCMS has not really exploded. I did experiment with GraffitiCMS 1.3 and I’ll continue to use GraffitiCMS but not for my blog. So why WordPress ?

Isn’t it hypocritical to be a .NET blogger on WordPress.

No !

Microsoft has done a lot of work to make PHP applications run well on Windows and IIS. Why not practice what we preach?

Choosing WordPress (for me at least) has nothing to do with what it’s written in.

I’ a pragmatist and WordPress is an AMAZING “Tool”.

I don’t intend to be a WordPress developer, I just want to reach a lot of folks and I had some problems that needed to be solved with my blog.

I’ve been blogging for about five years. When I started blogging, I had no idea that blogging was a science and I needed to consider the future.

In my first year of blogging this blog was located at JoeOn.net. Since I my developer blogging wasn’t restricted to .NET I wanted a personal band that was not Microsoft technology specific so I moved to www.Misfiteek.com and the export / import tools were not very good so lots of stuff got broken. I’ve also moved between blogging engines. I’ve used Subtext, DasBlog, .Text, and GraffitiCMS. None of the import / export tools were great.

In five years I made many technical mistakes as a blogger.

Old posts accumulate broken links.

Hot linking images creates broken image links over time.

LiveWriter’s default behavior for uploading images creates an undesirable directory structure.

I used non standard images sizes and did not size via CSS so changing themes cased an image “bleeding” mess !

Modern Blogs have many features not available in GraffitiCMS

More blogs are run on WordPress than anything else and I’ve had other WordPress based blogs.

Every time I’ve ever tried to switch blogging engines the export / import process was problematic so I wanted to test things out before making any decisions.

I found this GraffitiCMS to BlogML exporter.

http://darkfalz.com/post/2009/04/14/Graffiti-To-BlogML-Exporter.aspx

I set it up and run it against a local copy of my GraffitiCMS based blog. Then I set up a local instance of WordPress and selected the BlogML import function from the Admin menu. WordPress automatically installed the importer plugin and processed the import. Poof ! It just WORKED ! Of course, the content was a mess, but that was MY fault. After choosing a theme for WordPress I started cleaning up my content. First, I was working off line but I’ll my images were resolving to my live MisfitGeek.com blog (still on GraffitiCMS).

For EVERYTHING – there is a WordPress plugin.

I found a global search and replace plug-in for WordPress which I installed.

Next, I created local wp-content/uploads/archive and downloads folders in my WordPress installation. This is where ALL my post linked files would go. I spent the weekend (about 24 hours) in WordPress going through every post and fixing all the links and images to resolve to http://localhost, fixing up categories and tags, etc. Deployment was pretty easy.

Use the Microsoft WPI (http://microsoft.com/web ) and make sure to install the IIS URL re-writer.

I just set up WordPress on my Windows 2008 Server (V-Max instance at MaximumASP), imported a backup of my MySQL database for WordPress and installed my chosen theme. Then I installed the WordPress Search & Replace plugin and changed all the post references to locahost to www.misfitgeek.com. Then, I used my MaximumASP control panel to switch my domain name service to point to the new instance. WordPress is a feature fest !!!!

I’ve installed PodPress so that I can get more serious about Podcasting and a couple of SEO plugins and now it’s time to get to writing.

So, send me your suggestions !

ASP.NET Membership Training – 3 new Videos

August 3, 2010 | Comments | Uncategorized

Hi folks. Here are three more videos in my collection on Security concepts and working with ASP.NET Membership

· Adding Users to Your Membership System

· Logging Users Into Your Membership System

· Implement the Registration Verification Pattern

You can find them all at the Web Forms Security page: http://www.asp.net/web-forms/security

image

Have you checked out the Tailspin Spyworks sample application ?

[ Start HERE ]

Over the years I’m done hundreds of videos showing tips, tricks, techniques and methods for building ASP.NET applications.

One drawback of videos, especially as we move toward Hi-Def is that there is still much of the world’s developers lack the bandwidth to view streaming videos.

Some folks have he band width at work but not at home, etc.

So lately I’ve had this application in my head.

It’s a Windows Desktop application (and maybe a Windows Phone 7  application) that starts as large index into Developer content.

The content would be organized into “curriculum based learning” so that it could be referenced piece by piece or by a group as a syllabus.

Off course the index would all be searchable by category, tag, and keyword.

The app could contain and deliver video, audio, code, and written content and be capable of interactive learning modules (finish he module take a quiz, etc.)

The application would manage downloading in “the background” as bandwidth was available. (Either via an http server configured for presumable downloads or via a pre-seeded BitTorrent.

When all the assets for the curriculum are downloaded the user would get a notification that the material is ready for them.

New content would be feed by RSS/RDF and the application would sync an on line profile so that uses could keep track of what materials they have consumed and what they have not.

Anyway, it’s a rough idea and I wanted to ask people what they thought of it?

Have you heard about ASP.NET WebMatrix ?

There is a new dev tool and installer, a new syntax for developing ASP.NET Web Pages, IIS, SQL Compact.

Here are links to the first two videos in a new series for learning WebMatrix Development.

Getting Started with WebMatrix Beta and ASP.NET Web Pages

Introduction to ASP.NET Web Programming Using the Razor Syntax 

These videos will linked to a multi-chapter written tutorial series you can find at the link below.

[ Written tutorial series. ]

More coming son !