As I was scrolling down through my previous posts; I noticed the one I did about MSDN magazine. The three most recent issues (which all arrived at once) did not have the outside folding cover. I don't pretend that I had anything to do with it, but it does make me wonder if others complained. We may never know.
Thursday, May 1, 2008
Back-ing into Enterprise Web Applications
Sometimes I just don't know what to blog about. Is it just me? So when I don't have anything I feel is new or original, I guess I need to go back to something old. I know I have blogged about building applications in the browser before. Maybe not on this blog, but certainly on one of the many outlets I have had over the years. This topic has come up again as I consider the implications of technologies like Silverlight 2.0 and AJAX on building enterprise applications.
I really like the browser, but I am not sure it makes a great application platform. It makes me wonder why it seems like we need all these “other” technologies to make it a better platform. Take for instance the Back button. When browsing I am a big fan of the Back button (actually I am still a keyboard kind of guy and I use the backspace key - old habits die hard). Whether you like it or not, I think you will agree it is a standard that a lot of people now understand.
So when I host an application in the browser, what does the Back button do? Or perhaps a better question is what does the user expect the Back button to do? Why would they think it would do anything different?
"Hey, I'm in the browser. There's this big, prominent button with "Back" written on it". Why would I not want to press that?"
As it turns out using technologies like Silverlight 2.0 and AJAX seem to totally ignore this. They ignore it to the extent that you lose a lot of navigation context if you use it. For instance, say I am traversing down through a hierarchy. I get some number of levels deep and I want to
back up to a previous level - hit the back button? Better not if that traversal was being done using AJAX!
By the way this is not an entirely new problem; I first encountered this problem when an application I was reviewing for a client made such extensive use of session that the back button did not do what the users expected. So we spent a fair amount of time and energy coming up with ways to preserve the Back button functionality. First we found some hack that essentially
disabled the back button (ironically, by navigating Forward). Secondly we built our screens such that they used the query string to pass some basic context from one screen to the next; so that when you navigated back the browser would pass all the context back (since all it typically saves is the URL). An additional benefit we got from using the query string was that nearly every page was bookmark-able. The only exception was when you were in edit-mode; we not try to “save” transitive or volatile states.
Couple of side notes... It seems that the Back button works much better in ASP.NET even though the context is not stored n the query string. I have not taken the time to figure out the exact details of how this is working; but I imagine it has something to do with the browser caching pages and VIEWSTATE. Noteto self - go figure this out someday. Found this interesting article to a Java Framework to handle the Back / Bookmark problem introduced by AJAX. I have to imagine that some resourceful person has done something similar on Codeplex (or alike). |
There is a time reporting application (to remain anonymous) we use at my current job that makes fairly good use of AJAX. That is in the sense that it does improve the response time and interactivity of the application. The downside is that I continuously get burned by use the back button. Argg!!
On the contrary, the MSDN library site does a pretty good job of mixing the two paradigms such
that when I hit back; the “right” thing happens. Sure, neither of these are enterprise applications (in fact comparing them to one another is hardly fair) but the problem remains.
In my mind I am questioning why we are still using the browser for enterprise applications at all. I know why, but I don’t know why. I mean, the reason why it’s so attractive is that it helps in two major areas; distribution and disaster recovery. Distribution is the whole thing that got
us here in the first place. The DR aspect is something I have been realizing more and more in this post Sept 11 world where DR is something I have to consider more and more. It’s just easy to deploy the web application to two physical sites (managed by some content manager); one the primary and the other the secondary. Give a large enough pipe you can load balance between
the two and have a scalable/HA solution to boot.
By why do they have to run in the browser? Why, why why? Here is what I
propose instead…
- Build an application as a native Windows .NET application based on a 3-tier architecture. No HTML but some technology like WinForms or WPF.
- For the middle tier I would like to use something the Entity Framework and LINQ. I have a question as to whether I am going to have a marshalling/serialization issues with this technology.
- The applications are deployed using something like ClickOnce deployment.
- In addition, I want to get rid of the requirement to have a specific .NET framework installed. I like the direction the Xenocode people are taking. Basically linking the .NET Framework into your application thereby bringing all the code and the dependencies down as part of download / install.
Just thought I would put some thoughts out here and see what if anyone is
actually listening. Hopefully you also were able to hand on until this point.
Regardless it’s a place for me to vent; kind of like my diary.
Tuesday, November 20, 2007
To Blog or Not To Blog...
We have been having some internal discussion at the company I work for about blogging both internally and externally.
Now I am not very prolific or anything so my blog is probably not a big deal. In fact it seems like it is more of a novelty than anything else. Every now and then someone will come up to me and tell me that they stumbled across my blog and found a couple of interesting (i.e. funny) things. The issue "the company" has with blogging is twofold; first that I not reveal anything that would compromise the competitive secrets or that I not tarnish the image. Both of which I understand I have honored. I don't mention any specific vendors or names. I mean really - what programmer in the Enterprise has not had a problem with the infrastructure folks.
Internally, we want to start blogging as a way of documenting things in the same vein that MSFT seems to be going - that is that is more than just communicating what is going on at any given moment but also as a way of documenting things. I find it interesting how many blogs MSFT people have posted and the amount of information on them. In fact, many blogs seem to be a replacement for traditional documentation. Which as long as I have a strong search engine - works fine for me.
Which brings me to the one thing that is preventing me from rolling internal blogs out - how do I find anything. We plan on using MOSS and Office 2007 as our blogging platform, which actually works pretty well. The only concern is how strong the MOSS search engine is. I guess the only way to tell is to try, but I am just dragging my heals. I have so much other stuff on my plate that it's hard to get any momentum behind this.
As I write this I feel the energy building, I just hate a whiner.
Monday, September 24, 2007
Services (part 1 of many)
I not been blogging much lately because I have felt like what I have been working on is just not blog-worthy. We "outsource" most of our infrastructure services to an internal division; which was recently turned over to a large outsourcing firm. So I have been spending much of my time "training" the folks who I interact with on a near daily basis to do what I need them to do. As it turned out this was not a trivial task. And that's all I have to say about that. :-)
I am beginning to look at building out some data services. In the Investment Management business data is king; especially market data. What I am learning (or should I say re-learning or feeling pain around) is that without the data in place the service is nearly useless. So my project is really turning into data project where I am bringing in and reconciling market data vendor feeds. Oh yeah and by the way I am exposing them as a service.
Which has me questioning myself; why a service in the first place? I just want to make sure I am actually providing real value and not just overhead. I think the key reason for a service here is provide a single well define abstraction of the backend. We have so much market data and so many sources of market data; that providing a flexible abstraction makes sense. My expectation is that we will be consuming this data right from Excel (the universal financial application platform) as well as many of our custom applications.
I remember presentations back in the mid-90’s when I was a Microsoft and we were listening to the early internal presentations on Microsoft Transaction Server (MTS) by Pat Helland and James Utzschneider. They were talking about MTS interception and how you can accomplish cool things when you can get in the middle. That is exactly what we are trying to do. Once we get the abstraction of the data, we can begin to do some cool things.
My biggest concern about building a service is performance. In past lives when I have built services I would always warn people that if you need fast performance then web services you should think long and hard about not using web services. Of course there are ways that you can “cache” data outside of the service, but now you start to run into the dirty cache problem. I want to go back and read Pat Helland’s fiefdoms articles from a bunch of years ago to get my head back into this problem space. I recall Roger Sessions also doing some similar work based on Pat’s original article.
Next decision is what Framework bits to use; WebMethod (.NET 2.0) or WCF (.NET 3.0)? I know .NET 2.0 pretty well; so I feel confident I can get something done fairly quickly on those bits. But why do something on the “legacy” asmx platform? Why not just bite the learning curve now? I assume the interop between the two just works; so if I wanted to the service to be in WCF and the client to be either that would be OK.
I was just noticed the bottom the page (I write this in Word first) coming up. And I didn’t think I had anything to write about...
Thursday, July 12, 2007
When the Sh!t Hits the Fan
I am trying to get away for a two week vacation; which is in and of itself a challenge. You know the drill. In the weeks leading up to a longer vacation there is this tidal wave of work that needs to get done. Whether you are actually wrapping up work, handing it off or getting it to a state where it can wait until you get back. I am doing all three, as is usually the case. So by the time I leave on vacation I feel like I actually need one. Badly!
This week has been one of those ones where I have been doing all of the above and on top of it our source control system got hosed. I had a friend tell me that Mercury is in retrograde and therefore she was not surprised that this happened when it did. Not sure I understand, but I am sure feeling the pain. I think Murphy and Mercury are definitely related. So Tuesday I made the call to switch from our current SCC system to a new one - Team Foundation Server.
Only problem is that the new one has way more features than the old one. So not only do we have a technical switch over we need to do some quick and minimal process modeling to get the system up and running. We took the small company approach to this and just locked a small group of the more senior developers in a room and told them to bang this out together. Things are looking pretty good except that we are waiting for a license to unlock the crippled version of the software. So close.
Ahh, I can almost feel the sand between my toes...
Monday, June 4, 2007
TechEd: Something new, Something old
I am in Orlando, FL at TechEd. I have not attended that many TechEd conferences in my career; I was mostly a PDC bigot. I think this is my third or forth TechEd conference. There is another guy from my division here who is all of about 25 years old and I can’t help but notice the difference in how we approach the conference. The first thing of note is where each of us is at this moment – about 10pm on Monday night.
I am in my hotel room typing this entry and getting ready for bed. He is out partaking of the different events being sponsored by Microsoft and/or the different vendors here at the conference. I think I heard that there are things going until 1am tonight. There was a time when I would be out until the wee hours, stumble back into my hotel room for a couple hours of sleep and a shower and make the first session of the morning. On more than one occasion I was still a little (OK allot) intoxicated in that first session I have this image that my colleague is doing just that – but I don’t want to incriminate him
Ahhh, youth.
I tend to go to sessions that fall into one of two categories; either ones on topics that I know very little about or where I want network with the presenter and/or other attendees. My expectation is that any detail I see here I will have forgotten by the time I leave. So I am just trying to get the gist of something. My colleague, on the other hand, seems to be focusing on WPF in hopes that he learns enough to start using it when he returns to the office. Part of the rationale I think is that I have to bring big concepts together and understand paradigm changes; whereas he needs to just bang out code.
Lastly, the food. I just can’t eat that conference food anymore. I am convinced that it’s the reason I ended up sleeping through a couple post lunch presentations. I realize that may be hard to believe after reading that I was still blitzed at breakfast. I have experimented enough with the permutations of this enough to know that the food was certainly the nail in the coffin. I think at 25 I could eat just about anything. Now 15 years later, it’s another story altogether. I think there should be a special dietary line for guys like me – I don’t know what to call it but I know what it would look like. Hey I know what you’re thinking – not it’s not a can of Ensure. It is much lighter; less pasta and meat more vegi’s and sustaining foods; you get the picture.
Anyway, times have certainly changed – at least for me. Maybe I can find the retirement room.
Monday, May 7, 2007
Annoyed with MSDN Magazine
As the number of products and technologies available to build applications has grown I have found that I can no longer be an expert in everything. Rather I have had to focus my depth on a few technologies and be at the 100/200 level on the remaining ones. You might be scratching your head going “then why is the depth of MSDN magazine a problem?” Simply because the intersection of what I am going deep on and articles in MSDN is smaller [which, by the way, is exactly what it feels like the editors are striving for and is a good thing]. So my typical MSDN experience is reading 1, maybe 2 articles in depth and skimming the rest.
Well that is not exactly my typical MSDN experience; which brings me to why I feel like venting a little today. In actuality, the first thing I do when I get any magazine is to rip out all the marking stuff. You know the stuff I am talking about all those things from vendors and subscription blow-ins. I hate them because I can't flip through the pages without stopping on one of these. They are like bookmarks someone else put in a book - they are never what I am looking for. Only after removing all these obstructions do I feel that I can actually absorb the content.

