<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>basketweaving for the mind : ruby</title><link>http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx</link><description>Tags: ruby</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>IIS7.x, Server Farms and Ruby</title><link>http://blogs.msdn.com/nickhodge/archive/2009/02/24/iis7-5-server-farms-and-ruby.aspx</link><pubDate>Tue, 24 Feb 2009 12:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9442377</guid><dc:creator>nhodge</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/9442377.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=9442377</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=9442377</wfw:comment><description>&lt;P&gt;(Caution: Ruby application names are as prolific, esoteric and funny as Microsoft code names) &lt;/P&gt;
&lt;P&gt;The previous post (broadly) demonstrated how to use a combination of URL Rewrite and FastCGI to put a &lt;A href="http://blogs.msdn.com/nickhodge/archive/2009/02/23/windows-7-iis-7-5-and-ruby-on-rails.aspx" mce_href="http://blogs.msdn.com/nickhodge/archive/2009/02/23/windows-7-iis-7-5-and-ruby-on-rails.aspx"&gt;Ruby on Rails application on IIS7.5&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As &lt;A href="http://rubyonrails.org/" mce_href="http://rubyonrails.org/"&gt;Rails&lt;/A&gt;, &lt;A href="http://www.merbivore.com/" mce_href="http://www.merbivore.com/"&gt;Merb&lt;/A&gt; (&lt;EM&gt;which I am reliably informed is what all the cool kids use today&lt;/EM&gt;) and &lt;A href="http://www.sinatrarb.com/" mce_href="http://www.sinatrarb.com/"&gt;Sinatra&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Another more common method of deploying Rails applications is behind a small web server such &lt;A href="http://mongrel.rubyforge.org/" mce_href="http://mongrel.rubyforge.org/"&gt;mongrel&lt;/A&gt;, &lt;A href="http://code.macournoyer.com/thin/" mce_href="http://code.macournoyer.com/thin/"&gt;thin&lt;/A&gt; or whilst development ruby’s inbuilt &lt;A href="http://www.webrick.org/" mce_href="http://www.webrick.org/"&gt;WEBrick&lt;/A&gt;. These servers are attached to one instance of the ruby application with a front-end web server &lt;A href="http://en.wikipedia.org/wiki/Reverse_proxy" mce_href="http://en.wikipedia.org/wiki/Reverse_proxy"&gt;acting as the reverse proxy server&lt;/A&gt;. This server forwards requests from the outside world to one of the instances of your ruby application; and ‘proxies’ the response back to the browser on the client.&lt;/P&gt;
&lt;P&gt;Using an reverse proxy server architecture provides various goodness: easy instance creation, simple scaling and relatively easy deployment. If you get the configuration right.&lt;/P&gt;
&lt;P&gt;To deploy a reverse proxy server with IIS previously required third party ISAPI such as &lt;A href="http://www.isapirewrite.com/" mce_href="http://www.isapirewrite.com/"&gt;ISAPIRewrite&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As complex deployments are becoming more common, Microsoft has released the &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712"&gt;Microsoft Application Request Routing Version 1 for IIS 7 (get it here)&lt;/A&gt;. Note that the server also requires &lt;A href="http://www.iis.net/extensions/URLRewrite" mce_href="http://www.iis.net/extensions/URLRewrite"&gt;URL Rewrite&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The following is my simple setup.&lt;/P&gt;
&lt;H3&gt;How to Setup&lt;/H3&gt;
&lt;P&gt;As I have &lt;EM&gt;mongrel&lt;/EM&gt; installed on my development machine, and am experimenting with &lt;EM&gt;sinatra&lt;/EM&gt;: mongrel is chosen as the default server.&lt;/P&gt;
&lt;P&gt;With a simple batch script, I launch the instances of my simple application. The ruby application is &lt;STRONG&gt;hi.rb&lt;/STRONG&gt;. In this instance, ruby.exe is in my PATH. The '-p 4567' tells Sinatra and Mongrel to use port 4567 as the listening port. There are mechanisms to make these services. This machine is development only, so I’ll leave that alone&lt;/P&gt;&lt;PRE&gt;@ECHO OFF
ruby.exe hi.rb -p 4567&lt;/PRE&gt;
&lt;P&gt;Install &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712"&gt;Microsoft Application Request Routing Version 1 for IIS 7&lt;/A&gt;. Note that the server also requires &lt;A href="http://www.iis.net/extensions/URLRewrite" mce_href="http://www.iis.net/extensions/URLRewrite"&gt;URL Rewrite&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Launch the Internet Information Services (IIS) Manager&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Create a Server Farm&lt;/STRONG&gt;. A farm is a collection of servers (IIS7 and others) the server is going to farm the incoming requests to&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3304987789/" mce_href="http://www.flickr.com/photos/nickhodge/3304987789/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-1 border=0 alt=ServerFarm-1 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-1_6bb47f88-b8c9-48b3-b226-feb5605e548f.jpg" width=312 height=288 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-1_6bb47f88-b8c9-48b3-b226-feb5605e548f.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Provide a name for your farm&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3304990693/" mce_href="http://www.flickr.com/photos/nickhodge/3304990693/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-2 border=0 alt=ServerFarm-2 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-2_57081937-13d9-4ed5-9133-8f69935ec468.png" width=307 height=217 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-2_57081937-13d9-4ed5-9133-8f69935ec468.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;On my test server, I wish to use multiple ports on the same server. That is, more than one application instance bound to separate ports.&lt;/P&gt;
&lt;P&gt;Type the address (without the port) of &lt;STRONG&gt;an application instance&lt;/STRONG&gt;. After clicking “&lt;EM&gt;Add&lt;/EM&gt;”, click on the entry in the server address, and click on the “&lt;EM&gt;Advanced settings…&lt;/EM&gt;”. Sinatra’s default port for an instance is :4567. As extra instances are added; add them to the farm with the appropriate port. &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE 1&lt;/STRONG&gt;: The UI when adding a httpPort for each address is a little weird. What I found working is to type the Server address:, expand ‘applicationRequestRoutin’, enter the port (if not the default port 80), click add. Then re-click on the entry in the list, and re-enter the httpPort (as it seems to revert back to :80)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE 2&lt;/STRONG&gt;: Each server address must be unique in the Server farm. Therefore, if you have multiple instances of the same application, although on separate ports, on the same server: you will need to do some work on the DNS or &lt;STRONG&gt;hosts&lt;/STRONG&gt; file. On my test machine, I have created aliases in my machine’s &lt;STRONG&gt;hosts&lt;/STRONG&gt; file to the same server (run Notepad.exe as administrator!):&lt;/P&gt;&lt;PRE&gt;%windir%\System32\drivers\etc\hosts
127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp; localhost localhost-1 localhost-2&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Server farms can also exist across physical IP addresses: this may be different IIS instances, different virtual machines or different physical machines.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3304998577/" mce_href="http://www.flickr.com/photos/nickhodge/3304998577/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-3 border=0 alt=ServerFarm-3 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-3_c5d07261-9078-4ff3-a486-aeb3c615829d.png" width=338 height=242 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-3_c5d07261-9078-4ff3-a486-aeb3c615829d.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;To match the incoming requests with a particular farm, a &lt;STRONG&gt;URL Rewrite Rule&lt;/STRONG&gt; is automatically created.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3305858896/" mce_href="http://www.flickr.com/photos/nickhodge/3305858896/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-4 border=0 alt=ServerFarm-4 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-4_b8ea6fa1-883d-4148-9107-d92582ead7a3.png" width=365 height=136 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-4_b8ea6fa1-883d-4148-9107-d92582ead7a3.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The below rule will matching any incoming request (which you may wish to tweak) to the server farm. Note the &lt;EM&gt;Action properties:&lt;/EM&gt; pointing to a particular farm, passing on the &lt;EM&gt;{R:0},&lt;/EM&gt; or the pattern matched in the &lt;EM&gt;Match URL&lt;/EM&gt;:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3305037127/" mce_href="http://www.flickr.com/photos/nickhodge/3305037127/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-5 border=0 alt=ServerFarm-5 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-5_1af8dc93-7be4-458e-943b-e470e002b8b5.png" width=474 height=404 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-5_1af8dc93-7be4-458e-943b-e470e002b8b5.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;The .config file&lt;/H3&gt;
&lt;P&gt;The configuration (on my machine) looks something like:&lt;/P&gt;&lt;PRE&gt;%windir%\System32\inetsrv\config\applicationHost.config

