<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6131304541131678493</id><updated>2011-04-21T20:54:46.384-07:00</updated><title type='text'>Microsoft TechEd Developers Event 2007</title><subtitle type='html'>This blog is all about my time at this years TechEd Developers event in Barcelona.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-2061371405328870712</id><published>2007-11-13T01:36:00.001-08:00</published><updated>2008-12-11T21:26:44.700-08:00</updated><title type='text'>To summarise...</title><content type='html'>All in all, a very busy schedule.&lt;br /&gt;&lt;br /&gt;The event, as you would expect was very professionally organised and executed. The length of the sessions seemed about right in terms of the content/concentration ration. A few nice touches such as the on-demand nibbles, drinks, wireless access etc. allowed the day to flow along much more smoothly. The format for the interactive sessions probably needs revisiting as too often, the speaker reverted back to lecture mode once the uncomforable process of trying to extract views from the audience was over.&lt;br /&gt;&lt;br /&gt;The Blog helped focus the mind, consolidate learning and hopefully pass on a useful few nuggets to you all. Please, if you have any comments good or bad, please leave them on the site.&lt;br /&gt;Overall, I was happy with my EasyJet experience and although the approach to John Lennon airport was a bit turbulant, I was happy that hte runway offered slightly more room for error that the one shown &lt;a href="http://www.youtube.com/watch?v=zAfQwDizpRo"&gt;here&lt;/a&gt;. My scores are as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5132378959364589058" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_hmGqEWcyAzM/RznfeJWdhgI/AAAAAAAAAEw/aTVw6aqIAUo/s320/pic.jpg" border="0" /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_hmGqEWcyAzM/RznfOJWdhfI/AAAAAAAAAEo/efjspQaCit0/s1600-h/pic.jpg"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-2061371405328870712?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/2061371405328870712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=2061371405328870712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/2061371405328870712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/2061371405328870712'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/to-summarise.html' title='To summarise...'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hmGqEWcyAzM/RznfeJWdhgI/AAAAAAAAAEw/aTVw6aqIAUo/s72-c/pic.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-7181026979935352869</id><published>2007-11-12T09:06:00.000-08:00</published><updated>2008-12-11T21:26:44.823-08:00</updated><title type='text'>The Grand Finale</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 20&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;"Hey dude wheres my business logic"&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;We started with a look back at the good old days:&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5132249607834535394" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" height="279" alt="" src="http://4.bp.blogspot.com/_hmGqEWcyAzM/Rzlp05WdheI/AAAAAAAAAEg/R5dV6aVXBRE/s320/mp.jpg" width="349" border="0" /&gt;Things have changed a lot since 1978. Over the years, the hardware has moved from the desktop model to client server to 3-tier to n-tierProcedural. Software on the other hand has moved prom procedural to OOP to SOA.&lt;/p&gt;&lt;p&gt;Peoples perception of what constitutes a "big" system often differs considerably. To some people a big system may be 100 users. To others, it may be tens of thousands. Scalability is one of the top issues in system deployment - small can grow unexpectedly - and this is never a good time to rebuild.&lt;/p&gt;&lt;p&gt;By way of disclaimer, the speaker offered us a warning &lt;em&gt;"This session will be contriversial!"&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;"where is your business logic?" &lt;/em&gt;exclaims the speaker, &lt;em&gt;"I will show you instances where it is either on the client and the databas server."&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;After a brief defenition of what the speaker means by &lt;em&gt;tier&lt;/em&gt; and &lt;em&gt;layer&lt;/em&gt;, we continued on the road of Business Logic (BL).&lt;/p&gt;&lt;p&gt;The old desktop applications contained 100% business logic with little or no seperation between the application layers. Once evolution to the 2-tier client/server model took place, we automatically had that seperation between the application and storage layers. However, the client retained intermixed business logic. When coupled with the network limitations of the time (i.e. high network usage, low lan speeds), bottlenecks were bound to ensue.&lt;/p&gt;&lt;p&gt;Applications evolved with a large amount of BL being moved to server which is good but the choice of migrating to the database (usually via stored procedures) was bad.&lt;/p&gt;&lt;p&gt;The speaker asked for a show of hands as how many of us know of a &lt;em&gt;"monster"&lt;/em&gt; stored procedure&lt;em&gt; &lt;/em&gt;in existance within their organisation. We were told why such stored procedures are often a bad thing i.e.interpreted which is slow, inefficient, large number of conditional statements which has a performance cost etc.&lt;/p&gt;&lt;p&gt;more to follow ...&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-7181026979935352869?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/7181026979935352869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=7181026979935352869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/7181026979935352869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/7181026979935352869'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/grand-finale.html' title='The Grand Finale'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hmGqEWcyAzM/Rzlp05WdheI/AAAAAAAAAEg/R5dV6aVXBRE/s72-c/mp.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-3222739048455827014</id><published>2007-11-12T08:41:00.000-08:00</published><updated>2007-11-13T01:05:22.312-08:00</updated><title type='text'>A fine double act</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 19&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Implementing the Enterprise Service Bus (ESB) using Microsoft BizTalk Server&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There have been a number of fine double acts over the years, Cannon &amp;amp; Ball, Little &amp;amp; Large, Cheese &amp;amp; Onion and Mike &amp;amp; Bernie Winters, but to name a few and todays partnership proved no exception. Robert Hogg (Chief BizTalk Architect of Black Marble) and Ewan Faiweather (a Premier Field Engineer with Microsoft UK) managed to make a heavy topic area really quite entertaining.&lt;br /&gt;&lt;br /&gt;How many of you have heard of Enterprise Service Bus (ESB) let alone wondered how it could benefit your business? ESB is a widely used term in the Enterprise industry but poorly understood.&lt;br /&gt;&lt;br /&gt;The speakers introduced a number of key concepts needed to understand ESB and examined ESB can improve business. This was consolidated with a number of demonstrations.&lt;br /&gt;&lt;br /&gt;We next dived into BizTalk which is a Microsoft sponsored set of guidelines for how to publish schemas in XML and how to use XML messages to easily integrate software programs together in order to build rich new solutions.&lt;br /&gt;&lt;br /&gt;Further demonstrations showed how BizTalk can be used to implement ESB.&lt;br /&gt;&lt;br /&gt;Although a number of the topics discussed during this session were very new to me, I tried to glean what I could.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-3222739048455827014?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/3222739048455827014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=3222739048455827014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/3222739048455827014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/3222739048455827014'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/fine-double-act.html' title='A fine double act'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-2308020220907825171</id><published>2007-11-12T05:56:00.000-08:00</published><updated>2007-11-12T08:37:07.586-08:00</updated><title type='text'>May the force be with with you</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;General Session&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;The irresistible forces meet the moveable objects&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;It was a full house in the auditorium for the late morning genreal session.  The first thing on the agenda was for Pat Helland to elaborate on the mysterious title he had given this presentation.  It turns out that the forces in this context were those which push the computer industry and pressure how our applications are composed.  To tackle this, we need to create new models for components and evolve our existing computing models.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The nature of the forces were described in terms of &lt;em&gt;old&lt;/em&gt; and &lt;em&gt;new&lt;/em&gt;.  In the good old days we had big servers, big data-centres, bif CPU's which all cost big money.  Today we have small servers, small data-centres, etc., etc. (you get the idea).  so lets have a closer look at the forces:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Forces in processing&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Moore's Law says that the number of transistors in the CPU will double every 2 years.  Some og the high-end chips are currently operating at 150watts.  But why is CPU frequency not rising like it should?  Well, apparantly this is down to the &lt;em&gt;Power Wall &lt;/em&gt;whereby the total number of power increases year-on-year.  Total power = dynamic power + static power.  As transisters get smaller and smaller, they leak more and more power.  Faster frequencies need more dynamic power.  Also, as the chips get hotter, the static power goes up.&lt;br /&gt;&lt;br /&gt;The &lt;em&gt;Memory Wall&lt;/em&gt; occurs because access time to DRAM remains basically flat.  There will be a big push toward &lt;em&gt;speculative execution &lt;/em&gt;whereby the hardware is used to guess the next memory access required.  There will be increasing attention to parallel chips and on-chip shared memory which offers faster access times than regular DRAM.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Forces in data-centres&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Data centres dont need to be like aircraft hangers anymore.  Computers are cheaper and smaller.  Reducing the power saves on air-conditioning costs.  You can now buy data-centres built out of converted shipping containers and at 55% of the cost of regular buildings.  They have far more space, heat/power efficiency and allow hugh savings in production and installation costs. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Forces in storage&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;"DISK IS TAPE."  &lt;/em&gt;The store to disk is getting skinnier.  With each generation, capacity increases with ariel density amd read/write time with linear density.  Predictions are 10+ terrabytes for 2010 and all for under $100.  The memory market has been driven down by phones, cameras and ipods.  Flash makes a better disk than disk!  IO per Gb of flash memory is 200 compared to 4 for disk.  Current trends show a crossover between flash and disk making prices comparable.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Forces in the cloud&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;At this point, we were shown a video of the future vision.  Mechanisms need to be in place to ease the transfer of data between all types of machine.  Application state needs to be seperated from the machine.  Use peer-user-peer-app state and sand-boxing.  Controlled and safe sharing across applications.  There are two types of parallelism, &lt;em&gt;pipeline parallelism&lt;/em&gt; and &lt;em&gt;partitioned parallelism&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Single core processors wont get any faster.  Ath this point, an analogy was made with an ice-skater.  The closer they bring in their arms, the faster they spin.&lt;br /&gt;&lt;br /&gt;People will evolve apps to cope with the forces.  The demand will cause applications to change.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;The movable objects&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Even if the computer is accurate, data is entered by people (which can be inaccurate).&lt;br /&gt;Computers have partial knowledge ...&lt;br /&gt;Memories and sharing  - its nice to remember your guesses  - sharing your memories is useful.&lt;br /&gt;Fidelity of memories &lt;- -&gt; cost&lt;br /&gt;&lt;br /&gt;Sorry for some of the garbled notes.  The presenter was going through at a rapid pace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-2308020220907825171?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/2308020220907825171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=2308020220907825171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/2308020220907825171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/2308020220907825171'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/may-force-be-with-with-you.html' title='May the force be with with you'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-3825918143739185056</id><published>2007-11-12T05:18:00.000-08:00</published><updated>2007-11-12T05:54:36.752-08:00</updated><title type='text'>Improving the user experience</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 18&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Web Client Software Factory (WCSF): Building Rich Internet Applications with ASP.NET, AJAX and WCSF.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Glenn Block started with a demonstration of a non-RIA web application without client side support from AJAX in order to highligh how poor the user experience was.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"Why are design patterns important?"&lt;/em&gt; Glenn mused. &lt;em&gt;"Because they have a common taxonomy whilst being technology independant."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Patterns as good as they make sense no matter which framework your are working with. They are also useful for discussing requirements with peers. They define both the problem and the solution. Apparantly, there are 70 set patterns for developing applications with AJAX.&lt;br /&gt;&lt;br /&gt;When we look at taking an application towards a RIA, it is not a black/white, all or nothing issue. The speaker utilised a pattern called "Suggestion" in order to demonstrate his point. &lt;em&gt;"How can we help users enter data when they don't always know the allowed values."&lt;/em&gt; he quipped.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Assist user with list of useful suggestions by offering a list in real time. The speaker showed how you don't have to wait for full-postback in order to achieve this. AJAX &lt;em&gt;ContextSensitiveAutocompleteExtender&lt;/em&gt; can implement the suggestion pattern by retrieving a list of suggestions from a web service and is triggered by either number of key strokes of a delay.&lt;br /&gt;&lt;br /&gt;Next, a demo of the basic AJAX autocomplete control (or filtered list). The problem is with the control shown on the speakers demo site was that it gave a full list of cities in the USA even though Washington has already been selected as a state (i.e. not just cities in stage WA).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt; was to hook-up the city and the zip code and drop on the &lt;span style="color:#ff0000;"&gt;&lt;strong&gt;acsae*&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;. &lt;/span&gt;&lt;span style="color:#000000;"&gt;This &lt;/span&gt;then only returns the cities and zips for washington. A call is made to a web service with the zip and city sent as parameter.&lt;br /&gt;&lt;br /&gt;Another problem identified was the &lt;em&gt;"pop-up problem"&lt;/em&gt;. How can we provide the user with a quick method of looking-up valid field entries such as cities and states?&lt;br /&gt;&lt;br /&gt;Another problem was the &lt;em&gt;"display morphing problem". &lt;/em&gt;How can we make the interface more interactive? Weel, we need to update the display dynamically as the context changes and this can be done with via an updatePanel - automatically updates portion of the screen with server content via a partial postback. - Supports naive and third party server controls - but can be heavy.&lt;br /&gt;&lt;br /&gt;* &lt;span style="color:#ff0000;"&gt;&lt;strong&gt;acsae&lt;/strong&gt;&lt;/span&gt;: If anyone knows what I was trying to type, please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-3825918143739185056?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/3825918143739185056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=3825918143739185056' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/3825918143739185056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/3825918143739185056'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/session-18-web-client-software-factory.html' title='Improving the user experience'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-3592767703297257186</id><published>2007-11-12T05:09:00.000-08:00</published><updated>2007-11-12T05:18:20.020-08:00</updated><title type='text'>Hands On!</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 17&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Hands-On Lab (HOL)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;For one reason or another, a number of sessions for Thursday and Friday had been cancelled so I thought this would be a good opportunity to experience a few hands-on-labs.  The ones that really jumped were:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DAT41-HOL&lt;/strong&gt; - Introduction to LINQ&lt;br /&gt;&lt;strong&gt;TLA03-HOL&lt;/strong&gt; - What's new in C# 3.0?&lt;br /&gt;&lt;strong&gt;WEB11-HOL&lt;/strong&gt; - Introduction to ASP.NET AJAX&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-3592767703297257186?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/3592767703297257186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=3592767703297257186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/3592767703297257186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/3592767703297257186'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/hands-on.html' title='Hands On!'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-5471490868687589257</id><published>2007-11-12T03:46:00.000-08:00</published><updated>2007-11-12T05:09:22.413-08:00</updated><title type='text'>A bit too contrived to be realistic</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 16&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Web application security&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Alik kicked things off by outlining the objectives of the session. 1) As developers, we need to apply sound security engineering principles to our applications. 2) We need to plan for security throughout the software development lifecycle. 3) the ultimate goal to to produce more secure systems.&lt;br /&gt;&lt;br /&gt;Security dilemmas facing the developer were identified:&lt;br /&gt;How to authenticate users?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How to authorize users?&lt;/li&gt;&lt;li&gt;How to validate input?&lt;/li&gt;&lt;li&gt;How to perform data access?&lt;/li&gt;&lt;li&gt;How to handle exceptions?&lt;/li&gt;&lt;li&gt;How to handle sensitive data?&lt;/li&gt;&lt;li&gt;How to handle auditing and logging?&lt;/li&gt;&lt;/ul&gt;Much of the session from here on in was a practical demonstration of how to compromise the TechEd official website (although Alik later revealed that he had created a dummy site in order to prove the concepts).&lt;br /&gt;&lt;br /&gt;So, first on the agenda was &lt;em&gt;traffic sniffing&lt;/em&gt;. Sniffing traffic (on this site anyway) was easy to achieve by a) having the appropriate tools and b) having passwords sent as free text. Alik demonstrated this to us and concluded that where possible use Windows authentication. Where this is not possible, use https:// for secure transmission.&lt;br /&gt;&lt;br /&gt;Next on the list was SEL Injection attacks. Alik performed an injection into the search field of the TechEd session lookup screen. The added SQL consisted of a search for a valid session plus a UNION with the SYSOBJECTS table. He then went on to locate any tables like '%login%' and finally performed a UNION on the LOGIN table to extract usernames and passwords. The lesson here was to ensure that you check data types, data lengths and ranges of anything being entered into your form fields.&lt;br /&gt;&lt;br /&gt;This took us neatly onto exploiting over-privileged accounts. Again Alik inserted some extra commands into the search field:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;;EXEC xp_cmdshell "netuser username password&lt;username&gt;&lt;passwd&gt;"&lt;br /&gt;&lt;p&gt;&lt;br /&gt;where username and password were Alik's. He then remote desktopped to the TechEd server and logged in with his new extended privileges. The lesson here is to apply the principle of least privilege accessand validate entry strings for correctness.&lt;br /&gt;&lt;br /&gt;The next section related to exploing a single gate keeper and Alik showed easy it is to extract a password from the hash contained in the backup SAM file. The lesson here was to partition your website to physical folders and restict access. Also, apply a defence in depth approach using multiple gate keepers.&lt;br /&gt;&lt;br /&gt;The final topic was &lt;em&gt;live search hacking&lt;/em&gt; where Alik described a number of methods for gleaning useful "hacker related" information from a system.&lt;br /&gt;&lt;br /&gt;Whilst interesting in parts, the example scenarios were so contrived, and the security flaws so obvious that you were left wondering if the Three Stooges had been responsible for implementing security on the "bogus site".&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-5471490868687589257?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/5471490868687589257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=5471490868687589257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/5471490868687589257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/5471490868687589257'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/bit-too-contrived-to-be-realistic.html' title='A bit too contrived to be realistic'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-4383357983686641038</id><published>2007-11-11T10:21:00.000-08:00</published><updated>2007-11-12T03:45:59.476-08:00</updated><title type='text'>Tales of an overworked IT pro</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 15&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Top 10 Mistakes Developers Make&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;We start with a formal definition of a mistake:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"A mistake: error, blunder, a misconception or misunderstanding, to confuse a person or thing with another."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;What are the two biggest pains in software development? Well, David Aiken had no problem in letting us know: &lt;em&gt;Install&lt;/em&gt; and &lt;em&gt;Health&lt;/em&gt;. As an adide, we were then shown a sign which adorned the office door of a developer at Microsoft which read:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"I don't care if it works on your machine, we are not shipping your machine."&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;Anyway, onto the mistakes we make:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mistake #1 - Ad-hoc configuration&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;what you do:&lt;/em&gt; Make configuration changes to your machine manually.&lt;br /&gt;&lt;em&gt;what you need to do:&lt;/em&gt; Script any changes so that they are repeatable.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mistake #2 - Don't make assumptions about security&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;do not make assumptions that:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;User will had admin rights.&lt;/li&gt;&lt;li&gt;Firewall will also port 8050.&lt;/li&gt;&lt;li&gt;User has permission to register HTTP namespace.&lt;/li&gt;&lt;li&gt;User is mapped to dbo role in the database.&lt;/li&gt;&lt;li&gt;User can write to file system in folder x.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Mistake #3 - XCOPY = Mistake&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;XCOPY really means XCOPY then:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Add registry entry.&lt;/li&gt;&lt;li&gt;Enable file permission on account.&lt;/li&gt;&lt;li&gt;etc, etc, etc.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Mistake #4 - Uninstall = Format C:&lt;/strong&gt;&lt;br /&gt;Do you provide a way to uninstall your application?&lt;br /&gt;Checkpoint: 1) build an installer/msi for your app components. 2) Integrate istaller as part of the build process and test. 3) script install and uninstall steps.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mistake #5 - Dependancies&lt;/strong&gt;&lt;br /&gt;What does your application depend on: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;SQL?&lt;/li&gt;&lt;li&gt;MSMQ? &lt;/li&gt;&lt;li&gt;Port 8050? &lt;/li&gt;&lt;li&gt;Foo.dll? &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Can your application easily check for dependancies? Use a dependancy checker.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Mistake #6 - Upgrade means reinstall&lt;/strong&gt;&lt;br /&gt;At worst, installation of patches may require uninstall and reinstall or even worse! Some developers simple overwrite earlier dll's with new ones - bad practice.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Mistake #7 - Patch breaks everything else&lt;/strong&gt;&lt;br /&gt;You make a fix to correct an error without comprehensive testing on the knock-on effect on other system components. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Mistake #8 - Don't use admin tools&lt;/strong&gt;&lt;br /&gt;Notepad is not really as admin tool and neither is Visual Studio. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;What is? WMi, Windows event logs, Windows performance monitor, Windows Powershell, Microsoft Management Console etc.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Mistake #9 - How do you know your application really works?&lt;/strong&gt;&lt;br /&gt;Use of synthetic transactions such as bogus customers and orders to test every scenario. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Mistake #10 - Single user testing multi-user environment&lt;/strong&gt;&lt;br /&gt;Don't just assume that your application will operate in multi-user environment when testing has been carried out by single user.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-4383357983686641038?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/4383357983686641038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=4383357983686641038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/4383357983686641038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/4383357983686641038'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/tales-of-overworked-it-pro.html' title='Tales of an overworked IT pro'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-1105645112683399133</id><published>2007-11-11T03:45:00.000-08:00</published><updated>2007-11-11T10:21:34.435-08:00</updated><title type='text'>A little more of the same</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 14&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;The Next Release of ASP.NET - Significant Features Available Soon...(really soon)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Another session led by the ASP.NET Deveopment Manager Matt Gibbs. This session was billed as walkthrough of the most compelling features of the next release and started with an ASP.NET roadmap in which the audience were treated to a discussion of the .NET framework through the ages.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next we dived into the topic of &lt;em&gt;Astoria&lt;/em&gt; data services. For those of you who arent in the know, Astoria enables applications to expose data as a data service that can be consumed by web clients within a corporate network and across the internet. The data service is reachable over HTTP, and URIs are used to identify the various pieces of information available through the service. Interactions with the data service happens in terms of HTTP verbs such as GET, POST, PUT and DELETE, and the data exchanged in those interactions is represented in simple formats such as XML and JSON.&lt;br /&gt;&lt;br /&gt;A demo of Astoria followed.&lt;br /&gt;&lt;br /&gt;Matt's focus was then onto ASP.NET AJAX and more specifically, how browser history and navigation can be improved by using AJAX. The discussion was consolidated with a demonstration based around an online shopping site with AJAX provifing state management. The site consisted of a 4-page shopping wizard which allowed the user to move back and forth between all pages and see all details without the need for full postback to the server.&lt;br /&gt;&lt;br /&gt;Matt discussed desirable feature of ASP.NET AJAX called &lt;em&gt;script combining &lt;/em&gt;which can dramatically improve web site performance by ensuring scripts are called efficiently as possible.&lt;br /&gt;&lt;br /&gt;Matt next described in detail the Silverlight controls which he touched on in his previous seminar &lt;em&gt;ASP.NET: Why, What, How and When?&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-1105645112683399133?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/1105645112683399133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=1105645112683399133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/1105645112683399133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/1105645112683399133'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/little-more-of-same.html' title='A little more of the same'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-3202907391959706932</id><published>2007-11-11T02:05:00.000-08:00</published><updated>2007-11-11T03:45:07.578-08:00</updated><title type='text'>Non-interactive Interaction</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 13&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;ASP.NET: Why, What, How and When?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Maybe it was down to the fact that this was the first morning session following the free bar at the Country drinks event the previous night, but this less-than-capacity crowd were probably more eager for 'hair of the dog' rather than audience participation. This left our host, Matt Gibbs with no opportunity but to deliver a rather one-sided lecture.&lt;br /&gt;&lt;br /&gt;He started with a look at where are we now, specifically:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ASP.NET AJAX 1.0.&lt;/li&gt;&lt;li&gt;New 'Orcas' features are currently work in progress. &lt;/li&gt;&lt;li&gt;Astoria.&lt;/li&gt;&lt;li&gt;New AJAX features on the horizon.&lt;/li&gt;&lt;li&gt;The new Silverlight controls.&lt;/li&gt;&lt;li&gt;MVC framework.&lt;/li&gt;&lt;li&gt;The new data access controls available.&lt;/li&gt;&lt;/ul&gt;An important message that Matt wanted to drive home was that the views of the developer community are very important for the future development of the Microsoft technologies. So basically, keep your questions, issues, feedback, concerns, scenarios, feelings, impressions coming!&lt;br /&gt;&lt;br /&gt;There is a perception among the developer community that the trend to implementing new features mean that javascript is being leveraged too much and this in turn makes debug harder to carry out. Matt described that there will be a shift to silverlight as the main vehicle to develop client-side code. &lt;em&gt;"We don't see people making a wholsesale shift to silverlight, but rather evolve to this technology over time, levering silverlight when developers see a particular benefit."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;To Silverlight controls are currently being worked on:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;asp:silverlight&gt;&lt;/strong&gt;control makes it simpler to implement your Silverlight functionality without using JavaScript. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;asp:mediaplayer&gt;&lt;/strong&gt;control simplifies the addition of music and video to your site by handling the complexity. You just need to select the skin and supply the path name to your media file.&lt;/li&gt;&lt;/ul&gt;&lt;/asp:mediaplayer&gt;&lt;/asp:silverlight&gt;Microsoft are working on a release date of December for the controls.&lt;br /&gt;&lt;br /&gt;We then moved onto a definition of &lt;em&gt;Astoria&lt;/em&gt;. The goal of Microsoft Codename Astoria is to enable applications to expose data as a data service that can be consumed by web clients within corporate networks and across the internet.&lt;br /&gt;&lt;br /&gt;The data service is reachable over regular HTTP requests. The use of web-friendly technologies make it ideal as a data back-end for AJAX-style applications.&lt;br /&gt;&lt;br /&gt;For those of us that did'nt over-indulge on the free bar the night before, this was quite a useful session.&lt;br /&gt;&lt;?xml:namespace prefix = asp /&gt;&lt;asp:silverlight&gt;&lt;asp:mediaplayer&gt;&lt;/asp:mediaplayer&gt;&lt;/asp:silverlight&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-3202907391959706932?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/3202907391959706932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=3202907391959706932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/3202907391959706932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/3202907391959706932'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/non-interactive-interaction.html' title='Non-interactive Interaction'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-2267245369511477423</id><published>2007-11-08T04:23:00.000-08:00</published><updated>2007-11-11T01:57:52.093-08:00</updated><title type='text'>All that glitters...</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 12&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Hidden gems in ASP.NET 2.0&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;I must admit, I had not noted who would be delivering this session and my heart sank as I ascended into the auditorium and immediately recognised the distinct and lush facial hair of Stefan Schackow. It's not that he is not extremely knowledgeable, for he is. Its' more that the style of delivery does nothing to impart his knowledge into my grey matter.&lt;br /&gt;&lt;br /&gt;Again, there were a copious amount of demo's based around a number of ASP.NET themes:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Ajax Callbacks&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Why not implement ICallbackEventHandler instead of full blown AJAX in your applications. This will give you the ability to update a particular portion of the page without full-page postback. The method getCallbackResult returns the data from the server for the page portion as a string. It is then upto the developer to parse and repopulate the page.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Expression Builders&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;We were exposed to the magic behind the $ expressions e.g. and advised to use expression builders to extend the parsing engine. The Web.Config is the place to register your custom expression builder. A couple of demo's followed at this point.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Encrypted Configuration Sections&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;We were shown how it is possible to encrypt sections of your configuration files such as Web.Config. The encryption used is triple DES and can be applied via the Aspnet-regiis.exe. Connection strings containing username and passwords could be protected using encryption although it was pointed out that this is probably bad practice anyway.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Adapters&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Next on the agenda were adapters and more specifically, &lt;em&gt;control adapters&lt;/em&gt; and &lt;em&gt;page adapters&lt;/em&gt;. Given a control, a custom piece of code can observe and effect the rendering of the control. As a demonstration, Stefan implemented the render method of a textbox. He discussed the benefits of creating your own browser definition file and dropping into the appbrowsers folder.&lt;br /&gt;&lt;br /&gt;Other topics up for discussion were &lt;em&gt;custom cache dependencies&lt;/em&gt;, &lt;em&gt;post-cache substitution&lt;/em&gt;, &lt;em&gt;Virtual path providors&lt;/em&gt;, &lt;em&gt;session state partitioning&lt;/em&gt; and &lt;em&gt;async pages&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;I must admit, I thought that some real 24 carat nuggets would be revealed in this session but was left feeling a tad disappointed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-2267245369511477423?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/2267245369511477423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=2267245369511477423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/2267245369511477423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/2267245369511477423'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/all-that-gilltters.html' title='All that glitters...'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-1596400824031158266</id><published>2007-11-08T04:21:00.000-08:00</published><updated>2008-12-11T21:26:45.024-08:00</updated><title type='text'>The ego has landed</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 11&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Top Ten ASP.NET Scaling Tips&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"I just want to give you a brief biography of my career before we start"&lt;/em&gt; exclaimed an incredibly fired up and annoyingly confident Stephen Forte. Now I don't mind larger than life characters, in fact, part of me wishes that I could shout a bit more about my achievements. But I am not sure what reaction someone is fishing for when they trot out line after line of self congratulation. At one point I felt like grabbing the mike and saying &lt;em&gt;"listen Steve, I am really pleased that you have done so well in life that you don't need to work again. Your brilliant"&lt;/em&gt; and have done with it. Sorry for the rant. Actually, probably not wise to work on the blog this late in the evening after a tiring day so i'm going to sign off.&lt;br /&gt;&lt;br /&gt;The session was billed as an open Q&amp;amp;A session and Stephen did his best to rouse the crowd in his own distinct way. A big problem with the interactive sessions at TechEd is that the room layout does not really promote or encourage interaction. I suggest the organisers watch a couple episodes of Jeremy Kyle to identify the core requirements: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Seating arranged in a raised crescent format. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Speaker moving back and forth between stage and seating area.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&gt; 1 microphone&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Stephen started by defining scalability:"if you can add more workload to a system without increasing the cost of the system per unit of workload." So I guess that ramping up the number of users is only half of the equation. The other half means doing so without increasing the cost per user. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;At this point a delegate asked Stephen &lt;em&gt;"exactly how do you measure scalability?" &lt;/em&gt;which is fair enough as this is an interactive session right. Apparetly, you work out your total system costs in Excel. You then figure out your variable costs and put these into the spreadsheet also. You then look at your transaction volume. A transaction in this context may be a business process as well as a financial transaction. You finally determine a cost for this transaction and divide the overall system cost by this transaction cost. As easy as that!&lt;/p&gt;&lt;p&gt;In discussing performance, the speaker took us through an equation he has been working on. For all you mathematicians out there here it is: &lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5130845235133121970" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_hmGqEWcyAzM/RzRsjpWdhbI/AAAAAAAAACI/O4BM1XI7ap0/s320/eq.jpg" border="0" /&gt; &lt;u&gt;Legend:&lt;/u&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;R&lt;/em&gt; - Response Time.&lt;/li&gt;&lt;li&gt;&lt;em&gt;RTT&lt;/em&gt; - Round Trip Time.&lt;/li&gt;&lt;li&gt;&lt;em&gt;AppTurns&lt;/em&gt; - HTTP Requests.&lt;/li&gt;&lt;li&gt;&lt;em&gt;ConcurrentRequests &lt;/em&gt;- The number of server sockets open by the browser.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Cs&lt;/em&gt; - Server side compute time.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Cc&lt;/em&gt; - Client side compute time.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Stephen hammered home the following point:&lt;/p&gt;&lt;p&gt;&lt;em&gt;"performance, extensibility and reliability need to be at the forefront of your mind when developing applications. You cannot throw expensive hardware at a non-scalable system in a hope of making that software more scalable. Instead, all you get is really expensive non-scalable software."&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Now one particular delegate was not about to accecpt this point of view and challenged Mr Forte enthusiastically. The speaker attempted humour in order to deflect the difficult situation but the challenger was undeterred. After a few more attempts to extract an agreeable answer from the speaker, the challenger left the hall disatisfied (well that was my observation).&lt;/p&gt;&lt;p&gt;The final few minutes were spent discussing priority and sticky based load balancing.&lt;/p&gt;&lt;p&gt;A somewhat disjointed but never the less, entertaining session.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-1596400824031158266?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/1596400824031158266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=1596400824031158266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/1596400824031158266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/1596400824031158266'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/inflated-ego-from-man-at-front.html' title='The ego has landed'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hmGqEWcyAzM/RzRsjpWdhbI/AAAAAAAAACI/O4BM1XI7ap0/s72-c/eq.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-378504491038770907</id><published>2007-11-08T04:18:00.000-08:00</published><updated>2007-11-08T04:20:54.265-08:00</updated><title type='text'>Demo Overload</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 10&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Server Communication with Microsoft Silverlight and ASP.NET AJAX&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Blog to follow...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-378504491038770907?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/378504491038770907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=378504491038770907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/378504491038770907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/378504491038770907'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/demo-overload.html' title='Demo Overload'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-8880035736298772263</id><published>2007-11-08T04:09:00.000-08:00</published><updated>2008-12-11T21:26:45.564-08:00</updated><title type='text'>Too little too late</title><content type='html'>&lt;div&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 9&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;Microsoft SQL Server 2005 - Reporting Services - Advanced Report Design&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Almost immediatly, our host Ciprian Jichici jumped straight into a practical example.&lt;br /&gt;&lt;br /&gt;Problems can occur when exporting a report from Reporting Services (RS) into a data analysis tool such as Excel. The thing is, when a complex and/or formatted report, arrives in Excel from RS, all formats and groupings are preserved as far as possible. "Well, whats wrong with this?" I hear you say. Surely, it is credit to the application that not only is the formatting of the Excel export identical to the RS version, but any complex, multi-level sorting/grouping from the original are still preserved. The issue is that often, the reason why such an export happens in the first place is so that additional analysis and computation can be performed on the data or the data can be combined with other data already in Excel. In these cases, you may want the raw report data without the bells and whistles. Hence, the demo showed us how an &lt;em&gt;'analysis friendly'&lt;/em&gt; version of an elaborate RS report can be exported with minimal overhead for the developer.&lt;br /&gt;&lt;br /&gt;The speaker discussed the difficulty of being able to including data fields in the headers and footers of SqlServer 2005 RS. The next demonstration showed how this is a lot easier to achive in 2008.&lt;br /&gt;&lt;br /&gt;Next topic was &lt;em&gt;localization&lt;/em&gt; and more specifically, the two problems of localizing report structure and localizing report contenct. The demo showed how easy it is to allow your report to be translated into a number of different languages.&lt;br /&gt;&lt;br /&gt;Report parameters were next in the spotlight. Parameters are your friend and have lots of uses:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Dynamic queries.&lt;/li&gt;&lt;li&gt;Varable groupings.&lt;/li&gt;&lt;li&gt;Fields in headers and footers.&lt;/li&gt;&lt;li&gt;Currency translation.&lt;/li&gt;&lt;li&gt;Language translation.&lt;/li&gt;&lt;li&gt;Self-drill reports.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ciprian dived into a few practical examples of the use of parameters.&lt;/p&gt;&lt;p&gt;It was clear that nobody in the auditorium was happy with the layour capabilities of RS in SQL Server 2005. For example, it is not an easy task to combine dynamic and static column content in the same report. The speaker showed us a "trick of the trade" for reducing the number of row headings on a drillable-crosstab report by converting to a stepped format. This has the advantages of a) reducing complexity and b) reducing the screen area of the report i.e. going from this:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5131278193606362562" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_hmGqEWcyAzM/RzX2VJWdhcI/AAAAAAAAAEQ/wzFhLxDGA9g/s320/p1.jpg" border="0" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;to this:&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5131278520023877074" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_hmGqEWcyAzM/RzX2oJWdhdI/AAAAAAAAAEY/dvupoudOz2U/s320/p2.jpg" border="0" /&gt;Although there were so good tips in this session, it was of limited use for anyone who does already know the technology inside out. I left slightly disappointed.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-8880035736298772263?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/8880035736298772263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=8880035736298772263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/8880035736298772263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/8880035736298772263'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/too-little-too-late.html' title='Too little too late'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hmGqEWcyAzM/RzX2VJWdhcI/AAAAAAAAAEQ/wzFhLxDGA9g/s72-c/p1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-6455371275801325681</id><published>2007-11-08T04:04:00.000-08:00</published><updated>2007-11-08T04:09:35.870-08:00</updated><title type='text'>Postback - Not on your life!</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 8&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;Building highly scalable ASP.NET web sites by exploiting Asynchronous programming models&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Blog to follow...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-6455371275801325681?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/6455371275801325681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=6455371275801325681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/6455371275801325681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/6455371275801325681'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/postback-ha-ha-you-must-be-having-laugh.html' title='Postback - Not on your life!'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-815026919873330802</id><published>2007-11-08T03:59:00.000-08:00</published><updated>2007-11-10T10:38:48.360-08:00</updated><title type='text'>Upto my elbows in AJAX</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Session 7&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Optimizing and Extending ASP.NET AJAX&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;A big advancement in the .NET framework is the support for ASP.NET AJAX.  More specifically, the increadible ease by which 'AJAX magic' can be added to applications. This was the central message of Stefan Schackow here in auditorium.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;But did you know that a few lines of hand-written code can be orders of magnitude more efficient than an UpdatePanel? That an UpdatePanel fires client-side events that can be used for advanced customizations? Or that you can leverage the Microsoft AJAX Library directly and tap into features that aren't exposed on the server? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Stefan convinced us all in the hall that the ease in which async capabilities can be added to your apps.  A number of demo's were undertaken at machine-gun pace until we could AJAX no more.&lt;br /&gt;&lt;br /&gt;I can't help but feel that Stephans style, delivered in his broad Brookyn accent and without pause leaves the viewer feeling somewhat overloaded.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-815026919873330802?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/815026919873330802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=815026919873330802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/815026919873330802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/815026919873330802'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/upto-my-elbows-in-ajax.html' title='Upto my elbows in AJAX'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-8421040891001818747</id><published>2007-11-06T07:51:00.000-08:00</published><updated>2007-11-08T03:58:51.082-08:00</updated><title type='text'>Just what the doctor ordered</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;SESSION 6&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Principles and Patterns of Security&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Theres no doubt about it, Ron Jacobs is a lively and interesting speaker. He kicked off with a quick plug for &lt;a href="http://channel9.msdn.com/shows/ARCast_with_Ron_Jacobs"&gt;ARCast&lt;/a&gt; which is a show on Channel9.msdn that looks at the latest architecture trends.&lt;br /&gt;&lt;br /&gt;The focus of this session was firmly rooted in the way we (as developers) think about security. The speaker set the scene with a security related story about the American company TJ Maxx. &lt;em&gt;"But surely the company is called TK Maxx"&lt;/em&gt;, I hear you say. I too thought that the speaker had wrongly combined the names TJ Hughes and TK Maxx into a non-existent company, but no, it seems that in the US it is TJ and in the UK it is TK. Anyway I digress.&lt;br /&gt;&lt;br /&gt;Apparantly, hackers pulled up outside a store in Massachusetts and compromised an insecure Maxx network. The net result of Maxx failing to successfully encrypt their network was theft of 47.5 million customer credit card details. 6 people were later charged.&lt;br /&gt;&lt;br /&gt;In the above scenario, the prime motivation for attack was obviously money ($1,000,000 was spent on merchandise and gift cards using some of the details). However, an asset does not have to be cash,. Other motivations may be:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;destroy customer confidence.&lt;/li&gt;&lt;li&gt;Elicit personal customer details for identity crime.&lt;/li&gt;&lt;li&gt;Hijack processor, storage, bandwith capabilities.&lt;/li&gt;&lt;li&gt;Affect availability (e.g. DoS).&lt;/li&gt;&lt;li&gt;Degrade performance.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So what are the entities within the whole attack scenario. Well i'm going to summarise:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Assets&lt;/span&gt;&lt;/strong&gt; are the things that the attacker wants to take from you.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Threats&lt;/span&gt;&lt;/strong&gt; are the ways in which the attacker will try to get the &lt;em&gt;assets&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Mitigation&lt;/span&gt;&lt;/strong&gt; is the way(s) that you can block an attacker.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Vulnrabilities&lt;/span&gt;&lt;/strong&gt; are &lt;em&gt;unmitigated threats&lt;/em&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The speaker then turned his attention to &lt;em&gt;Threat Models&lt;/em&gt; which are assessments of the assets, threats, mitigations and vulnrabilities of a system you are building or have built. A useful exercise that Ron asked us to consider was to transpose the attack scenario onto a simple template which takes the format:&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;AS AN ATTACKER&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;I WANT TO ____________&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;SO THAT I CAN ____________&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;BY ____________&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;so an example may be:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;"As an attacker, I want to &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;obtain credentials&lt;/span&gt;&lt;/strong&gt; so that I can &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;plunder bank accounts&lt;/span&gt;&lt;/strong&gt; by &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;logging customers into a bogus website&lt;/span&gt;&lt;/strong&gt;".&lt;/p&gt;&lt;p&gt;You get the idea.&lt;/p&gt;&lt;p&gt;Next, Ron turned our attention to security objectives or to put it another way, &lt;em&gt;"what do we NOT want to happen!" &lt;/em&gt;well, we need to be real clear about our security objectives up front. It is no good to think of security as some kind of 'bolt-on' further down the development process. &lt;/p&gt;&lt;p&gt;The speaker outlined some basic security concepts:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Reduce you attack surface&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;Your attack surface is all the ways in which an attacker can get to you. It goes without saying that &lt;em&gt;"the smaller the attack surface, the better"&lt;/em&gt; and the analogy he gave was that of a castle (not the doomed Microsoft project but a real live castle with turrets, drawbridge and things). When they used to build castles in medievel times, they would have minimal access (i.e. one door complete with drawbridge) and safeguards such as moats and those windows that you can only fit an arrow through. A key message here was "UNDERSTAND YOUR ATTACK SURFACE!" and take steps to reduce it for applications that you already have running in live. Document your attack surface and understand all entry points into your application.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;strong&gt;Defence in Depth&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Don't just count on one line of defence for your entire system. What if the attacker penetrates that defence? We need to think about a multi-layerd approach and our next move to minimise damage once a layer has been broken.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Least Privilege&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Although least privilege can be seen as a &lt;em&gt;defence in depth&lt;/em&gt; measure it is best to give it the respect it deserves and treat as a seperate entity. It's as simple as this - CODE SHOULD ONLY RUN WITH THE PERMISSIONS IT REQUIRES (sorry for yelling). Attackers can only do what the code was already allowed to do. Ron offers some recommendations at this point: 1) use least privilege account 2) use code access security and 3) write applications that non-admins can use.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fail to Secure Mode&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Where possible, incorporate failsafe features into your application. DO NOT assume successful operation e.g. initialising all boolean flags to TRUE rather than false. Apparantly, some people do this in their code and wonder why hitting an exception (without a flag = FALSE statement in the CATCH block) causes the potentail attacker to proceed unchallanged.&lt;br /&gt;&lt;br /&gt;Never connect to the database as SA. Why? because it violates the principle of least privilege and allows the attacker to elevate his permissions on the system.&lt;br /&gt;&lt;br /&gt;Ron then stepped through some other nuggets of information which were pretty obvious things. Dont store passwords in unencrypted connection strings, use Windows security where possible, dont use easy passwords, use stored procedures instead of embedded SQL etc. etc.&lt;br /&gt;&lt;br /&gt;In introducing his section on secure storage, Ron mentioned that almost every company on the Fortune 100 list have had security breaches due to insecure storage context. Data MUST be secured in all contexts, whether it be a laptop, a back-up, transmissions of the Internet or third party credentials (e.g. customers).&lt;br /&gt;&lt;br /&gt;Never, ever attempt to write your own encryption algorithms in order to secure your data. There are brainy professors that have devoted hundreds and hundreds of years of combined research into this area. Use their work. You would'nt perform your own brain surgery now would you?&lt;br /&gt;&lt;br /&gt;Remember... All input is &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;EVIL&lt;/span&gt;&lt;/strong&gt; unless proved otherwise.&lt;br /&gt;&lt;br /&gt;Excellent session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-8421040891001818747?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/8421040891001818747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=8421040891001818747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/8421040891001818747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/8421040891001818747'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/just-what-doctor-ordered.html' title='Just what the doctor ordered'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-5530447522666020118</id><published>2007-11-06T07:48:00.000-08:00</published><updated>2007-11-07T06:29:59.363-08:00</updated><title type='text'>Never work with animals, children or... un-prepared demo's</title><content type='html'>&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;SESSION 5&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Programming SQL Server 2008&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The speaker opened the session by discussing data access methods and more specifically the things to think about when selecting the most appropriate one for your application.  Factors to consider include:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;New application development.&lt;/li&gt;&lt;li&gt;Application migration from other API and database.&lt;/li&gt;&lt;li&gt;Multiple database backend support.&lt;/li&gt;&lt;li&gt;Platform restrictions and data access availability.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We looked at a cool feature of SQL Server 2008, namely &lt;em&gt;Table-Valued Parameters.&lt;/em&gt;  This is where you can bind an in-memory data table as a SQL parameter and send to the server.  The parameter is then parsed and the contents used to carry out multiple inserts or updates.&lt;/p&gt;&lt;p&gt;We next looked at streaming data for the application to the database using &lt;em&gt;TransactionScope&lt;/em&gt;.  &lt;/p&gt;&lt;p&gt;A tour of new additions/enhancements to 2008 were discussed next such as the 4 new date/time data types on offer.  Currently, &lt;em&gt;SmallDateTime&lt;/em&gt; has precision to 1 minute whilst with &lt;em&gt;DateTime&lt;/em&gt; this is 3.33 milliseconds.  The new types and precisions are: &lt;em&gt;Date&lt;/em&gt; (1 day), &lt;em&gt;Time&lt;/em&gt; (100ns), &lt;em&gt;DateTime2&lt;/em&gt; (100ns) and &lt;em&gt;DateTimeOffset&lt;/em&gt; (100ns).&lt;/p&gt;&lt;p&gt;Although a couple of demos were attempted by the speaker, none worked and this seemed to dent the poor chaps confidence for the rest of the session.  A good lesson to take from that would be to have a supply of "heres one I made earlier" projects as backup.&lt;/p&gt;&lt;p&gt;2008 also boasts unlimited length User Defined Types (UDT).  The speaker introduced the FILESTREAM storage attribute on VarBinary(max) columns.  The designer is no longer restricted by a 2GB LOB.&lt;/p&gt;&lt;p&gt;Good session but could have been better.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-5530447522666020118?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/5530447522666020118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=5530447522666020118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/5530447522666020118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/5530447522666020118'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/never-work-with-animals-children-or-un.html' title='Never work with animals, children or... un-prepared demo&apos;s'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-4615480564900647512</id><published>2007-11-06T07:45:00.000-08:00</published><updated>2008-12-11T21:26:45.803-08:00</updated><title type='text'>Castles in the air</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;SESSION 4&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;Threat Modelling&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Security expert Micheal Howard took to the stage once again to discuss the concept of Threat Modelling.&lt;br /&gt;&lt;br /&gt;The speaker used the Castle project as an illustration of a Microsoft feature which never made it to release due to the security threat it posed.  Castle allows synchronization of passwords and files within a home network topology.  In the home, you may have several computers but no domain.  If you have 5 computers and no domain controller, how do you synchronize?  The castle service needed to run as System user in order to manipulate the SAM. Config data in the registry is accessed by the Castle service but there's no trust boundary.  Problems.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The foundations of Threat Modelling are firmly rooted in the Data Flow Diagram (DFD). Firstly, develop a comprehensive DFD of your system. Next, identify the trust boundaries in existance. Where a trust boundary exists, you need to ensure that the appropriate safeguards and validation are in place. Each element of the DFD (i.e. external entities, processes, data stores and data flows) are subject to different threats. These threats are described in the&lt;br /&gt;&lt;br /&gt;STRIDE model:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;S&lt;/span&gt;&lt;/strong&gt;poofing&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;T&lt;/span&gt;&lt;/strong&gt;ampering&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;R&lt;/span&gt;&lt;/strong&gt;epudiation&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;I&lt;/span&gt;&lt;/strong&gt;nformation Disclosure&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;D&lt;/span&gt;&lt;/strong&gt;enial of Service (DoS)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;E&lt;/span&gt;&lt;/strong&gt;levation of Privilege&lt;/li&gt;&lt;/ul&gt;It is worth noting with Repudiation, that computers and software do not repudiate - people do!&lt;br /&gt;&lt;br /&gt;The following table describes the DFD entities along with the threats that they are susceptible to:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5130030654269880386" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_hmGqEWcyAzM/RzGHszKe-EI/AAAAAAAAAB4/KD581S8HK9c/s320/pic.jpg" border="0" /&gt; We then moved onto the topic of Threat Trees which are graphical representations of security-relevant pre-conditions in the system. Basically, they are a refinement of the fault tree with the root node equalling the prime threat whilst the chid nodes equate to the questions that need to be asked. The leaf nodes are secondary threats that need to be evaluated.&lt;br /&gt;&lt;br /&gt;"How do we calculate risk" I hear you ask. The speaker examined a number of methods.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Calculating risk with numbers...&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The problem with using mathematics in calculating risk is that numbers are highly subjective. The DREAD method is particularly bad in that it allows the developer the luxury of moving potentially serious riks further down the list of severity.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Calculating risk with heuristics...&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Simple 'rules of thumb' which are derived from the MSRC bulletin rankings. MSRC is good as it removes the temptation from the developer of picking and choosing the problems to fix. From this point of view it is truly objective.&lt;br /&gt;&lt;br /&gt;Of course, there are 4 ways to mitigate software threats:&lt;br /&gt;&lt;br /&gt;Leave things as they are.&lt;br /&gt;Remove from product.&lt;br /&gt;Remedy with technology countermeasure.&lt;br /&gt;Warn the user.&lt;br /&gt;&lt;br /&gt;Point 4 is shifts responsibility onto the user which is not good practice.&lt;br /&gt;&lt;br /&gt;The speaker next turns our attention to the mitigation techniques which can be applied to the threat categories:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Threat..........................Technique&lt;/strong&gt;&lt;br /&gt;Spoofing................................Authentication&lt;br /&gt;Tampering............................Integrity&lt;br /&gt;Repudiation..........................Non-repudiation&lt;br /&gt;Information Disclosure.......Confidentiality&lt;br /&gt;Denial of Service..................Availability&lt;br /&gt;Elevation of Privilege..........Authorisation&lt;/p&gt;&lt;p&gt;The speaker finally left us with an example scenario and 10 mins in order to&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Identify all DFD assets.&lt;/li&gt;&lt;li&gt;Identify all threat types to each asset.&lt;/li&gt;&lt;li&gt;Identify 3 threats (one for a data flow, one for a data store and one for a process).&lt;/li&gt;&lt;li&gt;Identify first order mitigation for each threat.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Useful session.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-4615480564900647512?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/4615480564900647512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=4615480564900647512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/4615480564900647512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/4615480564900647512'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/castles-in-air.html' title='Castles in the air'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hmGqEWcyAzM/RzGHszKe-EI/AAAAAAAAAB4/KD581S8HK9c/s72-c/pic.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-1223914833336209216</id><published>2007-11-06T07:42:00.000-08:00</published><updated>2007-11-07T01:22:52.456-08:00</updated><title type='text'>The slickest session yet</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;SESSION 3&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;The Next Release of Microsoft SQL Server: Overview of SQL Server 2008&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;After a brief overview of SQL Server through the ages, the session was formally introduced as a broad walkthrough of "Katmai" (or SQL Server 2008 to you and me). The speaker was eager to concentrate on 4 key themes:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enterprise data platform&lt;/li&gt;&lt;li&gt;Beyond relational&lt;/li&gt;&lt;li&gt;Dynamic development&lt;/li&gt;&lt;li&gt;Pervasive insight&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;2008 offers a number of new features to bolster its postion as a secure trusted platform including trasparent data encryption (without the need to amend your calling application in any way). In fact, encryption can simply be turned on at column level at design time. Other techniques discussed were external key management, data auditing, pluggable CPU's and enhanced database mirroring.&lt;/p&gt;&lt;p&gt;2008 also promises optimised and predictable performance with advances in data compression, backup compression, performance system analysis and query optimization. 2008 allows the designer to limit the proportion of CPU devoted to each application on the box. This is achieved viat he RESOURCE GOVORNER. &lt;/p&gt;&lt;p&gt;Productive policy-based management allows the designer to specify rules which must be adhered to when maintaining the database and an alert system to flag-up breaches of the rules. For example, you may want to ensure that all table names within the &lt;em&gt;Personnel&lt;/em&gt; database start with a &lt;em&gt;pnl_&lt;/em&gt; prefix. If this convention is broken, then this will be reported to you.&lt;/p&gt;&lt;p&gt;The next topic concentrated on the availablity of data - "any place any time". 2008 incorporates techniques to facilitate disconnected usage with data beiing cached locally. It goes without saying that there are reliable methods to ensure trouble-free synchronisation takes place between client and server. Data collision and conflic resolution techniques were also discussed.&lt;/p&gt;&lt;p&gt;Next on the agenda was the Entity Relationship Model. The idea was to move away from the constaints of the table structure in order to better model complex business rules and relationships. For example, you may devise an entity for &lt;em&gt;Accounts Payable&lt;/em&gt; which may combine columns from a number of tables. When designed, the entity resembles a new table which can be both queried and updated. A demo on the ERM then followed. &lt;/p&gt;&lt;p&gt;A big idea of 2008 is to break the constraints of the relational model in order to effectively store unstructured data such as GPS downloads, movies, documents, XML data etc. Integrated querying accross both relational and text data was also discussed as was the provision for a new data type &lt;em&gt;DateTime2&lt;/em&gt; which provide accuracy down to 100 nano seconds (is that a millisecond?) rather that just a second.&lt;/p&gt;&lt;p&gt;I must admit, the next topic was one of those "wow" moments. Location Intelligence - whcih allows for the effective capturing/querying of location/spatial data - sees the introduction of &lt;em&gt;Geometry&lt;/em&gt; and &lt;em&gt;Geography&lt;/em&gt; data types. and Virtual Earth integration. &lt;/p&gt;&lt;p&gt;The demo which followed showed how the latitude/logitude coordinates of addresses can be stored within the database as geographic &lt;em&gt;points&lt;/em&gt; whilst coordinates of roads and highways are stored as &lt;em&gt;lines&lt;/em&gt;. A simple SQL query was composed to show all the coffee shops which exist within a 5 mile radius of a partucular location with the output being plotted onto a Virtual Eath map.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The final section of the presentation discussed Pervasive Insight and enterprise data warehousing. more specifically, it focused on 2008's ability to scale in order to manage large numbers of users and data.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;I thoroughly enjoyable session indeed.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-1223914833336209216?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/1223914833336209216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=1223914833336209216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/1223914833336209216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/1223914833336209216'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/slickest-session-yet.html' title='The slickest session yet'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-1699170394100722619</id><published>2007-11-06T04:07:00.000-08:00</published><updated>2007-11-06T09:15:14.687-08:00</updated><title type='text'>Would the real Michael Howard stand up!</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;SESSION 2&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;The Security Development Lifecycle&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When I heard that Michael Howard was making a presentation here at TechEd regarding security, I feared the worst. What would the MP for Folkestone and Hythe be doing here for heavens sake (and I have'nt even brought my blue rossette with me). Imagine my relief when the man taking the stage was none other than Michael Howard the Co-Author of &lt;em&gt;Writing Secure Code&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Michael set out his stall be outlining the scope of the presentation. Specifically, this was &lt;em&gt;"Security as a threat to software and the process of building secure applications"&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;He launched into a bit of an attack on security professionals: &lt;em&gt;"Security people are antagonists who annoy people. They are good at telling you when someing doesnt work right but not much good at coming up with solutions."&lt;/em&gt; he claimed to a somewhat stunned audience.&lt;br /&gt;&lt;br /&gt;He strongly suggested that most vunrabilities come into the system as data. And gave us a snippet of information regarding the software release process: "When something is not on by default, it is usually a feature that has not been tested enough and hence the vendor are not 100% confident about. However, he also made the point that tere are shades of grey in system security. Its not always black and white. Yet this is often something that the security guys refuse to take on board.&lt;br /&gt;&lt;br /&gt;We next went into the topic of the day - The Security Developer Lifecycle. In a nutshell, these are a bunch of requirements/recommendations that deal with design/development/testing/post-release security/privicy and whose goal is to improve security by reducing severity or vulnrabilities.&lt;br /&gt;&lt;br /&gt;The key message that Michael pushed here was &lt;em&gt;"Secure by Design, Secure by default".  &lt;/em&gt;There is no evidence whatsoever to support the case that if you increase the quality of the software, then security will improve.  Or put another way, you must focus on security in order to deal with security!&lt;br /&gt;&lt;br /&gt;The speaker then looked at security requirements and recommendations.  Put simply, requirements are things that MUST be done prior to software release whilst recommendations are things that we may want to incorporate but will not delay software release.&lt;br /&gt;&lt;br /&gt;I must be honest and say that the remaining half of the presentation was something of a disapointment to me as the focus was clearly on the area of unmanaged code and more specifically the vulnrabilities of the C and C++ language.&lt;br /&gt;&lt;br /&gt;I shall bullet point the following snippets and hope that some of what was said may be of interest:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;vs2005 provides warning for unsafe functions still in use.&lt;/li&gt;&lt;li&gt;Banned function replacements - safe crt (included in vs2005) and Strsafe (included in VS2005 and Windows SDK).&lt;/li&gt;&lt;li&gt;VS2005 automatically migrates banned/unsafe functions into safe versions in object code.&lt;/li&gt;&lt;li&gt;SAL (Standard Annotation Language) Used by static anaysis tools.  &lt;/li&gt;&lt;li&gt;example of SAL in use &lt;em&gt;&lt;strong&gt;__out__ecount(cchBuf)&lt;/strong&gt;&lt;/em&gt; allows the compiler to link buffer size variable with buffer.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The speaker then went on to discuss cryptography and stated that no new code must use md4, md5, sha1, des, rc3 (without crypto review), althogh Michael did conceed that Microsoft will sometimes allow weakended security for reasons of compatability.  e.g. triple des within ssl.&lt;br /&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-1699170394100722619?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/1699170394100722619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=1699170394100722619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/1699170394100722619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/1699170394100722619'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/would-real-michael-howard-stand-up.html' title='Would the real Michael Howard stand up!'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-6439229764118390710</id><published>2007-11-06T03:49:00.000-08:00</published><updated>2007-11-06T06:09:19.579-08:00</updated><title type='text'>Moth in the Spotlight</title><content type='html'>&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;SESSION 1&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#330099;"&gt;Visual Studio 2008 and the .NET framework v3.5&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It was clear that Daniel Moth wanted to get off to a good start and broke the ice with a comedic routine that Bobby Davro would have been proud of. Once the laughter had died down, it was onto the business of the day...&lt;br /&gt;&lt;br /&gt;He started by guiding us through a timeline of the .NET framework and said that, as developers, we should think of the framework as a number of seperate components (i.e. tool, languages, libraries and clr) rather than a single entity. There is no new clr in VS2008 and Daniel exclaimed that this is a good thing for reasons he would reveal later in the presentation.&lt;br /&gt;&lt;br /&gt;According to the speaker, the most important new feature of VS2008 is LINQ with approximately 8 to 10 sessions at this years TechEd being devoted to the technology. In addition, he outlined a number of important enhancements to the latest release, namely Workflow, AJAX and device emulation.&lt;br /&gt;&lt;br /&gt;v3.5 adds approximately 15 new assemblies to the 2.0 and 3.0 frameworks. VS2008 guarantees backward compatability and affords the developer the means to work against any previous framework version simply by selecting from a drop-down list.&lt;br /&gt;&lt;br /&gt;Daniel identified those areas of VS2008 where most progress had been made:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Multi-Targeting&lt;/strong&gt;&lt;br /&gt;The ability to select the most appropriate framework for your project. If the developer selects the latest framework, all assemblies from prior versions of the framework are available. You can even switch versions part way through the development process which will either limit the functionality (If you go from a later to earlier version) or present the developer with additional functionality.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Compiler Features&lt;/strong&gt;&lt;br /&gt;The speaker discussed new additions for VS2008 including:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Integrated AJAX libraries and project templates.&lt;/li&gt;&lt;li&gt;ListViw, DataPages and LinqDataSource.&lt;/li&gt;&lt;li&gt;The new HTML designer window.&lt;/li&gt;&lt;li&gt;Synchronised split view.&lt;/li&gt;&lt;li&gt;JavaScript intellisense and debugging facilities.&lt;/li&gt;&lt;li&gt;New support for CSS including auto-ordering of rules, CSS property window etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;After highlighting the new features for developing mobile applications, Window applications and the Windows Communication Foundation, Daniel demonstrated the new features of VS2008 can extend the functionality of Office applications. Traditionally, VBA has been the main route for customising Office application, however Daniel demonstrated that new Office functionality - such as Excel add-ins - can be easily constructed and deployerd via VS2008.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;br /&gt;The speaker discussed a number of enhancements to the language such as the new VAR keyword for Type inference. For example, the statement:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;VAR arr = new[] {3,56,34,666,7}&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;will construct a variable of type int32.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Assemblies&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;The speaker concluded by identifying the 15 main assemblies included in VS2008:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;System.Core.dll&lt;/li&gt;&lt;li&gt;System.Data.Linq.dll&lt;/li&gt;&lt;li&gt;System.Xml.Linq.dll&lt;/li&gt;&lt;li&gt;System.Data.DataSetExtensions.dll&lt;/li&gt;&lt;li&gt;System.Web.Extensions.dll&lt;/li&gt;&lt;li&gt;System.WorkflowServices.dll&lt;/li&gt;&lt;li&gt;System.ServiceModel.Web.dll&lt;/li&gt;&lt;li&gt;System.AddIn.dll, &lt;/li&gt;&lt;li&gt;System.AddIn.Contract.dll&lt;/li&gt;&lt;li&gt;System.Windows.Presentaion.dll&lt;/li&gt;&lt;li&gt;System.Net.dll&lt;/li&gt;&lt;li&gt;System.DirectoryServices.AccountManagement.dll&lt;/li&gt;&lt;li&gt;System.Management.Instumentation.dll&lt;/li&gt;&lt;li&gt;System.VisualC.STLCLR.dll&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Excellent work Daniel!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-6439229764118390710?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/6439229764118390710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=6439229764118390710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/6439229764118390710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/6439229764118390710'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/moth-in-spotlight.html' title='Moth in the Spotlight'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-7766383118486787154</id><published>2007-11-06T01:35:00.000-08:00</published><updated>2007-11-06T04:03:58.258-08:00</updated><title type='text'>Heads Up for the Keynote</title><content type='html'>&lt;span &gt;We take our seat in the arena. The lights dim and a thumping acid house bass and drum combo kicks in whilst pycadelic imagery flashes before our eyes. You could be forgiven for thinking that we were at a Happy Mondays concert rather than a Microsoft conference but instead of listening to the vile rantings of Shaun Ryder, we are treated to an informative and motivational keynote by this year’s keynote speaker S.Somasegar, Corporate Vice President of Microsoft’s Developer Division.&lt;br /&gt;&lt;br /&gt;He first starts by congratulating the user community for their assistance in making the latest release of Visual Studio the best version yet. In describing the user experience of Visual Studio, a parallel was drawn (by way of analogy/anecdote) to a meal he had the previous night at the Moo restaurant in Barcelona. His evening was memorable for two reasons:&lt;br /&gt;&lt;br /&gt;1) The quality of the food and&lt;br /&gt;2) Its presentation and overall ambience of the establishment.&lt;br /&gt;&lt;br /&gt;1st class software development too requires a balance of high quality functionality coupled with an attractive and effective presentation layer. Further, each version of Visual Studio incorporates additional functionality designed to optimise the productivity of the developer.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span &gt;The speaker emphasised that there are different types of developer (ranging from the hobbyist to the pro-developer) and different platforms that are developed against. .NET needs facilitate developers of all abilities to construct the systems they need to develop across a range of platforms.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span &gt;Visual Studio 2008 increases the bar in a number of ways, from support for multi-targeting to the AJAX integrated libraries. Not to mention the workflow capabilities and comprehensive libraries for further development of MS Office applications.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span &gt;Whilst congratulating the MSDN concept, Mr Somasegar wants a greater collaborative and community based approach to the sharing of knowledge and discussed the concept of code galleries.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span &gt;The Microsoft Sync Framework was announced which provides developers with the programming tools required to develop applications that support off-line and disconnected usage. The main thrust was that the data should follow the user across multiple devices and multiple protocols. It was announced that Visual Studio 2008 along with the .NET Framework 3.5 will be available for download from the end of November.&lt;br /&gt;&lt;br /&gt;The speaker then introduced Tony Goodhew, a programme manager within the Visual Studio team, who took us through some of the cool features of VS 2008. Such features were:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span &gt;Split view screens which allow a coordinated HTML and design view for the developer.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span &gt;Breadcrumb lists.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span &gt;Greater support for CSS including links to external style sheets and the CSS properties window.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span &gt;Multi-targeting.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span &gt;LINQ (Language Integrated Query).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span &gt;AJAX integration.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span &gt;Development with Silverlight.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span &gt;Full support for JavaScript including Intellisense and debugger support.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span &gt;A lighthearted video entitled 'VS2008 - A True Development Story' aimed to convince the developer community that you really can have your cake and eat it as far as this product is concerned.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span &gt;It was announced that Microsoft has removed the licensing term restriction which stopped the VS IDE from supporting all platforms.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span &gt;Popfly was introduced as the next generation web-based tool for building web pages, mashups and gadgets.&lt;br /&gt;&lt;br /&gt;Finally, the speaker outlined the future for Visual Studio which will see greater support for testing and debugging and offered 4 commitments to us the developers:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span &gt;We will be transparent.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span &gt;We will listen to customer feedback.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span &gt;To build a vibrant community.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span &gt;To foster a partner eco-system.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span &gt;The speaker left the stage to a warm round of applause.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-7766383118486787154?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/7766383118486787154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=7766383118486787154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/7766383118486787154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/7766383118486787154'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/heads-up-for-keynote.html' title='Heads Up for the Keynote'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-6812289829250699309</id><published>2007-11-04T01:32:00.000-07:00</published><updated>2008-12-11T21:26:45.987-08:00</updated><title type='text'>Halloween Picture</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_hmGqEWcyAzM/Ry2FzjKe-DI/AAAAAAAAABw/uhhvHikapes/s1600-h/DSC01704b.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5128902671303899186" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_hmGqEWcyAzM/Ry2FzjKe-DI/AAAAAAAAABw/uhhvHikapes/s320/DSC01704b.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_hmGqEWcyAzM/Ry2FbjKe-CI/AAAAAAAAABo/n0FeqHy5O48/s1600-h/DSC01704.JPG"&gt;&lt;/a&gt;Here is Brandon in his halloween outfit. Whilst obviously scary, I am pleased that it is also a functional garment.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-6812289829250699309?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/6812289829250699309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=6812289829250699309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/6812289829250699309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/6812289829250699309'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/11/halloween-picture.html' title='Halloween Picture'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hmGqEWcyAzM/Ry2FzjKe-DI/AAAAAAAAABw/uhhvHikapes/s72-c/DSC01704b.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-8099323722219988269</id><published>2007-10-30T04:56:00.000-07:00</published><updated>2007-11-12T05:55:17.701-08:00</updated><title type='text'>My Sessions</title><content type='html'>&lt;span &gt;Here is my current event calender for TechEd showing the sessions I will be attending. Although web technologies figure highly on my selection, I have a particular interest in system security and this too is reflected in some of my choices. Obviously SQL Server figures heavily in software development here at the University so I have aimed to include sessions of interest from this particular technology. There are some general/lunchtime slots which I will make a decision on when I am there. Please note, you need a Microsoft EMEA account to get futher information about the sessions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Session 01:&lt;/strong&gt;&lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7367"&gt;&lt;span &gt;TLA201 - A Tour of Visual Studio 2008 and the .NET Framework 3.5&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 02:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7540"&gt;&lt;span &gt;SEC201 - The Security Development Lifecycle&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 03:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7461"&gt;&lt;span &gt;OFF401 - .NET Developers Advanced Introduction to SharePoint 2007&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 04:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7541"&gt;&lt;span &gt;SEC202 - Threat Modeling&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 05:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7532"&gt;&lt;span &gt;DAT312 - Programming SQL Server 2008&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 06:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7568"&gt;&lt;span &gt;ARC206 - Principles and Patterns of Security&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 07:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7431"&gt;&lt;span &gt;WEB312 - Optimizing and Extending ASP.NET AJAX&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 08:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7438"&gt;&lt;span &gt;WEB401 - Building Highly Scalable ASP.NET Web Sites by Exploiting Asynchronous Programming Models&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 09:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7606"&gt;&lt;span &gt;BIN305 - Microsoft SQL Server 2005 Reporting Services: Advanced Report Design&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 10:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7433"&gt;&lt;span &gt;WEB314 - Server Communication with Microsoft Silverlight and ASP.NET AJAX&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 11:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7440"&gt;&lt;span &gt;WEB02-IS - Top Ten ASP.NET Scaling Tips&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 12:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7427"&gt;&lt;span &gt;WEB308 - Hidden Gems in ASP.NET 2.0&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 13:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7439"&gt;&lt;span &gt;WEB01-IS - ASP.NET: Why, What, How and When?&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 14:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7429"&gt;&lt;span &gt;WEB310 - The Next Release of ASP.NET – Significant Features Available Soon… (really soon)&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 15:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=8425"&gt;&lt;span &gt;WEB307 - Developing Data Driven Applications Using the New Dynamic Data Controls in ASP.NET&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 16:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7417"&gt;&lt;span &gt;WEB201 - Web Application Security&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 17:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7425"&gt;&lt;span &gt;WEB306 - Building Multi-Channel E-Commerce Solutions with Commerce Server 2007, ASP.NET, AJAX, Silverlight, WPF, SharePoint and BizTalk Server&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 18:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7437"&gt;&lt;span &gt;WEB318 - Web Client Software Factory (WCSF): Building Rich Internet Applications with ASP.NET AJAX and WCSF&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 19:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=8420"&gt;&lt;span &gt;WEB316 - Understanding ASP.NET Internals&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;strong&gt;Session 20:&lt;/strong&gt; &lt;/span&gt;&lt;a class="titlelink" tabindex="0" href="https://www.mseventseurope.com/Online/Registered/sessiondetail.aspx?instance=7665"&gt;&lt;span &gt;WEB403 - Securing your High-Risk ASP.NET Web Applications: A Case Study&lt;/span&gt;&lt;/a&gt;&lt;span &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-8099323722219988269?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/8099323722219988269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=8099323722219988269' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/8099323722219988269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/8099323722219988269'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/10/my-sessions.html' title='My Sessions'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6131304541131678493.post-5062914627794105531</id><published>2007-10-30T04:49:00.000-07:00</published><updated>2007-11-12T05:55:46.722-08:00</updated><title type='text'>TechEd Format</title><content type='html'>&lt;span &gt;The Microsoft TechEd Developers 2007 event boasts the following session formats:&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span &gt;&lt;strong&gt;Breakout Sessions&lt;/strong&gt;&lt;br /&gt;The new five day format provides an even greater choice of technical Breakout Sessions. Presented by industry experts and Microsoft product team members, TechEd Developers' Breakout Sessions are delivered in theatre-style format in rooms seating 140 to 700 people. Sessions are 75 minutes in length, including time for Q&amp;amp;A—so you can talk to the people who actually develop the products you use every day. All sessions are recorded and provided on the Post-Conference DVD to make sure delegates don’t miss any of the latest news.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;&lt;strong&gt;Interactive Sessions&lt;/strong&gt;&lt;br /&gt;Interactive Sessions are small and informal and provide you with an opportunity to interact with speakers, to ask questions and discuss topics. They can be a chalk-talk, based around a whiteboard or even an extended walk-through of a demo or product feature presented at an earlier breakout session. Interactive Sessions are 30-75 minutes in length and delivered in theatre-style format in rooms seating a maximum of 80 people.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Panel Discussions&lt;/strong&gt;&lt;br /&gt;Panel Discussions are lively debates with a mix of industry experts and Microsoft product team members on stage answering your questions. Panel Discussions are 75 minutes in length and delivered in theatre-style format in rooms seating 140 to 700 people.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Self-Paced Hands-on Labs&lt;/strong&gt;&lt;br /&gt;Self-Paced Hands-on Labs let you dive deeper into specific products and technologies at your own pace, with the support of experienced Microsoft Certified Trainers (MCTs). Self-Paced Hands-on Labs are 30-60 minutes in length and delivered at individual desktop workstations.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6131304541131678493-5062914627794105531?l=damonoram.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://damonoram.blogspot.com/feeds/5062914627794105531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6131304541131678493&amp;postID=5062914627794105531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/5062914627794105531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6131304541131678493/posts/default/5062914627794105531'/><link rel='alternate' type='text/html' href='http://damonoram.blogspot.com/2007/10/teched-format.html' title='TechEd Format'/><author><name>My name is Damon Oram.</name><uri>http://www.blogger.com/profile/02512417922404667930</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
