Codeine .Net RSS 2.0
# Saturday, November 03, 2007

    Now that Google has added IMAP to Google Apps and Gmail, see my previous post for more details, I have begun to switch over from my Hotmail account that I have been using for about ten years now, to using an email address at my domain hosted on Google Apps. Basically all I have been waiting for was the ability to access my Google Apps email using Outlook 2007. Google Apps has had a POP interface, but it is extremely horrible and downloads everything to your inbox, even the messages that you have sent. This requires you to setup mail filters in Outlook to get your messages where they should be which I have no urge of creating and maintaining just to get my emails into the folders where they should be at in the first place. About a month ago I had considered developing a service that pulled messages from Gmail and translated the file structure to a decent IMAP layout, but now Google has beat me there. The tagged style of messages in the Gmail/Google Apps Email web interface translates into folders on the client side. As shown in the screenshot below, the All Mail, Drafts, Sent Mail, Spam, Starred, and Trash folders are standard Gmail folders. The 1and1 and Admin folders are labels that I have created that show up as folder on the client side. Then I have my Inbox. One issue that I have noticed is that when I add a new label to the web interface I have to right click on my account in Outlook 2007 and select Update Folder List in order for the new folder to show up, but I assume the new folder would eventually show up on its own if I was patient.


    Of course, Google App Email/Gmail's web interface is fairly feature rich and handles things a bit differently then Outlook so there are some feature lost when using a client application and some features are represented differently in the client application. For instance, It Outlook 2007 you can flag an email, but in the web interface these emails will show up as starred.

Outlook 2007 view

Google Apps Email View


    Also in Google Apps Email/Gmail you have the ability to mark and email with multiple labels. For example in the below screenshot this test email is label, Inbox, 1and1, and Admin:


Google Apps Label View

    On the Outlook 2007 side this email also shows up in the Inbox folder, the 1and1 folder, and the Admin folder. If I create a new label in the web interface called Test, which creates a corresponding folder on my client side and copy the instance of the email in the 1and1 folder to the Test folder on the clients side this is reflected on the web interface as removing the 1and1 label from the email and adding the Test label to it. If I delete this email on the web interface side it will be removed from all folders on the client side and placed in the Trash folder. Moving an email to the trash folder on the client side will also move it to the trash folder on the web interface side.

    Hopefully this gives you a basic understanding of the interaction between Outlook and Google Apps Email. I will be happy when I finally get completely switched off of my Hotmail account, but at least for awhile it looks like I am going to have a bit of a split personality.


Saturday, November 03, 2007 10:43:42 AM (Central Standard Time, UTC-06:00)  #    Comments [0] - Trackback - Save to - Digg This! - Follow me on Twitter
Gmail | Google | Outlook 2007
# Wednesday, October 31, 2007

Google is full of information about individuals, but when do I have the moral right to look for it and when don't I? I know that within ten minutes, if you live in Iowa and I only have your first and last name I can pull up all of your court records and see what brushes with the law you have had. If you live in Polk County in Iowa I can find out if you own a home, how many bathrooms it has, if you have a swimming pool, what tax credits you are getting on it, and how much it is worth. I can then pull up the sex offender's registry and see if you are on it, or check out whom in your neighborhood is on it. If I have your email address I can search for it in Google groups and find out what topics you like to talk about. Finally I can plug your name into Google and see what else I can find. I did this a few weeks ago on someone and found out their birthday, what church they went to, and that they had recently competed in a triathlon.

Sure I know that I have the legal right to pull this up whenever I want, but when do I have the moral right to? Does a parent have the moral right to Google someone who is watching their kid? Does a coworker have the right to know how many speeding ticket the person in the cube next to them has, or if they have an OWI? Is it alright to Google your blind date before you ever meet them? What about a potential employer finding a MySpace or Twitter page? It has come to the point when you need to be aware of what information is out there about you. I know if you Google me you're going to find sites like Osborn2Rock for the band of a guy in California that has the same name as me, and unfortunately information about a guy who wrote a book about hunting squirrels with dogs. Anybody searching for only my first and last name could potential thinking that any of these hits were me and misjudge me completely. When the information is freely available do we have to make ourselves responsible for using it properly? What do you think?


