Rick Sternquist  

Google Apps - Premier vs Standard Editions

Posted by Rick Sternquist
Wednesday, February 17, 2010

At Chicago Technologies, our clients often ask us what's the difference between Google Apps Premier Edition and Google Apps Standard Edition. Here's a quick comparison:

Premier Edition:
  • 24/7 Phone support and 99.9% up-time guarantee.
  • 25GB storage per user without advertisements.
  • Increased security and privacy of data.
  • Unlimited users and groups .
  • Blackberry and Microsoft Outlook interoperability.
  • Client conversions are automated.
  • Virus and spam protection by Postini.
  • Postini archiving at an additional cost.
  • Full administrative and data control.

Standard Edition:
  • No Phone technical support is available. Standard users will have to access the Google Apps forms to resolve any issues. Up-time is not guaranteed with a service level of “best effort”.
  • 7GB storage per user with advertisements.
  • Limited to 50 users and 10 groups.
  • Limited Blackberry and Microsoft Outlook interoperability.
  • Client conversions are manual.
  • Limited administrative and data control.

Chris Fuller  

Invalid or malformed application: check Manifest

Posted by Chris Fuller
Thursday, December 17, 2009

I started building a brand new Silverlight 3.0 Application today and ran into this error message in my browser the first time I ran my new app:

Invalid or malformed application: check Manifest

I did some research and came across this hint:

In human-readable words, this is what fixed it for me:
1. Open the properties of your project.
2. On the first page, open the drop down list of "Startup object".
3. Select the page your project starts with. In my case, changing the name of the namespace broke the startup object.

from this blog post:
http://forums.silverlight.net/forums/t/11452.aspx

This pushed me in the right direction. I remembered that I had changed my initial namespace in my .cs files, but not in the project properties. I changed the default namespace and then selected the correct startup project, (xxx.app where xxx is my default namespace).

Problem resolved.

Lesson learned:
If your startup object is not correct in the project properties window, you will get the dreaded, "Invalid or malformed application: check Manifest" error.

Tom Cox  

ASP.NET Web Services vs. WCF Services

Posted by Tom Cox
Friday, December 11, 2009

The term “web service” is similar to the term “cloud computing” in
that it’s pretty vague, and it can mean different things to different
people. So when I hear someone say we need a “web service that does
x”, I immediately start asking a few clarifying questions:

Is the individual referring to the traditional “.asmx” web service
or the WCF “.svc” web service?

Will it implement a SOAP or a REST architecture?

Is it really a web (http) service or some other type of
communication service, such as a named pipe communication, a tcp
communication, or a MSMQ messaging queue communication?

The answers to these questions help determine whether a web service, a
WCF service, (or something else), should be utilized.
In the next few paragraphs I’ll differentiate a web service from a WCF
service and point you to a nice link that further summarizes the
differences.

The key thing to understand about ASP.NET Web Services and WCF
Services is that they are very similar in implementation and concept,
but that there are some key differences to be aware of.
Both technologies define contracts for passing xml data and both
technologies can leverage SOAP and WSDL concepts and work over the
http protocol.

That’s where many of the similarities end. Windows Communication
Foundation, as its name implies, supports many types of communication
between disparate machines (or between processes on the same machine).
This may seem obvious, but it was especially eye opening to me as I
first used WCF for tcp communication and, later, worked my way
backwards to use it for http web service purposes.

ASP.NET Web Services were Microsoft's first attempts at building
service oriented concepts into the ASP.NET platform.
The core library for ASP.NET Web Services is the XMLSerializer.
Since there are other formats for exchanging data, such as POX and
JSON, WCF’s DataContractSerializer is expanded to accept these types
of data as well.

WCF Services came along after ASP.NET Web Services and it looks to me
like Microsoft saw the value in a service oriented architecture, but
saw some flaws in how ASP.NET Web Services were built.
It appears that they wanted to make sweeping improvements to their
service oriented architecture without breaking the existing code base,
so they built upon the concepts of ASP.NET Web Services, but on a new
platform.

I see this platform as a communication standard launching point for
the next decade, and look forward to the technological innovations
that it will spawn.

The following blog post by Kalyan Bandarupalli goes into more detail
about the specific differences between ASP.NET Web Services and WCF
Services:
http://www.techbubbles.com/wcf/wcf-vs-aspnet-web-services

Labels:

Chris Fuller  

What's the name of that color?

Posted by Chris Fuller
Tuesday, December 8, 2009

I would rather work in WCF, the middle tier and SQL Server. The reality is, when I work with end-users, I often have to work as a designer and get into screen layout and color schemes.

Here's one tool that makes working with colors easier - especially when the user has a named color and you need to find the RGB or Hex equivalent:

