<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Tools</title><link>http://www.styledesign.biz/weblogs/macinnesm/category/20.aspx</link><description>Tools</description><managingEditor>Marcus Mac Innes</managingEditor><dc:language>en-IE</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Marcus Mac Innes</dc:creator><title>Newsletters are a Doddle with Toddle</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2008/08/12/6881.aspx</link><pubDate>Tue, 12 Aug 2008 11:29:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2008/08/12/6881.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/6881.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2008/08/12/6881.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/6881.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/6881.aspx</trackback:ping><description>&lt;p&gt;It's been a while, years in fact since I updated this blog, but last week something happened that gave &lt;a href="http://pix.ie"&gt;Pixie&lt;/a&gt; (I'll tell you all about that in another post) a great &lt;a href="http://pix.ie/blog/2008/07/29/pixie-gets-a-push-irish-style"&gt;push&lt;/a&gt; and this week I have very good reason to get out and push too!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.mulley.net"&gt;Damien Mulley&lt;/a&gt; started a concept called the &lt;a href="http://www.mulley.net/2008/07/01/the-tuesday-push-getting-word-out-in-a-co-ordinated-way/"&gt;Tuesday Push&lt;/a&gt;. The idea is that each week a company is selected and everyone bands together in a bid to help raise awareness for the company or product.&lt;/p&gt;

&lt;p&gt;This week, Alan O'Rourke and his team of &lt;a href="http://spoiltchild.com"&gt;spoilt children&lt;/a&gt; are gonna &lt;a href="http://www.mulley.net/2008/08/12/toddle-a-great-addition-to-your-email-marketing-tuesday-push-august-12th-2008/"&gt;get one hell of a push&lt;/a&gt; because their product &lt;a href="http://www.toddle.com"&gt;Toddle&lt;/a&gt; is simply a textbook example of how online tools should be built.&lt;/p&gt;

&lt;p&gt;I was first introduced to Toddle back in November last year when we were preparing to hit Silicon Valley for the infamous PaddysValley tour, Alan was there &lt;a href="http://ie.youtube.com/watch?v=LKGj51yeETs"&gt;pitching Toddle&lt;/a&gt; an online tool to make the process of creating fantastic looking newsletters easy.&lt;/p&gt;

&lt;p&gt;Today, Toddle is launched and according to Alan is signing up users at the rate of 1,000s per week.&lt;/p&gt;

&lt;p&gt;In short - Toddle helps you create newsletters that look fantastic. The whole thing is just so simple to use and the user is guided all way through with a foolproof, step by step process which guarantees greats results.&lt;/p&gt;

&lt;p&gt;The process is of creating professionally designed newsletters has become "a doddle with toddle" ;)&lt;/p&gt;

&lt;p&gt;Check it out for yourself: &lt;a href="http://www.toddle.com/"&gt;http://www.toddle.com/&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/6881.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>Captcha to Remove Comment SPAM for .Text</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/01/07/304.aspx</link><pubDate>Fri, 07 Jan 2005 17:07:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/01/07/304.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/304.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/01/07/304.aspx#Feedback</comments><slash:comments>42</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/304.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/304.aspx</trackback:ping><description>&lt;P&gt;Recently, I've been getting inundated with comment SPAM on my blog... &lt;/P&gt;
&lt;P&gt;Luckily &lt;A href="http://blogs.clearscreen.com/migs/archive/2004/11/10/575.aspx"&gt;Miguel Jimenez&lt;/A&gt;&amp;nbsp;has implemented a cool little Captcha control which is easily integrated with .Text to provide protected from the Viagra salespeople. The control has now been installed on this blog!&lt;/P&gt;
&lt;P&gt;BTW - Make sure you install the &lt;A href="http://blogs.clearscreen.com/migs/files/Clearscreen_SharpHIP_1_2.zip"&gt;v1.2&lt;/A&gt; update, although the ReadMe.txt is included with the &lt;A href="http://blogs.clearscreen.com/migs/files/Clearscreen_SharpHIP_1_1.zip"&gt;v1.1&lt;/A&gt; download.&lt;/P&gt;

