<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>DevCentral Weblogs</title><link>http://devcentral.f5.com/weblogs/mainfeed.aspx</link><description>weblogs on DevCentral</description><generator>Subtext Version 1.9.5.176</generator><item><title>20 Lines or Less #12</title><link>http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/24/20-lines-or-less-12.aspx</link><pubDate>Thu, 24 Jul 2008 21:51:31 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/24/20-lines-or-less-12.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/3484.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/3484.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/24/20-lines-or-less-12.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/cwalker/services/trackbacks/3484.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/cwalker/rss.aspx">20 Lines or Less #12</source><description>&lt;p&gt;&lt;em&gt;What could you do with your code in 20 Lines or Less?&lt;/em&gt; That's the question I ask every week, and every week I go looking to find cool new examples that show just how flexible and powerful iRules can be without getting in over your head.&lt;/p&gt;  &lt;p&gt;Here we go again, three more examples of the powerful and interesting things you can do with iRules in less than 21 lines. Dipping again into the forums, with a few tweaks here and there (don't worry, I stayed honest to the rule, just took out comments and extra case comparisons, that kind of thing), we've got an action packed 20LoL this week.  Here we go:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SSL iRule on a non-SSL VIP&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=26299&amp;amp;view=topic" href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=26299&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=26299&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is a great example of using a single iRule for both HTTP and HTTPS traffic. In the forum post Deb shows a cool trick to allow us to sneak SSL commands past the iRule interpreter so that they are there when we need them, if a cert is found, but aren't used when the connection turns out to be straight HTTP.  Pretty cool stuff.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {        &lt;br /&gt;  HTTP::header replace ClientIP [IP::remote_addr]         &lt;br /&gt;  if {[PROFILE::exists clientssl] == 1} {         &lt;br /&gt;    set cname "SSL::cipher name"   &lt;br /&gt;    set cbits "SSL::cipher bits"   &lt;br /&gt;    set cver "SSL::cipher version"   &lt;br /&gt;    HTTP::header replace SSLCipher [eval $cname]:[eval $cbits]-[eval $cver]   &lt;br /&gt;    if { [SSL::cert count] &amp;gt; 0} {         &lt;br /&gt;      HTTP::header replace SSLSubject [b64encode [X509::subject [SSL::cert 0]]]         &lt;br /&gt;      HTTP::header replace SSLClientCert [b64encode [SSL::cert 0]]         &lt;br /&gt;      HTTP::header replace WebProtocol "HTTPS-auth"         &lt;br /&gt;    } else {         &lt;br /&gt;      HTTP::header replace WebProtocol "HTTPS"         &lt;br /&gt;    }         &lt;br /&gt;  } else {         &lt;br /&gt;    HTTP::header replace WebProtocol "HTTP"         &lt;br /&gt;  }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Extracting DHCP Info&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=25727&amp;amp;view=topic" href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=25727&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=25727&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This example for extracting DHCP info is very specific. It's looking for option 82 (Support for Routed Bridge Encapsulation) which may not be particularly useful to everyone out there, but the example stands as a great display of how iRules can help you tear into almost any kind of data, even DHCP data, and make intelligent decisions or actions based on that. Sure, it might take some re-working for your purposes, but what a cool example to get started with!&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;when CLIENT_DATA {        &lt;br /&gt;  binary scan [UDP::payload] x240H* dhcp_option_payload         &lt;br /&gt;  set option 0         &lt;br /&gt;  set option_length [expr {([UDP::payload length] -240) * 2 }]         &lt;br /&gt;  for {set i 0} {$option != 52 &amp;amp;&amp;amp; $i &amp;lt; $option_length} {incr i [expr { $length * 2 +2 }]} {         &lt;br /&gt;    binary scan $dhcp_option_payload x[expr $i]a2 option         &lt;br /&gt;    incr i 2         &lt;br /&gt;    binary scan $dhcp_option_payload x[expr $i]a2 length_hex         &lt;br /&gt;    set length [expr 0x$length_hex]         &lt;br /&gt;  }         &lt;br /&gt;  if { $i &amp;lt; $option_length } {         &lt;br /&gt;    incr i -[expr { $length * 2 -2 }]         &lt;br /&gt;    binary scan $dhcp_option_payload x[expr $i]a2 length_hex         &lt;br /&gt;    set length [expr 0x$length_hex]         &lt;br /&gt;    incr i 2         &lt;br /&gt;    binary scan $dhcp_option_payload x[expr $i]a[expr { $length * 2 }] circuit_id         &lt;br /&gt;  } else {         &lt;br /&gt;    drop         &lt;br /&gt;  }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;URI re-writing based on Load Balancing decision&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=25791&amp;amp;view=topic" href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=25791&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=25791&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Talk about a chicken and egg demonstration. Hearing the title, you might think I have it backwards. When making this kind of decision in an iRule, the URI is often used to help make the load balancing decision. In this case, it's just the opposite. In this example we're letting the BIG-IP make a load balancing decision, then going back and updating the URI based on that decision, before the request is sent to the servers.  Very cool stuff!&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST_SEND {        &lt;br /&gt;  set uri [string tolower [clientside {HTTP::uri}]]         &lt;br /&gt;  log local0. "[IP::client_addr]:[TCP::client_port]: selected server details: [LB::server] - \$uri: $uri"         &lt;br /&gt;  if {[IP::addr [LB::server addr] equals 10.207.225.101] or [IP::addr [LB::server addr] equals 10.207.225.102] or [IP::addr [LB::server addr] equals 10.207.225.103] }{         &lt;br /&gt;    log local0. "[IP::client_addr]:[TCP::client_port]: matched server check for .3 or .4"         &lt;br /&gt;    switch -glob [HTTP::uri] {         &lt;br /&gt;      "*/gsfo/gsfopub*" {         &lt;br /&gt;        clientside {HTTP::uri "/Async/CMReceive.ashx"}         &lt;br /&gt;        log local0. "[IP::client_addr]:[TCP::client_port]: updated URI to /Async/CMReceive.ashx"         &lt;br /&gt;      }         &lt;br /&gt;      "*/era/erapub*" {         &lt;br /&gt;        clientside {HTTP::uri "/Async/ERAReceive.ashx"}         &lt;br /&gt;        log local0. "[IP::client_addr]:[TCP::client_port]: updated URI to /Async/ERAReceive.ashx"         &lt;br /&gt;      }         &lt;br /&gt;      default {         &lt;br /&gt;        log local0. "[IP::client_addr]:[TCP::client_port]: didn't match URI checks"         &lt;br /&gt;      }         &lt;br /&gt;    }         &lt;br /&gt;  }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There you have it, the forums deliver yet again. I have to say I love checking out all these cool, new, compact examples of iRules goodness. Many thanks to the awesome &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt; community for their continued contributions. I'll see you next week for another 20 Lines or Less.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:562613d6-178b-4fc1-b788-51658534cdfd" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/20%20Lines%20or%20Less" rel="tag"&gt;20 Lines or Less&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DHCP" rel="tag"&gt;DHCP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/URI%20Rewriting" rel="tag"&gt;URI Rewriting&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SSL%20Information" rel="tag"&gt;SSL Information&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin%20Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/3484.aspx" width="1" height="1" /&gt;</description><dc:creator>Colin Walker</dc:creator></item><item><title>Madness? THIS. IS. SOA!</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/24/3481.aspx</link><pubDate>Thu, 24 Jul 2008 11:35:05 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/24/3481.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3481.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3481.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/24/3481.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3481.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/macvittie/rss.aspx">Madness? THIS. IS. SOA!</source><description>&lt;p&gt;There is an interesting war being fought in the blogosphere over the use (or overuse) of ESB (enterprise service buses) to build out a SOA (service oriented architecture). It certainly appears that &lt;a href="http://weblog.infoworld.com/realworldsoa/" target="_blank"&gt;Dave Linthicum&lt;/a&gt; is taking on the role of &lt;a href="http://en.wikipedia.org/wiki/Leonidas_I" target="_blank"&gt;Leonidas and the Spartans&lt;/a&gt; at the battle of &lt;a href="http://en.wikipedia.org/wiki/Battle_of_Thermopylae" target="_blank"&gt;Thermopylae&lt;/a&gt; while everyone else is on the side of &lt;a href="http://en.wikipedia.org/wiki/Xerxes_I_of_Persia" target="_blank"&gt;Xerxes&lt;/a&gt; and the Persians. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblog.infoworld.com/realworldsoa/archives/2008/07/esbs_on_trial.html" target="_blank"&gt;Dave is defending his view&lt;/a&gt; that ESBs are overused and often, apparently, misused against a host of ESB and SOA focused bloggers like &lt;a href="http://blogs.zdnet.com/service-oriented/" target="_blank"&gt;Joe McKendrick&lt;/a&gt; and &lt;a href="http://schneider.blogspot.com/2008/07/linthicum-on-esbs.html" target="_blank"&gt;Jeff Schneider&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;But everyone is talking in abstractions, and no one's really giving anyone a good idea of when to use an ESB or when to avoid them. No one seems to be looking at &lt;em&gt;why &lt;/em&gt;people are or aren't using ESBs and getting to the root of the question - when are they appropriate for use in a SOA and when are they simply being implemented for the sake of being implemented? &lt;/p&gt;  &lt;p&gt;So when &lt;em&gt;should&lt;/em&gt; you consider implementing an ESB as part of your SOA? &lt;/p&gt;  &lt;p&gt;1. &lt;strong&gt;You have a need to orchestrate services&lt;/strong&gt;. Orchestration of services is one of the greatest strengths of an ESB. ESBs layer transaction management around orchestration of services and provide value when two or more services need to be composed into a single "transaction". &lt;/p&gt;  &lt;p&gt;2. &lt;strong&gt;You have a need to integrate middleware messaging with applications&lt;/strong&gt;. Let's face it, service-enabling MQ or JMS is a pain in the ... neck. An ESB makes this process simple and allows for orchestration of asynchronous services that might otherwise be difficult to integrate into an architecture. &lt;/p&gt;  &lt;p&gt;3. &lt;strong&gt;Multi-application updates (a la integration).&lt;/strong&gt; I know this is an unpopular thing to say, but sometimes the best solution to the problem of enterprise application integration in a SOA world is to use an ESB. ESBs are more than capable of orchestrating updates in a parallel processing scenario, and if you have multiple legacy applications or services that need updating during the same process, then an ESB is going to provide significant value in implementing such processes. &lt;/p&gt;  &lt;p&gt;4. &lt;strong&gt;You plan on doing any of the above in the future. &lt;/strong&gt;Laying the foundation for orchestration, integration, and parallel processing of messages means laying the foundation now, not rip-and-replace later. If there are plans in your SOA's future that would include an ESB, then implement sooner rather than later. &lt;/p&gt;  &lt;p&gt;SOA is supposed to help align IT with the business. If you need an ESB, or three or ten, to accomplish that goal, then that's what you need to do. While it may not be a "pure" SOA in implementation, if you're staying true to its goal then it's definitely a "pure" SOA in design and intent. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/Lori/MacVittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:33be8e1f-897f-47cd-a458-4857c86d7dac" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ESB" rel="tag"&gt;ESB&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SOA" rel="tag"&gt;SOA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/architecture" rel="tag"&gt;architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/enterprise%20architecture" rel="tag"&gt;enterprise architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/McKendrick" rel="tag"&gt;McKendrick&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Linthicum" rel="tag"&gt;Linthicum&lt;/a&gt;,&lt;a href="http://technorati.com/tags/EAI" rel="tag"&gt;EAI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/orchestration" rel="tag"&gt;orchestration&lt;/a&gt;&lt;/div&gt; &lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3481.aspx" width="1" height="1" /&gt;</description><dc:creator>Lori MacVittie</dc:creator></item><item><title>Taco Tuesday with Jason Hoffman, Joyent CTO</title><link>http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/23/taco-tuesday-with-jason-hoffman-joyent-cto.aspx</link><pubDate>Wed, 23 Jul 2008 18:09:39 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/23/taco-tuesday-with-jason-hoffman-joyent-cto.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/3479.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/3479.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/23/taco-tuesday-with-jason-hoffman-joyent-cto.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/cwalker/services/trackbacks/3479.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/cwalker/rss.aspx">Taco Tuesday with Jason Hoffman, Joyent CTO</source><description>&lt;p&gt;So it looks like Joe and I are going to &lt;em&gt;have&lt;/em&gt; to take a trip down to San Fran to check out &lt;a target="_blank" href="http://www.yelp.com/biz/nicks-crispy-tacos-san-francisco"&gt;Nick's Crispy Tacos&lt;/a&gt; with &lt;a target="_blank" href="http://joyent.com/about/management-team/jason-a-hoffman/"&gt;Jason Hoffman&lt;/a&gt;, CTO and co-founder of &lt;a target="_blank" href="http://www.joyent.com/"&gt;Joyent&lt;/a&gt;. Jason puts on a "Taco Tuesday" on the third Tuesday of just about every month.  We've been invited down to check it out and geek out over the hawesome iRules/iControl/Ruby/*Nix/geeky stuff they're doing. Yeah...I'm not &lt;em&gt;completely&lt;/em&gt; geeking out and excited, honest. Don't worry though, we'll try to make the best of it.&lt;/p&gt;
&lt;p&gt;We got a fantastic opportunity today to talk with Jason about &lt;a target="_blank" href="http://www.joyent.com/"&gt;Joyent&lt;/a&gt;, what they're doing, their architecture, their background, etc. and how they're heavily leveraging F5 technology to make it all happen.  For those of you that don't know, Joyent is a long-time F5 customer that provides a wickedly cool, scalable, flexible cloud infrastructure to users ranging anywhere from the Mom and Pop size to truly robust Enterprise level applications. You may have seen &lt;a target="_blank" href="http://devcentral.f5.com/weblogs/Joe/archive/2008/07/15/scaling-ruby-on-rails-to-1-billion-page-views-a.aspx"&gt;Joe's blog post&lt;/a&gt; about Joyent hosting &lt;a target="_blank" href="http://www.linkedin.com/"&gt;LinkedIn's&lt;/a&gt; BumperSticker &lt;a target="_blank" href="http://www.linkedin.com/"&gt;Facebook&lt;/a&gt; app that recently surpassed a billion page views per month. That spurred an offer to chat, and Jason was more than happy to oblige.&lt;/p&gt;
&lt;p&gt;It was absolutely fantastic to talk to &lt;a target="_blank" href="http://joyent.com/about/management-team/jason-a-hoffman/"&gt;Jason&lt;/a&gt; who himself is an avid engineer that's got a long history with Unix and many of the flavors of coding that go along with it. As one of the first major adopters of &lt;a target="_blank" href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt; and, in fact, the very first person to check in source to the Rails source control system, he definitely knows what he's talking about when it comes to *Nix programming, Ruby, and &lt;a target="_blank" href="http://www.rubyonrails.org/"&gt;RoR&lt;/a&gt;. It turns out we even share a common love for and history with FreeBSD, go figure.&lt;/p&gt;
&lt;p&gt;Over the course of our discussion we got to chat with Jason about his role at &lt;a target="_blank" href="http://www.joyent.com/"&gt;Joyent&lt;/a&gt;, what they're delivering to users, why it's unique and powerful, obstacles they faced along they way, how they got around them which, I'm happy to say, largely included F5 technology and specifically iRules and iControl, and many other such things impressively full of win. From many of their security policies relying on iRules instead of FireWalls, to iControl being an integral part of their provisioning system, to building iRules as solutions to countless customer problems or requirements, these guys are definitely power users and avid &lt;a target="_blank" href="http://devcentral.f5.com" title=""&gt;DevCentral&lt;/a&gt; members, I'm happy to say.&lt;/p&gt;
&lt;p&gt;We also got to talk about the modern application, how it's architected, how the old school ways of thinking don't apply anymore and the massive benefits that can come from allowing yourself to see the possibilities with a modern, flexible, layered architecture. This architecture with powerful caches, application aware network devices serving large portions of the application functionality, and scalable, interchangeable back ends thanks to the load balancing that also occurs at that tier is hugely powerful and really more and more of a "must have" as things continue to progress in the application and application delivery world. Pretty darn cool stuff to hear from a PhD helping to run a hugely popular and successful hosting company. How's that for real world application?&lt;/p&gt;
&lt;p&gt; This is the &lt;em&gt;exact&lt;/em&gt; message I (we) have been pushing for a long time. Every time I talk about "preaching the good word", this is what I'm talking about. Times have changed, technology has improved, and F5 can be a big part of building a powerful, flexible, scalable, reliable architecture if you just let yourself think about things in the new, more modern world that Jason and Joyent have fully embraced. It's allowing them to be as powerful and usable as they are at extremely reasonable costs with incredible scalability as needed.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/interviews/archive/2008/07/23/scaling-in-the-cloud-with-joyents-jason-hoffman.aspx" target="_blank"&gt;Check out the podcast&lt;/a&gt; to get more of the details. Obviously I'm excited, and am currently trying to refrain from a big squeeeee of geekitude, but that's just how I get when I get to riff about awesome technology with even more awesome people.&lt;/p&gt;
&lt;p&gt;Stay tuned for the follow up where Joe and I tear into some tacos, margaritas and hopefully some iControl/Ruby/iRules with Jason down in his neck of the woods. Not that it's been approved yet or anything, but hey, I can hope, right?&lt;/p&gt;
&lt;p&gt;Thanks again Jason for the great chat, and keep up the killer work.&lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b093a7ea-b5c6-4e40-a68a-59e57375b847" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/iRules"&gt;iRules&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/iControl"&gt;iControl&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Ruby"&gt;Ruby&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/iContRuby"&gt;iContRuby&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/LinkedIn"&gt;LinkedIn&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/FaceBook"&gt;FaceBook&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/BumperSticker"&gt;BumperSticker&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Joyent"&gt;Joyent&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Jason%20Hoffman"&gt;Jason Hoffman&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Colin%20Walker"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/3479.aspx" width="1" height="1" /&gt;</description><dc:creator>Colin Walker</dc:creator></item><item><title>4 reasons not to use mod_security</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/23/3477.aspx</link><pubDate>Wed, 23 Jul 2008 11:53:54 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/23/3477.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3477.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3477.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/23/3477.aspx#comment</comments><slash:comments>13</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3477.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/macvittie/rss.aspx">4 reasons not to use mod_security</source><description>&lt;p&gt;&lt;a target="_blank" href="http://www.apache.org"&gt;Apache&lt;/a&gt; is a great web server if for no other reason than it offers more flexibility through modules than just about any other web server. You can plug-in all sorts of modules to enhance the functionality of &lt;a target="_blank" href="http://www.apache.org"&gt;Apache&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;But as I often say, &lt;em&gt;&lt;a target="_blank" href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/07/3428.aspx"&gt;just because you can doesn't mean you should&lt;/a&gt;. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;One of the modules you can install is &lt;em&gt;mod_security.&lt;strong&gt; &lt;/strong&gt;&lt;/em&gt;If you aren't familiar with &lt;em&gt;mod_security&lt;/em&gt;, essentially it's a "roll your own" web application firewall plug-in for the Apache web server. &lt;/p&gt;
&lt;p&gt;Some of the security functions you can implement via &lt;em&gt;mod_security&lt;/em&gt; are: &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/8662a86328a6_7686/netsec_2.jpg"&gt;&lt;img width="258" height="176" border="0" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/8662a86328a6_7686/netsec_thumb.jpg" alt="netsec" style="border: 0px none ; margin: 0px 10px 10px 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Simple filtering &lt;/li&gt;
    &lt;li&gt;Regular Expression based filtering &lt;/li&gt;
    &lt;li&gt;URL Encoding Validation &lt;/li&gt;
    &lt;li&gt;Unicode Encoding Validation &lt;/li&gt;
    &lt;li&gt;Auditing &lt;/li&gt;
    &lt;li&gt;Null byte attack prevention &lt;/li&gt;
    &lt;li&gt;Upload memory limits &lt;/li&gt;
    &lt;li&gt;Server identity masking &lt;/li&gt;
    &lt;li&gt;Built in Chroot support &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using &lt;em&gt;mod_security&lt;/em&gt; you can also implement protocol security, which is an excellent idea for ensuring that holes in protocols aren't exploited. If you aren't sold on protocol security you should read up on the &lt;a target="_blank" href="http://securosis.com/2008/07/08/dan-kaminsky-discovers-fundamental-issue-in-dns-massive-multivendor-patch-released/"&gt;recent DNS vulnerability&lt;/a&gt; discovered by Dan Kaminsky - it's all about the protocol and has nothing to do with vulnerabilities introduced by implementation. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;mod_security&lt;/em&gt; provides many options for validating URLs, URIs, and application data. You are, essentially, implementing a custom web application firewall using configuration directives. &lt;/p&gt;