Name that color

It's also helpful when you are trying to find a color and Photoshop is not available.

Chris Fuller  

SQL Server 2005 Restore Error: Exclusive access could not be obtained because the database is in use. (Microsoft.SqlServer.Smo)

Posted by Chris Fuller
Friday, December 4, 2009

I do a lot of prototyping, so I am backing up, moving and restoring SQL Server databases a lot. We are using SQL Server 2005.

I recently ran into this error:


I shut down all services and applications using the database, and I still got it. I then noticed that I had a query window open in Enterprise Manager. I closed all of the query windows, tried again and was able to restore successfully.

Hind sight is always 20/20 - duh, the query windows open a connection to the database - but when you work in Enterprise Manager a lot, as I do, it's easy to forget something like that.

Lesson learned.

Chris Fuller  

Source Control Best Practices (Part 2 of 2)

Posted by Chris Fuller
Wednesday, November 25, 2009

The primary purpose of source control is to share a common library of
source across developers and check files in and out of that common
library to enable collaboration.

Most application developers understand the importance of source
control. Unfortunately, I have had the unpleasant experience of having seen
first-hand the perils of not implementing source control correctly. I am sharing my story in the hope it may help you understand source control better and avoid the productivity drain that can occur when your team has to waste time fighting against source control rather than using source control as a valuable development tool.

On one project I was on, the team implemented improper source control.
I tried to help them understand that this was not the proper use of
source control software, but I was a late-comer to the project and
procedures were already established that the team was unwilling to change.

At any rate, I don't know where the team got this theory, but their concept
for source control was that every developer should have their own branch of
source code. The concept was that any one developer should be able to make
changes to any area of the system without holding up any of the other team
members. This was supposed to make our team more agile and efficient.

We ended up having the following results instead:

1. The primary purpose of source control was effectively negated.
Instead of checking in and out of a common library, we each checked
in and out of our own, isolated library.

2. Creating even an interim build was a monumental effort. Bringing our
code libraries together was a painstaking (and manual) task where we sifted
through which changes to apply from each developer. This process took
literally days to complete and often resulted in the introduction of bugs and
issues because it was so difficult to create a good version of the source.

3. Deja Vu all over again. After a common build was eventually completed,
each of us was required to create our own branch from the common source
and we would begin the exercise of being out of sync once again.

Let me give you a quick example:

I have taken a messy module with 800 lines of code
and paired it down to 200 lines of code, in doing so I eliminated 3 redundant
methods entirely. My colleague made a few small changes to his branch of the code,
and checked these changes into his branch. When we go to do the build, the
"build master," the poor developer stuck with bringing all of the various branches
together for our build, looks at both of our versions of source and sees that they
are different. How does this "build master" know which code is correct? She is under time pressure to get the build out, she sees that my version is missing 3 methods, so she decides that the source with the most code is the correct one, starts with that and picks and chooses the differences that appear to make sense to create the version used for the build. When the build is done, and I get the new "master" copy of the source, I look at this module and all of the clean-up work that I did was gone. I either have to blow it off, or do it again.

Each developer should be in control and have responsibility for making sure the
correct source is checked out and checked back in. This should not be left up to
a single developer at the end. No matter how good that developer is, it is
simply too daunting of a task, especially in crunch time, to have to go back
through and make judgment calls about other developer's code.

Needless to say, this process of creating a branch for each developer killed
our productivity, caused in-fighting amongst the project team, and absolutely
killed moral.

In the end, this project was delivered very late, with very few of the
promised features. I attribute most, (if not all), of this project's issues to improper source control procedures.

Please see my previous post for how to use source control and branching effectively.

Rick Sternquist  

Who are you following?

Posted by Rick Sternquist
Monday, November 23, 2009

I've found Twitter to be a great way to keep up with the latest and greatest information on Microsoft software development technologies. A lot of people at work ask me about Twitter and who I follow. Below is my list.

I'm grateful to all of them for the time and effort they put into Twitter and keeping us all informed as well as entertained.

Scott Guthrie @scottgu
Scott Hanselman @shanselman
Tim Heuer @timheuer
Brad Abrams @brada
Jeff Handley @jeffhandley
Nikhil Kothari @nikhilk
Phil Haack @haacked
Jesse Liberty @jesseliberty
Rocky Lhotka @rockylhotka
John Papa @john_papa
Jeff Atwood @codinghorror
Shawn Wildermuth @shawnwildermuth
Bill Reiss @billreiss
Silverlight News @silverlightnews


You can also follow Chicago Technologies at...

Rick Sternquist @rsternquist
Chris Fuller @cfullerchicago
Tom Cox @mrtomcox