<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.pluralsight.com/community/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/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>Pluralsight Blogs</title><link>http://www.pluralsight.com/community/blogs/</link><description>See what you can learn</description><dc:language>en-US</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Silverlight 2 RTW tomorrow and more goodness</title><link>http://www.pluralsight.com/community/blogs/brian/archive/2008/10/13/silverlight-2-rtw-tomorrow-and-more-goodness.aspx</link><pubDate>Mon, 13 Oct 2008 17:03:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53883</guid><dc:creator>brian-randell</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://www.microsoft.com/presspass/press/2008/oct08/10-13Silverlight2PR.mspx"&gt;http://www.microsoft.com/presspass/press/2008/oct08/10-13Silverlight2PR.mspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ScottGu detailed a bunch of stuff this morning to the press including an October 14, RTW of Silverlight 2.&lt;/p&gt;
&lt;p&gt;More goodness:&lt;/p&gt;
&lt;p&gt;&amp;quot;Microsoft also announced further support of open source communities by funding advanced Silverlight development capabilities with the Eclipse Foundation&amp;rsquo;s integrated development environment (IDE) and by providing new controls to developers with the Silverlight Control Pack (SCP) under the Microsoft Permissive License.&amp;quot;&lt;/p&gt;
&lt;p&gt;Good times.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53883" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/brian/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>When it rains, it pours --- articles on parallel processing that is</title><link>http://www.pluralsight.com/community/blogs/drjoe/archive/2008/10/10/when-it-rains-it-pours-articles-on-parallel-processing-that-is.aspx</link><pubDate>Sat, 11 Oct 2008 04:47:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53857</guid><dc:creator>joe-hummel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Wow, my reading pile just got a lot bigger today.&amp;nbsp; First, the latest (Oct 2008) issue of &lt;a href="http://msdn.microsoft.com/en-us/magazine/default.aspx"&gt;MSDN&lt;/a&gt; contains 4 articles related to parallel processing:&amp;nbsp; &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;quot;Design considerations for parallel programming&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Improved Support for Parallelism in the next version of Visual Studio&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Solving 11 Likely Problems in your Multithreaded Code&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Build Concurrent Apps From Simple F# Expressions&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&amp;#39;m currently reading #4, since I&amp;#39;m a believer that functional programming may be one of the ways we make parallel processing safer, scalable, and generally more approachable.&amp;nbsp; I don&amp;#39;t see much in F# yet, it seems right now to be just another way to gain access to PFx and MPI.NET.&amp;nbsp; But the potential is definitely there.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;If that isn&amp;#39;t enough, the latest &lt;a href="http://mags.acm.org/queue/200809/"&gt;issue&lt;/a&gt; (Oct 2008) of ACM&amp;#39;s Queue magazine (&amp;quot;Architecting Tomorrow&amp;#39;s Computing&amp;quot;) presents a broader view of the concurrency problem, with articles on&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;quot;Real-world Concurrency&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Erlang for Concurrent Programming&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Parallel Programming with Transactional Memory&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Erlang is another functional language, but with a proven process-based approach to concurrency and parallel processing.&amp;nbsp; I&amp;#39;m just learning about Erlang now, I really really need to implement some apps and collect some performance numbers.&amp;nbsp; Erlang&amp;#39;s process-oriented concurrency model was originally designed for system building and robustness, so the question is how it fares for HPC.&amp;nbsp; Transactional memory is an interesting approach --- in short, you don&amp;#39;t worry about accessing shared memory, you just go for it and check when you&amp;#39;re done to see if a conflict has occurred.&amp;nbsp; If not, you commit, otherwise you&amp;nbsp;rollback and try again.&lt;/p&gt;
&lt;p&gt;Anyway, happy reading!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53857" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/Transactional+Memory/default.aspx">Transactional Memory</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/Concurrency/default.aspx">Concurrency</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/ACM+Queue/default.aspx">ACM Queue</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/Erlang/default.aspx">Erlang</category></item><item><title>32-bit SDK for HPC Server 2008 fails --- "The procedure entry point GetProcessIdOfThread could not be located..."</title><link>http://www.pluralsight.com/community/blogs/drjoe/archive/2008/10/10/32-bit-sdk-for-hpc-server-2008-fails-quot-the-procedure-entry-point-getprocessidofthread-could-not-be-located-quot.aspx</link><pubDate>Sat, 11 Oct 2008 02:21:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53856</guid><dc:creator>joe-hummel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The &lt;a href="http://www.microsoft.com/hpc/en/us/default.aspx"&gt;RTM&lt;/a&gt;&amp;nbsp;for HPC Server 2008 was recently released, and I&amp;#39;ve been happily running HPC apps on my clusters.&amp;nbsp; I wanted to run some demos for my students, so I installed the SDK for HPC Server 2008 on the classroom machine (a 32-bit Windows XP box), and launched as usual with mpiexec:&lt;/p&gt;
&lt;p style="PADDING-LEFT:30px;"&gt;mpiexec&amp;nbsp; -n&amp;nbsp; 4&amp;nbsp; MyMPIApp.exe&lt;/p&gt;
&lt;p&gt;A dialog box immediately appeared with the error message &amp;quot;The procedure entry point GetProcessIdOfThread could not be located in the dynamic link library KERNEL32.dll&amp;quot;.&amp;nbsp; I closed the dialog, and the console window then displayed this error message:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;ReadFile() failed, error 109&lt;br /&gt;Error: unable to start the local smpd manager&lt;/p&gt;
&lt;p&gt;A firewall problem?&amp;nbsp; Disabled the firewall, same error.&amp;nbsp; Reboot?&amp;nbsp; Same error.&amp;nbsp; Installed MPI.NET and ran an MPI.NET app; same error.&amp;nbsp; So it seems to be a problem with the 32-bit SDK for HPC Server.&amp;nbsp; I did find a temporary solution:&amp;nbsp; uninstall the SDK, download and install the v1 SDK for Compute Cluster Server, available &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d8462378-2f68-409d-9cb3-02312bc23bfd&amp;amp;displaylang=en"&gt;here&lt;/a&gt;.&amp;nbsp; Same MPI apps ran fine with the older SDK.&amp;nbsp; I&amp;#39;ve submitted a bug report to Microsoft, I&amp;#39;ll post when we figure out what&amp;#39;s going on.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53856" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/MPI/default.aspx">MPI</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/MPI.NET/default.aspx">MPI.NET</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/MSMPI/default.aspx">MSMPI</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/32-bit+SDK+for+HPC+Server+2008/default.aspx">32-bit SDK for HPC Server 2008</category></item><item><title>Rails - Database Access</title><link>http://www.pluralsight.com/community/blogs/kevinj/archive/2008/10/10/rails-database-access.aspx</link><pubDate>Fri, 10 Oct 2008 15:37:16 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53850</guid><dc:creator>kevin-jones</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;One of the driving forces of Rails is to make things easier for developers. It does this partly by taking decisions out of developers hands. It&amp;#39;s an &amp;#39;opinionated&amp;#39; framework, and one of the opinions it has is on the pattern to use for database access. Its choice in this case is the &amp;#39;active record&amp;#39; pattern. 
&lt;/p&gt;
&lt;p&gt;
Rails has an &lt;span style="white-space:pre;font-family:monospace;"&gt;ActiveRecord&lt;/span&gt; module and the model classes all derive from&lt;/p&gt;
&lt;pre class="ruby"&gt;
ActiveRecord::Base
&lt;/pre&gt;for example
&lt;pre class="ruby"&gt;
BlogEntry &amp;lt; ActiveRecord::Base
&lt;/pre&gt;
&lt;p&gt;
it is this module that provides the active record support for the framework.
&lt;/p&gt;
&lt;p&gt;Like much of the rest of Rails, ActiveRecord follows naming conventions. Here for example the BlogEntry class represents a row in the blog_entries table. How does this happen?&lt;/p&gt;
&lt;p&gt;Looking back to the &lt;a href="http://www.pluralsight.com/community/blogs/kevinj/archive/2008/09/25/learning-rails-part-2.aspx"&gt;Learning Rails - Part 2&lt;/a&gt; post you will see that this script was run&lt;/p&gt;
&lt;pre&gt;
script/generate scaffold blog_entry ...
&lt;/pre&gt;
&lt;p&gt;This script created two files, the file with the model class BlogEntry definition and a &amp;quot;migration&amp;quot;. The migrations are &amp;quot;scripts&amp;quot; that help create and mange the database definitions, essentially they are DDL for Rails.&lt;/p&gt;
&lt;p&gt;Migrations are used to both set up and tear down databases. The files contain class definitions that specify the steps to take when managing the database.&lt;/p&gt;
&lt;p&gt;Migrations are timestamped so that it is easy to apply migrations in the correct order and to rollback those migrations in reverse order if needs be. The migrations live in the db/migrate directory. Currently there are 4 migrations in there&lt;/p&gt;
&lt;pre&gt;
20080925064318_create_sessions.rb       
20080925065056_create_blogs.rb
20080925064319_create_users.rb          
20080925065210_create_blog_entries.rb
&lt;/pre&gt;
&lt;p&gt;The first is a fairly standard Rails migration that creates the session tables (run &lt;span style="white-space:pre;font-family:monospace;"&gt;rake db:sessions:create&lt;/span&gt; to create this), the others are specific to this application. Each migration has a date-time as part of the file name and it&amp;#39;s this name that determines the order in which the migrations are run. The 20080925065210_create_blog_entries.rb looks like this&lt;/p&gt;
&lt;pre class="ruby"&gt;
class CreateBlogEntries &amp;lt; ActiveRecord::Migration
  def self.up
    create_table  :blog_entries do |t|
      t.string    :title,             :null =&amp;gt; false
      t.text      :entry,             :null =&amp;gt; false
      t.integer   :author_id,         :null =&amp;gt; false
      t.datetime  :entry_added_date
      t.datetime  :entry_last_edited
      t.timestamps
    end
  end

  def self.down
    drop_table :blog_entries
  end