&amp;lt;webfarms&amp;gt; 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webfarm enabled="true" name="localhost"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;server enabled="true" address="localhost-1"&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting httpport="4567" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/server&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;server enabled="true" address="localhost-2"&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting httpport="4568" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/server&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;loadbalancing algorithm="WeightedRoundRobin" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;protocol httpversion="Http10" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/webfarm&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;hostaffinityproviderlist&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Microsoft.Web.Arr.HostNameRoundRobin" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Microsoft.Web.Arr.HostNameMemory" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/hostaffinityproviderlist&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;lt;/webfarms&amp;gt;&lt;/PRE&gt;
&lt;H3&gt;For Further Research&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;The Server Farms have extra features for checking the health of instances. Wiring these into mongrel would be cool.&lt;/LI&gt;
&lt;LI&gt;Load Balancing mechanisms: wiring these for deeper integration&lt;/LI&gt;
&lt;LI&gt;IronRuby. Now that would be cool.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9442377" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx">ruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/rubyonrails/default.aspx">rubyonrails</category></item><item><title>Windows 7, IIS 7.5 and Ruby on Rails</title><link>http://blogs.msdn.com/nickhodge/archive/2009/02/23/windows-7-iis-7-5-and-ruby-on-rails.aspx</link><pubDate>Mon, 23 Feb 2009 07:50:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9440961</guid><dc:creator>nhodge</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/9440961.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=9440961</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=9440961</wfw:comment><description>&lt;p&gt;Having spent the weekend working on Ruby on Rails with IIS/SQLServer 2008 Express backend via FastCGI, here are some tips to get you going:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The best resource is &lt;a href="http://ruslany.net/2008/08/ruby-on-rails-in-iis-70-with-url-rewriter/"&gt;Ruslan’s post on Rails and IIS7&lt;/a&gt;. In fact, go and bookmark this site right now. In Ruslan’s post, the &lt;em&gt;web.config&lt;/em&gt; shown is best edited in a text editor. &lt;/li&gt;    &lt;li&gt;When installing IIS7.5 on Windows 7 Beta (build 7000) is easy: Using the &lt;em&gt;Control Panels\Programs,&lt;/em&gt; Turn Windows Features On/Off. Underneath the Internet Information Services, you need to also install the CGI feature (to get FastCGI) &lt;/li&gt;    &lt;li&gt;Windows 7 and URL Rewrite: This forum post &lt;a href="http://forums.iis.net/t/1154240.aspx"&gt;http://forums.iis.net/t/1154240.aspx&lt;/a&gt; will get you going whilst Windows 7 is in beta &lt;/li&gt;    &lt;li&gt;Database connectivity to &lt;a href="http://www.microsoft.com/express/sql/"&gt;SQLServer&lt;/a&gt; seems to be a common question. Installing the option “sqlserver adaptor” which is now an optional part of ActiveRecord:       &lt;br /&gt;      &lt;pre&gt;gem install activerecord-sqlserver-adapter --source=http://gems.rubyonrails.org&lt;/pre&gt;
Connecting via the ODBC adaptor via the SQL Native Client worked, rather than the ADO connector. My connector string looked something like this: 

    &lt;br /&gt;

    &lt;pre&gt;development: 
  adapter: sqlserver 
  mode: odbc 
  dsn: Driver={SQL Native Client};Server=.\SQLEXPRESS;Database=xxxxx;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;As I am installing underneath the IIS7 root directory (that is: &lt;a href="http://server/myapp"&gt;http://server/myapp&lt;/a&gt;) there are 3 small Rails tweaks required inform the application all the goodies are in a subdirectory:

    &lt;br /&gt; 

    &lt;br /&gt;&lt;em&gt;in config/environment.rb, the header, define a global variable:&lt;/em&gt; 

    &lt;pre&gt;PATH_PREFIX = '/myapp'&lt;/pre&gt;

    &lt;p&gt;&lt;em&gt;in config/environment.rb, in the Initializer, set the asset home directory:&lt;/em&gt;&lt;/p&gt;

    &lt;pre&gt;Rails::Initializer.run do |config|
    config.action_controller.asset_host = PATH_PREFIX&lt;/pre&gt;

    &lt;p&gt;&lt;em&gt;in config/routes.rb, ActionController::Routing::Routes.draw:&lt;/em&gt;&lt;/p&gt;

    &lt;pre&gt;  map.connect PATH_PREFIX + '/:controller/:action/:id'
  map.connect PATH_PREFIX + '/:controller/:action/:id.:format'
end&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9440961" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx">ruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/rubyonrails/default.aspx">rubyonrails</category></item><item><title>Demos and Links from Edge of the Web, Nov’08 Perth</title><link>http://blogs.msdn.com/nickhodge/archive/2008/11/11/demos-and-links-from-edge-of-the-web-nov-08-perth.aspx</link><pubDate>Tue, 11 Nov 2008 06:08:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9059152</guid><dc:creator>nhodge</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/9059152.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=9059152</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=9059152</wfw:comment><description>&lt;p&gt;During the 50 minutes of presentation (including at least 9 &lt;a href="http://icanhascheezburger.com/"&gt;ICHC&lt;/a&gt; images), I demonstrated the following bits and pieces of open source and or free Microsoft bits.&lt;/p&gt;  &lt;h3&gt;Demo set 1: Web Standards&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.mesh.com/"&gt;Live Mesh Mobile&lt;/a&gt; : take photo to mesh on laptop &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;MacOS X 10.5 client available too [&lt;em&gt;not demo’d&lt;/em&gt;] &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://dev.live.com/"&gt;DataModelBrowser to apis.mesh.com&lt;/a&gt;; showing REST/JSON/APP [part of Live Framework SDK]&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/Oomph"&gt;Oomph: Microformats toolkit&lt;/a&gt; (source on codeplex.com) incorporating:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://get.live.com/writer/overview"&gt;LiveWriter&lt;/a&gt;; hCard plugin; publish; show IE plugin, same site with &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/2240?id=2240"&gt;Firefox Tail&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 2: PHP, SQLServer 2008 &amp;amp; IIS7 &lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/nickhodge/archive/2008/08/19/in-which-i-get-my-own-iis7.aspx"&gt;IIS7/PHP; Modules mapping via FastCGI&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/web/channel/downloads/default.aspx"&gt;Microsoft Web Platform Installer and Web Application Installer&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/SQL2K5PHP"&gt;MSSQLPHPDriver; show PHP + results; codeplex&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 3: IronPython&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/IronPython"&gt;IronPython&lt;/a&gt;; ipy hello world winforms &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/aspnet/Wiki/View.aspx?title=Dynamic%20Language%20Support"&gt;using as aspx as &amp;quot;code behind&amp;quot; and ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;F#&lt;/a&gt; integration with via .NET compiled .dll&amp;#160; (calling from IronPython)&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 4: IronRuby&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.ironruby.net/"&gt;IronRuby&lt;/a&gt;; flickr.net example from &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/TL44.wmv"&gt;John Lam’s PDC2008 session&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.jimmy.schementi.com/2008/08/walk-through-silverlight-flickr-client.html"&gt;Photoviewer&lt;/a&gt;; using local Chiron, browser, ruby in browser doing HTML/DOM &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 5: Silverlight&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight 2 tools for Visual Studio now support Visual Studio Express &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Silverlight 2 also supporting Eclipse (see, competition is a good thing) &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/Silverlight"&gt;Silverlight Toolkit&lt;/a&gt;, run from chrome-less Google Chrome (contains &lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode33MicrosoftOpenSourceInsideGoogleChrome.aspx"&gt;Microsoft Windows Template Lib&lt;/a&gt;)&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9059152" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/sqlserver/default.aspx">sqlserver</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/php/default.aspx">php</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/codeplex/default.aspx">codeplex</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/opensource/default.aspx">opensource</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx">ruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/f_2300_/default.aspx">f#</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/microformats/default.aspx">microformats</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ironruby/default.aspx">ironruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ironpython/default.aspx">ironpython</category></item><item><title>Microsoft, Open Source and IronRuby</title><link>http://blogs.msdn.com/nickhodge/archive/2008/09/30/microsoft-open-source-and-ironruby.aspx</link><pubDate>Tue, 30 Sep 2008 04:02:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8969670</guid><dc:creator>nhodge</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/8969670.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=8969670</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=8969670</wfw:comment><description>&lt;p&gt;&lt;a href="http://broadcast.oreilly.com/2008/09/the-ever-dynamic-john-lam-at-o.html"&gt;John Lam is interviewed by James Turner at OSCON 2008&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;To understand the interface between Microsoft and Open source, this is an excellent overview. With some Ruby stuff duck-typed in there, too&lt;/p&gt; &lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9RohhjdAZZQ&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9RohhjdAZZQ&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8969670" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/opensource/default.aspx">opensource</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx">ruby</category></item></channel></rss>