<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Kevin Daly</title><link>http://dotnetjunkies.com/WebLog/kevdaly/default.aspx</link><description>.NET Developer and shameless self-promoter from Wellington, New Zealand</description><dc:language>en-NZ</dc:language><generator>CommunityServer 1.0 (Build: 1.0.1.50214)</generator><item><title>Last DotNetJunkies post</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2008/02/09/436324.aspx</link><pubDate>Sat, 09 Feb 2008 16:36:08 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:436324</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/436324.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=436324</wfw:commentRss><description>&lt;p&gt;For the last couple of years I've been conscious of the fact that my online efforts are spread over the web with little rhyme or reason.&lt;/p&gt; &lt;p&gt;It seems inherently silly to have a personal web site and have my actual blog hosted elsewhere.&lt;br&gt;So, in order to move closer to providing a One-Stop Shop For All Your Kevin Daly-related Needs (er...), and also to um,&amp;nbsp; sort-of-you-know-what-I-mean "unify the brand", I've created a blog on my web site at &lt;a title="Kevin Daly's Blog" href="http://www.kevdaly.co.nz/weblog"&gt;http://www.kevdaly.co.nz/weblog&lt;/a&gt;.&lt;br&gt;It also gives me complete control over content and format, so from now on everything is my fault.&lt;br&gt;That is where I'll be posting in future (I've copied some past posts over to the new blog for convenience. But I won't be doing that with this one because that would be stupid, eh).&lt;/p&gt; &lt;p&gt;I'd like to give a big "thank you" to Donny and the Dotnetjunkies team for hosting my ramblings for the past few years, it's much appreciated.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;That's all Ladies and Gentlemen.&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=436324" width="1" height="1"&gt;</description></item><item><title>More BlogApi fixes....All done now I think</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2008/01/13/418399.aspx</link><pubDate>Sun, 13 Jan 2008 20:59:52 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:418399</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/418399.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=418399</wfw:commentRss><description>&lt;p&gt;Anyone who's interested can get the latest version &lt;a href="ftp://www.kevdaly.co.nz/Software/Source/BlogApi.zip"&gt;here&lt;/a&gt;.&lt;br&gt;&lt;/p&gt; &lt;p&gt;I've been dogfooding this one with Windows Live Writer, and found and fixed a variety of bugs that were preventing the two from working together in peace and happiness etc.&lt;/p&gt; &lt;p&gt;I've tested adding a post, editing a post, including categories (which was one of the sources of trouble), retrieving recent posts, retrieving one of those posts for editing, and uploading images. I now have working implementations of all of these scenarios, and WLW now has no trouble with them.&lt;/p&gt; &lt;p&gt;So I'm reasonably confident in saying that after some embarrassing hiccups, niftiness has finally been achieved.&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=418399" width="1" height="1"&gt;</description></item><item><title>BlogApi fix</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2008/01/11/417443.aspx</link><pubDate>Sat, 12 Jan 2008 04:42:35 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:417443</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/417443.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=417443</wfw:commentRss><description>&lt;p&gt;I just discovered a bug in my code for the MetaWeblog API getRecentPosts command - I was passing &lt;em&gt;postId&lt;/em&gt; (which in this case is naturally empty) to the implementation method rather than &lt;em&gt;blogId&lt;/em&gt;. So embarrassing.&amp;nbsp; Lucky nobody was actually using it :-)&lt;/p&gt; &lt;p&gt;The updated code can be found &lt;a href="ftp://www.kevdaly.co.nz/Software/Source/BlogApi.zip"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I discovered this one since I'm writing an implementation for my own web site which I'm currently putting through its paces.&lt;br&gt;Other than that stupid, &lt;em&gt;stupid&lt;/em&gt; little slip it's coming on quite well.&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=417443" width="1" height="1"&gt;</description></item><item><title>MetaWeblog API library stuff part 2: Hints on implementing a BlogProvider (corrected typo in earlier version of title)</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/12/31/411573.aspx</link><pubDate>Mon, 31 Dec 2007 21:39:12 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:411573</guid><dc:creator>kevdaly</dc:creator><slash:comments>1</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/411573.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=411573</wfw:commentRss><description>&lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:64e7f7d2-6fe4-4389-a78d-0d41175ad68b"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MetaWeblog%20API"&gt;MetaWeblog API&lt;/a&gt;, &lt;a href="http://technorati.com/tags/WCF"&gt;WCF&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Notice I said "hints", I don't want to raise anyone's expectations unduly :-)&lt;/p&gt; &lt;p&gt;One thing before I start: If you're working with the code from my previous post and construct a POX service using those guidelines, the url will be something like "(site name)/(application name)/blogservice.svc/metaweblog". This can probably be made friendlier on IIS7 but I haven't tried yet.&lt;/p&gt; &lt;p&gt;Anyway, &lt;a title="DefaultBlogProvider.cs (not actually useful)" href="http://www.kevdaly.co.nz/software/source/DefaultBlogProvider.zip"&gt;here's&lt;/a&gt;&amp;nbsp; the simplest and most utterly useless implementation of IBlogProvider.&lt;br&gt;You'll notice that every method is a stub returning a &lt;em&gt;NotImplementedException&lt;/em&gt;. That won't even allow you to register your test blog site with a blog client, although it will return an XML-RPC fault structure containing the error text, which is a test in itself.&lt;/p&gt; &lt;p&gt;To register your blog with a blog client application you'll need to have the GetUsersBlogs method actually return a BlogInfo struct (in the C#, not XML-RPC sense) populated with some convincing values.&lt;/p&gt; &lt;p&gt;To do some decent testing (and as a starting point for a real implementation) you can download &lt;a title="FakeBlogProvider.cs" href="http://www.kevdaly.co.nz/software/source/FakeBlogProvider.zip"&gt;this&lt;/a&gt; version: It doesn't actually read any real data or edit any real blog posts, but it does an adequate job of pretending. The exception is the NewMediaObject method, which still returns a NotImplementedException. Any implementation must return a url for the uploaded file, as mentioned in the code comments.&lt;br&gt;If you read that file you'll notice frequent calls to &lt;em&gt;ValidateUser()&lt;/em&gt;, declared at the end of the class as a partial method (one of the nifty new features in .NET 3.5/VS 2008). If you include &lt;a title="FakeBlogProvider.Security.cs" href="http://www.kevdaly.co.nz/software/source/FakeBlogProvider.Security.zip"&gt;this&lt;/a&gt; optional implementation of the partial method, the user credentials supplied will be checked against the ASP.NET Membership Provider, and the user will additionally be checked to see whether they are in the role specified in the &lt;em&gt;blogUserRoleName&lt;/em&gt; application setting (that is, in the&amp;nbsp; &lt;em&gt;appSettings&lt;/em&gt; section in your config file). You can of course change the code to validate against anything you like.&lt;/p&gt; &lt;p&gt;&lt;em&gt;FakeBlogProvider.cs&lt;/em&gt; hopefully contains enough comments to point you in the right direction to create a working implementation of &lt;em&gt;IBlogProvider&lt;/em&gt;.&lt;br&gt;It goes without saying that all the code presented here and in the previous post is provided "as is" (well of course, how could it be provided "as it isn't" ?), with no assurances or guarantees as to its quality, accuracy, or fitness for any purpose whatsoever. And I can guarantee it will &lt;strong&gt;not&lt;/strong&gt; improve your social life.&lt;br&gt;Anyway, if you find this useful I'd be interested to hear about it, so feel free to use the contact form and let me know.&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=411573" width="1" height="1"&gt;</description></item><item><title>MetaWeblog API library for .NET 3.5 (esp. WCF)</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2008/01/13/411246.aspx</link><pubDate>Mon, 14 Jan 2008 00:51:26 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:411246</guid><dc:creator>kevdaly</dc:creator><slash:comments>3</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/411246.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=411246</wfw:commentRss><description>&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:66f5b1c0-f3b5-4b61-a1d6-cd7e9fa153cb"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MetaWeblog%20API"&gt;MetaWeblog API&lt;/a&gt;, &lt;a href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a href="http://technorati.com/tags/WCF"&gt;WCF&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;strong&gt;[UPDATE 14/01/2008: A new version of the code is now available with numerous (OK, several) bug fixes, following testing in the real world]&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The clock is about to tick over into 2008 here in Godzone, and all over the country happy drunks are merrily beating each other senseless. I can already hear local members of the knuckle-walking community cheerfully grunting to one another in what passes for a greeting among those of us whose ancestors spent insufficient time banging the rocks together...(I can think of no better way to start the new year than to insult 90% of the population. It'll save time later)&lt;/p&gt; &lt;p&gt;But I myself am sadly once more slaving over a hot keyboard. At least for a few more minutes (I have however marked the occasion by cracking open a Stella. But I digress). The reason I'm posting at this late hour is to make available the first version of a library I've written for Blog servers to work with the MetaWeblog API (as I've said before, I &lt;em&gt;loathe&lt;/em&gt; XML-RPC, but you have to be pragmatic about these things). This means that you can enable your blog (if it doesn't have such support already) to work with tools such as Windows Live Writer. Which is nifty.&lt;/p&gt; &lt;p&gt;The idea is that you grab the aforementioned code from &lt;a title="BlogApi source code zip file" href="http://www.kevdaly.co.nz/software/source/blogapi.zip"&gt;here&lt;/a&gt;, write a class implementing the &lt;em&gt;IBlogProvider&lt;/em&gt; interface (I don't like using the -Provider name for something that isn't an ASP.NET Provider, but I couldn't think of anything better), and use said class to mediate between your data store (and if appropriate, file system) and the MetaWeblog-parsing-and-regurgitating code which is abstracted away into the MetaWeblogManager class. The library defines a few data structures such as &lt;em&gt;BlogInfo&lt;/em&gt;, &lt;em&gt;UserInfo&lt;/em&gt;, &lt;em&gt;CategoryInfo&lt;/em&gt; and &lt;em&gt;BlogEntry&lt;/em&gt; to enable complex data to be passed back and forth between MetaWeblogManager and its BlogProvider (the class you'll write to implement &lt;em&gt;IBlogProvider&lt;/em&gt;) without the latter having to deal with or know about XML-RPC gunk.&lt;/p&gt; &lt;p&gt;Please note that this library requires .NET 3.5, as it relies heavily on LINQ to XML (and as you can see the following implementation bits use 3.5 as well).&lt;/p&gt; &lt;p&gt;It's designed to work with WCF 3.5 SOAP-less services, but could be made to work with something like an HttpHandler as well with a little extra code to convert between &lt;em&gt;XElement&lt;/em&gt;s and Request/Response stream content.&lt;/p&gt; &lt;p&gt;An example WCF contract looks like this:&lt;/p&gt; &lt;p&gt;using System.ServiceModel;&lt;br&gt;using System.ServiceModel.Web;&lt;br&gt;using System.Xml.Linq;  &lt;p&gt;[ServiceContract]&lt;br&gt;public interface IBlogService&lt;br&gt;{  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebInvoke(BodyStyle = WebMessageBodyStyle.Bare,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RequestFormat = WebMessageFormat.Xml,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseFormat = WebMessageFormat.Xml, Method = "POST")]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; XElement MetaWeblog(XElement request);&lt;br&gt;}  &lt;p&gt;The implementing service being something like:  &lt;p&gt;using System.Xml.Linq;&lt;br&gt;using Daly.Blogging;  &lt;p&gt;public class BlogService : IBlogService&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MetaWeblogManager manager = new MetaWeblogManager { BlogProvider = new TestBlogProvider() };&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public XElement MetaWeblog(XElement request)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return manager.Execute(request);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}  &lt;p&gt;Note that &lt;em&gt;TestBlogProvider&lt;/em&gt; is just an example - this would be whatever class you create to implement &lt;em&gt;IBlogProvider&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;I have to admit that for something so tiny separating the contract stuff out into a separate interface is a bit precious, so feel free not to do that. But that's just my opinion, I know some of you have Very Strong Views on that sort of thing.&lt;/p&gt; &lt;p&gt;The config for this service looks like this:&lt;/p&gt; &lt;p&gt;&amp;lt;system.serviceModel&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bindings&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webHttpBinding&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;binding name="blogBinding" maxReceivedMessageSize="204800" &amp;gt;&amp;lt;/binding&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/webHttpBinding&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bindings&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;services&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service name="BlogService"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address="" behaviorConfiguration="Daly.Blogging.WebBehaviour" bindingConfiguration="blogBinding"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; binding="webHttpBinding" contract="IBlogService" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/services&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behaviors&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpointBehaviors&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behavior name="WebBehaviour"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webHttp /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behavior&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behavior name="Daly.Blogging.WebBehaviour"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webHttp /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behavior&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/endpointBehaviors&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behaviors&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/system.serviceModel&amp;gt;  &lt;p&gt;This is actually only necessary in this case if you plan to support &lt;em&gt;metaWeblog.newMediaObject&lt;/em&gt; and allow media files larger than about 20K (maxReceivedMessageSize has to be bumped up from its default 64K to allow for the base64-encoded-and-therefore-expanded file contents) - otherwise you can leave out the system.serviceModel config entries and include a &lt;em&gt;Factory="System.ServiceModel.Activation.WebServiceHostFactory"&lt;/em&gt; attribute in your .svc file.  &lt;p&gt;To answer a few questions you may have:  &lt;ol&gt; &lt;li&gt;&lt;em&gt;What's with all this Daly.Blogging nonsense?&lt;/em&gt; - It's not, in fact, because I have an enormous ego (that's a coincidence). I've just used that namespace to avoid name collisions with your own code.  &lt;li&gt;&lt;em&gt;Why use an interface instead of an abstract class for the "BlogProvider"?&lt;/em&gt; - Good question. I might change my mind about this later.  &lt;li&gt;&lt;em&gt;Why are the (very few) fault code numbers defined as constants instead of an enum?&lt;/em&gt; - To avoid casting them back to &lt;em&gt;System.Int32&lt;/em&gt;, and because they are never read, only written (er, that sort of made sense to me at the time).  &lt;li&gt;&lt;em&gt;Why &lt;strong&gt;not&lt;/strong&gt; implement a proper ASP.NET Provider?&amp;nbsp; - &lt;/em&gt;I planned to do this at one point (Sunday afternoon, to be precise), then decided that it didn't really fit the use case. The truth is that the provider will always be a custom implementation that you write yourself, there is no useful default or pre-packaged version. So there's not much point in providing declarative support. That being the case, I decided to keep it simple and avoid the Reflection overhead. For those who are interested in such things this implementation is more or less a Strategy pattern.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;I may update the code over the next few days. I also intend to provide some useful information about implementing a BlogProvider, unless I forget. Or get hit by a meteorite. You know, stuff.  &lt;p&gt;Anyway, Happy New Year.  &lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=411246" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2008 includes a refreshed image library</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/11/25/378156.aspx</link><pubDate>Sun, 25 Nov 2007 14:39:43 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:378156</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/378156.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=378156</wfw:commentRss><description>&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f253bd60-5076-4821-a58b-c73b20db747e"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Visual%20Studio%202008"&gt;Visual Studio 2008&lt;/a&gt;&lt;/div&gt; &lt;p&gt;I haven't seen this mentioned anywhere, but as the title of this post says Visual Studio 2008 includes an updated version of the image library (icons, bitmaps and so on for use in applications) that shipped with Visual Studio 2005.&lt;/p&gt; &lt;p&gt;More consistent and helpful categorisation has been introduced to the organisation of the library, there is an entire category of common elements to be included in new imagery, and most importantly from my point of view there is new Vista-specific imagery, something that was definitely on my wish list.&lt;/p&gt; &lt;p&gt;This will be good news for anyone who noticed that the library that shipped with the betas was unchanged from Visual Studio 2005 and may have been worried that that's all we'd get.&lt;/p&gt; &lt;p&gt;This is another touch that may seem small by itself but is one of the many elements that make Visual Studio 2008 the first version that really seems &lt;em&gt;at home&lt;/em&gt; on Vista (apart from anything else, the VS 2005+VS 2005 SP1+Update for Vista setup reminded me uncomfortably of the bad old days of NT4 + Whatever The Hell Service Pack That Was + the NT 4 Option Pack just to run ASP...ah, those were the days. But I digress).&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=378156" width="1" height="1"&gt;</description></item><item><title>ZamDes inaugural meeting</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/09/12/309811.aspx</link><pubDate>Thu, 13 Sep 2007 02:38:44 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:309811</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/309811.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=309811</wfw:commentRss><description>&lt;p&gt;As the title (see, that big header-ish thing up there...I'd point but I can't) implies I attended the first meeting of the &lt;a title="ZamDes" href="http://www.zamdes.com/"&gt;ZamDes&lt;/a&gt; user group in Wellington tonight.&lt;/p&gt; &lt;p&gt;Kudos (even though I hate that word) to Nas and Isha for putting on a very good presentation. &lt;/p&gt; &lt;p&gt;I think this is going to be an excellent way of sharing information and tips and stuff (I've been awake for a &lt;em&gt;whole&lt;/em&gt; day so I can't think of more intelligent words than "stuff". But it's a perfectly good word anyway). I'm looking forward to seeing how the web site develops.&lt;/p&gt; &lt;p&gt;&lt;em&gt;And&lt;/em&gt; I enjoyed my lollipop.&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=309811" width="1" height="1"&gt;</description></item><item><title>Off Topic: Riverbend has posted again</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/09/06/302879.aspx</link><pubDate>Thu, 06 Sep 2007 12:58:42 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:302879</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/302879.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=302879</wfw:commentRss><description>&lt;p&gt;This has nothing to do with anything technical or even geeky, but there is a wider world, the one that actually matters.&lt;/p&gt; &lt;p&gt;Those who have been following the blog of the Iraqi who writes as Riverbend will be pleased to know she has posted again, covering her family's escape to Syria.&lt;br&gt;I'm relieved to know they got out, and filled with sadness and cold rage that they and so many others had to.&lt;br&gt;&lt;/p&gt; &lt;p&gt;Go read &lt;a href="http://riverbendblog.blogspot.com"&gt;Riverbend's latest&lt;/a&gt; now, and then everything else on her blog.&lt;/p&gt; &lt;p&gt;Then study war no more.&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=302879" width="1" height="1"&gt;</description></item><item><title>Tip for NZ Daylight Saving changes</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/08/31/296780.aspx</link><pubDate>Sat, 01 Sep 2007 01:56:02 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:296780</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/296780.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=296780</wfw:commentRss><description>&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:9dc4af58-40f7-4a54-8512-9b6a6272a05a"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/New%20Zealand%20daylight%20saving"&gt;New Zealand daylight saving&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Those of us working in New Zealand will probably be aware (or should be aware) that our government in its wisdom decided on very short notice (on the principle that Anything I Don't Understand Isn't Important) to extend daylight saving from this year, basically to squeeze more money out of the tourists.&lt;/p&gt; &lt;p&gt;The updates for Windows are mostly available, but there is nevertheless room for uncertainty about whether any given machine has been patched. &lt;/p&gt; &lt;p&gt;A nice feature added to the DateTime structure in .NET 2.0 is the &lt;em&gt;IsDaylightSavingTime&lt;/em&gt; method, which enables the following expression which can be run on any machine in the NZ timezone to test whether the daylight saving patch has been applied: &lt;/p&gt; &lt;p&gt;&lt;code&gt;new DateTime(2007,9,30,3,0,0).IsDaylightSavingTime()&lt;/code&gt;&lt;/p&gt; &lt;p&gt;So there you go.&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=296780" width="1" height="1"&gt;</description></item><item><title>Belated TechEdNZ07 Wrap up</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/08/18/285192.aspx</link><pubDate>Sat, 18 Aug 2007 19:49:32 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:285192</guid><dc:creator>kevdaly</dc:creator><slash:comments>2</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/285192.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=285192</wfw:commentRss><description>&lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:dfc24af9-4855-4503-9efb-8f2ee46e6484"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TechEdNZ07"&gt;TechEdNZ07&lt;/a&gt;&lt;/div&gt;&lt;br&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;I originally meant to blog at least once a day during the event, but unfortunately I forgot to take the charger adapter for my Harrier (yeah, I know. I'm so embarrassed).&lt;br&gt;I didn't get back till Thursday night and I've spent a couple of days catching up on things (and sleep).&lt;/p&gt; &lt;p&gt;Since I obviously didn't attend every session any impressions I give of the dominant themes are naturally coloured by my own interests (although I will refrain from discussing young women with feathers on their heads, despite having found that very interesting).&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; One standout though not only from my own impressions but from talking to other developers was Silverlight: actually, I'm very pleased about this because it means that I'll be able to bring it up as an option without spending so much time trying to explain what it &lt;em&gt;is&lt;/em&gt;. Of course the really cool stuff will come about a year from now (guessing wildly) when 1.1 becomes available.&lt;br&gt;I think Silverlight will also provide a pathway for some developers leading to WPF, which hasn't received the attention it deserves outside compulsive early adopters like yours truly. Partly I think this may be because Microsoft oversold the designer/developer split, leading many developers to assume that WPF wasn't for them. I expect this to change.&lt;/p&gt; &lt;p&gt;Another biggy was obviously Visual Studio 2008, although I was surprised that more wasn't being made of it.&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; Of the features that will actually be available when Visual Studio 2008 is released (so excluding Silverlight 1.1 and the ASP.NET Futures stuff), the most significant in terms of new language/platform functionality (as opposed to IDE improvements) is probably LINQ...we all tend to zoom in on LINQ to SQL but I hope people don't ignore the other flavours: I recently worked on adding support for some fairly complex new business rules to a commerce site, which involved writing predicate syntax queries against generic collections - a very cool feature of .NET 2, but it would all have been much, much easier with LINQ.&lt;br&gt;&amp;nbsp;&amp;nbsp; As regards LINQ to SQL, I do hope developers will see it not so much as Just Another ORM or Something The DBA Probably Won't Like and actually get a feel for the benefits of adding querying capabilities to the language itself (seeing beyond the database scenarios will help in this).&lt;br&gt;&amp;nbsp; I'm curious as to what LINQ to XML might be able to bring to the interaction with POX web services, although in those cases where XML-RPC is used,&amp;nbsp;it's so bloody awful I doubt anything would help &lt;em&gt;(no doubt &lt;/em&gt;&lt;a href="http://blogs.msdn.com/darrylburling/archive/2007/08/13/tech-ed-keynote-and-market-place.aspx"&gt;Darryl&lt;/a&gt;&lt;em&gt; would say I was being cynical about that :-) ). &lt;/em&gt;But that's not the fault of LINQ.&lt;br&gt;&amp;nbsp;&amp;nbsp;The &lt;em&gt;LinqDataSource&lt;/em&gt; for ASP.NET should complete the process of making drag-and-drop databinding for web applications backed by a database not only useful but also respectable. Being able to bind to ObjectDataSources and thence to TableAdapters in VS 2005 was a good step in this direction, but maintaining the relationship between database, adapter, datasource and control can be a source of pain and anguish (and cryptic error messages), so LinqDataSource is a very welcome addition.&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=285192" width="1" height="1"&gt;</description></item><item><title>TechEd keynote</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/08/12/281220.aspx</link><pubDate>Sun, 12 Aug 2007 15:56:09 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:281220</guid><dc:creator>kevdaly</dc:creator><slash:comments>1</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/281220.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=281220</wfw:commentRss><description>After the usual noise and fluff that preceded it Lou Carbone's keynote was actually very good...I'd expected a lot of marketingspeak so it was a welcome surprise.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Technorati tags: &lt;a href="http://technorati.com/tag/TechEdNZ07"&gt;TechEdNZ07&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=281220" width="1" height="1"&gt;</description></item><item><title>TechEd 2007 (NZ)...The Foremath</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/08/09/278011.aspx</link><pubDate>Thu, 09 Aug 2007 13:46:28 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:278011</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/278011.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=278011</wfw:commentRss><description>&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:07c5929a-10cc-4403-bec6-f3e16c9b9649"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TechEdNZ07"&gt;TechEdNZ07&lt;/a&gt;&lt;/div&gt; &lt;p&gt;(Well,&amp;nbsp; if you can have an aftermath, why not a &lt;em&gt;foremath&lt;/em&gt;, eh?)&lt;/p&gt; &lt;p&gt;Next week is TechEd week here in New Zealand (well, in Auckland, which qualifies as New Zealand if you want to stretch a point...although I've always regarded it as Greater Sydney)&lt;/p&gt; &lt;p&gt;There should be a lot of interesting content this year, especially with the 2008 wave within smelling distance of release and the ever-nifty Silverlight attracting a lot of attention.&lt;/p&gt; &lt;p&gt;I've attended every TechEd of the honest-to-goodness-actually-released .NET era, but until this year I've never been able to attend the drinks on the last day because I've always been in a mad dash to the airport at that time.&lt;br&gt;Fortunately however, this year I don't fly out until Thursday, so I'll finally be able to stay for drinks on Wednesday as God intended.&lt;/p&gt; &lt;p&gt;Of course, if anyone has any good ideas about drinks at any other time I'm always open to constructive and imaginative thinking on this subject.&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=278011" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2008 Beta 2 is on MSDN</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/07/26/271310.aspx</link><pubDate>Thu, 26 Jul 2007 14:27:35 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:271310</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/271310.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=271310</wfw:commentRss><description>&lt;p&gt;Just thought you might like to know.&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=271310" width="1" height="1"&gt;</description></item><item><title>Where's the Visual Studio patch for .NETCF2 SP2?</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/07/22/269839.aspx</link><pubDate>Sun, 22 Jul 2007 12:29:43 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:269839</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/269839.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=269839</wfw:commentRss><description>&lt;p&gt;Back in March the redistributable for the .NET Compact Framework v2 SP 2 was released. As usual the team blog listed the various er, variations and so on with links to be added as the appropriate releases became available.&lt;/p&gt; &lt;p&gt;These have all now been filled in - with the exception of the patch for Visual Studio 2005.&lt;/p&gt; &lt;p&gt;As a developer this is a big deal for me - I have been delaying installing the refresh of the Windows Mobile 6 SDK (which lists .NETCF2 SP2 as a prerequisite) precisely because I don't want to find myself with a version which I have to uninstall and replace in order to be able to test and deploy correctly from Visual Studio.&lt;/p&gt; &lt;p&gt;With SP1 a big deal was made about having to apply the VS2005 patch and how you would have to uninstall the redistributable if you'd installed it first, and the fact that a patch is listed at all on the blog page implies that the same is true (or intended to be true) for SP2.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;So Compact Framework Team, where is it?&lt;/p&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=269839" width="1" height="1"&gt;</description></item><item><title>Silverlight for Windows Mobile - Some items from my wish list</title><link>http://dotnetjunkies.com/WebLog/kevdaly/archive/2007/05/04/233513.aspx</link><pubDate>Sat, 05 May 2007 03:36:41 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:233513</guid><dc:creator>kevdaly</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/kevdaly/comments/233513.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/kevdaly/commentrss.aspx?PostID=233513</wfw:commentRss><description>&lt;p&gt;Silverlight for Windows Mobile looks like it's (unfortunately) a good way out, or possibly something that might never see daylight.&lt;br&gt;Still, there's been a little preview and it looks pretty nifty.&lt;/p&gt; &lt;p&gt;I really, really hope Microsoft deliver it in a form that can run standalone applications (i.e. without having to be deployed from a web server), and with the Silverlight runtime using the full .NET CF 3.5 (I assume) runtime.&lt;br&gt;I also hope of course that they deliver it within my professional lifetime :)&lt;/p&gt; &lt;p&gt;The UI options for Compact Framework developers are pretty dire: without writing interop code or giving up and just going native, you're limited to something that largely has the visual polish of VB5. It's not pretty.&lt;/p&gt; &lt;p&gt;Silverlight on the other hand gives us the opportunity to create flexible, imaginative and frankly gorgeous UI. It's a shame that it doesn't include the advanced Panel features of WPF (because that would be a handy answer to the horror of resolution and orientation awareness), but some compromises are inevitable. It would still be a huge step forward, and I'd love to see it available as an option for the generality of device applications.&lt;/p&gt; &lt;p&gt;Last but not least, Silverlight+.NET CF+thousands of developers using an application-friendly(-ish) platform enables a good response to the iPhone (if nothing else the iPhone &lt;em&gt;does&lt;/em&gt; raise expectations for mobile UI, and we won't be able to get away with more of the same old same old).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:a7c356e0-ed3f-42ac-8666-942bb966631f"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/Silverlight"&gt;Silverlight&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Windows%20Mobile"&gt;Windows Mobile&lt;/a&gt;, &lt;a href="http://technorati.com/tags/.NET%20Compact%20Framework"&gt;.NET Compact Framework&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=233513" width="1" height="1"&gt;</description></item></channel></rss>