<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://codebetter.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>Jacob Lewallen - All Comments</title><link>http://codebetter.com/blogs/jacob.lewallen/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20416.853)</generator><item><title>re: A First Look At Machine.Migrations</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177390</link><pubDate>Tue, 29 Apr 2008 18:23:59 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177390</guid><dc:creator>Colin Jack</dc:creator><description>&lt;p&gt;Ta for replying.&lt;/p&gt;
&lt;p&gt;&amp;quot;Error prone because we do use NH and the SQL tends to be pretty complex in inheritance mapped hierarchies.&amp;quot;&lt;/p&gt;
&lt;p&gt;Yeah that's definitely true, will be interested in reading more about the approach that builds on the NHibernate/entities. &lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177390" width="1" height="1"&gt;</description></item><item><title>re: A First Look At Machine.Migrations</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177377</link><pubDate>Tue, 29 Apr 2008 16:15:32 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177377</guid><dc:creator>jlewallen</dc:creator><description>&lt;p&gt;Chris, absolutely, send it on over!&lt;/p&gt;
&lt;p&gt;Colin,&lt;/p&gt;
&lt;p&gt;Without knowing more about the particular system you're using I'm not sure I can offer up all of the pros and cons. If you're using just SQL change scripts the pros I can think of are you're far more resilient to changes. As I mentioned our particular approach doesn't do so well when we let data migrations sit around without being applied because you need to maintain them. And then you lose the ability to build your DB from scratch. Then again, using this approach gives you power. You can do lots of things in your migrations that would normally be very difficult or error prone in SQL. Error prone because we do use NH and the SQL tends to be pretty complex in inheritance mapped hierarchies.&lt;/p&gt;
&lt;p&gt;We also run production copies of the DB in dev so we're more aware of the performance. This solves the problem with old data migrations that won't compile and us from having to create new blank databases. We run our tests against a light version of the database that is basically production with data purged.&lt;/p&gt;
&lt;p&gt;I'm a big believer in tools being right for some and not necessarily right for others.&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177377" width="1" height="1"&gt;</description></item><item><title>re: A First Look At Machine.Migrations</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177358</link><pubDate>Tue, 29 Apr 2008 13:17:27 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177358</guid><dc:creator>Chris Bilson</dc:creator><description>&lt;p&gt;Hi Jacob,&lt;/p&gt;
&lt;p&gt;I have been playing around with IronPython and since there is already visual studio integration for it and the syntax is so similar to boo, I figured it would be fun to add IPy support to Machine.Migrations. &lt;/p&gt;
&lt;p&gt;I did that, and while the language is similar to boo, the API is completely different. Basically, instead of compiling a module, you ask the IPy engine for types defined in migrations scripts.&lt;/p&gt;
&lt;p&gt;I have the implementation of a PythonMigrationFactory along with a test. I can submit a patch if you are interested in looking at it.&lt;/p&gt;
&lt;p&gt;Until boo support for visual studio gets built, this is a simple way to get vs integration.&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177358" width="1" height="1"&gt;</description></item><item><title>re: A First Look At Machine.Migrations</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177273</link><pubDate>Mon, 28 Apr 2008 20:29:17 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177273</guid><dc:creator>Colin Jack</dc:creator><description>&lt;p&gt;Realized I have a few questions but first I should say that since I have little experience of the migration functionality in Rails this could be a dumb question...&lt;/p&gt;
&lt;p&gt;Basically I wondered what would push you towards this approach versus normal change scripts? I'm just asking as we use manually created SQL files, they and the resulting DB are versioned so we could apply just the required updates but in general we just build the DB from scratch on dev machines.&lt;/p&gt;
&lt;p&gt;Anyway I'm guessing that the main advantage of this sort of approach is when you go to the more complex model driven approaches (based on your NHibernate entities)?&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177273" width="1" height="1"&gt;</description></item><item><title>re: A First Look At Machine.Migrations</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177270</link><pubDate>Mon, 28 Apr 2008 19:55:54 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177270</guid><dc:creator>Colin Jack</dc:creator><description>&lt;p&gt;Very cool stuff, look forward to reading your future blog posts on it.&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177270" width="1" height="1"&gt;</description></item><item><title>re: A First Look At Machine.Migrations</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177265</link><pubDate>Mon, 28 Apr 2008 18:40:19 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177265</guid><dc:creator>Andrew Stewart</dc:creator><description>&lt;p&gt;Hi Jacob&lt;/p&gt;
&lt;p&gt;Thanks for that, thats just cheating compiling it all together when you need it. ;o) &lt;/p&gt;
&lt;p&gt;Cheers&lt;/p&gt;
&lt;p&gt;Andy&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177265" width="1" height="1"&gt;</description></item><item><title>re: Projects in Visual Studio</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/01/projects-in-visual-studio.aspx#177257</link><pubDate>Mon, 28 Apr 2008 16:00:42 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177257</guid><dc:creator>Patrick Smacchia</dc:creator><description>&lt;p&gt;&amp;gt; Do I have a group of classes that can be packaged and then later re-used?&lt;/p&gt;
&lt;p&gt;I am very surprised that nobody mentionned the namsepaces. Project/assemblies are physical stuff and should never be used to just group some classes. Only physical reason can lead to new physical artefact (such as tiers that live on different machine separation, or interfaces for IoC).&lt;/p&gt;
&lt;p&gt;&amp;gt; I want two things. I want something slightly lower on the hierarchy than a project - a sub-project.&lt;/p&gt;
&lt;p&gt;Previously I wrote Project/Assemblies because VisualStudio enforces a one-to-one relationship between the two concepts and this is indeed very unfortunate. You won't solve this with .NET modules that are another physical concepts but more with a mapping between projects and namespaces.&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177257" width="1" height="1"&gt;</description></item><item><title>Reflective Perspective - Chris Alcock  &amp;raquo; The Morning Brew #82</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177210</link><pubDate>Mon, 28 Apr 2008 07:31:01 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177210</guid><dc:creator>Reflective Perspective - Chris Alcock  » The Morning Brew #82</dc:creator><description>&lt;p&gt;Pingback from &amp;nbsp;Reflective Perspective - Chris Alcock &amp;nbsp;&amp;amp;raquo; The Morning Brew #82&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177210" width="1" height="1"&gt;</description></item><item><title>re: A First Look At Machine.Migrations</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177199</link><pubDate>Sun, 27 Apr 2008 19:35:35 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177199</guid><dc:creator>jlewallen</dc:creator><description>&lt;p&gt;Oops, I am a total moron and accidentally deleted some comments when trying to nuke that spam. Here is what I nuked, sorry David.&lt;/p&gt;
&lt;p&gt;&amp;gt; David Laribee said:&lt;/p&gt;
&lt;p&gt;Cool.&lt;/p&gt;
&lt;p&gt;I half wonder if migrations shouldn't refactor NH mappings as well. In a greenfield scenario where you've got a clean association of tables serving as entity and value object stores, why not?&lt;/p&gt;
&lt;p&gt;&amp;gt; And then in reply to my 7:17pm comment:&lt;/p&gt;
&lt;p&gt;I got the idea talking to Jeremy Miller about an internal DSL (fluent interface) for expressing NHibernate mappings. Pairing this idea with a sort of &amp;quot;conventional mapping&amp;quot; approach (where you don't have to express all that much mapping at all; it is inferred) got me wondering about why we're migrating our databases then modifying our mappings, especially (or exclusively) in a greenfield or highly-controlled, model-first scenario.&lt;/p&gt;
&lt;p&gt;So now I return to the idea of why we don't maintain migrations as maps and why we don't treat maps as evolutionary. This style would seem possible given the whole object first mentality a lot of us are latched on to.&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177199" width="1" height="1"&gt;</description></item><item><title>re: A First Look At Machine.Migrations</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177198</link><pubDate>Sun, 27 Apr 2008 19:29:03 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177198</guid><dc:creator>jlewallen</dc:creator><description>&lt;p&gt;Andrew,&lt;/p&gt;
&lt;p&gt;Machine.Migrations looks for individual files matching a regular expression and pulls the version number out then. It creates MigrationReference from that process. (I've included a link to the relevant source) &amp;nbsp;Once it has decided which migrations to apply (based on those versions and the version in the database) they are then compiled (See MigrationRunner.CanMigrate) Each individual migration gets its own assembly. We never lose that original MigrationReference and so we know where to find each versions migration, etc...&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://svn2.assembla.com/svn/machine/trunk/Machine.Migrations/Machine.Migrations/Services/Impl/MigrationFinder.cs"&gt;svn2.assembla.com/.../MigrationFinder.cs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://svn2.assembla.com/svn/machine/trunk/Machine.Migrations/Machine.Migrations/Services/Impl/MigrationRunner.cs"&gt;svn2.assembla.com/.../MigrationRunner.cs&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177198" width="1" height="1"&gt;</description></item><item><title>re: A First Look At Machine.Migrations</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177196</link><pubDate>Sun, 27 Apr 2008 18:14:06 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177196</guid><dc:creator>Andrew Stewart</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;I'm just wondering how you got the version number from the filename? As a contributer to rikMigrations a similar framework I'm unaware of a way you can do this? We have used a migration attribrute on ours t get the same effect however it is code noise.&lt;/p&gt;
&lt;p&gt;Cheers&lt;/p&gt;
&lt;p&gt;Andy&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177196" width="1" height="1"&gt;</description></item><item><title>re: A First Look At Machine.Migrations</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/25/a-first-look-at-machine-migrations.aspx#177153</link><pubDate>Sat, 26 Apr 2008 02:17:36 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177153</guid><dc:creator>Jacob</dc:creator><description>&lt;p&gt;David,&lt;/p&gt;
&lt;p&gt;I think you'd have to migrate your mappings and have that generate your schema migrations. Otherwise I'm not sure you could infer enough from the schema changes to adjust the mappings. Interesting idea though.&lt;/p&gt;
&lt;p&gt;Whenever I start thinking about improving migrations in general I get frustrated. I just don't like migrations at all. I want my application to migrate itself when I publish.... I've had ideas on this but nothing worth implementing just yet, especially given our architecture.&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=177153" width="1" height="1"&gt;</description></item><item><title>re: Good Tools and ReSharper 4 EAP Thoughts</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/16/good-tools-and-resharper-4-eap-thoughts.aspx#176777</link><pubDate>Fri, 18 Apr 2008 08:27:14 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:176777</guid><dc:creator>Martijn Burgers</dc:creator><description>&lt;p&gt;@Eric Swann : I have exactly the same annoyances with the unittest runner 3.1 build for VS 2008. The main difference with the unit test runner for VS 2003 (i can only compare with vs 2003) is that the devenv.exe process uses far more cpu time while in VS 2003 this is almost idle. This results in my case in out of memory exceptions and slow gui response.&lt;/p&gt;
&lt;p&gt;This is problem occurs probably due to the output a test creates. ReSharper renders the test output to an html control while the tests run and this can take significant amount of CPU time if there's a lot of output. In my case i have turned on the the 'Track Running Test' option and this improves the run slightly.&lt;/p&gt;
&lt;p&gt;I've reported this to jetbrains and they will improve this in 4.0. They are planning to disable output at all when the&lt;/p&gt;
&lt;p&gt;Output panel is hidden in the future versions, so that it will speed up the test runner more.&lt;/p&gt;
&lt;p&gt;Laters,&lt;/p&gt;
&lt;p&gt;Martijn&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=176777" width="1" height="1"&gt;</description></item><item><title>re: Good Tools and ReSharper 4 EAP Thoughts</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/16/good-tools-and-resharper-4-eap-thoughts.aspx#176764</link><pubDate>Thu, 17 Apr 2008 16:21:25 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:176764</guid><dc:creator>Jacob</dc:creator><description>&lt;p&gt;DeeJay: I'll have to look into Unleash It! Our deployment is done with msbuild+robocopy+TeamCity and I'd like to see what other options we have, especially with multiple web servers, etc...&lt;/p&gt;
&lt;p&gt;Eric: My EAP has been pretty stable. I do see an occasional exception though, but it doesn't get in my way.&lt;/p&gt;
&lt;p&gt;Jura: Great to hear on the Generate wizard and I will add that as a feature request. Thanks...&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=176764" width="1" height="1"&gt;</description></item><item><title>re: Good Tools and ReSharper 4 EAP Thoughts</title><link>http://codebetter.com/blogs/jacob.lewallen/archive/2008/04/16/good-tools-and-resharper-4-eap-thoughts.aspx#176760</link><pubDate>Thu, 17 Apr 2008 14:26:11 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:176760</guid><dc:creator>Jura Gorohovsky</dc:creator><description>&lt;p&gt;Hi Jacob,&lt;/p&gt;
&lt;p&gt;1) There's currently no such setting in ReSharper that would allow you to use Import Symbol Completion as the default completion technique. However, you're welcome to create a new feature request in &amp;lt;a href=&amp;quot;&lt;a rel="nofollow" target="_new" href="http://www.jetbrains.net/jira/&amp;quot;&amp;gt;JIRA&amp;lt;/a&amp;gt;"&gt;www.jetbrains.net/.../a&amp;gt;&lt;/a&gt; if you feel that's really important to you. Please set forth your reasons clearly - the more convincing your request is, the higher is the chance to see it implemented :)&lt;/p&gt;
&lt;p&gt;2) As for the Generate wizard, we're planning to improve it considerably by the time R# 4.0 is released, and if you stay tuned for new EAP builds, chances are you're going to be able to take advantage of these improvements even sooner.&lt;/p&gt;
&lt;p&gt;Happy coding!&lt;/p&gt;
&lt;img src="http://codebetter.com/aggbug.aspx?PostID=176760" width="1" height="1"&gt;</description></item></channel></rss>