Well, this is the second month I have noticed a new cover style for MSDN – the cover that folds back over the outside. It has been my experience that on most magazine covers when the fold-out that the fold out actually tucks into the magazine. Given my routine of cleaning up my magazines before I read them I would open the front cover, flip open the fold-out and see if it was anything interesting. Why a fold-out? Sometimes I have been rewarded with some nice panoramic nature scene and I don’t mind so much. But I digress…regardless my next step is to rip off the fold-out part.
In comes MSDN with the fold-out cover that folds outward; back across the front of the magazine. So in this case if I rip off the fold-out part then I am removing the cover of the magazine. For MSDN, more than other magazines I get this is unacceptable since I use the cover to find articles I want. So I left the cover the way it was.
Here is the problem; once I open the darn thing now the cover becomes an absolute annoyance. It keeps getting caught on things. Torn. Battered and otherwise abused. Which leaves me no other solution then to rip off the fold-out (and be left with this faceless magazine) or to just toss the magazine [hey I used to be the kind of guy who would buy a new car when the windshield wipers needed to be changed].
This leads me to one of two conclusions; either the folks at Microsoft have been spying on me in my favorite reading location (very gross). Or I am not the only one that has this cleanup ritual (almost as scary).
Or it could be I just needed something to write about. I don't have much time before my next meeting so this is best I could do on short notice. Don't worry I am not loosing any sleep over this one.
