# Tuesday, July 17, 2007

Thursday, July 19, 2007
Distributed Caching: Essential Lessons

Subject:  In this presentation, we will cover application development considerations for maximum scalable performance and reliability in clustered .NET environments. This presentation focuses on improving scalability and scalable performance of applications through the use of clustered caching and data grids to reliably share live data among clustered application nodes, providing transparent fail-over as a key element of uninterrupted operation and reduced load on the database tier as a key element of scalability. We will also discuss how you can simply improve performance and scalability of the existing ASP.NET applications by storing session state in a data grid.

The presentation will focus on:

  • Caching Topologies: the limitations, trade-offs and benefits
  • Cache aside, read/write through and write behind architectures, where and when to use
  • Use cases and a topology quiz
  • Scaling ASP.NET web applications
  • The 12 essential lessons

  • Speaker:  Aleksandar Seovic, Managing Director, Solutions for Human Capital, Inc.

    Aleksandar Seovic is a Managing Director at Solutions for Human Capital, Inc. – a software development company specializing in enterprise document and content management. He has lead development effort on a number of engagements for Fortune 500 corporations, mostly in pharmaceutical and financial services industries, and has worked in the architect role on both .NET and J2EE projects. Most recently, Aleks took part in the design and implementation of Oracle Coherence for .NET, a client library that allows applications written in any .NET language to access data and services provided by Oracle Coherence data grid. Aleks is also a co-lead for Spring.NET, an open source framework for enterprise application development, and a lead developer for Web, AOP and Services modules of the framework. Aleks can be reached at aleks@s4hc.com.

    Date:  Thursday, July 19, 2007

    Time:  Reception 6:00 PM , Program 6:15 PM

    Location:   Microsoft , 1290 Avenue of the Americas (the AXA building - bet. 51st/52nd Sts.) , 6th floor
    Directions: B/D/F/V to 47th-50th Sts./Rockefeller Ctr
    1 to 50th St./Bway
    N/R/W to 49th St./7th Ave.

    posted on Tuesday, July 17, 2007 5:30:20 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
    # Friday, June 22, 2007

    The 2007 version of the Pakistan Developers Conference was great. I had an amazing time in both Lahore and Karachi.

    In Lahore I presented:

    TSQL Tips and Tricks. Code and Slides here.

    Database Design Patterns. Code and Slides here. (I also presented this in Karachi and TechEd Orlando so you can download too.)

    Agile Development: Introduction to Scrum. Slides here. (Karachi too.)

    In Karachi there was also:

    WCF Overview. Code and Slides here.

    Building a Scalable Environment for ASP. NET. Slides here. (Don’t forget n+1!!!)

    Thanks for all of the memories, especially doing the Punjabi dancing at the end of the sessions in Karachi!!!

    Say cheese:

     

    posted on Friday, June 22, 2007 1:44:56 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
    # Saturday, May 26, 2007

    If you will be at TechEd in Orlando, I will be doing the session: Database Design Patterns on Monday and I was just told that we will repeat it Thursday afternoon as well.

    The session is a great sesson. It is listed on the Architecture track. We won't be talking about data modeling but we will be talking about how to design the right database structure for the right situation.

    I have 5 demos:

    1. A Slowly Changing Dimension

    2. Fact Tables

    3. Horizontal Partitioning

    4. SQL Server 2005 Table and Index Partitioning

    5. Vertical Partitioning

     

    Code

    Title

    Date/Time

    Room

    ARC211

    Database Design Patterns: Architecting the Right Data Model for the Right Application

    6/4/2007 4:45PM-6:00PM

    N310 A

    Architecting an application starts with the database. Different applications need different data models. Fifth normal form is great for an OLTP database, but reporting databases need more of a flat denormalized structure and different Web sites need several different types of data models: eCommerce sites need different data models than traditional publishing sites. You need to optimize your data model for your application's performance needs. Concurrent users, data load, transactions per minute, report rendering, and query seek time all determine the type of data model you will need. See how different applications and different parts of an application can use different data models and how you can architect your database to fit into your application's needs—not the other way around.

     

     

    posted on Saturday, May 26, 2007 10:08:38 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
    # Wednesday, May 16, 2007

    Take a look at Andrew's and my book in French, Polish and Italian!

    Enjoy!

    posted on Wednesday, May 16, 2007 1:39:02 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
    # Tuesday, May 15, 2007

    Office 2007 Open XML Format



     

     

    Subject: 

    You must register at http://www.clicktoattend.com/?id=118567 in order to be admitted to the building and attend.

    Open XML is the default document format for the upcoming Office 2007 system. This presentation explores the motivation and design consideration of the new format. It also analyzes the architecture and the conceptual framework of Open XML. This new format opens doors to a huge number of opportunities for developers regardless the development tool or targeted platform. Package API from the new .NET Framework 3.0 is used as an example to demonstrate how to programmatically read/write Open XML documents without resorting to Microsoft Office COM API.

    Speaker:  Dr. Hai Ning, Senior Software Architect, Tallán Inc

    Hai Ning has over 10 years of software development experience, with MCST(BizTalk & SQL2005), MCSD.NET, MCDBA and SCJP certifications. Dr. Ning graduated from MIT with a PhD in Information Technology. His blog can be found at http://www.hyperbina.com/blog. Hai's firm, Tallán (http://www.tallan.com), is a Hartford-based Microsoft Certified Gold Partner.

    Date:  Thursday, May 17, 2007

    Time:  Reception 6:00 PM , Program 6:15 PM

    Location:   Microsoft , 1290 Avenue of the Americas (the AXA building - bet. 51st/52nd Sts.) , 6th floor
    Directions: B/D/F/V to 47th-50th Sts./Rockefeller Ctr
    1 to 50th St./Bway
    N/R/W to 49th St./7th Ave.

    posted on Tuesday, May 15, 2007 2:19:27 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
    # Wednesday, May 9, 2007

    I got a brand new Zune for Christmas. Anyway, subscribing to Podcasts on a Zune has been, well challenging. Actually almost impossible for mere mortal. I have figured out how to do this and will explain it below. Before I do that, I have to tell you a story.

    I found a great Podcast courtesy of my friend Robert Lazo. It is the Stanford University Educational Corner’s Entrepreneur Podcast. It has great content. (BTW, it this content interests you, here is the link.)

    I downloaded it to my Zune and after I listened to a few of the Podcasts, I told Kathleen that she needs to listen as well. She has an iPod. But she was too lazy to download them to her iPod so she kept borrowing my Zune. After not finding my Zune where I left it the other day I suggested that she just subscribe to the Podcast. She did. Boom, just like that I sent her the link and 1.3 gigs of data started downloading to her device in a very organized manor.

    Not so easy with the Zune. So here is what I had to do.

    Step 1. Subscribe the RSS feed manually via Internet Explorer 7.0

    After I paste in the link to the RSS feed into the browser, IE 7.0 allowed me to subscribe to it. Since I am running Vista and Office 2007, the RSS feed tried to show up all over the place, the annoying sidebar and downloading in Outlook. (As if Outlook 2007 isn’t slow enough.)

    Step 2. Setting up the Feed to Automatically download the content

    You have to then click on the “view feed properties..”  link to bring up the properties dialog. Here you have to check the box that says “Automatically Download Attached Files.”

    Step 3. Finding where IE decides to put your files

    Next you have to find out where IE will store the downloaded content. You can do this via selecting the “View Files” button. This will open the folder where IE stores your content. Copy the location from your Windows Explorer address bar. Here is where IE stores it on my computer: C:\Users\StephenForte\AppData\Local\Microsoft\Windows\TemporaryInternetFiles\Enclosure\{620E20DE-0D04-449C-B2FD-B0E9B19C852B}

    Step 4. Adding that Folder to Zune’s Library

    Open your Zune software and select Options|Add Folder to Library from the main menu. At this point you can see what folders Zune syncs and you will have the opportunity to add the folder.

    That’s it. Just four painful steps. There are also many other problems. If you clean out your temporary internet files, you lose your podcasts and have to start over with the downloads. Also once you listen to a podcast, Zune and IE have no idea that you don’t want it anymore.

    Luckily there are some 3rd party tools to help with this problem, like FeedMyZune. They basically do a version of what  I just did behind the scenes for you. You may want to try that.

     

    posted on Wednesday, May 9, 2007 4:56:30 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
    # Thursday, April 26, 2007

    Yesterday Microsoft released BizTalk Services CTP to the public. This one little CTP changes everything. Honest.

    In the Beginning

    It used to be very hard to build a distributed application. The pioneers in this field were Napster, Seti@Home and ICQ. To make applications like this work, you needed to have clients identify themselves and a message relay on the back end. Think of a switchboard for your applications telling user 1 how to communicate to user 2. If you wanted to build these connected systems, it would require a lot of infrastructure-a tremendous amount if you your application became popular. This has always been the barrier to entry. 

    The Enterprise Service Bus

    As time passed and web services came on to the scene, things got easier. A lot of the hard part of the pluming was taken care of; transport was easy via HTTP and speaking the same language was easy with SOAP. As time moved on and things got easier, people started pushing Web Services to the limit and the vendors started to really support building connected systems. After nearly a decade of XML and SOAP, most developers take it for granted. Enterprises now rely on this technology.

    Enter the Enterprise Service Bus (ESB). ESB is an acronym (we always need a TLA, don’t we?) that is hot right now. The notion is that you have a set of shared services in an enterprise that act as a foundation for discovering, connecting and federating services. This is the natural evolution of the technology, as enterprises rely on the technology and themselves grow more federated, enterprises will standardize discovering, connecting and federating services.

    Internet Service Bus

    As Clemens argued yesterday, the release of the BizTalk Services CTP creates the first Internet Service Bus. Clemens says:

    Two aspects that make the idea of a "service bus" generally very attractive are that the service bus enables identity federation and connectivity federation. This idea gets far more interesting and more broadly applicable when we remove the "Enterprise" constraint from ESB it and put "Internet" into its place, thus elevating it to an "Internet Services Bus", or ISB. If we look at the most popular Internet-dependent applications outside of the browser these days, like the many Instant Messaging apps, BitTorrent, Limewire, VoIP, Orb/Slingbox, Skype, Halo, Project Gotham Racing, and others, many of them depend on one or two key services must be provided for each of them: Identity Federation (or, in absence of that, a central identity service) and some sort of message relay in order to connect up two or more application instances that each sit behind firewalls - and at the very least some stable, shared rendezvous point or directory to seed P2P connections. The question "how does [MSN] Messenger work?" has, from an high-level architecture perspective a simple answer: The Messenger "switchboard" acts as a message relay.

    Changing Business Models

    In order to build distributed applications (and make money!) you have to scale to support the load your users and customers will add. This forced businesses to spend a disproportionate amount of money on hardware and too much time building the plumbing software.  Let’s take my business Corzen for example. Corzen collects specific data from the internet via spidering (like Google.) Corzen then crunches the data: we de-dupe it, aggregate it, match it with Dun & Bradstreet and US Govt data, and then apply some statistical models. We then deliver this “crunched” data to customers on a weekly basis.

    The value add is the “crunching” of the data. Where do you think 75% of my technology budget goes to? You guessed it, the spidering infrastructure. We spider 24X7 and collect between 4-10 million records each week from spidering. As you can imagine our customers want more and more sites to be spidered and more frequently. We spent a year building an amazing XML based, queue and batch based, distributed application with WCF.  We can load URLs into a queue and then go to a web page where we can send that job to several spider servers via WCF. Our spider servers are low cost Virtual Private Servers on ISPs around the world running a simple spidering engine that uses reflection to dynamically compile C# code instructions and apply RegEx patterns. When Corzen was young, we manually started these engines via RDP. As we scaled, we had to build this system.

    How does an Internet Service Bus change the Corzen business model and cost structure? Every few weeks we get new requests by customers to add more sites to our list of sites and we have to add spidering capacity. Since spidering is so basic, I have always wanted to have our customers spider for us (or fan out the spidering to 3rd parties for a small fee). I can then offer our customers a discount on their monthly fees based on the amount of spiders they will run for us.

    This is win win win, they get more data faster, and I lower my overhead and pass that savings on to the customer. This drastically changes my focus. I spend 50% of my time managing the spidering, worrying about capacity, and expanding the spidering infrastructure. Corzen’s cost structure changes as does the relationship with our customer-we become partners in the data acquisition “plumming” and Corzen can focus on the analytics-what the customers really want us to do. In other words we get out of the raw material business (spidering) and focus on the manufacturing of the product (the analytics.) Corzen was recently acquired by a company that does spidering as well, but not the analytics. This is an exciting move since we can join forces with the spidering capacity and Corzen can focus more on the analytics.

    Today, the problem with having our customers do spidering (or paying you on your idle time to do some spidering for us) is simple. With over 100 customers, you try getting our WCF application to work on all of their servers through our firewall  and their firewall. BizTalk services solves this problem. BizTalk services will provide a globally addressable name for Corzen’s service and securely expose that service to the Internet from behind a firewall or NAT as shown here.

    As Dennis argues:

    Use the Relay at http://connect.biztalk.net. We’ve shipped an SDK with a few samples showing you how you use the relay and identity services together. If you’re familiar with Windows Communication Foundation, you’ll find this trivial to use (by design!). Basically, your service opens at a URI on the connect.biztalk.net machines. Then a client connects to that URI and can start sending messages. We don’t want to be in the way of your app, so our relay will immediately try to establish a direct connection between clients. More details on this how this all works in a later post. Here’s a quick diagram that describes it at a high level.

     

    Microsoft vs. Google

    Everyone always likes to compare the “war” between Microsoft and Google. Maybe it is Google’s stock price or the popularity of its search engine or Gmail system. I look at the companies as light years apart. At its core, Google is an advertising company (highlighted by its recent acquisition of DoubleClick.) Sure Google will expose some APIs for developers, however, everything it does from Gmail to search is to gain more eyeballs for its ads.

    Microsoft is a company about selling Windows. What has made Windows so popular is that Microsoft gives developers amazing tools to build applications around Windows, Office and the Internet. The strength of Microsoft is the developer community surrounding its products. You always hear about the next great thing that is going to “take Microsoft down.” The only thing that will take Microsoft down is a company with a compelling platform that also provides tools for developers to create applications on that platform.

    The latest thing to come to take Microsoft down is Software as a Service. Think Google Spreadsheet. Businesses will all use the Spreadsheet in the sky and store its data on Google’s servers. Ditto with Gmail, why bother with Exchange?

    Microsoft does have a cool differentiating factor: its hybrid approach. Microsoft is offering Software + Services.  As I said in eWeek, with such a huge commitment to the OS and other installed software already, Microsoft is actually in a position to deliver software and a service on top of it.

    The marketplace wants a hybrid solution and Microsoft is the only one who can deliver it in the short to medium term, giving Microsoft a competitive advantage. Everyone thought Google Docs would kill Office but in reality, Google docs are cool but Enterprises have issues today with using it offline and inside of a browser (copy and paste is strange, so is right clicking in a cell). Personally I use Google Spreadsheet to keep track of simple things but Microsoft Excel to do the more processor intensive operations.  In addition, I work offline a tremendous amount as well don’t trust Larry and Sergey to store my very sensitive documents.

    Think of Excel as software + services. Excel can be sold and run on your computer. You can store your documents locally or up in the cloud. Processor intensive operations can utilize your local super-fast Pentium 1million Processor and your 2 GB of RAM. Collaborative efforts can be handled by the cloud.  Additional services like statistical number crunching or anything that needs to be distributed can be handled by the cloud. Multiple editors and viewers, in the cloud. You get the point.

    This is where BizTalk Services come in. It is an early way for developers to deliver Software plus Services.

    The Future of Business

    As I said, this changes everything. We can all agree that distributed applications are the future. In order to make money you have to scale to support the load your users and customers will add. This forced businesses to spend a disproportionate amount of money and focus on technology (and pay CTOs way too much!)

    We are so focused on technology that CEOs and Venture Capitalists are desperately trying to learn about the basics of technology-time they should be spending working through business models and looking for competitive advantages.

    BizTalk services and ultimately all of the Software plus Services (including other vendors, not just Microsoft) will change the way we do business in 5-10 years. Imagine if we had to run a switchboard to run our phones in the office? So an oil company or a bank would have to develop the technical expertise to run the phones. This infrastructure is solved by the phone company (and now VoIP!) In the future, businesses will only have to focus on their core businesses and most software will run locally with services up in the cloud, drastically reducing the investment in core IT infrastructure internally. It’s a brave new world out there.

    posted on Thursday, April 26, 2007 3:33:17 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
    # Thursday, April 12, 2007

    Thursday, April 19, 2007
    Interfacing External Hardware Using Managed Code and Microsoft Robotics Studio

    Subject:  While developers write code to build software every day, not often are they exposed to code that drives and interfaces hardware. This session will attempt to bridge that gap and show how .NET can be used to effectively interface several hardware devices, including an RFID reader and tags, Phidget control boards with a variety of sensors, and a servo controller. Additionally, Microsoft Robotics Studio will be introduced along with a demonstration showing how one can control some of the hardware previously listed in an environment where concurrency and performance are key.
    Speaker:  Brian Peek , ASPSoft

    Brian Peek is a recognized .NET expert with over 6 years experience developing .NET solutions, and over 9 years of professional experience architecting and developing solutions using Microsoft technologies and platforms. Along with .NET and its associated languages, Brian is particularly skilled in the languages of C, C++ and assembly language for a variety of CPUs. He is also an expert in a variety of technologies including web development (ASP.NET, ASP, Javascript, HTML, XML, etc.), document imaging, GIS, graphics, game development, and hardware interfacing. Brian has a strong background in developing applications for the health-care industry, as well as developing solutions for portable devices, such as tablet PCs and PDAs. Along with Jonathan Goodyear, he co-authored the book "Debugging ASP.NET" published by New Riders. He is also a member of MSDN's Coding4Fun writing team, contributing articles on a monthly basis.
    Date:  Thursday, April 19, 2007
    Time:  Reception 6:00 PM , Program 6:15 PM
    Location:   Microsoft , 1290 Avenue of the Americas (the AXA building - bet. 51st/52nd Sts.) , 6th floor
    Directions: B/D/F/V to 47th-50th Sts./Rockefeller Ctr
    1 to 50th St./Bway
    N/R/W to 49th St./7th Ave.

     

    posted on Thursday, April 12, 2007 3:05:42 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback