Viewing entries tagged
Entity Framework is a great tool for quick and dirty data mappings and management. I encourage it for POCs and throw away pet projects, but will never even consider it for a production application. There are thousands of reasons for this; mainly they revolve around the scalability problems, performance issues with caching and lazy loading data and just plain fucked-up things that EF forces you to do in some cases, like break good design patterns. Here is a new one for me: EF does not support gracefully Non-Nullable columns with default values in the form of expressions. Let me break that down for you. Say you create a table in your schema with a column like this;
[sourcecode language="sql"][CreationDate] [datetime] NOT NULL DEFAULT (GetDate())[/sourcecode]
If you generate your edmx with Entity Framework and start adding records to your table, you’ll note at first your values look like this:
… and then you are like WTF! Yes, WTF is that Entity Framework does not support such thing as of the writing of this article (02/29/2012). Here is a post from Microsoft Connect explaining the problem:
So what do you do?
Option 1: Don’t use Entity Framework
Option 2: Manually change the edmx XML by hand and every time you modify your schema you have to do it again. This option is kinda stupid, because I ONLY recommend the use of EF in for prototyping projects, which in turn change a lot, thus annulling the initial reason to use EF in this setup: SPEED. But let’s go with it.
In case you want to support such case, you need to open your edmx file in your favorite text editor as XML and search everywhere your field is referenced in the file like so:
[sourcecode language="xml"]<ScalarProperty Name="CreateDate" ColumnName="CreateDate" />[/sourcecode]
And remove them. Just beware that next time around if you need to update your Entity Data Model because you changed your schema, you’ll have to go through this all over again.
I tried this Stack Overflow solution but didn't have much luck:
It gets me when application frameworks tamper with core web concepts of precisely what they are trying to solve. If you have WCF services exposed through any of its different endpoints, you have to do the most ridiculous dancing to get something as simple as the HttpContext. WTF is up with that Microsoft!?!
There are like 10 different ways to access HttpContext and Request Headers, all weird in their own ways, none of them standard, and requiring the callers to add headers in different and specific ways:
- There is HttpContext (or this.Context or HttpContext.Current): “Gets or sets the HttpContext object for the current HTTP request” This would be the obvious choice, but the WCF team needed to get COMPLICATED! To support this, you have to add extra magic and attributes to your service contracts (read here)
- Then we get fancy with something that is not quite the HttpContext the WEB knows and loves, but some new BS called OperationContext (OperationContext .Current). MSDN explains: “Provides access to the execution context of a service method”... but off-course!
- Also HttpContextBase class according to MSDN “serves as the base class for classes that contain HTTP-specific information about an individual HTTP request”. So, you’d only think that HttpContextBase is the base class of HttpContext right? WRONG!
Hmmm, at this point you think this might be a brain teaser. There may be another 2-3 ways to access data from a similar concepts. If inspecting the HttpContext on the server side is a nightmare, managing headers and contextual http request elements on the client is even worse if your client is using the generated WCF contracts from VS. Here you are either setting something called ‘OutgoingMessageHeaders’ on an http request (like there is something that can be ‘incoming’ during a request), or you are implementing a custom IClientMessageInspector and altering the request before it is sent to the server: what is this the Police Academy (Inspector, pffff)? Why do I need to inspect a message I built? Or why am I forced to do this kind of crap?
This is so frustrating I cannot cope with the unnecessary layers of engineering and noise the WCF team threw over such a simple concept. I have nothing against new and different ways to solve problems, but please don’t call it the same as something that already exists and it’s well defined by the HTTP protocol specification (RFC 2616). PLEASE. DON'T.
I’ll try working around it with Rick Strahl’s post. If I keep having problems, I’ll move out to a different framework, implement my IHttpHandler, or downplay WCF’s capabilities.
Here is a nice-funny-angry email Bill Gates sent back in 03' to the VP of the Windows Division at the time Jim Allchin about Bill's own frustrating experiences with Microsoft.com and the Windows XP experience.
Who let the dogs out!?
--------- BILL GATES EMAIL ---------
From: Bill Gates Sent: Wednesday, January 15, 2003 10:05 AM To: Jim Allchin Cc: Chris Jones (WINDOWS); Bharat Shah (NT); Joe Peterson; Will Poole; Brian Valentine; Anoop Gupta (RESEARCH) Subject: Windows Usability Systematic degradation flame
I am quite disappointed at how Windows Usability has been going backwards and the program management groups don’t drive usability issues.
Let me give you my experience from yesterday.
I decided to download (Moviemaker) and buy the Digital Plus pack … so I went to Microsoft.com. They have a download place so I went there.
The first 5 times I used the site it timed out while trying to bring up the download page. Then after an 8 second delay I got it to come up.
This site is so slow it is unusable.
It wasn’t in the top 5 so I expanded the other 45.
These 45 names are totally confusing. These names make stuff like: C:Documents and SettingsbillgMy DocumentsMy Pictures seem clear.
They are not filtered by the system … and so many of the things are strange.
I tried scoping to Media stuff. Still no moviemaker. I typed in movie. Nothing. I typed in movie maker. Nothing.
So I gave up and sent mail to Amir saying – where is this Moviemaker download? Does it exist?
So they told me that using the download page to download something was not something they anticipated.
They told me to go to the main page search button and type movie maker (not moviemaker!).
I tried that. The site was pathetically slow but after 6 seconds of waiting up it came.
I thought for sure now I would see a button to just go do the download.
In fact it is more like a puzzle that you get to solve. It told me to go to Windows Update and do a bunch of incantations.
This struck me as completely odd. Why should I have to go somewhere else and do a scan to download moviemaker?
So I went to Windows update. Windows Update decides I need to download a bunch of controls. (Not) just once but multiple times where I get to see weird dialog boxes.
Doesn’t Windows update know some key to talk to Windows?
Then I did the scan. This took quite some time and I was told it was critical for me to download 17megs of stuff.
This is after I was told we were doing delta patches to things but instead just to get 6 things that are labeled in the SCARIEST possible way I had to download 17meg.
So I did the download. That part was fast. Then it wanted to do an install. This took 6 minutes and the machine was so slow I couldn’t use it for anything else during this time.
What the heck is going on during those 6 minutes? That is crazy. This is after the download was finished.
Then it told me to reboot my machine. Why should I do that? I reboot every night — why should I reboot at that time?
So I did the reboot because it INSISTED on it. Of course that meant completely getting rid of all my Outlook state.
So I got back up and running and went to Windows Update again. I forgot why I was in Windows Update at all since all I wanted was to get Moviemaker.
So I went back to Microsoft.com and looked at the instructions. I have to click on a folder called WindowsXP. Why should I do that? Windows Update knows I am on Windows XP.
What does it mean to have to click on that folder? So I get a bunch of confusing stuff but sure enough one of them is Moviemaker.
So I do the download. The download is fast but the Install takes many minutes. Amazing how slow this thing is.
At some point I get told I need to go get Windows Media Series 9 to download.
So I decide I will go do that. This time I get dialogs saying things like "Open" or "Save". No guidance in the instructions which to do. I have no clue which to do.
The download is fast and the install takes 7 minutes for this thing.
So now I think I am going to have Moviemaker. I go to my add/remove programs place to make sure it is there.
It is not there.
What is there? The following garbage is there. Microsoft Autoupdate Exclusive test package, Microsoft Autoupdate Reboot test package, Microsoft Autoupdate testpackage1. Microsoft AUtoupdate testpackage2, Microsoft Autoupdate Test package3.
Someone decided to trash the one part of Windows that was usable? The file system is no longer usable. The registry is not usable. This program listing was one sane place but now it is all crapped up.
But that is just the start of the crap. Later I have listed things like Windows XP Hotfix see Q329048 for more information. What is Q329048? Why are these series of patches listed here? Some of the patches just things like Q810655 instead of saying see Q329048 for more information.
What an absolute mess.
Moviemaker is just not there at all.
So I give up on Moviemaker and decide to download the Digital Plus Package.
I get told I need to go enter a bunch of information about myself.
I enter it all in and because it decides I have mistyped something I have to try again. Of course it has cleared out most of what I typed.
I try (typing) the right stuff in 5 times and it just keeps clearing things out for me to type them in again.
So after more than an hour of craziness and making my programs list garbage and being scared and seeing that Microsoft.com is a terrible website I haven’t run Moviemaker and I haven’t got the plus package.
The lack of attention to usability represented by these experiences blows my mind. I thought we had reached a low with Windows Network places or the messages I get when I try to use 802.11. (don’t you just love that root certificate message?)
When I really get to use the stuff I am sure I will have more feedback
--------- END OF EMAIL ---------
Ouch! Thunder is coming down from Mount Olympus!
When working with Visual Studio and using the Web Development Server (aka CASSINI), there is often the repetitive task of killing the Cassini processes before running again. This happens especially if you are working with in-proc caching on IIS, or simply have many web applications in your solution.
What I do is run a simple bat file that automatically kills all the Cassini Web Development Server instances, that way if I need to make sure I'm using uncached data I just run it and keep on doing what I was doing before, instead of manually scanning my taskbar.
So, crack open notepad, write the following and save it as "CassiniKiller.bat"
[sourcecode language="cpp"] taskkill /F /IM "WebDev.WebServer40.exe" taskkill /F /IM "ProcessInvocation86.exe" taskkill /F /IM "iexplore.exe" [/sourcecode] Now you won't have to play cat and mouse with the Cassinis no more; now you just KILL'EM ALL :-)
- WSS vs MOSS
- SharePoint site architecture
SharePoint is an ecosystem of software and server products as it was described in this previous post. To understand it better let's look at the architecture and object model that it is offered with SharePoint. The basic component of SharePoint is Windows SharePoint Services (WSS from now on). WSS is a free server component that must be installed in a Windows Server OS and contains the basic framework and infrastructure that supports any other SharePoint offerings like the different Microsoft Office SharePoint Server (MOSS from now on) versions.
You can think of it the same way selling cars work. You get the basic model with a chassis, 4 tires and a steering wheel (that will be WSS) and then you can add stuff to it like a great sound system, a dynamic design, GPS and Cruise Control, etc (those nifty things being the analogous to MOSS).
So now that we have an idea of how WSS relates to MOSS, let's see exactly how their offerings stand apart.
As we can see all MOSS trims are nothing more than a very useful set of extensions and additions to the WSS platform, offering users a more powerful and pleasant experience out of the box. These extensions are supported thanks to a very complex architecture and framework that has evolved quite a bit over time.
In a nutshell the industry refers to a SharePoint installation (be it WSS only or MOSS) as a SharePoint FARM. A Farm is a collection of physical SharePoint servers that serve the content to users. A Farm can be formed using different topologies that we'll explore later, before we get to that, let's actually see what is going to be served, how does SharePoint structures its web sites and content.
Farm: A collection of SharePoint Web Applications.
SP Web Application: A collection of Site Collections.
SP Site Collection: Formed by a single root site (aka Top-Level site) and a collection of sub-sites.
SP Sub-Site: A collection of pages, lists, libraries and content that are displayed through the browser.
Each of these components in the SharePoint site architecture have different rules and security settings and restrictions. As you can see, this is a tree structure and very successful way to isolate users and content to ensure confidentiality, availability and integrity in the data security. This model is very user friendly since everyone can understand a tree structure and most people are already used to it.
I always like to compare a SharePoint Farm with a physical hard drive. If the Farm is the hard drive, then we can think of the Web Applications as partitions of the Farm. Likewise Site Collections will be Folders directly on the root of the partition. Sub-Sites are also represented by folders that only go inside of the Site Collections and so on, you get the idea.
Because is easy to understand the site architecture SharePoint offers, users can quickly provision (a fancy word for 'create') web sites with the click of a button. Because of this, planning for a successful deployment and IT infrastructure to support all the greatness SharePoint offers does not come at ease. Planning the right topology that will hold all of this together is very important for a successful SharePoint deployment. More on SharePoint topology and planning in upcoming posts.
The first questions people ask themselves when they hear the SharePoint Buzz for the first time is What the heck is SharePoint? I will explain in a friendly and simplistic way what SharePoint is, and how it has fold out to be one of the most powerful and fast growing software solutions in the history. Coming up:
- What is SharePoint?
- How exactly is SharePoint different from any regular web site?
- How can SharePoint help you in your bottom line?
What is SharePoint?
From the technical-friendly point of view SharePoint is a software ecosystem formed by many different Microsoft software products. Microsoft indifferently refers to it as Microsoft SharePoint Products and Technologies. SharePoint (aka SP) targets the space of web collaboration functions, content and document management, search and social networking in one centralized solution that offers a plethora of very powerful business applications that are deeply tight to the already popular Microsoft Office applications.
From the end users perspective SharePoint is a web site (web application) that allows users to collaborate and share information, documents, photos and other media rich content directly from the web browser without needed to have any technical skill. Simply by using tools they already know like Microsoft Word, Excel, Power Point, InfoPath and such, users can create very rich documents and have them broadcast to a large audience with the click of a button.
Another important notation to make is that SharePoint is a cross platform product. That means SharePoint, being a browser based tool, can be experienced from many different operating systems like Windows, Mac OS-X and Linux systems. Although SP is a cross platform tool, as of today's official product (MOSS 2007) there are a few rendering abnormalities with some specific content in browsers different from Internet Explorer. Users accessing SharePoint sites with the popular Firefox browser, Safari, Opera and Chrome to name a few may experience that some controls and parts of certain pages will be rendered incorrectly in the page. This issue is not very common and will not affect the functionality and power SharePoint brings to its users. SharePoint 2010 is in beta stage as of the writing if this article and the SP Team announced most of the browser compatibility problems from previous versions will disappear in the upcoming release.
If you are interested in diving a bit more into the browser war, SharePoint official compatibility and the Microsoft recommendations for browser support you can explore this TechNet article that is dedicated to such topic.
Ok, so how exactly is SharePoint different from any regular web site again?
As we mentioned before, SharePoint is a collection of software applications. These applications are Server products, meaning they were made to be run in a Windows Server OS. The combination of these products (Search, Forms Server, Excel Services, SSO, etc) provide SharePoint with many built in functionality that does not need to be implemented and can still be customized to a very granular level with very little IT support.
To better understand the difference between the SharePoint offerings and building and maintaining your own web site, we must first see what goes into creating and maintaining a web site. The following table shows some (I said SOME) of pros and cons of the most popular methods to build a web site and their pros and cons (Click to enlarge).
The "Web Site" in the title of the table is quoted, because the reality is that SharePoint offers a lot more than just a Web Site, it offers collaboration, networking and business tools to make any SP install a catch-all experience. Also is worth noting that technically SharePoint does not offers a Web Site, instead (from IIS perspective) it builds a set of IIS Web Applications that are linked and can exchange information via the SharePoint ecosystem. Hold on to your hats, more on that and the SharePoint terminology later.
As you can see there is plenty to eat in the SharePoint family. But how does it directly affect you?
How can SharePoint help me as an organization or as an individual?
Honestly, even if I try I don't think I can come up with a better sentence than this one from the official Microsoft SharePoint site:
"… Microsoft Office SharePoint Server 2007 provides a single, integrated location where employees can efficiently collaborate with team members, find organizational resources, search for experts and corporate information, manage content and workflow, and leverage business insight to make better-informed decisions."
--- Pasted from <http://sharepoint.microsoft.com/product/details/Pages/default.aspx>---
SharePoint is an extension to the cloud (Internet) of all of the Office Family of products. In fact SharePoint is part of the Microsoft Office Group. If you or your organization are using any of the Microsoft Office products (Word, PowerPoint, Excel, etc) then you are half the way into becoming a great SharePoint user and take full advantage of its offerings. Although SharePoint clearly targets more businesses than individuals, the fact that most of us work for some corporation means that we're very likely to at one point or another face the SharePoint solution of your workplace. And trust me, I'll make your live so much pleasant… SharePoint will be there when:
- You want to cut dramatically the use of paper and ink in your organization.
- You want to improve the performance of your employees and make them work better and more organized between them.
- You need to collaborate with a team member in writing on the same document simultaneously.
- You want to request a day off without having to confront the boss.
- You want people to request a day off without coming to your office or spending a fortune in paper and ink. Also want to be able to notify the requestor of your decision about his request.
- You are a manager and you want your team to work under your schedule and not the other way around.
- You want to expose your professional profile in the company's SharePoint to find opportunities in other departments and move up within the organization. Get discovered.
- You want to make a small correction to a published document and will be able to make the change and make it available immediately online with one click. No downloading and re-uploading, no emailing required.
- You want to see how a particular spread sheet or document looked like last month without disturbing the IT department to pull it off the archive.
- You want to broadcast the meetings calendar to all the Outlook account in your department with a click of a button.
- You want to automatically get notified when somebody completes a sale, or gets a new bid, or renews a contract and want to see at a glance the ongoing financial health of your company with real-time data.
- You want to have a fun home page with your favorite color and alternating pictures of your family.
- You want to access all corporate data securely from the internet.
- You want to monitor each department of your organization and ensure they are meeting the new goals with key performance indicators.
- You want to collect and automate the employee contact info by having forms your employees can fill in and submit from any web browser.
- And much, much more… :)
I hope you after reading this article you have a better understanding about what SharePoint is, how it differs and stands out over traditional web site design as well as the immediate benefits that SharePoint brings to organizations and individuals and a general feel for some of the coolest features SharePoint offers. I think in general SharePoint is a great solution, ever evolving (SharePoint 2010 is Beta already). I'll try to cover more on SharePoint in future posts.
Thanks for reading!
WFT… That was the first thing that came to my mind when I saw the Microsoft presentation for their new Xbox 360 motion controller. It’s pretty f…[beep]..ing awesome. I don’t currently own an Xbox 360, cause I’ve never been a big gamer, and if I wanted to play a game ever there was plenty of powerful cheaper games that run great in the PC; but I’ve been watching the powerful Xbox 360 for a while as it has incorporated several features as a hi-tech multimedia and communications platform and this new addition is the greatest of all.
The Xbox 360 was born in 2005 and to its predecessor the Xbox after 4 years of intense development. Microsoft’s console was the first available console of the current generation, taking a full year of advantage over its current competitors and making a massive word wide launch in more than 30 countries. After its launch in May 2005, Sony launched its PS3 in November 2006 followed by Nintendo’s Wii later in the same month.
Project Natal is a motion tracking solution for the Xbox 360 based on 3DV System’s ZCam and it features its own CPU with a RGB camera, a depth sensor and a multi-array microphone. These pieces of the puzzle allows it to interact directly with body gestures, as well as depth perception, and voice level recognition at an almost-true one to one experience between your 5 senses and the Xbox 360. The device was demonstrated at the 2009 E3 Event, one of the mayor conventions for video games worldwide. No words can describe the wow factor of the Project Natal, that’s why here you have a clip to enjoy :)
After this there is no way I'm not getting a Xbox 360.