"With great power comes great responsibility."

Wednesday, October 31, 2007 6:33:11 PM (Central Standard Time, UTC-06:00)  #    Comments [1] - Trackback - Save to - Digg This! - Follow me on Twitter
# Sunday, October 28, 2007

    I originally thought of this idea while at Professional Edge. We had a client that wanted to build a portal and resell the functionality it provided to other companies. The main functionality and content for the site would be the same for each customer, but styles, images, and logos would change based on each company allowing the company to portray the website as their own. Professional Edge closed before the project was signed off on so I never got the chance to tackle a solution, but every once in awhile the concepts pops back into my head. I am sure this is a fairly common scenario and most likely what I have done here has been done plenty of times before, but I thought I would attempt to put together a proof of concept. My initial plan was to dynamically generate the App_Themes data based on information from the database. Using this method the developer would build the site with the look and feel defined via css tags and skin ids. The end corporate user would then have a user interface to define their custom styles and images that applied to each css tag and skin id. If the user did not define a tag then the website would simple use a default theme that the developer defined.

    To do all this I have utilized the functionality of virtual path providers. A virtual path provider allows you to essentially take over when ASP.NET is looking for the file to server to the user. In my particular case it is for .css and .skin files, so that whenever a request comes in for one of these files it is instead dynamically built based on data from the database. Originally I had planned to associate a particular theme name with each portal's customizations. For example on the pre-init the theme would be dynamically set based on some type of user information, either a login account, or possibly the web address used to access the site. Basically any type of information that establishes the unique portal that the visitor is attempting to reach. Unfortunately this plan won't work. Apparently ASP.NET requires the actual physical files for a theme to exist or else it will throw an error. This was a bit of a disappointment to me as I had hoped to parse the theme name in the virtual path provider to know what dynamic data to load. Since the path is the only data passed into the virtual path provider it is the easiest and cleanest way to know what data to load. If the file trying to be loaded is ThemeABC.css I could load the styles for portal ABC and if the file trying to be loaded was ThemeXYZ.css then I could have loaded the styles for portal XYZ.

    Even though this method didn't work I was able to development another method that does. I have created the file structure for the Default theme with dummy files, including Default.css and Every portal will essentially be using this theme as far as ASP.NET is concerned, but when a request comes in for Default.css or I pass back a dynamically generated file. The decision for what styles and ids need to be loaded is based on a cookie that is set in the pre-init. This cookie is then read in the in the Open function of the virtual file class for the virtual path provider and based on what the cookie says a decision is made as to what styles are handed back to the client.

    In the attached sample code there are two different themes that can be accessed, blue and red. Setting the cookie is handled in the Default.aspx's OnPreInit. Since this is a proof of concept the actually string is hard coded, but it could just as easily read the address that the request came in on, a user login, or user setting. Then in the virtual path provider I handle any of the requests that come in for APP_THEME/DEFAULT/. Finally in the virtual file class I read the theme name from the cookie and hand back the proper page. Since this is a proof of concept I have simply hardcoded a few values to hand back, but you could easily query the database and hand back a much more dynamically generated file.

    At this point hopefully you can see the numerous possibilities this allows for. If all the ok buttons on the entire site are defined with a skin id of btnOk then you could allow the user to upload the image they want for their ok buttons and instantly all the ok buttons on the site reflect what the user has defined. If you consistently use your css tags within you site then the user could easily define custom colors, fonts, etc. for each one. This would allow the user to very easily customize the site to the look and feel that represents their company without having a developer make any changes.

    Feel free to check out the sample code at the link below and make any comments or suggestions. Since it is just a proof of concept it is a little rough and not that elegant, but it displays the point.

Download the source code to the proof of concept. (VS2008 required)



Sunday, October 28, 2007 7:03:34 PM (Central Standard Time, UTC-06:00)  #    Comments [0] - Trackback - Save to - Digg This! - Follow me on Twitter
ASP.NET | Development

<November 2007>
About the author/Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2020
David A. Osborn
Sign In
Total Posts: 70
This Year: 0
This Month: 0
This Week: 0
Comments: 33
Pick a theme:
All Content © 2020, David A. Osborn
DasBlog theme 'Business' created by Christoph De Baene (delarou)