end
&lt;/pre&gt;
&lt;p&gt;So it&amp;#39;s a class that derives from &lt;span style="white-space:pre;font-family:monospace;"&gt;ActiveRecord::Migration&lt;/span&gt; and provides two class methods (static methods to C#/C++ folks), up and down (it&amp;#39;s the &amp;quot;self&amp;quot; that indicates that these are class methods and not instance methods). You can run the migration from the command line by using the Rake command&lt;/p&gt;
&lt;pre&gt;
rake db:migrate
&lt;/pre&gt;
&lt;p&gt;This runs any migrations that have not yet been run. How does it know which migrations to run? Tthere is a database table that holds the information about the migrations that have been run.&lt;/p&gt;
&lt;pre style="background-color:white;color:black;border:solid thin grey;"&gt;
$ mysql -u root
mysql&amp;gt; use rblog_development
mysql&amp;gt; show tables;
&lt;/pre&gt;
&lt;p&gt;shows something like&lt;/p&gt;
&lt;pre style="background-color:white;color:black;border:solid thin grey;"&gt;
+-----------------------------+
| Tables_in_rblog_development |
+-----------------------------+
| blog_entries                |
| blogs                       |
| schema_migrations           |
| sessions                    |
| users                       |
+-----------------------------+
&lt;/pre&gt;
&lt;p&gt;and&lt;/p&gt;
&lt;pre style="background-color:white;color:black;border:solid thin 
grey;"&gt;
mysql&amp;gt; select * from schema_migrations;


+----------------+
| version        |
+----------------+
| 20080923152418 |
| 20080923152427 |
| 20080923152435 |
| 20080925064318 |
| 20080925064319 |
| 20080925065056 |
| 20080925065210 |
+----------------+
&lt;/pre&gt;
&lt;p&gt;on my machine as I type this. Notice that the last entry in the table matches the datetime portion of the name of the last migration file.&lt;/p&gt;
&lt;p&gt;When a migration is run (assuming it has not yet been added to the database), then the &lt;span style="white-space:pre;font-family:monospace;"&gt;self.up&lt;/span&gt;
 method is executed. This method creates or modifies database entries. In the case of the blog_entries migration it creates the table and adds the eight columns from these five entries.