UPDATE: &lt;A href="http://blogs.clearscreen.com/migs/archive/2005/02/01/905.aspx"&gt;New Version 1.3&lt;/A&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/304.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>Contract First, Guinness Second</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/12/17/284.aspx</link><pubDate>Fri, 17 Dec 2004 12:22:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/12/17/284.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/284.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/12/17/284.aspx#Feedback</comments><slash:comments>332</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/284.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/284.aspx</trackback:ping><description>&lt;P&gt;Yesterday evening, night and the early hours of this morning &amp;#8230; (very sore head now) I had the pleasure of meeting &lt;A href="http://weblogs.asp.net/cweyer/"&gt;Christian Weyer&lt;/A&gt; who via &lt;A href="http://www.ineta.org/"&gt;INETA&lt;/A&gt; was speaking &lt;A href="http://www.irishdev.com/"&gt;IrishDev.ie&lt;/A&gt;&amp;#8217;s Christmas Cinema Party.&lt;/P&gt;
&lt;P&gt;Christian started off the evening with an excellent talk on the realities we are faced with when building web services. Unlike most talks on this topic, Christian actually provided some of the answers and one pretty good answer in particular.&lt;/P&gt;
&lt;P&gt;The biggest problem that plagues the .NET community to date when build Service Orientated Architecture (SOA) applications is the lack of defined process. While SOA is not a new concept, it certainly is a new term and for most, a whole new way of thinking. In the same way that patterns provide standard ways of implementing the same old problems, SOA provides a standard way of architecting applications in order to minimise coupling and maximise interoperability.&lt;/P&gt;
&lt;P&gt;Everyone loves the ideas and design paradigms proposed by SOA and everyone can visualise without too much hesitation the advantages and benefits of the final result. Not everyone knows exactly where to start however&amp;#8230;&lt;/P&gt;
&lt;P&gt;Right at the beginning of Christian&amp;#8217;s talk yesterday evening, immediately following his introduction, he alt-tabbed to an eagerly awaiting Visual Studio perched in the background. As he clicked Add Solution, Add New Web Project, my hopes for a serious talk on Web Services were fading fast into the distance. I really thought we were now in for a &amp;#8220;here&amp;#8217;s how you build your web services using Visual Studio&amp;#8221; when all of a sudden my fears were firmly put to rest&amp;#8230; &amp;#8220;This is not how you should build Web Services&amp;#8221;, Christian exclaimed, and now, like the beginning of a good movie, it was time to site back and listen to a man that knows.&lt;/P&gt;
&lt;P&gt;When Visual Studio first arrived back in 2001, everyone as Christian points out was amazed by the new productivity features and of course as &amp;#8220;Web Services&amp;#8221; was fast becoming the next big thing, VS.NET did them too!&lt;/P&gt;
&lt;P&gt;I must admit, I was among the impressed&amp;nbsp;when I realised how easy it was going to be to build Web Services using this new tool which gave developers the power to simply adorn their methods with the attribute &amp;#8220;[WebMethod]&amp;#8221; and have Visual Studio create all the necessary code, Schema and WSDL for you. Within minutes, literally, you could build an application that could communicate using XML and SOAP over HTTP.&lt;/P&gt;
&lt;P&gt;It was only when you start to look at a little deeper that you realise that like most things in Visual Studio, this was a &amp;#8220;play&amp;#8221; implementation of an architecture, great for demos, useless in reality.&lt;/P&gt;
&lt;P&gt;The first problem with [WebMethod] is that you are restricted to the RequestResponse pattern. Get something in, process and send something back out the way it came. HTTP is a perfect transport for such an architecture as it is after all a RequestResponse transport.&lt;/P&gt;
&lt;P&gt;At this point Christian asked a question of the audience which I shall file away for later use and one which reminded me of Eric Rudder&amp;#8217;s recent talk in Dublin when asked about open source software. Eric pointed to a table at the back of the room filled with bottles of water. &amp;#8220;Why do we buy bottles of water, when there is perfectly good drinking water available free from the tap downstairs?&amp;#8221; Christian asked &amp;#8220;When you send a letter in the post, do you wait by the postbox for a reply?&amp;#8221;&lt;/P&gt;
&lt;P&gt;How could you architect your applications using the RequestResponse pattern having heard this analogy? Problem with Visual Studio number one&amp;#8230;&lt;/P&gt;
&lt;P&gt;Next we should look at another important aspect of application design, maintainability. The value of software is proportional to the business benefit it provides and is inversely proportional to effort required to make modifications.&lt;/P&gt;
&lt;P&gt;As most experienced Visual Studio developers will tell you, Visual Studio is all about productivity. It provides an unparalleled ability to efficiently produce software which provides the business benefit and hence the value I spoke about. What most experienced Visual Studio developers will also tell you is that it provides absolutely no assistance in minimising the impact of later change. This in my opinion negates all the productivity benefits and hence renders most of the toolset useless or as I like to put it, the tools are for &amp;#8220;play&amp;#8221; only.&lt;/P&gt;
&lt;P&gt;The problem here is routed in the fact that Visual Studio is generating code for you. This quickstart is absolutely fantastic and works perfectly until you realise that something is missing or the design isn&amp;#8217;t exactly what you require. The code generation templates are fixed and you have a take or leave it scenario.&lt;/P&gt;
&lt;P&gt;Building WebServices using the Visual Studio approach falls victim to this problem and everything that is done for you under the covers is going to come back and bite you as your requirements move from those of the demo world to those of the production or real world.&lt;/P&gt;
&lt;P&gt;Let&amp;#8217;s examine what happens when you add [WebMethod] to a C# or VB.NET method:&lt;/P&gt;
&lt;P&gt;Without even thinking about it, you are automatically now using the RequestResponse pattern. Maybe you didn&amp;#8217;t even notice, but you are now effectively building a Remote Procedure Call (RPC) web service. Is that what you wanted? Is your design being guided by the implementation tool?&lt;/P&gt;
&lt;P&gt;Next the XML Schema and the WSDL are generated for you. But have you had an opportunity to specify whether types are to be shared between methods? Will your Customer class in one method be generated on the client side into a difference namespace from that same Customer class in another method? What will your client proxies look like and will they use clumsy arrays or useful collections for lists? Do you have any opportunity to control what is produced? Not really&amp;#8230;&lt;/P&gt;
&lt;P&gt;What about Schema validation on received messages or do we just let the deserializer throw exceptions? And aren&amp;#8217;t exceptions expensive? Wouldn&amp;#8217;t this be a prime target for a denial of service attack? Can we even examine the XML that was received? Not really&amp;#8230;&lt;/P&gt;
&lt;P&gt;And when version 2 comes along, what are we going to do about backward compatibility?&lt;/P&gt;
&lt;P&gt;The list goes on&amp;#8230;&lt;/P&gt;
&lt;P&gt;If we now look at what has been produced for us by VS.NET, it doesn&amp;#8217;t take a genius to realise that we have simply created a XML based interface to an existing Domain Model. This is not Service Orientation or even close.&lt;/P&gt;
&lt;P&gt;Service Orientation is about shifting your thinking from an Object Orientated Domain Model to a new architecture which is quite different. This shift is analogous to the shift in mindset from procedural to OO programming and design.&lt;/P&gt;
&lt;P&gt;The question comes back then, is Visual Studio assisting us with this process and mind shift or is it actually hampering the process and reducing our options?&lt;/P&gt;
&lt;P&gt;Christian obviously felt, as I do, that the latter is the case and has been thinking along with his colleagues at &lt;A href="http://www.thinktecture.com/"&gt;ThinkTecture&lt;/A&gt; about ways to help developers overcome these early stumbling blocks. All this thinking has resulted in one of the most important tools available today for the building of real world web service applications. Christian presented &amp;#8220;&lt;A href="http://www.thinktecture.com/Resources/Software/WSContractFirst/WSCF04Walkthrough1.html"&gt;Contract First&lt;/A&gt;&amp;#8221; a tool and a methodology for the design and flexible generation of the some of the components required to build real world web services.&lt;/P&gt;
&lt;P&gt;I&amp;#8217;m not going to go into the details of &lt;A href="http://www.thinktecture.com/Resources/Software/WSContractFirst/WSCF04Walkthrough1.html"&gt;Contract First&lt;/A&gt; here, as you can &lt;A href="http://www.thinktecture.com/Resources/Software/WSContractFirst/WSCF04Walkthrough1.html"&gt;read all about it&lt;/A&gt; and even &lt;A href="http://www.thinktecture.com/Resources/Software/WSContractFirst/default.html"&gt;download&lt;/A&gt; the tool for free from the &lt;A href="http://www.thinktecture.com/"&gt;ThinkTecture&lt;/A&gt; website.&lt;/P&gt;
&lt;P&gt;Contract first, &lt;A href="http://weblogs.asp.net/cweyer/archive/2004/12/14/288148.aspx"&gt;Christian&lt;/A&gt; wanted Guinness second and believe me Christian has plenty to say about that also&amp;#8230;&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/284.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>TestDriven.NET 1.0 Released</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/30/276.aspx</link><pubDate>Tue, 30 Nov 2004 12:42:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/30/276.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/276.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/30/276.aspx#Feedback</comments><slash:comments>168</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/276.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/276.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://www.testdriven.net/"&gt;TestDriven.NET,&lt;/A&gt; a handy addin for Visual Studio which allows you to run unit tests from pretty much anywhere from&amp;nbsp;within VS.NET was released as version 1.0 yesterday...&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/276.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>B.AG Blog Aggregator Goes Live</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/29/273.aspx</link><pubDate>Mon, 29 Nov 2004 17:51:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/29/273.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/273.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/29/273.aspx#Feedback</comments><slash:comments>73</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/273.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/273.aspx</trackback:ping><description>&lt;P&gt;When we launched &lt;A href="http://www.developers.ie/"&gt;INDA&lt;/A&gt; at &lt;A href="http://www.developers.ie/"&gt;www.developers.ie&lt;/A&gt; a couple of weeks ago, we integrated the &lt;A href="http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=e99fccb3-1a8c-42b5-90ee-348f6b77c407"&gt;.Text&lt;/A&gt; blog engine so that our members (most of whom were new to blogging)&amp;nbsp;could have their own blogs on the site. I also created a blog there, but soon I was getting frustrated by having to cross post blog entries both on my own blog here at &lt;A HREF=" "&gt;www.styledesign.biz &lt;/A&gt;and on &lt;A href="http://www.developers.ie/"&gt;www.developers.ie&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;I wanted a simple blog aggregagtor, so that I could automatically pull my most recent posts onto the site without having to cross post. It was during my search for a suitable piece of software that I came across &lt;A href="http://www.enderminh.com/blog/"&gt;Minh T. Nguyen&lt;/A&gt;'s &lt;A href="http://www.enderminh.com/netdev/"&gt;.NET Blog Aggregator&lt;/A&gt; (&lt;A href="http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/10/219.aspx"&gt;which I blogged about previously&lt;/A&gt;) and decided that if there was nothing available for download, I would write my own...&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.styledesign.biz/portfolio_bag.aspx"&gt;&lt;STRONG&gt;B&lt;/STRONG&gt;log &lt;STRONG&gt;AG&lt;/STRONG&gt;gregator&lt;/A&gt; &lt;IMG src="http://www.styledesign.biz/images/portfolio/bag/baglogo96x70.gif" align=absMiddle&gt; was born!&lt;/P&gt;
&lt;P&gt;Running stand-alone or on top of &lt;A href="http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=e99fccb3-1a8c-42b5-90ee-348f6b77c407"&gt;.Text&lt;/A&gt; &lt;A href="http://www.styledesign.biz/portfolio_bag.aspx"&gt;B.AG&lt;/A&gt; pulls content from subscribed RSS feeds and presents the combined content in a&amp;nbsp;sorted, categorised format. I will more than likely blog about the internal design at some point, but for now, you can see &lt;A href="http://www.styledesign.biz/portfolio_bag.aspx"&gt;B.AG&lt;/A&gt; (Beta 1) in action at &lt;A href="http://www.developers.ie/blogs/"&gt;http://www.developers.ie/blogs/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If you would like to incorporate &lt;IMG src="http://www.styledesign.biz/images/portfolio/bag/bag88x31.gif" align=absMiddle&gt; into your site... just let me know. Marcus&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/273.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>