&lt;p&gt;If you're on this path then you probably agree that a web application firewall is a good thing, so why would I caution against using &lt;em&gt;mod_security&lt;/em&gt;? &lt;/p&gt;
&lt;p&gt;Well, there's four reasons, actually. &lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;It runs on every web server.&lt;/strong&gt; This is an additional load on the servers that can be easily offloaded for a more efficient architecture. The need for partial duplication of configuration files across multiple machines can also result in the introduction of errors or extraneous configuration that is unnecessary. Running &lt;em&gt;mod_security&lt;/em&gt; on every web server decreases capacity to serve users and applications accordingly, which may require additional servers to scale to meet demand.       &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;You have to become a security expert. &lt;/strong&gt;You have to understand the attacks you are trying to stop in order to write a rule to prevent them. So either you become an expert or you trust a third-party to be the expert. The former takes time and that latter takes guts, as you're introducing unnecessary risk by trusting a third-party.       &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;You have to become a protocol expert. &lt;/strong&gt;In addition to understanding all the attacks you're trying to prevent, you must become an expert in the HTTP protocol. Part of providing web application security is to sanitize and enforce the HTTP protocol to ensure it isn't abused to create a hole where none previously appeared. You also have to become an expert in Apache configuration directives, and the specific directives used to configure &lt;em&gt;mod_security&lt;/em&gt;.       &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;The configuration must be done manually. &lt;/strong&gt;Unless you're going to purchase a commercially supported version of mod_security, you're writing complex rules manually. You'll need to brush up on your regular expression skills if you're going to attempt this. Maintaining those rules is just as painful, as any update necessarily requires manual intervention. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Of course you could introduce an additional instance of Apache with &lt;em&gt;mod_security&lt;/em&gt; installed that essentially proxies all requests through &lt;em&gt;mod_security&lt;/em&gt;, thus providing a centralized security architecture, but at that point you've just introduced a huge bottleneck into your infrastructure. If you're already load-balancing multiple instances of a web site or application, then it's not likely that a single instance of Apache with &lt;em&gt;mod_security&lt;/em&gt; is going to be able to handle the volume of requests without increasing downtime or degrading performance such that applications might as well be down because they're too painful to use. &lt;/p&gt;
&lt;p&gt;Centralizing security can &lt;a target="_blank" href="http://devcentral.f5.com/weblogs/macvittie/archive/2007/03/13/2787.aspx"&gt;improve performance&lt;/a&gt;, reduce the potential avenues of risk through configuration error, and keeps your security up-to-date by providing easy access to updated signatures, patterns, and defenses against existing and emerging web application attacks. &lt;a target="_blank" href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html"&gt;Some web application firewalls&lt;/a&gt; offer pre-configured templates for specific applications like &lt;a target="_blank" href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; OWA, providing a simple configuration experience that belies the depth of security knowledge applied to protected the application. Web application firewalls can enable compliance with &lt;a target="_blank" href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/22/3287.aspx"&gt;requirement 6.6&lt;/a&gt; of &lt;a target="_blank" href="https://www.pcisecuritystandards.org/"&gt;PCI DSS&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;And they're built to scale, which means the scenario in which &lt;em&gt;mod_security&lt;/em&gt; is used as a reverse proxy to protect all web servers from harm but quickly becomes a bottleneck and impediment to performance doesn't happen with purpose-built web application firewalls. &lt;/p&gt;
&lt;p&gt;If you're considering using &lt;em&gt;mod_security&lt;/em&gt; then you already recognize the value of and need for a &lt;a target="_blank" href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html"&gt;web application firewall&lt;/a&gt;. That's great. But consider carefully &lt;em&gt;where &lt;/em&gt;you will deploy that web application firewall, because the decision will have an impact on the performance and availability of your site and applications. &lt;/p&gt;
&lt;p&gt;   &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.onlamp.com/pub/a/apache/2003/11/26/mod_security.html"&gt;&lt;/a&gt;&lt;/p&gt;
 
&lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img width="18" height="18" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" alt="Follow me on Twitter" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" alt="" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img width="18" height="18" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" alt="View Lori's profile on SlideShare" /&gt;&lt;/a&gt;&lt;a border="0" href="http://lmacvittie.tumblr.com"&gt;&lt;img width="18" height="18" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" title="Follow me on Tumblr" alt="" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" title="Posterous" alt="" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/Lori/MacVittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" alt="" /&gt;&lt;/a&gt; &lt;a href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1=" title="Subscribe using any feed reader!"&gt;&lt;img width="125" height="18" border="0" src="http://s9.addthis.com/button1-fd.gif" alt="AddThis Feed Button" /&gt;&lt;/a&gt; &lt;a target="_blank" href="http://www.addthis.com/bookmark.php" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" title="Bookmark and Share"&gt;&lt;img width="125" height="18" border="0" src="http://s9.addthis.com/button1-share.gif" alt="Bookmark and Share" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:608b5d2a-fb32-4e5b-8ccb-c2a2052cdbc2" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/MacVittie"&gt;MacVittie&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/application%20security"&gt;application security&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/security"&gt;security&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/web%20application%20firewall"&gt;web application firewall&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/http"&gt;http&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/internet"&gt;internet&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/web"&gt;web&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/microsoft"&gt;microsoft&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/apache"&gt;apache&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/mod_security"&gt;mod_security&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Kaminsky"&gt;Kaminsky&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/protocol%20security"&gt;protocol security&lt;/a&gt;&lt;/div&gt;
&lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3477.aspx" width="1" height="1" /&gt;</description><dc:creator>Lori MacVittie</dc:creator></item><item><title>New ASM Discussion Forum is Live</title><link>http://devcentral.f5.com/weblogs/JeffB/archive/2008/07/22/3475.aspx</link><pubDate>Tue, 22 Jul 2008 20:12:25 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/JeffB/archive/2008/07/22/3475.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/JeffB/comments/3475.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/JeffB/comments/commentRss/3475.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/JeffB/archive/2008/07/22/3475.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/JeffB/services/trackbacks/3475.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/JeffB/rss.aspx">New ASM Discussion Forum is Live</source><description>&lt;p&gt;After many requests, we've just launched a &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;view=topics&amp;amp;forumid=47"&gt;new discussion area&lt;/a&gt; for folks that want to talk about the F5 &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html" target="_blank"&gt;Application Security Module (ASM)&lt;/a&gt;. This is a new opportunity for the community - existing users or those just curious about ASM - to &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;view=topics&amp;amp;forumid=47"&gt;post questions&lt;/a&gt;, share ideas, and generally discuss the possibilities and solutions available with ASM. &lt;/p&gt; &lt;p&gt;To learn more about ASM, you can &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html" target="_blank"&gt;go here&lt;/a&gt;. When you combine ASM with other technologies from folks like our &lt;a href="http://devcentral.f5.com/weblogs/interviews/archive/2008/03/10/jeremiah-grossman-of-whitehat-security.aspx"&gt;friends&lt;/a&gt; at &lt;a href="http://www.whitehatsec.com/" target="_blank"&gt;White Hat Security&lt;/a&gt;, there are some interesting applications and scenarios that will surely spark some interesting dialog.&lt;/p&gt; &lt;p&gt;You know what I like most about this new Forum? Some of the most enthusiastic supporters were actually our own ASM team. They're already active in the other forums, passionate about this technology, and are excited to &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;view=topics&amp;amp;forumid=47"&gt;discuss ASM&lt;/a&gt; with the DevCentral community and you.&lt;/p&gt; &lt;p&gt;So, have at it and enjoy.&lt;br /&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1d038a41-140e-4757-b784-9afbe9b8c6cd" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/devcentral" rel="tag"&gt;devcentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ASM" rel="tag"&gt;ASM&lt;/a&gt;, &lt;a href="http://technorati.com/tags/application%20security" rel="tag"&gt;application security&lt;/a&gt;, &lt;a href="http://technorati.com/tags/white%20hat%20security" rel="tag"&gt;white hat security&lt;/a&gt;, &lt;a href="http://technorati.com/tags/jeff%20browning" rel="tag"&gt;jeff browning&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/JeffB/aggbug/3475.aspx" width="1" height="1" /&gt;</description><dc:creator>Jeff Browning</dc:creator></item><item><title>Your Stack Trace, Show It To Me</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/22/3474.aspx</link><pubDate>Tue, 22 Jul 2008 14:46:15 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/22/3474.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3474.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3474.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/22/3474.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3474.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/macvittie/rss.aspx">Your Stack Trace, Show It To Me</source><description>&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/YourStackTraceShowItToMe_771F/bad-polldaddy_2.jpg" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 10px 0px; border-right-width: 0px" height="154" alt="bad-polldaddy" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/YourStackTraceShowItToMe_771F/bad-polldaddy_thumb.jpg" width="244" align="left" border="0" /&gt;&lt;/a&gt;Of all the reasons you need an &lt;a href="http://www.f5.com/products/big-ip" target="_blank"&gt;application delivery controller&lt;/a&gt; capable of bi-directional inspection of application data this is one of the best. I was trying to check out the results of a poll on &lt;a href="http://www.polldaddy.com" target="_blank"&gt;PollDaddy.com&lt;/a&gt; and ended up with this beautiful &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt; .NET error page, filled with so much valuable information that potential attackers must even now be laughing in that "evil genius" laugh you so often hear in retro-cartoons. &lt;/p&gt;  &lt;p&gt;This error page tells me so many things about the application, it's environment, and its associated infrastructure that it should be a crime to let this information out. I know it's a Microsoft .NET C# application, and what the underlying directory structure looks like. I know it's using a third party library for authentication and authorization (and where it's located) and I can tell you exactly what version of .NET is running (Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433). &lt;/p&gt;  &lt;p&gt;I also get an idea of internal data structure, as a nice piece of code is included in the error page. Hmmm...looks like "user ids" are numeric in the database. &lt;/p&gt;  &lt;p&gt;Now I'm no evil genius, so I can only imagine just how much this tells a &lt;em&gt;real &lt;/em&gt;evil genius. I do know, however, that this simply an unacceptable security practice and that it should never happen. Ever. &lt;/p&gt;  &lt;p&gt;We often &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=41" target="_blank"&gt;discuss catching "errors",&lt;/a&gt; but that's usually wrapped around &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/06/27/3406.aspx" target="_blank"&gt;catching 404&lt;/a&gt; (not found) errors. Using &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=75" target="_blank"&gt;iRules&lt;/a&gt; you can easily catch 500 (Internal server errors) as well as any other HTTP status code. &lt;/p&gt;  &lt;p&gt;And even if the status code somehow comes back as "200 OK" but the &lt;em&gt;content &lt;/em&gt;is full of juicy application and infrastructure information, you can use &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=75" target="_blank"&gt;iRules&lt;/a&gt; to deal with it. iRules can verify that the content of a page is what it should be and if isn't, you can do something about it. Rewrite it. Change it. Redirect the user to a new page. Show a page full of dancing bananas or a picture of a whale. Whatever you want. &lt;/p&gt;  &lt;p&gt;The point is that you recognize when information that may lead to or assist in perpetrating a breach is being presented to users and that you prevent it from happening. The chances of the information being used against you is minimal, but when you have the opportunity to mitigate that risk entirely, why wouldn't you? &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/Lori/MacVittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:163aaf68-f5e3-46c1-80bd-13675e3474ea" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/data%20scrubbing" rel="tag"&gt;data scrubbing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20delivery" rel="tag"&gt;application delivery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20security" rel="tag"&gt;application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/polldaddy.com" rel="tag"&gt;polldaddy.com&lt;/a&gt;&lt;/div&gt; &lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3474.aspx" width="1" height="1" /&gt;</description><dc:creator>Lori MacVittie</dc:creator></item><item><title>Interactive F5 SOA Reference Architecture</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/22/3473.aspx</link><pubDate>Tue, 22 Jul 2008 10:17:59 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/22/3473.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3473.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3473.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/22/3473.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3473.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/macvittie/rss.aspx">Interactive F5 SOA Reference Architecture</source><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;I do an awful lot of talking about SOA: &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2007/02/21/2770.aspx" target="_blank"&gt;problems&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/02/21/3086.aspx" target="_blank"&gt;challenges&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/03/04/3096.aspx" target="_blank"&gt;concepts&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/08/3243.aspx" target="_blank"&gt;solutions&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/04/07/3137.aspx" target="_blank"&gt;security&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/02/19/3084.aspx" target="_blank"&gt;products&lt;/a&gt;. But I don't often present "the big picture", and certainly rarely discuss how &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt; and SOA go together like ice-cream and pretzels. I know, that isn't a traditional simile, but if you've ever tried hot pretzels and ice-cream you might agree with me in saying that while they don't &lt;em&gt;sound &lt;/em&gt;like they go together they really do, and they do so well. &lt;/p&gt;  &lt;p&gt;It's also applicable because when you think of ice-cream you don't immediately think of pretzels, and I'm fairly certain when you think of SOA you don't think of &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt;. But once you've tried ice-cream and pretzels, you probably will associate the two, and the same is true of SOA and &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;But it's a lot less of an investment to run out and grab a hot pretzel and some ice-cream than it is to invest in all the products that make up an application delivery network. So you probably want to know a bit more before you consider it an option. &lt;/p&gt;  &lt;p&gt;SOA reference architectures are nothing new, and there's a fairly well-defined reference architecture model for folks to use in order to fit all the applicable pieces together and understand what each entails. So what this interactive presentation offers is a look at &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt; and how it fits into that reference architecture in an interactive Articulate presentation, and the suggestion to go ahead - try the pretzel with some ice-cream. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/media/Articulate/soara/player.html" target="_blank"&gt;Launch the Interactive F5 SOA Reference Architecture&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Additional resources: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.f5.com/pdf/white-papers/soa-infrastructure-reference-wp.pdf" target="_blank"&gt;F5 SOA Reference Architecture (White Paper&lt;/a&gt;) &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.f5.com/pdf/white-papers/soa-challenges-solutions-wp.pdf" target="_blank"&gt;SOA Challenges and Solutions (White Paper)&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/Lori/MacVittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f918f428-13d9-427c-b810-b34a3daf2e85" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SOA" rel="tag"&gt;SOA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20delivery" rel="tag"&gt;application delivery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%20services" rel="tag"&gt;web services&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTTP" rel="tag"&gt;HTTP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/internet" rel="tag"&gt;internet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web" rel="tag"&gt;web&lt;/a&gt;,&lt;a href="http://technorati.com/tags/architecture" rel="tag"&gt;architecture&lt;/a&gt;&lt;/div&gt; &lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3473.aspx" width="1" height="1" /&gt;</description><dc:creator>Lori MacVittie</dc:creator></item><item><title>Does your virtualization strategy create an SEP field?</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/21/3471.aspx</link><pubDate>Mon, 21 Jul 2008 10:33:35 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/21/3471.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3471.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3471.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/21/3471.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3471.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/macvittie/rss.aspx">Does your virtualization strategy create an SEP field?</source><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;There is a lot of hype around all types of virtualization today, with one of the primary drivers often cited being a reduction in management costs. I was pondering whether or not that hype was true, given the amount of work that goes into setting up not only the virtual image, but the infrastructure necessary to properly deliver the images and the applications they contain. &lt;/p&gt;  &lt;p&gt;We've been using imaging technology for a long time, especially in lab and testing environments. It made sense then because a lot of work goes into setting up a server and the applications running on it before it's "imaged' for rapid deployment use. Virtual images that run inside virtualization servers like &lt;a href="http://www.vmware.com" target="_blank"&gt;VMWare&lt;/a&gt; brought not just the ability to rapidly deploy a new server and its associated applications, but the ability to do so in near real-time. &lt;/p&gt;  &lt;p&gt;But it's not the virtualization of the operating system that really offers a huge return on investment, it's the virtualization of the applications that are packaged up in a virtual image that offers the most benefits. While there's certainly a lot of work that goes into deploying a server OS - the actual installation, configuration, patching, more patching, and licensing - there's even more work that goes into deploying an application simply because they can be ... fussy. So once you have a server and application configured and ready to deploy, it certainly makes sense that you'd want to "capture" it so that it can be rapidly deployed in the future. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OSVirtualizationShellacforyourApplicatio_362D/talktothehand_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 10px 5px 0px; border-left: 0px; border-bottom: 0px" height="260" alt="talktothehand" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OSVirtualizationShellacforyourApplicatio_362D/talktothehand_thumb.jpg" width="260" align="left" border="0" /&gt;&lt;/a&gt; Without the proper infrastructure, however, the benefits can be drastically reduced. Four questions immediately come to mind that require some answers: &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Where will the images be stored? &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;How will you manage the applications running on deployed virtual images?&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;What about updates and patches to not only the server OS but the applications themselves? &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;What about changes to your infrastructure?&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;The savings realized by reducing the management and administrative costs of building, testing, and deploying an application in a virtual environment can be negated by a simple change to your infrastructure, or the need to upgrade/patch the application or operating system. Because the image is a basically a snapshot, that snapshot needs to change as the environment in which it runs changes. And the environment means more than just the server OS, it means the network, application, and delivery infrastructure. &lt;/p&gt;  &lt;p&gt;Addressing the complexity involved in such an environment requires an intelligent, flexible infrastructure that supports virtualization. And not just OS virtualization, but &lt;a href="http://www.f5.com/news-press-events/news/2008/20080225.html" target="_blank"&gt;other forms of virtualization&lt;/a&gt; such as server virtualization and storage or &lt;a href="http://www.f5.com/glossary/file-virtualization.html" target="_blank"&gt;file virtualization&lt;/a&gt;. There's a lot more to virtualization than just setting up a &lt;a href="http://www.vmware.com" target="_blank"&gt;VMWare&lt;/a&gt; server, creating some images and slapping each other on the back for a job well done. If your infrastructure isn't ready to support a virtualized environment then you've simply shifted the costs - and responsibility - associated with deploying servers and applications to someone else and, in many cases, several someone elses. &lt;/p&gt;  &lt;p&gt;If you haven't considered &lt;em&gt;how &lt;/em&gt;you're going to deliver the applications on those virtual images then you're in danger of simply shifting the costs of delivering applications elsewhere. Without a solid infrastructure that can support the &lt;a href="http://devcentral.f5.com/wiki/default.aspx/iControl/VMWareAutomation.html" target="_blank"&gt;dynamic environment created by virtual imaging&lt;/a&gt; the benefits you think you're getting quickly diminish as other groups are suddenly working overtime to configure and manage the rest of the infrastructure necessary to deliver those images and applications to servers and users. &lt;/p&gt;  &lt;p&gt;We often talk about &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/14/3262.aspx" target="_blank"&gt;silos in terms of network and applications' groups&lt;/a&gt;; but virtualization has the potential to create yet another silo, and that silo may be taller and more costly than anyone has yet considered. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/07/3235.aspx" target="_blank"&gt;Virtualization has many benefits&lt;/a&gt; to you and your organization. Consider carefully whether you're infrastructure is prepared to support virtualization or risk discovering that implementing a virtualized solution is creating an SEP (Somebody Else's Problem) field around delivering and managing those images. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/Lori/MacVittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:95fe4ca2-6132-4a04-b652-8429105440ca" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/virtualization" rel="tag"&gt;virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/os%20virtualization" rel="tag"&gt;os virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/vmware" rel="tag"&gt;vmware&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20delivery" rel="tag"&gt;application delivery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/infrastructure" rel="tag"&gt;infrastructure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/strategy" rel="tag"&gt;strategy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/server%20virtualization" rel="tag"&gt;server virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/file%20virtualization" rel="tag"&gt;file virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/storage%20virtualization" rel="tag"&gt;storage virtualization&lt;/a&gt;&lt;/div&gt; &lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3471.aspx" width="1" height="1" /&gt;</description><dc:creator>Lori MacVittie</dc:creator></item><item><title>DevCentral Top5 7/18/2008</title><link>http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/18/devcentral-top5-7182008.aspx</link><pubDate>Fri, 18 Jul 2008 19:39:05 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/18/devcentral-top5-7182008.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/3470.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/3470.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/18/devcentral-top5-7182008.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/cwalker/services/trackbacks/3470.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/cwalker/rss.aspx">DevCentral Top5 7/18/2008</source><description>&lt;p&gt;This week's Top5 takes you from Application Health Monitoring to queues formed by CS students. The team has been hard at it, as always, and there's plenty to dig through on &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt; this week. Choosing just five things to talk about seems to be an increasingly difficult task thanks to the mounds of content out there every week, but that's a good problem to have. Here are this week's Top picks:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Scaling Ruby on Rails to 1 Billion Page Views a Month&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/Joe/archive/2008/07/15/scaling-ruby-on-rails-to-1-billion-page-views-a.aspx"&gt;http://devcentral.f5.com/weblogs/Joe/archive/2008/07/15/scaling-ruby-on-rails-to-1-billion-page-views-a.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Joe talks about Joyent's successful scaling of their Ruby on Rails deployment for Linkedin's "BumperSticker" Facebook app to a billion page views a month. That's some pretty serious traffic, and an awesome accomplishment to be able to tout. It's doubly important due to the naysayers out there that would have you believe that Ruby on Rails doesn't scale for high traffic situations. Joe talks about some of the finer details of this recently announced achievement as well as inviting them to jump on a DC podcast with us, which I'm pleased to say they agreed to. Definitely keep an eye out for that chat!&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Storage - Where do we go from here?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/14/3449.aspx"&gt;http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/14/3449.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It's no surprise to anyone that's been around computers even a short while that data storage is growing at an amazing rate, as is the demand for storage space due to increased use of media and more and more users of resources already in place. Don shows off some of his in-depth experience in the storage arena by delving into a discussion of different issues facing the storage community these days. He talks about stale data, data tiering, high-speed filers and more. Discussing about different methods of using and dealing with each, this post is definitely worth a read.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;20 Lines or Less #11&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/16/20-lines-or-less-11.aspx"&gt;http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/16/20-lines-or-less-11.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Back on track with three examples each weighing in under 21 lines, this week's 20LoL continues to demonstrate the power you can pack into easily written and managed, short iRules. Feel free to drop in a request for an iRule you need written to solve a certain problem or requirement and who knows, your solution might just be featured in the next 20 Lines or Less. Take a peek and tune in every week as we continue on our exploration of the possibilities that iRules offers to deliver compact yet powerful solutions.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;DC Post of the Week - Application Health Monitors: Alternate Ports&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/dctv/archive/2008/07/17/3461.aspx"&gt;http://devcentral.f5.com/weblogs/dctv/archive/2008/07/17/3461.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Deb dives into the Post of the Week yet again to highlight a question asked in the forums, giving an in-depth answer and example to go with it. This week she's addressing Health Monitors and trying to monitor a member of a pool on a port not configured for the pool. Tune in for a walk-through and discussion of how this can be done, benefits, caveats and more.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;A queue is a (a) line (b) a pony tail (c) a data structure&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/14/3448.aspx"&gt;http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/14/3448.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In our only multiple choice blog post of the week Lori agrees with a fellow blogger's assertion that "&lt;em&gt;The most agile developers, however, are those who approach programming with a firm grounding in computer science."&lt;/em&gt; I suppose that means I'm off that list, but I won't hold that against her. This insightful and interesting post discusses the way that programming has evolved and works in today's world, and why those computer science degrees that actually focus on, well, computer science, might be more valuable than some people think. Take a look inside to see why.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Safely through another five awesome topics from &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt;, here we are, at the end of this week's Top5. I'll be back next week with more DC goodness. Until then, feel free to drop me any feedback you might have. &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f05606ec-4f49-4fcb-9515-cde5e1f6cdba" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DC%20Top5" rel="tag"&gt;DC Top5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin%20Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;#Colin&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/3470.aspx" width="1" height="1" /&gt;</description><dc:creator>Colin Walker</dc:creator></item><item><title>Three Web Application Vulnerabilities You Need to Know</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/18/3469.aspx</link><pubDate>Fri, 18 Jul 2008 18:52:32 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/18/3469.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3469.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3469.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/18/3469.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3469.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/macvittie/rss.aspx">Three Web Application Vulnerabilities You Need to Know</source><description>&lt;p&gt;Via &lt;a href="http://news.ycombinator.com" target="_blank"&gt;Hacker News&lt;/a&gt; and &lt;a href="http://www.catonmat.net/" target="_blank"&gt;Peteris Kumins' blog&lt;/a&gt; on programming, hacking, software reuse and stuff comes the latest &lt;a href="http://www.google.com" target="_blank"&gt;Google&lt;/a&gt; &lt;a href="hhttp://www.youtube.com/user/googletechtalks" target="_blank"&gt;tech talk&lt;/a&gt;, this one on web application vulnerabilities and "&lt;a href="http://www.catonmat.net/blog/how-cybercriminals-steal-money/" target="_blank"&gt;how cybercriminals steal money&lt;/a&gt;". &lt;/p&gt;  &lt;p&gt;While Peteris and Google are targeting web developers with this informative video talk, it's a great resource as well for security folks as well as network administrators tasked with understanding how to thwart web application attacks. &lt;/p&gt;  &lt;p&gt;Even if you've deployed a &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html" target="_blank"&gt;web application firewall&lt;/a&gt; to protect you from these kinds of vulnerabilities, it's still a great idea to watch this one and get a better understanding of the attacks. &lt;/p&gt;  &lt;p&gt;The three vulnerabilities covered are: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.f5.com/glossary/sql-injection.html" target="_blank"&gt;SQL Injection&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Cross-Site Request Forgery (XSRF) &lt;/li&gt;    &lt;li&gt;Cross-Site Script Inclusion (XSSI) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The video and direct link are included here as well, but check out Peteris' blog for an overview of interesting points in the tech talk. &lt;/p&gt;  &lt;p&gt;&lt;embed src="http://www.youtube.com/v/jC6Q1uCnbMo&amp;amp;hl=en&amp;amp;fs=1" width="425" height="344" type="application/x-shockwave-flash" allowfullscreen="true" /&gt;&lt;/p&gt;  &lt;p&gt;Direct URL: &lt;a href="http://www.youtube.com/watch?v=jc6Q1uCnbMo"&gt;http://www.youtube.com/watch?v=jc6Q1uCnbMo&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/Lori/MacVittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0736d368-c1a1-4174-909f-7b5e5f13d702" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Google" rel="tag"&gt;Google&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%20application%20firewall" rel="tag"&gt;web application firewall&lt;/a&gt;,&lt;a href="http://technorati.com/tags/vulnerabilities" rel="tag"&gt;vulnerabilities&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL%20injection" rel="tag"&gt;SQL injection&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XSRF" rel="tag"&gt;XSRF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XSSI" rel="tag"&gt;XSSI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/developers" rel="tag"&gt;developers&lt;/a&gt;&lt;/div&gt; &lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3469.aspx" width="1" height="1" /&gt;</description><dc:creator>Lori MacVittie</dc:creator></item><item><title>Links, Sex, and Application Fluency</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/18/3468.aspx</link><pubDate>Fri, 18 Jul 2008 11:11:27 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/18/3468.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3468.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3468.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/18/3468.aspx#comment</comments><slash:comments>5</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3468.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/macvittie/rss.aspx">Links, Sex, and Application Fluency</source><description>&lt;p&gt;I ran across an interesting site containing an algorithm that &lt;a href="http://www.mikeonads.com/2008/07/13/using-your-browser-url-history-estimate-gender/" target="_blank"&gt;predicts your sex based on browser history&lt;/a&gt;. This algorithm uses demographics from popular sites, determines which popular sites you have visited by digging through your browser history, and then predicts what gender you are based on your browsing habits.  &lt;/p&gt;  &lt;p&gt;This algorithm sounds a lot like an adaptation of the &lt;a href="http://en.wikipedia.org/wiki/Turing_test" target="_blank"&gt;Turing Test&lt;/a&gt;. But instead of predicting which of two participants in the test is human, this one predicts what gender they are. The Turing Test has long been the standard for judging the intelligence of a computer system, even though it is flawed in many ways. &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:95893a32-ed13-4bb2-b8a8-52ff7597d187" style="padding-right: 0px; display: inline; padding-left: 0px; float: left; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/LinksSexandApplicationFluency_414A/Turing_Test_version_3-8x6.png" title="The Turing Test, as it is commonly described" rel="thumbnail"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/LinksSexandApplicationFluency_414A/Turing_Test_version_3_94.png" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;The Turing Test, and this entertaining site attempting to guess my gender, are similar in nature to the way that traffic shaping/management devices have traditionally identified applications. And like this browser gender test, they are often wrong. &lt;/p&gt;  &lt;p&gt;That's because traditional traffic shaping/management devices originally based their assumptions on ports and protocols. If it was served on port 80 over HTTP, then it must be HTTP. These devices learned, eventually, that this information was not enough upon which to base identification when every application out there attempted to circumvent corporate firewalls by running on &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/21/3283.aspx" target="_blank"&gt;port 80 over HTTP&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The devices, however, were primarily packet-based. This meant they &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/22/3291.aspx" target="_blank"&gt;inspected individual packets&lt;/a&gt;, which may not carry enough information to make a determination regarding which application is being used. They tried "signatures", but found that even that failed to accurately identify the majority of applications. &lt;/p&gt;  &lt;p&gt;That's why flow-based inspection is so important. We call that &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/19/3274.aspx" target="_blank"&gt;application fluency&lt;/a&gt;, and it is the ability to examine and inspect flows rather than packets. Flows are built by reassembling packets into a full application message at which time it is inspected and a determination made on what it &lt;em&gt;really &lt;/em&gt;is. &lt;/p&gt;  &lt;p&gt;Application fluency is the cornerstone of a wide variety of technologies related to application delivery. Without application fluency you can't provide &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html" target="_blank"&gt;web application firewalling&lt;/a&gt;, you can't &lt;a href="http://www.f5.com/products/big-ip/product-modules/webaccelerator.html" target="_blank"&gt;optimize and accelerate&lt;/a&gt; specific applications like &lt;a href="http://www.f5.com/pdf/application-ready-network-guides/microsoft-sharepoint07-arng.pdf" target="_blank"&gt;SharePoint&lt;/a&gt; or &lt;a href="http://www.f5.com/pdf/application-ready-network-guides/microsoft-exchange07-arng.pdf" target="_blank"&gt;Exchange&lt;/a&gt;, and you certainly can't intelligently route application messages. In order to apply policies, whether related to security or acceleration or routing, you first have to determine what the application is. The same security and routing policies that should be applied to IM (Instant Messaging) are not necessarily the right ones to apply to your web application. Even though both may be transported over HTTP and through port 80. You need to be able to accurately identify the application before you can start applying policies. &lt;/p&gt;  &lt;p&gt;Application delivery requires application fluency; intelligence. It can't just look at ports or protocols to determine how best to deliver an applications. It needs to understand the application, to really &lt;em&gt;know - &lt;/em&gt;not just predict based on a few attributes - what it is in order to ensure that it is delivered fast and securely. &lt;/p&gt;  &lt;p&gt;If it doesn't, you could end up with a solution that might decide your SharePoint application is really &lt;a href="http://www.f5.com/pdf/application-ready-network-guides/peoplesoft-arng.pdf" target="_blank"&gt;PeopleSoft&lt;/a&gt; much in the same way the test decided I was probably male (61% likelihood).  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/Lori/MacVittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:32e600e4-ee21-4d0c-a780-fade27482410" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTTP" rel="tag"&gt;HTTP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web" rel="tag"&gt;web&lt;/a&gt;,&lt;a href="http://technorati.com/tags/internet" rel="tag"&gt;internet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/applications" rel="tag"&gt;applications&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/PeopleSoft" rel="tag"&gt;PeopleSoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Exchange" rel="tag"&gt;Exchange&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Turing%20test" rel="tag"&gt;Turing test&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20fluency" rel="tag"&gt;application fluency&lt;/a&gt;&lt;/div&gt; &lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3468.aspx" width="1" height="1" /&gt;</description><dc:creator>Lori MacVittie</dc:creator></item><item><title>When SOAP has failed.</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx</link><pubDate>Thu, 17 Jul 2008 18:27:22 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/dmacvittie/comments/3465.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/dmacvittie/comments/commentRss/3465.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/dmacvittie/services/trackbacks/3465.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/dmacvittie/rss.aspx">When SOAP has failed.</source><description>&lt;p&gt;&lt;a href="http://www.theregister.co.uk/2008/07/17/flex_gets_soapy/" target="_blank"&gt;Interesting read over at The Register&lt;/a&gt; that posits the question "will Flex SOAP 1.1 work with .NET betas?" &lt;/p&gt; &lt;p&gt;The steps he went through and how he got things going was mildly interesting, more interesting to me was that he &lt;em&gt;even had to ask&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;I cannot say how happy I am that the answer was a resounding "Yes, they work together", because if we ever see a "no, these two mainstream Web Services products don't inter-operate" (ignoring those first few painful versions of yesteryear when people were figuring it out), then SOAP has well and truly failed.&lt;/p&gt; &lt;p&gt;The entire purpose of SOAP is interoperability, we shouldn't need to ask these questions. Indeed, they shouldn't even occur to us and the environment should be such that if we try and they don't work together, we assume that &lt;em&gt;we&lt;/em&gt; did something wrong.&lt;/p&gt; &lt;p&gt;But some vendor will do it, guaranteed. Trying to get you to use their tools only, they'll fail to support the standard correctly. When that happens, we, as an industry, need to slap them. &lt;/p&gt; &lt;p&gt;Until then, we get to continue to flourish in Nirvana.&lt;/p&gt; &lt;p&gt;Don.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;/reading: Programming Ruby - free electronic version.&lt;/p&gt;&lt;span class="sbmLink"&gt; &lt;table cellspacing="1" cellpadding="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td class="sbmText"&gt;Share this post : &lt;/td&gt; &lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to backflip" onmouseout="mOut(this)" href="http://www.backflip.com/add_page_pop.ihtml?url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/backflip4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to blinkbits!" onmouseout="mOut(this)" href="http://www.blinkbits.com/bookmarklets/save.php?v=1&amp;amp;source_url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/blinkbit4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to blogmemes" onmouseout="mOut(this)" href="http://www.blogmemes.net/post.php?url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/blogmemes4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to buddymark" onmouseout="mOut(this)" href="http://buddymarks.com/s_add_bookmark.php?bookmark_url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;bookmark_title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/buddymar4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to complore" onmouseout="mOut(this)" href="http://complore.com?q=node/add/flexinode-5&amp;amp;url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/complore4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to del.icio.us" onmouseout="mOut(this)" href="http://del.icio.us/post?url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/deliciou4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to del.iri.ous!" onmouseout="mOut(this)" href="http://de.lirio.us/bookmarks/sbmtool?action=add&amp;amp;address=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/deliriou4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to digg" onmouseout="mOut(this)" href="http://digg.com/submit?phase=2&amp;amp;url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/digg14.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to dotnetkicks" onmouseout="mOut(this)" href="http://www.dotnetkicks.com/kick/?url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/CropperCapture154.jpg" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to furl" onmouseout="mOut(this)" href="http://www.furl.net/store?s=f&amp;amp;to=0&amp;amp;u=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;ti=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/furl4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to live" onmouseout="mOut(this)" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/live4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to magnolia!" onmouseout="mOut(this)" href="http://ma.gnolia.com/bookmarklet/add?url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/magnolia4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to netvouz!" onmouseout="mOut(this)" href="http://netvouz.com/action/submitBookmark?url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/netvouz4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to reddit!" onmouseout="mOut(this)" href="http://reddit.com/submit?url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/reddit4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to shadow" onmouseout="mOut(this)" href="http://www.shadows.com/bookmark/saveLink.rails?page=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/shadows6.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to spurl" onmouseout="mOut(this)" href="http://www.spurl.net/spurl.php?v=3&amp;amp;url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/spurl8.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to technorati!" onmouseout="mOut(this)" href="http://technorati.com/faves/?add=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/technora4.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to wists" onmouseout="mOut(this)" href="http://www.wists.com/?action=add&amp;amp;url=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;title=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/wists9.png" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="sbmDim" onmouseover="mOvr(this)" onmouseout="mOut(this)"&gt;&lt;a class="sbmDim" onmouseover="mOvr(this)" title="Post it to yahoo!" onmouseout="mOut(this)" href="http://myweb.yahoo.com/myresults/bookmarklet?u=http://devcentral.f5.com/weblogs/dmacvittie/archive/2008/07/17/3465.aspx&amp;amp;t=When SOAP has Failed." target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/yahoo9.png" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/3465.aspx" width="1" height="1" /&gt;</description><dc:creator>Don MacVittie</dc:creator></item><item><title>I say cloud, you say grid</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/17/3463.aspx</link><pubDate>Thu, 17 Jul 2008 11:49:49 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/17/3463.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3463.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3463.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/17/3463.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3463.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/macvittie/rss.aspx">I say cloud, you say grid</source><description>&lt;p&gt;With more and more focus on cloud computing one theme seems to be running consistently: the "cloud" is public, and anyone who claims to be building a "private" cloud, a.k.a. mini-cloud or enterprise cloud, is just doing it wrong. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;John Foley @ InformationWeek has it mostly right when he says that what's important is the technology. &lt;/p&gt; &lt;fieldset style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px; padding-top: 5px"&gt;&lt;legend&gt;&lt;a href="http://www.informationweek.com/blog/main/archives/2008/07/the_rise_of_ent.html"&gt;The Rise of Enterprise-Class Cloud Computing&lt;/a&gt;&lt;/legend&gt;    &lt;p&gt;That's an oxymoron since cloud computing, by definition, happens outside of the corporate data center, but &lt;strong&gt;it's the technology that's important here, not the semantics&lt;/strong&gt;. [emphasis added] &lt;/p&gt; &lt;/fieldset&gt;   &lt;p&gt;Focusing on what you call your compute environment based on whether it's public or private seems a bit silly. There are some who try to elucidate the difference between "grid" and "cloud" computing, and do manage to make a technical distinction between the two.&lt;/p&gt; &lt;fieldset style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px; padding-top: 5px"&gt;&lt;legend&gt;&lt;a href="http://blog.rightscale.com/2008/07/07/cloud-computing-vs-grid-computing/"&gt;RightScale's blog quoting Rich Wolski&lt;/a&gt;&lt;/legend&gt;    &lt;p&gt;Grid computing has been used in environments where users make few but large allocation requests. For example, a lab may have a 1000 node cluster and users make allocations for all 1000, or 500, or 200, etc. So only a few of these allocations can be serviced at a time and others need to be scheduled for when resources are released. This results in sophisticated batch job scheduling algorithms of parallel computations.&lt;/p&gt;    &lt;p&gt;Cloud computing really is about lots of small allocation requests. The Amazon EC2 accounts are limited to 20 servers each by default and lots and lots of users allocate up to 20 servers out of the pool of many thousands of servers at Amazon. The allocations are real-time and in fact there is no provision for queueing allocations until someone else releases resources. This is a completely different resource allocation paradigm, a completely different usage pattern, and all this results in completely different method of using compute resources.&lt;/p&gt; &lt;/fieldset&gt;   &lt;p&gt;Given that definition there &lt;em&gt;are &lt;/em&gt;enterprises engaged in building their own mini-clouds: private, real-time on-demand data centers that service only one entity (the organization) with potentially many customers (business units). &lt;/p&gt;  &lt;p&gt;"Private" clouds employ metering (chargebacks), rely heavily on multiple forms of virtualization, and provision resources in real-time using an on-demand model. That's a cloud as much as it is a grid. &lt;/p&gt;  &lt;p&gt;Like SOA, it's not as if there's some certification board that's going to tell you that you're doing it "wrong", or "right" for that matter. SOA, grid, cloud - it's all about meeting the needs of the business in an operationally and financially efficient way. If that means a private cloud, than that's what you build. If that means using a public cloud, that's what you use. &lt;/p&gt;  &lt;p&gt;Cloud computing is no more required to be public than any other computing model. It's just that - a model - and where it is implemented is of no consequence. &lt;/p&gt;  &lt;p&gt;Besides, I thought part of cloud computing was that we weren't supposed to care about location anyway. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt; &lt;script language="javascript" src="http://s3.polldaddy.com/p/784740.js" type="text/javascript"&gt;&lt;/script&gt;&lt;a name="pd_a_784740"&gt;&lt;/a&gt;  &lt;div class="PDS_Poll" id="PDI_container784740"&gt;   &lt;div id="PDI_form784740" style="margin-top: 0px; margin-bottom: 0px" name="PDI_form784740"&gt;     &lt;div class="pds-box"&gt;       &lt;div class="pds-box-outer"&gt;         &lt;div class="pds-box-inner"&gt;           &lt;div class="pds-box-top"&gt;             &lt;div class="pds-question"&gt;               &lt;div class="pds-question-outer"&gt;                 &lt;div class="pds-question-inner"&gt;                   &lt;div class="pds-question-top"&gt;What are your plans for cloud computing? &lt;/div&gt;                 &lt;/div&gt;               &lt;/div&gt;             &lt;/div&gt;              &lt;div class="pds-answer"&gt;&lt;span id="pds-answer784740"&gt;&lt;input class="pds-radiobutton" id="PDI_answer4089292" type="radio" name="PDI_answer784740" /&gt;&lt;label for="PDI_answer4089292"&gt;We're going to ignore the whole thing&lt;/label&gt;                  &lt;br /&gt;&lt;input class="pds-radiobutton" id="PDI_answer4089294" type="radio" name="PDI_answer784740" /&gt;&lt;label for="PDI_answer4089294"&gt;We're likely to use an external cloud provider for as much as possible&lt;/label&gt;                  &lt;br /&gt;&lt;input class="pds-radiobutton" id="PDI_answer4089296" type="radio" name="PDI_answer784740" /&gt;&lt;label for="PDI_answer4089296"&gt;We're likely to use an external cloud provider for some applications and services&lt;/label&gt;                  &lt;br /&gt;&lt;input class="pds-radiobutton" id="PDI_answer4089298" type="radio" name="PDI_answer784740" /&gt;&lt;label for="PDI_answer4089298"&gt;We're rolling our own mini-clouds&lt;/label&gt;                  &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;              &lt;div class="pds-vote"&gt;               &lt;div class="pds-votebutton-outer"&gt;&lt;input class="pds-votebutton" style="border-right: medium none; border-top: medium none; border-left: medium none; cursor: pointer; border-bottom: medium none" onclick="PD_vote784740(0);" type="button" src="http://s3.polldaddy.com/images/spacer.gif" /&gt;&lt;a href="javascript:PD_vote784740(1);"&gt;&amp;gt; View Results&lt;/a&gt;                  &lt;br /&gt;&lt;a style="display: inline; visibility: visible" href="http://www.polldaddy.com/" target="_blank"&gt;PollDaddy.com&lt;/a&gt;                  &lt;br /&gt;&lt;/div&gt;             &lt;/div&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/div&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt; &lt;noscript&gt; &lt;a href="http://answers.polldaddy.com/poll/784740/"&gt;What are your plans for cloud computing? &lt;/a&gt;  &lt;br /&gt; &lt;span style="font-size:9px;"&gt; (&lt;a href="http://www.polldaddy.com"&gt;  surveys&lt;/a&gt;)&lt;/span&gt;&lt;/noscript&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img alt="" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" alt="" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" alt="" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/Lori/MacVittie"&gt;&lt;img alt="" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6c2a3b83-4a86-4ac6-908b-49caa4581771" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cloud%20computing" rel="tag"&gt;cloud computing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cloud%20computing%20infrastructure" rel="tag"&gt;cloud computing infrastructure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/grid%20computing" rel="tag"&gt;grid computing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mini-cloud" rel="tag"&gt;mini-cloud&lt;/a&gt;,&lt;a href="http://technorati.com/tags/private%20cloud" rel="tag"&gt;private cloud&lt;/a&gt;,&lt;a href="http://technorati.com/tags/RightScale" rel="tag"&gt;RightScale&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Amazon" rel="tag"&gt;Amazon&lt;/a&gt;&lt;/div&gt; &lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3463.aspx" width="1" height="1" /&gt;</description><dc:creator>Lori MacVittie</dc:creator></item><item><title>20 Lines or Less #11</title><link>http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/16/20-lines-or-less-11.aspx</link><pubDate>Wed, 16 Jul 2008 23:08:58 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/16/20-lines-or-less-11.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/cwalker/comments/3460.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/cwalker/comments/commentRss/3460.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/cwalker/archive/2008/07/16/20-lines-or-less-11.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/cwalker/services/trackbacks/3460.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/cwalker/rss.aspx">20 Lines or Less #11</source><description>&lt;p&gt;&lt;em&gt;What could you do with your code in 20 Lines or Less?&lt;/em&gt; That's the question I ask every week, and every week I go looking to find cool new examples that show just how flexible and powerful iRules can be without getting in over your head.&lt;/p&gt; &lt;p&gt;This week's 20LoL comes care of both the codeshare and the forums alike.  I got to deal with a couple of particularly cool forum posts this week, one of which made the list, as did an iRule from the infamous hoolio himself. Dealing with HTTP and ranging from spiders to working around a work-week, these examples are yet more ways you can leverage iRules in less than 21 lines. Here we go:&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Rate Limiting Search Spiders&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=26064&amp;amp;view=topic" href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=26064&amp;amp;view=topic"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;postid=26064&amp;amp;view=topic&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Spiders on the web aren't the same pests as spiders in your house, but they can certainly have adverse effects if they're making an inordinate number of requests to your web-servers, and driving the load up.  Here's a cool example of how to avoid just that scenario. We've seen something similar a long time ago on &lt;a title="" href="http://devcentral.f5.com" target="_blank"&gt;DevCentral&lt;/a&gt; for Network Computing, but this is a good refresher. &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;when RULE_INIT { &lt;br /&gt;  array set ::active_crawlers { } &lt;br /&gt;  set ::min_interval 1 &lt;br /&gt;} &lt;/font&gt; &lt;/p&gt;&lt;p&gt;&lt;font face="Courier New"&gt;when HTTP_REQUEST { &lt;br /&gt;  set user_agent [string tolower [HTTP::header "User-Agent"]] &lt;br /&gt;  # Logic only relevant for crawler user agents &lt;br /&gt;  if { [matchclass $user_agent contains $::Crawlers] } { &lt;br /&gt;    # Throttle crawlers. &lt;br /&gt;    set curr_time [clock seconds] &lt;br /&gt;    if { [info exists ::active_crawlers($user_agent)] } { &lt;br /&gt;      if { [ $::active_crawlers($user_agent) &amp;lt; $curr_time ] } { &lt;br /&gt;        set ::active_crawlers($user_agent) [expr {$curr_time + $::min_interval}] &lt;br /&gt;      } else { &lt;br /&gt;        reject &lt;br /&gt;      } &lt;br /&gt;    } else { &lt;br /&gt;      set ::active_crawlers($user_agent) [expr {$curr_time + $::min_interval}] &lt;br /&gt;    } &lt;br /&gt;  } &lt;br /&gt;&lt;/font&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Compression During the Work Week&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;view=topic&amp;amp;postid=25992" href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;view=topic&amp;amp;postid=25992"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=5&amp;amp;view=topic&amp;amp;postid=25992&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Coming through with a great example of how to have compression enabled only from 8AM-5PM, otherwise known as the normal US Workday, citizen_elah shows of his iRules kung fooery to help a fellow community member out. This same logic could be applied to almost anything else, besides compression, making this a great iRule to keep around in your back pocket.&lt;/p&gt; &lt;blockquote&gt;&lt;pre&gt; when HTTP_RESPONSE { &lt;br /&gt;   set time_r [split [clock format [clock seconds] -format {%H:%M} ] " "] &lt;br /&gt;   set time_f [expr [expr [lindex $time_r 0]*100] + [lindex $time_r 1]] &lt;br /&gt;   if { not(($time_f &amp;gt;= 0800) &amp;amp;&amp;amp; ($time_f &amp;lt;= 1700)) } { &lt;br /&gt;     COMPRESS::disable &lt;br /&gt;   } &lt;br /&gt; } &lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;I then came through and offered some optional optimization, so I guess this could be considered your bonus-rule for the week.  It's easy when someone like elah does the legwork up front. ;) Check the link to see the extra example.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fully Decode URI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="http://devcentral.f5.com/wiki/default.aspx/iRules/FullyDecodeURI.html" href="http://devcentral.f5.com/wiki/default.aspx/iRules/FullyDecodeURI.html"&gt;http://devcentral.f5.com/wiki/default.aspx/iRules/FullyDecodeURI.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Representing the last leg of this HTTP tri-ath-a-post is an entry from our illustrious iRules CodeShare. This example shows how to be sure you're FULLY decoding your URI before processing. It correctly points out that sometimes encoded characters can contain encoded characters can contain encoded characters can contain....well, you get the point. See how one person decided to work around such issues in a scant 11 lines of code.&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;when HTTP_REQUEST {
  # decode original URI.
  set tmpUri [HTTP::uri]
  set uri [URI::decode $tmpUri]

  # repeat decoding until the decoded version equals the previous value.
  while { $uri ne $tmpUri } {
    set tmpUri $uri
    set uri [URI::decode $tmpUri]
  }
  HTTP::uri $uri

  log local0. "Original URI: [HTTP::uri]"
  log local0. "Fully decoded URI: $uri"
}&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt; &lt;/pre&gt;
&lt;p&gt;&lt;font face="treb"&gt;There you have it, three more choice examples of iRules goodness in 20 Lines or Less.  Tune in again next week!&lt;/font&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2f6d9a6d-cfcc-4f17-ad85-3698f83942ce" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/20%20Lines%20or%20Less" rel="tag"&gt;20 Lines or Less&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTTP" rel="tag"&gt;HTTP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin%20Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;font face="treb"&gt;#Colin&lt;/font&gt;&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/cwalker/aggbug/3460.aspx" width="1" height="1" /&gt;</description><dc:creator>Colin Walker</dc:creator></item><item><title>Dear Plurk: We're Through. Kthxbye.</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/16/3459.aspx</link><pubDate>Wed, 16 Jul 2008 20:16:43 GMT</pubDate><guid isPermaLink="true">http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/16/3459.aspx</guid><wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3459.aspx</wfw:comment><wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3459.aspx</wfw:commentRss><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/16/3459.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3459.aspx</trackback:ping><source url="http://devcentral.f5.com/weblogs/macvittie/rss.aspx">Dear Plurk: We're Through. Kthxbye.</source><description>&lt;p&gt;&lt;a href="http://www.plurk.com" target="_blank"&gt;Plurk&lt;/a&gt;. &lt;a href="http://www.twitter.com" target="_blank"&gt;Twitter&lt;/a&gt;. &lt;a href="http://www.plurk.com" target="_blank"&gt;Plurk&lt;/a&gt;? &lt;a href="http://www.twitter.com" target="_blank"&gt;Twitter&lt;/a&gt;? When &lt;a href="http://www.twitter.com" target="_blank"&gt;Twitter&lt;/a&gt; is down (which is often) many denizens of the "life streaming" site rush to &lt;a href="http://www.plurk.com" target="_blank"&gt;plurk&lt;/a&gt; to continue sharing news, blog posts, gossip, and general tidbits of interest. &lt;/p&gt;  &lt;p&gt;The difference between the two is that Twitter doesn't put any pressure on your to tweet. Sure, your "followers" can "nudge" you to update, but it's not the headless-dog-staring-at-you-on-every-page pressure of plurk. If you haven't plurked, that may be lost on you. So let me explain. &lt;/p&gt;  &lt;p&gt;Plurk is partially a karma-based site. You can raise your karma by inviting friends, gaining followers, plurking, and responding to other plurks. There's an icon of a dog that starts out headless on every page and as your karma increases your dog gets more body parts and accoutrements. Cute, right? &lt;/p&gt;  &lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px" src="http://www.plurk.com/static/splash/interesting-plurkers.gif" align="left" /&gt;Except that the karma system feels too much like high school. Even the encouragement to meet other plurkers makes you feel like you're a loser: "Check out more interesting plurkers" it says. As if you're not interesting enough to check out.I know, it could be read as "more" as in "other" but when that headless dog is staring you in the face you just &lt;em&gt;know &lt;/em&gt;it means "you aren't interesting". It's a popularity contest that rewards people with more social skills than I am apparently endowed with special emoticons (I admit I will miss the dancing banana) and a full bodied dog. &lt;/p&gt;  &lt;p&gt;So the more questions you pose, and the more answers you give, the better your karma. But if you're like me, this begins to feel like a popularity contest. If I don't say the right things or ask the right questions or share the right sites, no one will respond to me. Not only does this keep my karma from rising but it actually &lt;em&gt;decreases&lt;/em&gt; my karma. &lt;/p&gt;  &lt;p&gt;Twitter doesn't judge me. It accepts me for who I am. It doesn't grade my tweets, it doesn't make fun of me with headless dogs for not being social enough. It doesn't urge me to become a social networking pimp by inviting my friends to plurk in order to increase my karma. It doesn't distinguish between "friends" and "fans", or make you feel bad that you don't have fans, you just have friends. &lt;/p&gt;  &lt;p&gt;Plurk just makes me feel like an awkward teenage geek (again) and honestly, I prefer the simpler interface of Twitter and the quality of information and questions shared among those I choose to follow. &lt;/p&gt;  &lt;p&gt;I guess I just prefer a social networking site that doesn't punish me for being me. &lt;/p&gt;  &lt;p&gt;So so long, Plurk, and thanks for all the fish. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/Lori/MacVittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3af58f7b-c9ba-4589-b493-896712938fbc" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Twitter" rel="tag"&gt;Twitter&lt;/a&gt;,&lt;a href="http://technorati.com/tags/plurk" rel="tag"&gt;plurk&lt;/a&gt;,&lt;a href="http://technorati.com/tags/social%20networking" rel="tag"&gt;social networking&lt;/a&gt;,&lt;a href="http://technorati.com/tags/karma" rel="tag"&gt;karma&lt;/a&gt;,&lt;a href="http://technorati.com/tags/geek" rel="tag"&gt;geek&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3459.aspx" width="1" height="1" /&gt;</description><dc:creator>Lori MacVittie</dc:creator></item></channel></rss>