&lt;pre&gt;
(title, entry, author_id, entry_added_date, entry_last_edited and timestamps
&lt;/pre&gt;
&lt;p&gt;mysql shows this&lt;/p&gt;
&lt;pre style="background-color:white;color:black;border:solid thin 
grey;"&gt;
mysql&amp;gt; show create table blog_entries;
+--------------+---------------------------------+
| Table        | Create Table                    |
+--------------+---------------------------------+
| blog_entries | CREATE TABLE `blog_entries` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`entry` text NOT NULL,
`author_id` int(11) NOT NULL,
`entry_added_date` datetime default NULL,
`entry_last_edited` datetime default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1           |
+--------------+---------------------------------+
&lt;/pre&gt;
&lt;p&gt;
Notice that timestamps turns into two columns, and that an id column has been added as a primary key
&lt;/p&gt;
&lt;p&gt;
A migration can also be rolled back. Running rake db:migrate &lt;span style="white-space:pre;font-family:monospace;"&gt;rollback&lt;/span&gt; will rollback the last migration, or a specific version can be specified. For example 
&lt;span style="white-space:pre;font-family:monospace;"&gt;rake db:migrate VERSION=20080925065056&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Running the migrations this way runs the migrations in reverse order up to the specified migration, on the way the &lt;span style="white-space:pre;font-family:monospace;"&gt;self.down&lt;/span&gt; mwthod of each migration is called. For the &lt;span style="white-space:pre;font-family:monospace;"&gt;blog_entries&lt;/span&gt; migration that would drop the table. The &lt;span style="white-space:pre;font-family:monospace;"&gt;down&lt;/span&gt; method should undo whatever the &lt;span style="white-space:pre;font-family:monospace;"&gt;up&lt;/span&gt; method did! 
&lt;/p&gt;
&lt;p&gt;
One of the interesting (and frustrating) things about Rails is the way the migrations and the models work together. Running the &lt;span style="white-space:pre;font-family:monospace;"&gt;script/generate scaffold blog_entry&lt;/span&gt; creates two files, the migration and the model. Looking in the model file there is ... nothing, just the class definition. The knowledge about the members of this class is in the migrations. This takes DRY (Do Not Repeat Yourself) to the limit but it can mean looking in several files (there maybe more than one migration per model) to find everything that the class uses. If the migrations get too &amp;quot;spread out&amp;quot;, i.e. there are three or more migrations with modifications to one table then it is worth amalgamating those migrations into one file.
&lt;/p&gt;
&lt;div class="posttagsblock"&gt;&lt;a href="http://technorati.com/tag/Rails" rel="tag"&gt;Rails&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Ruby" rel="tag"&gt;Ruby&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53850" width="1" height="1"&gt;</description></item><item><title>.NET type casting -- assume nothing</title><link>http://www.pluralsight.com/community/blogs/mikeh/archive/2008/10/09/net-type-casting-assume-nothing.aspx</link><pubDate>Thu, 09 Oct 2008 12:38:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53814</guid><dc:creator>mike-henderson</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;It&amp;#39;s fun to talk to people about .NET and make bold, titilating statements like &amp;quot;&lt;a target="_blank" href="http://oreilly.com/catalog/csharpess2/chapter/ch01.html"&gt;.NET is type safe&lt;/a&gt;&amp;quot;.&amp;nbsp; We hear it all the time. While oversimplified a bit, it&amp;#39;s basically a valid statement. The C# compiler is also generally wonderful at taking lazily written code and making it function as we intend.&lt;/p&gt;
&lt;p&gt;Those things said, it&amp;#39;s always best to channel your inner &lt;a target="_blank" href="http://www.imdb.com/title/tt0106179/maindetails"&gt;Fox Mulder&lt;/a&gt; and &amp;quot;trust
no one&amp;quot;. Every once in a while the framework slaps me with some generated native code
which reminds me that I can trust no one. It happened again last night. &lt;/p&gt;
&lt;p&gt;In WPF, you can define a special property called a DependencyProperty,
which essentially plumbs your property for WPF&amp;#39;s internals, making it play
well with data binding, animation and the like. I had one such definition in my code:&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;readonly&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DependencyProperty&lt;/span&gt; BarValueProperty =&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DependencyProperty&lt;/span&gt;.RegisterAttached(&lt;span style="color:#a31515;"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;BarValue&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;&lt;/span&gt;, &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;text-indent:0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;typeof&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(&lt;span style="color:#2b91af;"&gt;UInt32&lt;/span&gt;), &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;SpiderControlWindow&lt;/span&gt;), &lt;span style="color:blue;"&gt;new&lt;/span&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0in 0in 0.0001pt 0.5in;text-indent:0.5in;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;UIPropertyMetadata&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(30));&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;However, the class in which this definition existed would crash and burn
during instantiation (the good ol&amp;rsquo; &amp;ldquo;object could not be instantiated&amp;rdquo; error). Managed
debugging was not helpful, so I had to go that extra step and do some (insert gasp here) native
assembly debugging.&lt;/p&gt;
&lt;p&gt;Upon stepping through this call in the generated assembly code, I
discovered the issue -- The code calling into the constructor for
UIPropertyMetadata was creating &amp;quot;30&amp;quot; as an immediate value on the
stack, then calling the constructor. The constructor, however, would then store
a pointer to that initialization value for later use, presumably because it
assumed it was being passed a class instance, not an immediate. Well, that&amp;#39;s
not so helpful, as that location on the stack was blown away when the
constructor returned, and life continued. Later, the code attempted to use that
pointer, which then happened to be pointing to a null value, and a null
reference exception occurred at the native level, which bubbled up into the very generic and non-helpful .NET exception.&lt;/p&gt;
&lt;p&gt;This is an example of where explicit &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/magazine/cc301569.aspx"&gt;.NET &amp;quot;boxing&amp;quot;&lt;/a&gt; is necessary &amp;ndash; the constructor&amp;#39;s code wants
a .NET class, but doesn&amp;#39;t actually specify an strong object type in its definition, so the system doesn&amp;#39;t automatically box our parameter. We need to box the parameter on its behalf:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;UIPropertyMetadata&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;((&lt;span style="color:#2b91af;"&gt;UInt32&lt;/span&gt;)30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;There we go&amp;hellip; that simple &amp;ldquo;static&amp;rdquo; cast causes the .NET engine to actually
create a concrete object, and we no longer get a crash and burn. The JIT compiler
generated assembly code now uses a pointer to an object that lives in .NET&amp;rsquo;s world,
not some volatile set of bits on the stack. No crash and/or burn.&lt;/p&gt;
&lt;p&gt;(Though it&amp;#39;s interesting to note that if my DependencyProperty is a &lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="color:#2b91af;"&gt;double&lt;/span&gt;&lt;/span&gt;, and I pass simply &amp;quot;0.0&amp;quot; into the UIPropertyMetadata constructor, it works fine -- the compiler does the boxing for us... I guess we can&amp;#39;t always expect the compiler to intuitively guess what we want.)&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://truenu.wordpress.com/2008/04/02/and-all-was-right-with-the-world-romans-321-31/"&gt;And all was right with the world.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53814" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/mikeh/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Sarah Palin and Security Questions</title><link>http://www.pluralsight.com/community/blogs/keith/archive/2008/10/09/sarah-palin-and-security-questions.aspx</link><pubDate>Thu, 09 Oct 2008 08:09:10 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53812</guid><dc:creator>keith-brown</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I&amp;#39;ve always looked at &lt;a href="http://goodsecurityquestions.com" target="_blank"&gt;security questions&lt;/a&gt; used to automate user password recovery with &lt;a href="http://www.pluralsight.com/community/blogs/keith/archive/2006/05/24/24964.aspx" target="_blank"&gt;quite a bit of skepticism&lt;/a&gt;. What&amp;#39;s the point of requiring strong passwords if you allow anyone to reset the password on an account by answering a (potentially inane) question? And just how many good security questions are there, and how many web sites will ask similar questions, allowing the owner of one web site to reset a user&amp;#39;s password at another site that uses the same question? I&amp;#39;m pretty sure that the typical user will tend to select the same security question if it&amp;#39;s available at multiple sites. In many web sites I&amp;#39;ve seen, the security question is clearly the weak link in the chain.&lt;/p&gt; &lt;p&gt;Apparently &lt;a href="http://voices.washingtonpost.com/securityfix/2008/10/son_of_tenn_lawmaker_indicted.html?hpid=news-col-blogs" target="_blank"&gt;a fellow recently was indicted&lt;/a&gt; on charges of &lt;a href="http://blog.wired.com/27bstroke6/2008/09/palin-e-mail-ha.html" target="_blank"&gt;hacking&lt;/a&gt; into the Republican vice presidential nominee&amp;#39;s Yahoo &lt;a href="http://wikileaks.org/wiki/VP_contender_Sarah_Palin_hacked" target="_blank"&gt;email account&lt;/a&gt;, by simply doing some research on the Internet to find her birthday, zip code, and the answer to her security question, &amp;quot;Where did you meet your spouse?&amp;quot; All told the attack reportedly took under an hour to complete.&lt;/p&gt; &lt;p&gt;Given the level of interest in Palin and other public figures, and the large amount of information about them available to the public, it makes sense that they will be some of the easiest targets for attacks like this.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53812" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Security/default.aspx">Security</category><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Geek+talk/default.aspx">Geek talk</category><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Identity/default.aspx">Identity</category></item><item><title>Talks I want to see @ PDC</title><link>http://www.pluralsight.com/community/blogs/dbox/archive/2008/10/08/talks-i-want-to-see-pdc.aspx</link><pubDate>Wed, 08 Oct 2008 09:17:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53794</guid><dc:creator>don-box</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;In looking at the agenda for the event, here are some talks I&amp;#39;d really love to crash:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/TL31/"&gt;Oslo: Building Textual DSLs&lt;/a&gt; - lots of geek porn appeal, and if internal usage is any indication, a highly addictive technology. I predict this will be the World of Warcraft of 2009.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/TL11/"&gt;Intro to F#&lt;/a&gt; - I spent a month living in F# early this year and had a great time.&amp;nbsp;I&amp;#39;m dying to hear how Luca has made the leap from OO to functional programming.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/PC31/"&gt;ASP.NET and jQuery&lt;/a&gt; - OK, so the title on the details page doesn&amp;#39;t match, but if this is a session on how MS is going to integrate jQuery into the arsenal of .NET devs, I want to hear it.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/PC43/"&gt;The Raymond Chen talk&lt;/a&gt;&amp;nbsp;- Despite being a former columnist for MSDN Magazine (hi Joel), I like unmanaged code too and would love to see what we&amp;#39;re doing in the land of HWNDs.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/ES01/"&gt;Steve Marx codes&lt;/a&gt; - If you want us to run your code in our cloud, go see this talk. Period.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/BB38/"&gt;Vasters on messaging services&lt;/a&gt; - If you want to run your code at your place but want us to help wire it up to the rest of the world, go see this talk. Period.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/BB19/"&gt;Dharma&lt;/a&gt; - to hear Dharma talk about his work is always refreshing, and the stuff he&amp;#39;s been doing is pretty compelling.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/TL36/"&gt;The New XAML Stack&lt;/a&gt; - We&amp;#39;re getting a XAML stack in .NET 4.0 that spans all of our technologies. No more XOML!&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/PC51/"&gt;The UAC talk&lt;/a&gt; - OK, call me selfish, but I really want everyone to write apps that work for standard user accounts.&amp;nbsp;Nothing would please me more than if we had to repeat this talk 3 times due to overflow problems in the room.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/PC54/"&gt;Miguel&amp;nbsp;in blue&lt;/a&gt;&amp;nbsp;- no longer relegated to ad hoc hallway presentations or using nearby hotel rooms, Miguel is donning a standard issue &lt;a href="http://blogs.msdn.com/brada/archive/2005/09/13/465318.aspx"&gt;blue Microsoft speaker shirt&lt;/a&gt;, applying the &lt;a href="http://silverfoxprod.net/index.php"&gt;Silverfox&lt;/a&gt; powerpoint template, upgrading his laptop to &lt;a href="http://blogs.msdn.com/e7/"&gt;Windows 7&lt;/a&gt;, and giving a sanctioned PDC talk that even &lt;a href="http://www.communicationpowerinc.com/"&gt;Richard Klees&lt;/a&gt; would approve of.&amp;nbsp; OK, so I&amp;#39;m sure one or two of those statements isn&amp;#39;t true, but I need to see it with my own eyes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53794" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/dbox/archive/tags/PDC/default.aspx">PDC</category></item><item><title>typing-speed-mode Emacs Minor Mode</title><link>http://www.pluralsight.com/community/blogs/craig/archive/2008/10/07/typing-speed-mode-emacs-minor-mode.aspx</link><pubDate>Tue, 07 Oct 2008 14:32:15 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53784</guid><dc:creator>craig-andera</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I’ve been really into Lisp lately, especially &lt;a href="http://clojure.org"&gt;Clojure&lt;/a&gt;, which looks really interesting. More on that some other time, though. Anyway, I’m always looking for an excuse to write code in Lisp – any Lisp. &lt;/p&gt;  &lt;p&gt;As I was writing some prose in emacs this morning, I got into a real flow. I started to wonder how fast I was typing…and there was my excuse! About an hour later, I had written the code below. It’s an emacs minor mode that displays your typing speed (defined as the number of times self-insert-command has been run in the last five seconds, times twelve) in the mode-line. So you can watch your typing speed go up and down in real time. Note that you can customize a few things about it, like changing the default five-second window.&lt;/p&gt;  &lt;p&gt;My emacs-fu (and my Lisp-fu) is not all that it could be, so the code is likely suboptimal in several ways, but it seems to work, and I always hate it when people say, “I’ll post the code once I get a chance to clean it up.” To hell with that: enjoy my code for the garbage it is :).&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" size="3"&gt;;;; typing-speed.el --- Minor mode which displays your typing speed &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;;; Copyright (C) 2008 Wangdera Corporation &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;;; Permission is hereby granted, free of charge, to any person        &lt;br /&gt;;; obtaining a copy of this software and associated documentation         &lt;br /&gt;;; files (the &amp;quot;Software&amp;quot;), to deal in the Software without         &lt;br /&gt;;; restriction, including without limitation the rights to use,         &lt;br /&gt;;; copy, modify, merge, publish, distribute, sublicense, and/or sell         &lt;br /&gt;;; copies of the Software, and to permit persons to whom the         &lt;br /&gt;;; Software is furnished to do so, subject to the following         &lt;br /&gt;;; conditions: &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;;; The above copyright notice and this permission notice shall be        &lt;br /&gt;;; included in all copies or substantial portions of the Software. &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;;; THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND,        &lt;br /&gt;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES         &lt;br /&gt;;; OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND         &lt;br /&gt;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT         &lt;br /&gt;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,         &lt;br /&gt;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING         &lt;br /&gt;;; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR         &lt;br /&gt;;; OTHER DEALINGS IN THE SOFTWARE. &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;;; Author: Craig Andera &amp;lt;candera@wangdera.com&amp;gt; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;;; Commentary: Invoke this minor mode to have your typing speed        &lt;br /&gt;;; continuously displayed in the mode line, in the format [75 WPM]         &lt;br /&gt;;; To use, just load this file and invoke (typing-speed-mode) or         &lt;br /&gt;;; (turn-on-typing-speed-mode) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(define-minor-mode typing-speed-mode        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Displays your typing speed in the status bar.&amp;quot;         &lt;br /&gt;&amp;#160; :lighter typing-speed-mode-text         &lt;br /&gt;&amp;#160; :group typing-speed         &lt;br /&gt;&amp;#160; (if typing-speed-mode         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (progn         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (add-hook &amp;#39;post-command-hook &amp;#39;typing-speed-post-command-hook)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (setq typing-speed-event-queue &amp;#39;())         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (setq typing-speed-update-timer (run-with-timer 0 typing-speed-update-interval &amp;#39;typing-speed-update)))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (progn         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (remove-hook &amp;#39;post-command-hook &amp;#39;typing-speed-post-command-hook)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (cancel-timer typing-speed-update-timer)))) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(defcustom typing-speed-window 5        &lt;br /&gt;&amp;#160; &amp;quot;The window (in seconds) over which typing speed should be evaluated.&amp;quot;         &lt;br /&gt;&amp;#160; :group &amp;#39;typing-speed) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(defcustom typing-speed-mode-text-format &amp;quot; [%s WPM]&amp;quot;        &lt;br /&gt;&amp;#160; &amp;quot;A format string that controls how the typing speed is displayed in the mode line.         &lt;br /&gt;Must contain exactly one %s delimeter where the typing speed will be inserted.&amp;quot;         &lt;br /&gt;&amp;#160; :group &amp;#39;typing-speed) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(defcustom typing-speed-update-interval 1        &lt;br /&gt;&amp;#160; &amp;quot;How often the typing speed will update in the mode line, in seconds.         &lt;br /&gt;It will always also update after every command.&amp;quot;         &lt;br /&gt;&amp;#160; :group &amp;#39;typing-speed) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(defvar typing-speed-mode-text (format typing-speed-mode-text-format 0))        &lt;br /&gt;(defvar typing-speed-event-queue &amp;#39;())         &lt;br /&gt;(defvar typing-speed-update-timer nil) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(defun typing-speed-post-command-hook ()        &lt;br /&gt;&amp;#160; &amp;quot;When typing-speed-mode is enabled, fires after every command. If the         &lt;br /&gt;command is self-insert-command, log it as a keystroke and update the         &lt;br /&gt;typing speed.&amp;quot;         &lt;br /&gt;&amp;#160; (if (eq this-command &amp;#39;self-insert-command)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (let ((current-time (float-time)))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (push current-time typing-speed-event-queue)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (typing-speed-update)))) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(defun typing-speed-update ()        &lt;br /&gt;&amp;#160; &amp;quot;Calculate and display the typing speed.&amp;quot;         &lt;br /&gt;&amp;#160; (let ((current-time (float-time)))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (setq typing-speed-event-queue         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (typing-speed-remove-old-events         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (- current-time typing-speed-window)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; typing-speed-event-queue))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (typing-speed-message-update))) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(defun typing-speed-message-update ()        &lt;br /&gt;&amp;#160; &amp;quot;Updates the status bar with the current typing speed&amp;quot;         &lt;br /&gt;&amp;#160; (let* ((chars-per-second (/ (length typing-speed-event-queue) (float typing-speed-window)))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (chars-per-min (* chars-per-second 60))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (words-per-min (/ chars-per-min 5)))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (setq typing-speed-mode-text (format &amp;quot; [%s WPM]&amp;quot; (floor words-per-min)))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (force-mode-line-update))) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(defun typing-speed-remove-old-events (threshold queue)        &lt;br /&gt;&amp;#160; &amp;quot;Removes events older than than the threshold (in seconds) from the specified queue&amp;quot;         &lt;br /&gt;&amp;#160; (if (or (null queue)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (&amp;gt; threshold (car queue)))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nil         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (cons (car queue)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (typing-speed-remove-old-events threshold (cdr queue))))) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(defun turn-on-typing-speed ()        &lt;br /&gt;&amp;#160; &amp;quot;Turns on typing-speed-mode&amp;quot;         &lt;br /&gt;&amp;#160; (if (not typing-speed-mode)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (typing-speed-mode))) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" size="3"&gt;(defun turn-off-typing-speed ()        &lt;br /&gt;&amp;#160; &amp;quot;Turns off typing-speed-mode&amp;quot;         &lt;br /&gt;&amp;#160; (if typing-speed-mode         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (typing-speed-mode)))&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53784" width="1" height="1"&gt;</description></item><item><title>Zermatt in Community Server</title><link>http://www.pluralsight.com/community/blogs/keith/archive/2008/10/06/zermatt-in-community-server.aspx</link><pubDate>Mon, 06 Oct 2008 22:07:17 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53780</guid><dc:creator>keith-brown</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I&amp;#39;m about to embark on a mission to get Zermatt integrated into pluralsight.com as our single-sign-on solution, and a big part of that is getting our Community Server installation wired into that. I&amp;#39;m curious if anyone else has seen any work being done in this area, or if I&amp;#39;ll be the first?&lt;/p&gt; &lt;p&gt;I plan to blog about my progress (and share it) if there&amp;#39;s not already a built-in solution out there.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53780" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Security/default.aspx">Security</category><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Geek+talk/default.aspx">Geek talk</category><category domain="http://www.pluralsight.com/community/blogs/keith/archive/tags/Identity/default.aspx">Identity</category></item><item><title>Demos for Maine Bytes User Group Custom Controls in Silverlight 2 talk</title><link>http://www.pluralsight.com/community/blogs/fritz/archive/2008/10/03/demos-for-maine-bytes-user-group-custom-controls-in-silverlight-2-talk.aspx</link><pubDate>Fri, 03 Oct 2008 11:56:38 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53751</guid><dc:creator>fritz-onion</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For those of you that attended my talk in Portland, ME at the Maine Bytes user group, you can grab the demos &lt;a href="http://alt.pluralsight.com/fritz/downloads/MaineBytes_SilverlightCustomControls_2008_10.zip"&gt;here&lt;/a&gt;. Thanks for coming!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53751" width="1" height="1"&gt;</description></item><item><title>Microsoft's Next Gen application server offering: "Dublin"</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/10/01/microsoft-s-next-gen-application-server-offering-quot-dublin-quot.aspx</link><pubDate>Wed, 01 Oct 2008 20:26:42 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53736</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Microsoft &lt;a href="http://www.microsoft.com/net/Dublin.aspx" target="_blank"&gt;announced today&lt;/a&gt; the details of upcoming features that will be added to Windows Server 2008 to provide a rich host for WCF Services and WF workflows.&amp;nbsp; In addition, the announcement provides some information about upcoming features in the .NET Framework v4.0 including.&amp;nbsp; I&amp;#39;m extremely excited to have a host process for WCF and WF applications out of the box with management features for my services and workflows.&amp;nbsp; This has been a big detractor for many customers looking at adopting these technologies.&amp;nbsp; The great thing is that this host technology is integrated with IIS so I don&amp;#39;t have yet another management story or some specialized application server, I get to leverage all the work the IIS team did to make IIS 7 and the tooling so great.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;With WCF and building workflow services, having the correlation components is a huge step forward and addresses one of my biggest gripes with the correlation available today.&amp;nbsp; It&amp;#39;s a very exciting time to be building connected systems on the Microsoft platform.&amp;nbsp; As more information is released at PDC, I&amp;#39;ll start blogging about some of the new features and capabilities in the framework and using &amp;quot;Dublin&amp;quot; as a host.&amp;nbsp; That&amp;#39;s right, I said I&amp;#39;d actually start blogging some technical information.&amp;nbsp; :)&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Check out the &lt;a href="http://www.microsoft.com/net/Dublin.aspx" target="_blank"&gt;information about what&amp;#39;s coming&lt;/a&gt; and look for more information to come out of the &lt;a href="http://microsoftpdc.com/Default.aspx" target="_blank"&gt;Professional Developer&amp;#39;s Conference (PDC)&lt;/a&gt;.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53736" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Workflow+Foundation/default.aspx">Windows Workflow Foundation</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Communication+Foundation/default.aspx">Windows Communication Foundation</category></item><item><title>Screencast: Using persistence services in Windows WF</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/10/01/screencast-using-persistence-services-in-windows-wf.aspx</link><pubDate>Wed, 01 Oct 2008 18:32:16 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53729</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;My latest &lt;a href="http://channel9.msdn.com/shows/Endpoint/Endpoint-Screencasts-Using-Persistence-Services-in-Windows-Workflow-Foundation-WF/" target="_blank"&gt;screencast&lt;/a&gt; in the Windows WF developer screencast series has been loaded up as of this morning.&amp;nbsp; In this session, I discuss the basics of add persistence services into the workflow runtime using code or configuration.&amp;nbsp; Additionally, to show off the power of this feature in Windows WF, I use two different host processes sharing a persistence store: the first host starts a workflow and then it persists, while the second host picks up the workflow after its configured delay and resumes the processing. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a title="Endpoint Screencasts - Using Persistence Services in Windows Workflow Foundation (WF)" href="http://channel9.msdn.com/shows/Endpoint/Endpoint-Screencasts-Using-Persistence-Services-in-Windows-Workflow-Foundation-WF/"&gt;Endpoint Screencasts - Using Persistence Services in Windows Workflow Foundation (WF)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://channel9.msdn.com/shows/Endpoint/Endpoint-Screencasts-Using-Persistence-Services-in-Windows-Workflow-Foundation-WF/" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="184" alt="WF_Persistence" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/matt/WF_5F00_Persistence_5F00_3.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Previous screencasts in this series:&lt;/p&gt; &lt;li&gt;&lt;a href="http://www.pluralsight.com/community/blogs/matt/archive/2008/09/24/screencast-running-workflows-in-your-net-applications.aspx" target="_blank"&gt;Running workflows in your .NET applications&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.pluralsight.com/community/blogs/matt/archive/2008/09/23/screencast-your-first-state-machine-workflow.aspx"&gt;Your first state machine workflow&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.pluralsight.com/community/blogs/matt/archive/2008/09/23/screeencast-your-first-sequential-workflow.aspx"&gt;Your first sequential workflow&lt;/a&gt;&lt;/li&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a title="RSS feed of all screencasts in the series" href="http://www.pluralsight.com/community/blogs/matt/rss.aspx?Tags=Screencasts&amp;amp;AndTags=1"&gt;RSS feed of all screencasts in the series&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53729" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Workflow+Foundation/default.aspx">Windows Workflow Foundation</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Screencasts/default.aspx">Screencasts</category></item><item><title>New Data Dude GDR is out</title><link>http://www.pluralsight.com/community/blogs/brian/archive/2008/10/01/new-data-dude-gdr-is-out.aspx</link><pubDate>Wed, 01 Oct 2008 15:49:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53725</guid><dc:creator>brian-randell</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Gert&amp;#39;s got all the details on his &lt;a href="http://blogs.msdn.com/gertd/archive/2008/09/30/visual-studio-team-system-2008-database-edition-gdr-september-ctp.aspx"&gt;blog&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;To me, the biggest point to latch on to is this:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the last CTP, we started our final descend, we will publish a public RC (release candidate) when it is ready, followed by the RTM release. The upcoming RC (release candidate) will be a &amp;quot;go-live&amp;quot; release. The two remaining areas the team is currently working on is performance and bugs, we are done with all work items. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#39;ll be nice to have a final version that I can use with SQL Server 2000, 2005, and 2008. Patience grasshopper, patience.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53725" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/brian/archive/tags/VSTS/default.aspx">VSTS</category></item><item><title>You Think You Like Halloween?</title><link>http://www.pluralsight.com/community/blogs/craig/archive/2008/10/01/you-think-you-like-halloween.aspx</link><pubDate>Wed, 01 Oct 2008 12:41:59 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53722</guid><dc:creator>craig-andera</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I don’t think you like Halloween like &lt;a href="http://www.socalhalloween.com/Pictures2007.html"&gt;this guy&lt;/a&gt; likes Halloween…&lt;/p&gt;  &lt;p&gt;I’m glad to have &lt;a href="http://www.pluralsight.com/community/blogs/craig/archive/2005/01/14/4958.aspx"&gt;helped&lt;/a&gt; in even a very small way. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53722" width="1" height="1"&gt;</description></item><item><title>The Data Dude Is Immortal</title><link>http://www.pluralsight.com/community/blogs/starr/archive/2008/09/30/the-data-dude-is-immortal.aspx</link><pubDate>Wed, 01 Oct 2008 05:00:19 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53718</guid><dc:creator>david-starr</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;MSFT has announced &lt;a href="http://www.microsoft.com/presspass/press/2008/sep08/09-29VS10PR.mspx" target="_blank"&gt;plans to upgrade&lt;/a&gt; the .NET framework to 4.0 on the next major release, and in the same communiqué quietly slipped in some interesting news. The features previously relegated to the Visual Studio Database Professional SKU will be moved into other SKUs in the 2010 release of Visual Studio.&lt;/p&gt;  &lt;p&gt;This is an interesting move. Certainly the features in Data Dude have always been super cool. Who doesn’t think massive DB compares, stored proc. unit tests, sample data generation, and database entity management as code files are sweet? Now everyone gets the love.&lt;/p&gt;  &lt;p&gt;In a way, I am disappointed. I have always thought the Data Dude was a potential game changer. Targeting database developers as developers instead of DBAs is a fundamental change in the way these folks can manage their work and the expectations others have of them. Treating DBAs as developers holds the promise of increasing the data development role into one of respectability, and could serve to boost the overall profession of the traditional DBA.&lt;/p&gt;  &lt;p&gt;Farewell, Data Dude. I liked thee.&lt;/p&gt;  &lt;p&gt;On the other hand, simplifying the Visual Studio SKU set can not be a bad thing. Buying Team System and determining licensing can be harder to figure out than buying a house. And putting the Data Dude features into the hands of developers via the Visual Studio Development SKU is a nice trade.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53718" width="1" height="1"&gt;</description></item><item><title>Cast Cast 15 – Uncle Bob Martin</title><link>http://www.pluralsight.com/community/blogs/starr/archive/2008/09/30/cast_2D00_cast_2D00_15_2D00_uncle_2D00_bob_2D00_martin.aspx</link><pubDate>Wed, 01 Oct 2008 04:06:34 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53717</guid><dc:creator>david-starr</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;When I heard &lt;a href="http://blog.objectmentor.com/articles/category/uncle-bobs-blatherings" target="_blank"&gt;Uncle Bob&lt;/a&gt;’s keynote address at the Agile conference in Toronto this year, I just knew he had to come on the show. Lucky for all of us, he agreed!&lt;/p&gt;  &lt;p&gt;Given that the title of Uncle Bob’s latest book is &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0132350882/elegantcode-20"&gt;Clean Code&lt;/a&gt;, the Elegant Code Cast was a perfect fit. This is a great episode, chock full of ideas for developers of all stacks.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Official Bio&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Robert C. Martin has been a software professional since 1970. In the last 35 years, he has worked in various capacities on literally hundreds of software projects. He has authored &amp;quot;landmark&amp;quot; books on Agile Programming, Extreme Programming, UML, Object-Oriented Programming, and C++ Programming. He has published dozens of articles in various trade journals. Today, He is one of the software industry&amp;#39;s leading authorities on Agile software development and is a regular speaker at international conferences and trade shows. He is a former editor of the C++ Report and currently writes a monthly &lt;em&gt;Craftsman &lt;/em&gt;column for &lt;em&gt;&lt;a href="http://www.sdmagazine.com/"&gt;Software Development magazine&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://elegantcode.com/cast/files/cast/ECC_15_UncleBob.mp3"&gt;Download the episode MP3&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=271207118"&gt;&lt;img alt="View in iTunes" src="http://elegantcode.com/cast/wp-content/plugins/podpress/images/button_itunes.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/elegantcodecast"&gt;&lt;img alt="Any Podcatcher" src="http://elegantcode.com/cast/wp-content/plugins/podpress/images/button_rss_podcast.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a title="Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin Series)" href="http://www.amazon.com/exec/obidos/ASIN/0132350882/elegantcode-20%20%20"&gt;&lt;img style="display:inline;" src="http://images.amazon.com/images/P/0132350882.01.MZZZZZZZ.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0132350882/elegantcode-20"&gt;Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin Series)&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53717" width="1" height="1"&gt;</description></item><item><title>Paul Vick relocates to Oslo</title><link>http://www.pluralsight.com/community/blogs/dbox/archive/2008/09/29/paul-vick-relocates-to-oslo.aspx</link><pubDate>Tue, 30 Sep 2008 05:54:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53700</guid><dc:creator>don-box</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://www.panopticoncentral.net/archive/2008/09/29/24398.aspx"&gt;Paul just joined my team&lt;/a&gt; to work on the Oslo language, specifically the parts covered in &lt;a href="http://douglaspurdy.com/2008/09/14/the-hottest-talk-at-pdc/"&gt;this talk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I can&amp;#39;t put into words how happy I am that Paul signed up to help us birth this baby.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53700" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/dbox/archive/tags/Oslo/default.aspx">Oslo</category></item><item><title>More News: Data Dude and Team Dev are now One!</title><link>http://www.pluralsight.com/community/blogs/brian/archive/2008/09/29/more-news-data-dude-and-team-dev-are-now-one.aspx</link><pubDate>Mon, 29 Sep 2008 20:50:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53697</guid><dc:creator>brian-randell</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;If you go down the page &lt;a href="http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx"&gt;here&lt;/a&gt;, you find some juicy goodness related to VSTS:&lt;/p&gt;
&lt;p&gt;&amp;quot;&lt;strong&gt;Better Together &amp;ndash; Visual Studio Team System Development Edition and Database Edition&lt;br /&gt;&lt;/strong&gt;In recognition of the increased need to integrate more of the lifecycle members together, we will provide a unified Development and Database product in Visual Studio Team System 2010. Beginning October 1, 2008 Development Edition and Database Edition MSDN subscribers will have access to both products.&amp;quot;&lt;br /&gt;&lt;br /&gt;Great news!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53697" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/brian/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://www.pluralsight.com/community/blogs/brian/archive/tags/Team+Development/default.aspx">Team Development</category></item><item><title>Visual Studio 2010 is its name</title><link>http://www.pluralsight.com/community/blogs/brian/archive/2008/09/29/visual-studio-2010-is-it-s-name.aspx</link><pubDate>Mon, 29 Sep 2008 20:45:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53696</guid><dc:creator>brian-randell</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;And the .NET Framework 4.0 is coming too!&lt;/p&gt;
&lt;p&gt;More details &lt;a href="http://www.microsoft.com/presspass/press/2008/sep08/09-29VS10PR.mspx"&gt;here&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#800080;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53696" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/brian/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://www.pluralsight.com/community/blogs/brian/archive/tags/Team+Development/default.aspx">Team Development</category></item><item><title>Rails - Testing</title><link>http://www.pluralsight.com/community/blogs/kevinj/archive/2008/09/29/rails-testing.aspx</link><pubDate>Mon, 29 Sep 2008 11:33:22 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53689</guid><dc:creator>kevin-jones</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Now that we have a Rails app up and running, all be it a simple one, it&amp;#39;s time to think about testing. When you generate an application you also get a test structure created for us. This structure lets us create unit, functional and integration tests. Each kind of test has a different scope and I&amp;#39;ll start, as we should, with unit tests.&lt;/p&gt;
&lt;p&gt;
Looking in the test/unit directory there&amp;#39;s a single ruby source file for each model created previously, each of these files looks like this
&lt;/p&gt;
&lt;pre class="ruby"&gt;
class BlogEntryTest &amp;lt; ActiveSupport::TestCase
  # Replace this with your real tests.
  def test_truth
    assert true
  end
end
&lt;/pre&gt;
&lt;p&gt;
Pretty straightforward, assert that true is true. (If this is your first glance at Ruby code the first line says that BlogEntryTest derives from TestCase and the &amp;#39;def&amp;#39; statement defines a method).
&lt;/p&gt;
&lt;p&gt; 
Before running the test I create the test database
&lt;/p&gt;
&lt;pre&gt;
mysqladmin -u root create rblog_test
&lt;/pre&gt;
&lt;p&gt;
There are two ways (at least) to run this test, running
&lt;/p&gt;
&lt;pre&gt;
ruby -I test test/unit/blog_entry_test.rb 
&lt;/pre&gt;
&lt;p&gt;
(-I test here includes the test directory in the search path)
or
&lt;/p&gt;
&lt;pre&gt;
rake test:units
&lt;/pre&gt;
&lt;p&gt;
Running the first command line on my machine gives this:
&lt;/p&gt;
&lt;pre&gt;
Loaded suite test/unit/blog_entry_test
Started
E
Finished in 0.033476 seconds.

  1) Error:
test_truth(BlogEntryTest):
ActiveRecord::StatementInvalid: Mysql::Error: Table &amp;#39;rblog_test.users&amp;#39; doesn&amp;#39;t exist: DELETE FROM `users`
&lt;/pre&gt;
&lt;p&gt;
This shows us that the database tables don&amp;#39;t exist. Running
&lt;/p&gt;
&lt;pre&gt;
rake db:test:prepare
&lt;/pre&gt;
&lt;p&gt;
fixes this and re-running the test now succeeds.
&lt;/p&gt;
&lt;pre&gt;
Started
.
Finished in 0.095619 seconds.
&lt;/pre&gt;
&lt;p&gt;
It&amp;#39;s also possible to run
&lt;/p&gt;
&lt;pre&gt;
rake test:units
&lt;/pre&gt;
&lt;p&gt;
This will run all the unit tests
&lt;/p&gt;
&lt;pre&gt;
Started
...
Finished in 0.056533 seconds.

3 tests, 3 assertions, 0 failures, 0 errors
&lt;/pre&gt;
&lt;p&gt;
Now that there&amp;#39;s some confidence that the testing framework is in place it&amp;#39;s time to start thinking about real tests.
&lt;/p&gt;
&lt;p&gt;
The user class represents a user of the system, either a user with a blog or a user posting comments. This user must have a username, email and password. The user class looks like this
&lt;/p&gt;
&lt;pre class="ruby"&gt;
class User &amp;lt; ActiveRecord::Base
  validates_presence_of :name
  validates_presence_of :email
  validates_uniqueness_of :email
  validates_confirmation_of :password
  validate :password_non_blank
&lt;/pre&gt;
&lt;p&gt;
This suggest some tests. Does the user have a name and email, is the emil unique and does the password have some data! The first test checks that the user is valid
&lt;/p&gt;
&lt;pre class="ruby"&gt;
class UserTest &amp;lt; ActiveSupport::TestCase
  def test_empty_user_is_invalid
    user = User.new
    assert !user.valid?
    assert !user.errors.empty?
    assert user.errors.invalid?(:name)
    assert user.errors.invalid?(:email)
    assert_equal &amp;quot;Missing password&amp;quot;, user.errors.on_base
  end
&lt;/pre&gt;
&lt;p&gt;
The test creates a User then calls the valid? method (if you&amp;#39;re new to Ruby the ? on the end of a method is part of the method name and indicates that the method returns a boolean, a ! on the end indicates that the method mutates data) . The test asserts that the user is not valid and then asserts that the appropriate errors have been added to the errors collection.
&lt;/p&gt;
&lt;p&gt;
The code has other tests for the user, checking that the password and password_confirmation match and that the password is not blank. There is also a test that a User is valid if all the fields are set correctly, none of these are shown here but the code is available &lt;a href="http://www.mantiso.com/svn/rblog/trunk"&gt;here&lt;/a&gt; not that there&amp;#39;s much to see at the moment!
&lt;/p&gt;
&lt;p&gt;
The final test for the moment checks that the User must have a unique email. The code looks like this:
&lt;/p&gt;
&lt;pre class="ruby"&gt;
def test_user_unique_email
  user = User.new(:name =&amp;gt; &amp;quot;Test Name&amp;quot;,
                  :email =&amp;gt; users(:kevin).email,
                  :password =&amp;gt; &amp;quot;wibble&amp;quot;,
                  :password_confirmation =&amp;gt; &amp;quot;wibble&amp;quot;)

  assert !user.save
  assert_equal &amp;quot;has already been taken&amp;quot;, user.errors.on(:email)
  assert_equal ActiveRecord::Errors.default_error_messages[:taken], user.errors.on(:email)      
end
&lt;/pre&gt;
&lt;p&gt;
The thing of interest in this code is the line
&lt;/p&gt;
&lt;pre class="ruby"&gt;
:email =&amp;gt; users(:kevin).email,
&lt;/pre&gt;
&lt;p&gt;
This loads a fixture named :kevin. Fixtures are test data defined in a yml file (YAML Ain&amp;#39;t a Markup Language) file. Fixtures have names and cen be loaded by name in the test code. The fixture looks like this:
&lt;/p&gt;
&lt;pre&gt;
kevin:
  email: kevin@test.com
  hashed_password: hash
  name: Kevin
&lt;/pre&gt;
&lt;p&gt;
The fixture data is loaded into the database, then the line &amp;#39;users(:kevin).email&amp;#39; loads the fixture and gets its email value. This means that the test tries to save a user with the same email address as one that already exists, and that should fail.
&lt;/p&gt;









&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53689" width="1" height="1"&gt;</description></item><item><title>Changing Source Control as a Kaizen Event</title><link>http://www.pluralsight.com/community/blogs/starr/archive/2008/09/26/changing_2D00_source_2D00_control_2D00_as_2D00_a_2D00_kaizen_2D00_event.aspx</link><pubDate>Sat, 27 Sep 2008 06:25:20 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53675</guid><dc:creator>david-starr</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;I often have opportunities to work with organizations in transition to Team Foundation Server for their source control solution. Most large organizations (and many smaller ones) look for a migration route for their source code that allows them to retain history and their current merge/branching model. In heavily regulated environments, this is often a fundamental requirement, in fact. Accordingly, there are many packaged conversion tools out there to serve this need. There are Team System SCC conversion utilities for IBM’s Clear Case, VSS, SVN, StarTeam, CVS, Perforce, and others. The mere existence of these tools lets me know that migrating source code in the same structure it previously existed is considered “good” by many.&lt;img style="margin:5px;" height="240" src="http://blogs.itworldcanada.com/shane/files/2008/01/kaizen2.gif" width="136" align="right" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;My default recommendation is to do a clean, fresh, manual import rather than to migrate source code with existing structure. I have several reasons for this including:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Code migration is more complicated and it will take longer (cost more). &lt;/li&gt;    &lt;li&gt;Tools have flaws. Everything may not turn out the way you think it will when you have been branching and labeling in that old system for 6 years. &lt;/li&gt;    &lt;li&gt;The majority of code file comparisons occur at the tail end of source control. Very rarely is a comparison made on a code file in SCC older than 60 days. &lt;/li&gt;    &lt;li&gt;The reason you want to retain history is to blame &lt;a href="http://www.dontbetheguy.com/home.html" target="_blank"&gt;that guy&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Your branching model was probably over complicated anyway. &lt;/li&gt;    &lt;li&gt;History for auditing purposes can be found in the old system, kept online and read-only for a year or two if necessary. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But the number one reason I don’t want to bring the source code over in the same model is because this is a golden opportunity to improve.&lt;/p&gt;  &lt;p&gt;It amazes me that the structure of a SCC system reflects the nature of the organization that created it. I have learned, however, that it does. Are management decisions hectic? Are releases going out buggy? Look for lots of deep branching structures. Are developers working in separate branches on the same release? Look for lots of cherry pick merges.&lt;/p&gt;  &lt;p&gt;It is a fundamentally healthy exercise to pull a large pile of source code out of the old system and bring it into the new one one project at a time, ensuring that each one is self contained. In other words, break the dependencies between projects and all of those weird references to resources outside the boundary of the solution.&lt;/p&gt;  &lt;p&gt;It comes down to this, why are you making this tooling change in the first place? Odds are that the tool change is being done because the team wants things to get better. Whether you are moving to Team System, SVN, or something else, you are moving to a new system to make an improvement. Given the desire to improve, take advantage of the opportunity to actually make things better rather than to persist old dysfunctions into a shiny new tool.&lt;/p&gt;  &lt;p&gt;As a manager of development teams myself, I found great value in migrating source control every 2 years or so, just to cause such a spring cleaning event.&lt;/p&gt;  &lt;p&gt;And the number one thing you can do to make this a true &lt;a href="http://en.wikipedia.org/wiki/Kaizen" target="_blank"&gt;Kaizen&lt;/a&gt; event? Ensure that each and every project (that is, every *.*proj file) gets build built via a CI build before adding another project to the system.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53675" width="1" height="1"&gt;</description></item><item><title>T-30: PDC 2008 Pre-con</title><link>http://www.pluralsight.com/community/blogs/brian/archive/2008/09/26/t-30-pdc-2008-pre-con.aspx</link><pubDate>Sat, 27 Sep 2008 05:18:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53673</guid><dc:creator>brian-randell</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;Well, we&amp;#39;re 30 days out from PDC 2008 pre-con day.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m doing a pre-con on &lt;a href="http://www.microsoftpdc.com/Agenda/Preconference.aspx#get-more-out-of-visual-studio-team-system-2008"&gt;VSTS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A big part of the pre-con is best practices and worst practices, or anti-patterns.&lt;/p&gt;
&lt;p&gt;As I get things all nice and packed up into a nice package with a bow on top, I&amp;#39;m curious.&lt;/p&gt;
&lt;p&gt;If you&amp;#39;re coming to my pre-con, what do you want to know? What are you looking for? What would make your day?&lt;/p&gt;
&lt;p&gt;Feel free to leave a comment on this post or use the Contact link.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53673" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/brian/archive/tags/PDC/default.aspx">PDC</category><category domain="http://www.pluralsight.com/community/blogs/brian/archive/tags/VSTS/default.aspx">VSTS</category></item><item><title>RTM for HPC Server 2008 is now available</title><link>http://www.pluralsight.com/community/blogs/drjoe/archive/2008/09/25/rtm-for-hpc-server-2008-is-now-available.aspx</link><pubDate>Thu, 25 Sep 2008 20:28:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53654</guid><dc:creator>joe-hummel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In case you missed it, RTM for Windows HPC Server 2008 is now available &lt;a href="http://technet.microsoft.com/en-us/evalcenter/cc835241.aspx"&gt;here&lt;/a&gt;.&amp;nbsp; Don&amp;#39;t forget to grab the &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=47&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=2c6db4f3-b604-461f-9170-43e9cee062c5&amp;amp;u=details.aspx%3ffamilyid%3d12887DA1-9410-4A59-B903-693116BFD30E%26displaylang%3den"&gt;SDK&lt;/a&gt; for HPC Server, which allows you to program MPI, as well as access a cluster programmatically via the HPC Server API.&lt;/p&gt;
&lt;p&gt;There are also a number of tutorials and how-to articles available on Microsoft&amp;#39;s &lt;a href="http://www.microsoft.com/hpc/en/us/developer-resources.aspx"&gt;developer resources&lt;/a&gt; page, two of which we wrote and blogged about earlier:&amp;nbsp; &amp;quot;&lt;a href="http://www.pluralsight.com/community/blogs/drjoe/archive/2008/06/19/51178.aspx"&gt;Classic HPC Development using Visual C++&lt;/a&gt;&amp;quot;, and &amp;quot;&lt;a href="http://www.pluralsight.com/community/blogs/drjoe/archive/2008/08/18/learning-parallel-programming-from-shared-memory-multi-threading-to-distributed-memory-multi-processing.aspx"&gt;From Sequential to Parallel Code&lt;/a&gt;&amp;quot;.&amp;nbsp; The former is for more experienced HPC C++ developers, and uses OpenMP, MPI and MPI.NET&amp;nbsp;to develop an image processing application.&amp;nbsp; The latter is oriented towards newcomers to HPC and HPC Server 2008, and shows how to move step-by-step from a sequential, desktop GUI application (managed C++ or C#) to a parallel, cluster-based&amp;nbsp;application.&amp;nbsp; A variety of parallelization techniques are presented, including&amp;nbsp;parametric sweep, explicit threads, OpenMP, TPL, and HPC Server&amp;#39;s new SOA-based approach.&amp;nbsp; Both tutorials include extensive lab exercises, solutions, and demos.&lt;/p&gt;
&lt;p&gt;Cheers!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53654" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/OpenMP/default.aspx">OpenMP</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/HPC/default.aspx">HPC</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/TPL/default.aspx">TPL</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/MPI/default.aspx">MPI</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/HPC+Server+2008/default.aspx">HPC Server 2008</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/WCF/default.aspx">WCF</category><category domain="http://www.pluralsight.com/community/blogs/drjoe/archive/tags/MPI.NET/default.aspx">MPI.NET</category></item><item><title>Learning Rails - Part 2</title><link>http://www.pluralsight.com/community/blogs/kevinj/archive/2008/09/25/learning-rails-part-2.aspx</link><pubDate>Thu, 25 Sep 2008 07:32:22 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53645</guid><dc:creator>kevin-jones</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I wanted to make this a series about Rails and about Ruby. To that end I&amp;#39;m going to write a series of entries on building an MVC application. As I said in the previous post I am a Ruby and Rails neophyte, so I&amp;#39;ll be learning as I go along, regard this as a developer&amp;#39;s journal. The aim being that you can learn from the mistakes that I make. If this really gets going I also hope to do some screencasts along the way.&lt;/p&gt;
&lt;p&gt;What am I going to write - a blog of course (is there any other sort of web app out there today :) ). I chose blogging software because&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Everybody understands what a blog is, so no trying to figure out the behaviour&lt;/li&gt;

  &lt;li&gt;It gives me a chance to play with different formats (html and RSS)&lt;/li&gt;

  &lt;li&gt;At some point I&amp;#39;ll need to write support for the various APIs (atom, etc)&lt;/li&gt;

  &lt;li&gt;There&amp;#39;ll be chances to use AJAX&lt;/li&gt;

  &lt;li&gt;I can learn how to deploy to Apache&lt;/li&gt;

  &lt;li&gt;It shouldn&amp;#39;t take too long to get things going&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#39;m going to rely heavily on the &lt;a href="http://pragprog.com/titles/rails2/agile-web-development-with-rails"&gt;&amp;#39;Agile Development With Rails&amp;#39;&lt;/a&gt; book, and hopefully any feedback I get. I&amp;#39;m learning Ruby at the same time as Rails and Ruby is a very idiomatic language, I know I&amp;#39;ll get some of the idioms wrong, so again feedback is welcome. Oh and initially I&amp;#39;m doing this on MacBook using TextMate as the editor. At some point I&amp;#39;m going to play with NetBeans and Eclipse as tools and so try out JRuby, not that I like a challenge of learning 17 new things at once!&lt;/p&gt;
&lt;h3&gt;Start at the beginning. Go on the end and then stop, said the Red Queen&lt;/h3&gt;
&lt;p&gt;So the beginning of a Rails app is the code generator, to create the application I fire up a terminal make sure I&amp;#39;m in the right directory and call&lt;/p&gt;
&lt;pre&gt;
rails rblog
&lt;/pre&gt;
&lt;p&gt;This gives the well known directory structure of&lt;/p&gt;
&lt;pre&gt;
app
config
db
doc
lib
log
public
script
test
tmp
vendor
&lt;/pre&gt;
&lt;p&gt;Most of the time I&amp;#39;ll be in the app directory (that&amp;#39;s where the models, controllers and views are), but I&amp;#39;ll also use stuff from the db directory where the &amp;#39;migrations&amp;#39; are stored, in the public directory where public the web files are and in config, where various setup files live.&lt;/p&gt;
&lt;p&gt;Once the application has been created I can fire up another terminal (I usually have three open, one for my commands, one for the server and another to see the log file), change the the project directory and run the server with the command &amp;#39;script/server&amp;#39;&lt;/p&gt;
&lt;p&gt;This starts the server on port 3000, the server I&amp;#39;m using here is Mongrel, you can also start WEBrick. There&amp;#39;s plenty of discussion on these servers out on the web so I won&amp;#39;t go into the differences here.&lt;/p&gt;
&lt;p&gt;Once the server is running you can point your browser at http://localhost:3000 and you should see something like:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/kevinj/RailsHomePage.jpg" width="480" height="346" alt="RailsHomePage" /&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m going to use &lt;a href="http://mysql.com"&gt;MySql&lt;/a&gt; for the database and this needs to be configured. To do this I&amp;#39;ve edited config/database.yml to look like this:&lt;/p&gt;
&lt;pre&gt;
development:
adapter: mysql
encoding: utf8
database: rblog_development
username: root
password:
socket: /tmp/mysql.sock
&lt;/pre&gt;
&lt;p&gt;Adding similar entries for test and production databases. Once that&amp;#39;s done I created the development database&lt;/p&gt;
&lt;pre&gt;
mysqladmin -u root create rblog_development
&lt;/pre&gt;
&lt;p&gt;Now that all the necessary structure is in place I can create the first controllers and models. What do I know about the blog? I know it&amp;#39;s going to have users, users can have blogs and blogs will have entries and comments. There may be more things eventually, such as tags, categories, pingbacks etc, but for now that&amp;#39;s enough. So not to get too far ahead of myself I decided to create scaffolding for users, blogs and blogentries.&lt;/p&gt;
&lt;p&gt;For the users model I&amp;#39;m going to user a similar approach to that used in the Rails book, so the user will have an email address and password, the password will be stored as a hash will be salted. A user will have a name that can be displayed on comments or on a blog and users may also own blogs. For now I&amp;#39;m going to limit this to one blog per user, but in the future this may expand to multiple blogs.&lt;/p&gt;
&lt;p&gt;Running&lt;/p&gt;
&lt;pre&gt;
script/generate scaffold user email:string hashed_password:string name:string blog_id:integer
&lt;/pre&gt;
&lt;p&gt;gives me what I want. Doing something similar for blogs and blogentries&lt;/p&gt;
&lt;pre&gt;
script/generate scaffold blog title:string sub_title:string owner_id:integer admin:boolean
script/generate scaffold blog_entry title:string entry:text author_id:integer entry_added:datetime entry_last_edited:datetime
&lt;/pre&gt;
&lt;p&gt;creates those models and their corresponding controllers and migrations.&lt;/p&gt;
&lt;p&gt;Notice that as in my previous post I&amp;#39;m using singular names for the model components, so user, blog and blog_entry.&lt;/p&gt;
&lt;p&gt;Now that&amp;#39;s done it&amp;#39;s then onto setting out some of the UI and writing some unit testing code.&lt;/p&gt;

&lt;div class="posttagsblock"&gt;&lt;a href="http://technorati.com/tag/Rails" rel="tag"&gt;Rails&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Ruby" rel="tag"&gt;Ruby&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53645" width="1" height="1"&gt;</description></item><item><title>Screencast: Running workflows in your .NET applications</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/09/24/screencast-running-workflows-in-your-net-applications.aspx</link><pubDate>Wed, 24 Sep 2008 20:04:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:53639</guid><dc:creator>matt-milner</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;My latest screencast is up on the Endpoint.tv show on Channel 9.&amp;nbsp; In this screencast I cover the basic steps to host workflows in your applications.&amp;nbsp; I cover the basic hosting steps in a console application, then jump in and run a workflow in an ASP.NET application.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://channel9.msdn.com/shows/Endpoint/Endpoint-Screencasts-Running-Workflows-in-your-NET-Applications/"&gt;Screencasts: Running Workflows in your NET Applications&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a target="_blank" href="http://channel9.msdn.com/shows/Endpoint/Endpoint-Screencasts-Running-Workflows-in-your-NET-Applications/"&gt;&lt;img border="0" width="244" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/matt/RunningWFInNetApps_5F00_3.png" alt="RunningWFInNetApps" height="184" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Previous screencasts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="http://www.pluralsight.com/community/blogs/matt/archive/2008/09/23/screencast-your-first-state-machine-workflow.aspx"&gt;Your first state machine workflow&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://www.pluralsight.com/community/blogs/matt/archive/2008/09/23/screeencast-your-first-sequential-workflow.aspx"&gt;Your first sequential workflow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.pluralsight.com/community/blogs/matt/rss.aspx?Tags=Screencasts&amp;amp;AndTags=1"&gt;RSS feed of all screencasts in the series&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53639" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Workflow+Foundation/default.aspx">Windows Workflow Foundation</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Screencasts/default.aspx">Screencasts</category></item></channel></rss>