tag:blogger.com,1999:blog-77350528127757132032024-03-05T06:42:30.146+00:00KBac's Alter EgoNot so well Polished thoughts on softwarekbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.comBlogger44125tag:blogger.com,1999:blog-7735052812775713203.post-59863381197458611842011-11-23T20:30:00.000+00:002015-06-14T17:21:54.658+01:00Windows 7 service has eaten half of my SSD driveAfter a year with my lovely and powerful Windows 7 install, my 55G SSD drive started running out of disk space...<br />
<br />
Browsing a little for solutions helped reclaiming some space: <br />
<ol>
<li>from <a href="http://technet.microsoft.com/en-us/library/cc788045(WS.10).aspx">shadow storage</a></li>
<li>then <a href="http://blogs.technet.com/b/joscon/archive/2011/02/15/how-to-reclaim-space-after-applying-service-pack-1.aspx">restore points</a></li>
</ol>
<br />
But only after I have tried <a href="http://windirstat.info/">WinDirStat</a>, I have managed to nail it.<br />
<br />
<a name='more'></a><br />
The tool has highlighted that <b><span class="Apple-style-span" style="color: red;">50%!</span></b> of the disk space has been allocated to: <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;">C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Microsoft\Media Player\Art Cache\LocalMLS</span><br />
which is managed by <b>Windows Media Player Network Sharing Service</b>. <br />
<br />
Cleaning that directory helped and I enjoy my reclaimed disk capacity again. I have also followed suite and disabled the service as others, <a href="http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/windows-7-keeps-on-writing-thousands-of-jpg-files/5c263f66-472d-4c1c-99d9-be8fc18ebea8">from MS forum</a>, have done. <br />
<br />
Enjoy!<div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-20050396317781682052011-08-31T21:05:00.001+01:002015-06-14T17:22:56.023+01:00More Goodies from the MicrosoftIt has been long since last time anything has been posted onto this site. Remaining very busy, I could not resist to share about lectures dealing with the functional programming available on <a href="http://channel9.msdn.com/">Channel 9</a>.<br />
<br />
<span class="fullpost" id="fullpost"> The lectures are given by Dr. Erik Meijer and are entitled:<b>Functional Programming Fundamentals</b>. <br />
</span><br />
<a name='more'></a><span class="fullpost" id="fullpost"> There are 13 instalments and all are worth watching:<br />
<a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/">Chapter 1</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/">Chapter 2</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13/">Chapter 3</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/">Chapter 4</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-5-of-13/">Chapter 5</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-6-of-13/">Chapter 6</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-7-of-13/">Chapter 7</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-8-of-13/">Chapter 8</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-9-of-13/">Chapter 9</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-10-of-13/">Chapter 10</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Graham-Hutton-Functional-Programming-Fundamentals-Chapter-11-of-13/">Chapter 11</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-12-of-13/">Chapter 12</a><br />
<a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-13-of-13/">Chapter 13</a><br />
<br />
Enjoy!<br />
</span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-89563181149601431482009-11-28T15:51:00.005+00:002015-06-14T17:28:33.646+01:00More goodies from MSMy interest in software scalability and performance often leads me to <a href="http://blogs.msdn.com/pfxteam/default.aspx">Microsoft's Parallel Framework Extensions team BLOG</a>, which recently published this great <a href="http://blogs.msdn.com/pfxteam/archive/2009/11/01/9916008.aspx">presentation</a> from their parallelism tour...<br />
<br />
<a name='more'></a><span class="fullpost" id="fullpost"> These slides is a <b>must see item</b>, really. They describe most of the goodies discussed on <a href="http://channel9.msdn.com/">Channel 9</a> for a long time like:<br />
</span><br />
<ul>
<li><span class="fullpost" id="fullpost">Application of <a href="http://msdn.microsoft.com/en-us/library/dd460688%28VS.100%29.aspx">PLINQ</a> (more functional expressions!)</span></li>
<span class="fullpost" id="fullpost">
<li>Task definition, scheduling, stealing and exception handling</li>
<li>Tool support</li>
</span></ul>
<span class="fullpost" id="fullpost">All this to be able to increase your CPU core utilisation, contributing to the increase of your application performance. Wonder, what is Java alternative here?<br />
</span><br />
<span class="fullpost" id="fullpost"></span><br />
<div>
<span class="fullpost" id="fullpost"><span class="fullpost"><br /></span></span></div>
<span class="fullpost" id="fullpost">
This lead me back to a bit neglected site of MS Labs and their new baby <a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx">Reactive extensions for .NET</a>. What a treat that is! If you thought, you knew about the possible applications of the <a href="http://en.wikipedia.org/wiki/Observer_pattern">Observer design pattern</a>, you need to check it out. <br />
Erik Meijer shows how observable collections can help to unify handling of the event driven UI with async calls to services. And how this uniformity can help with the cloud based application architecture. Duality and monads as base for RX can be found discussed in video by <a href="http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Brian-Beckman-and-Erik-Meijer-Inside-the-NET-Reactive-Framework-Rx/">Erik and Brian Beckman</a>. More functional world implementation in the imperative space :-)<br />
<br />
Completely on the side, this time tool from <a href="http://livelabs.com/">Microsoft Live Labs</a>. It is an intelligent <a href="http://www.cooliris.com/">Coolris</a> on steroids. With my <a href="http://en.wikipedia.org/wiki/Business_intelligence">business intelligence</a> background I can say it is another must see analytic app (called <a href="http://www.getpivot.com/">Pivot</a>), which helps to explore data visually with a true WOW factor. <a href="http://livelabs.com/"></a> <br />
</span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-90168319936896735202008-12-16T18:57:00.005+00:002015-06-14T17:25:41.304+01:00Improving coding practicesI am in process of taking a deep breath after releasing quite a complex piece of software. And while recovering from overdue missed and unread news I came across this article entitled <a href="http://memeagora.blogspot.com/2008/11/comments-code-smell.html">"Comments == Code smell"</a>, which struck accord with me...<br />
<span class="fullpost" id="fullpost"><br /></span>
<a name='more'></a><span class="fullpost" id="fullpost">I like the author to challenge readers' view on the subject. Indeed when we <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY</a> the code well enough, we have a chance that it becomes <a href="http://en.wikipedia.org/wiki/Fluent_interface">fluent</a> and tells us all about itself. There are many reasons mentioned to why define fine names for your methods. Another one is to make methods meaningful, in the context of the domain we deal with (BTW: I hope <a href="http://en.wikipedia.org/wiki/Domain_Specific_Language">DSL</a>s can help here...).</span><br />
<span class="fullpost"><br /></span>
<br />
<span class="fullpost" id="fullpost">Lets take a look at this from the point of view of people who support the system making sure all questions are answered; all issues are understood. For them failure, with exposed call stack containing properly named methods, will ensure that the data flows according to the business process definition or not, cutting this way support time to bare minimum (easy to guess: </span><span class="fullpost" id="fullpost">no comments, especially those in line, will guide them).<br /><br />Here is the space for the <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">BDD</a> tools to show their beautiful face. As generated code can and should remain meaningful. Helping us humans making sense out of the mess when need be.</span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-1350427405258987632008-10-25T10:45:00.002+01:002008-10-25T10:54:09.388+01:00How Does Functional Programming Affect Your Code?F# has done a lot of good propagating functional programming style into the .NET world. From my experience, once you have used functional language your OO techniques are bound to change. This <a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2008/10/24/kaizenconf-functional-programming-is-it-a-game-changer.aspx">article</a> by Matthew Podwysocki expresses exactly that. Enjoy!<div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-11171465259546646552008-10-05T14:15:00.006+01:002015-06-14T17:24:18.092+01:00Is Fring a new Skype?It will be a couple of months since I became the proud owner of an iPhone. I am really happy to be able to check my email on the move, read news and navigate around town using features of my new gadget. One of the things missing would be <a href="http://en.wikipedia.org/wiki/Instant_messaging">IM</a> support...<br />
<span class="fullpost" id="fullpost"></span><br />
<a name='more'></a><span class="fullpost" id="fullpost"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKvvrpDLYeqJEKiyulX07zJjvaCsOD0KZrgI_Ry1KNcTOdfndXu1_9-VsFZ7Mtq6Znn5F_59DeA3fqoJxEh2ne7Jf9FIY485WiyWlo4nAmyIqntxVXukcon43V7n-eyjRxiY7y7WtgnDQ/s1600-h/fring.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5253673215523682370" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKvvrpDLYeqJEKiyulX07zJjvaCsOD0KZrgI_Ry1KNcTOdfndXu1_9-VsFZ7Mtq6Znn5F_59DeA3fqoJxEh2ne7Jf9FIY485WiyWlo4nAmyIqntxVXukcon43V7n-eyjRxiY7y7WtgnDQ/s320/fring.png" style="cursor: pointer; float: left; margin: 0pt 10px 10px 0pt;" /></a> Therefore I was very happy to see that <a href="http://www.fring.com/">Fring</a> has released its iPhone client that does not require jail braking. It is really great to be able to be in touch with my <a href="http://webmessenger.msn.com/">MSN Messanger</a> and <a href="http://www.skype.com/">Skype</a> contacts.<br /><br />There is plenty of space for improvements, as the iPhone application is in its early days. But it can not only serve as <a href="http://en.wikipedia.org/wiki/Instant_messaging">IM</a> (apart from aforementioned including <a href="http://twitter.com/">Twitter</a>, <a href="http://www.google.com/talk/">GoogleTalk</a>, <a href="http://www.icq.com/">ICQ</a> and <a href="http://messenger.yahoo.com/">Yahoo Messanger</a>). It will also allow you to talk using <a href="http://en.wikipedia.org/wiki/VoIP">VoIP</a> with third party services and own clients on platforms like <a href="http://www.symbian.com/">Symbian</a> etc. It is quite impressive.<br /><br />My main concerns are related to security and privacy. I am always uneasy when I am asked to share my user credentials across services. Would not it be great to use common well established and secure third party proxy for authentication? Thinking how many user accounts I have opened with various service providers, is it not time to unify all this? Are <a href="http://en.wikipedia.org/wiki/Windows_Live_ID">Microsoft Live ID</a> or <a href="http://en.wikipedia.org/wiki/OpenID">OpenID</a> valid alternatives?</span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-20526560591548730002008-09-06T16:18:00.002+01:002008-09-06T16:22:08.053+01:00New broadband provider testIt is an easy way to make me happy. Same line, same default speed but new ISP. The bytes fly again.<br /><br /><a href="http://www.speedtest.net"><img src="http://www.speedtest.net/result/319266601.png"></a><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com1tag:blogger.com,1999:blog-7735052812775713203.post-66815341319425078712008-07-02T21:28:00.002+01:002008-07-02T21:40:18.784+01:00JSR-305 ideas for java annotationsI just came across <a href="http://www.infoq.com/news/2008/06/jsr-305-update">article on the InfoQ</a> discussing <a href="http://jcp.org/en/jsr/detail?id=305">JSR-305</a>. The JSR proposes introduction of new annotations ,which are to benefit defect detection tools.<br /><br />Is it not great to see good trends converge? As <a href="http://kbac70.blogspot.com/2008/05/goodies-from-ms-labs.html">Spec#</a> is this JSRs' equivalent in .NET<div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-19005328281749627282008-06-14T11:02:00.003+01:002008-06-14T11:09:20.598+01:00Paralell Extensions for .NETIn case if you have not noticed <a href="http://blogs.msdn.com/pfxteam/archive/2008/06/02/8567802.aspx">Parallel Extensions for .NET</a> got released!<br /><br />You can check them in action implementing e.g.<br /><ul><li><a href="http://blogs.msdn.com/pfxteam/archive/2008/06/04/8573863.aspx">Ray Tracing</a></li><li><a href="http://blogs.msdn.com/pfxteam/archive/2008/06/06/8579067.aspx">Mandelbrot Fractals</a><br /></li></ul><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-17500020655514541252008-05-25T18:52:00.003+01:002015-06-14T17:29:44.898+01:00Goodies from MS LabsThere are a lot great ideas developing in Microsoft Labs. Inspired by several posts I read I went to check the projects up and found at least two of interest...<br />
<br />
<a name='more'></a><span class="fullpost" id="fullpost"><a href="http://en.wikipedia.org/wiki/Design_by_contract">Design by contract</a> is a sound practice which enforced many rules of thumb for software development e.g. coded design goals, clarified responsibilities, helped with regressions etc. Post and pre condition implementation are is great way to convey the contract definition. There are several things to worry though. As they can be:</span><br />
<ul>
<li><span class="fullpost" id="fullpost"> badly coded e.g. utilizing code mutating the object</span></li>
</ul>
<ul>
<li><span class="fullpost" id="fullpost"> considered as too much of overhead </span></li>
</ul>
<span class="fullpost" id="fullpost"> Therefore are often being disabled even for the debug builds. And yes - they do require the code to be compiled and executed under test to ensure correctness which might be considered costly, hence the idea of <a href="http://www.ddj.com/development-tools/184402051">compile time assertions</a>.<br />MS Labs guys have come up with <a href="http://research.microsoft.com/SpecSharp/">Spec#</a>, which is meant to help with exactly these aspects and guide us developers informing about the contract violations as early as possible - check this out, very interesting...<br /><br />I am very much in favour of <a href="http://en.wikipedia.org/wiki/Dynamic_programming_language">dynamic languages</a>. I like the pure transformation definitions in <a href="http://kbac70.blogspot.com/search/label/Functional%20Programming">functional programming</a> world, lazy evaluation, allowing generic code reuse at the level of a function, with no or limited side effects giving you the edge when talking about scalability and performance. From programming basics we know that whatever you program, there is always a cost you incur, which is either related to memory or processing power utilisation. Hence many disputes raised like the one on <a href="http://www.infoq.com/">InfoQ</a> about <a href="http://www.infoq.com/news/2007/10/continuous-tax">continuous tax</a> etc.<br />Regardless of this more and more functional languages and their aspects enter the popular development scene:</span><br />
<ul><span class="fullpost" id="fullpost">
<li> Microsoft has their <a href="http://research.microsoft.com/fsharp/fsharp.aspx">F#</a> and <a href="http://msdn.microsoft.com/en-us/netframework/aa904594.aspx">LINQ</a></li>
</span></ul>
<span class="fullpost" id="fullpost">
<ul>
<li> Google very much in favour of <a href="http://www.python.org/">Python</a></li>
</ul>
<ul>
<li> <a href="http://www.rubyonrails.org/">Rails </a>and <a href="http://www.ruby-lang.org/en/">Ruby</a> are very popular amongst many of the web developers</li>
</ul>
<ul>
<li> In my previous life we had <a href="http://labs.businessobjects.com/cal/">CAL</a></li>
</ul>
</span> So it is great to see <a href="http://research.microsoft.com/research/sv/DryadLINQ/">DryadLINQ</a>, which tries to simplify distributed computing by providing reliable platform for data parallel applications...<div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-4845483374094380912008-05-25T18:22:00.003+01:002008-05-25T18:30:12.310+01:00Joining friends on FriendFeedThanks for the invite! <a href="http://friendfeed.com/kbac70">KBac</a> has become available on the <a href="http://friendfeed.com">FriendFeed</a> network. Well done to its team - but where is the <a href="http://kbac70.spaces.live.com/">LiveSpaces</a> support? Well, I need to admit it is a very nice way of collating your network activity with the activity of your fiends, anyway.<div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-49963611080666595552008-05-07T20:14:00.006+01:002008-05-07T20:56:02.016+01:00Spring Source - the viable alternative to J2EE?J2EE projects tend to be very complex, spanning multiple layers, using various technologies from <a href="http://en.wikipedia.org/wiki/Inversion_of_control">IOC</a>, <a href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM</a> to <a href="http://en.wikipedia.org/wiki/AJAX">AJAX</a>. Their clustering, performance, fail-over and deployment are extremely important aspects, which are hard to manage... <br /><span class="fullpost" id="fullpost"><br /><a href="http://www.springframework.org/">Spring Framework</a> was very successful in helping with some of those difficult aspects. Now after getting venture capital backing, Interface21 presents us with <a href="http://blog.springsource.com/main/">Spring Source</a> - an alternative to J2EE. Take a look at this <a href="http://blog.springsource.com/main/2008/05/02/running-spring-applications-on-osgi-with-the-springsource-application-platform/">article</a> in which Rob Harrop, in usual fashion, very precisely describes what the <a href="http://www.springsource.com">Spring Source</a> is all about and where it is going. <br /><br />I wonder if great tooling and <a href="http://www.osgi.org/Main/HomePage">OSGI</a> support will help in adoption of this project?<br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-37475276063755341532008-04-07T21:54:00.005+01:002008-04-26T15:04:55.294+01:00My gadgets use PicLensI have added <a href="http://www.piclens.com">PicLens</a> to <a href="http://gadgets.kbac70.googlepages.com/piclens.html">my gadgets site</a> 3 weeks ago. But my busy schedule did not help with putting this piece of information on the blog...<br /><span class="fullpost" id="fullpost"><br />There were many <a href="http://cooliris.com/site/press/press-piclens.php">publications on PicLens</a>. What strikes me is, the neat UI implementation. Similar paradigm is used already in iPhone presenting photo content on the fly over wall of items. <br /><br />NB: To make it work you need to install plugin for your browser and you are ready to go. Check it out as it looks pretty cool<br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-29816259045104432732008-02-10T13:14:00.000+00:002008-02-10T16:28:13.021+00:00Avoid long debug sessions for Java dynamic proxy in Eclipse<a href="http://java.sun.com/j2se/1.3/docs/guide/reflection/proxy.html">Dynamic proxy</a> is a great feature implemented in Java. It is being used in many software packages like <a href="http://www.springframework.org/">Spring Framework</a>. It helps with implementation of <a href="http://en.wikipedia.org/wiki/Delegation_%28computer_science%29">delegate</a> or <a href="http://en.wikipedia.org/wiki/Decorator_pattern">decorator</a> <a href="http://en.wikipedia.org/wiki/Design_Patterns">design patterns</a>. To facilitate <a href="http://en.wikipedia.org/wiki/Double_dispatch">double dispatch</a>, <a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming">AOP</a>, <a href="http://en.wikipedia.org/wiki/Duck_typing">duck typing</a> etc. But the fun begins when your <a href="http://www.eclipse.org/">Eclipse</a> debug session makes you step through code coming from several entities from within <span style="font-style: italic;">java.lang.reflect.*</span> This not only makes your debug session longer but has the potential to make the whole exercise frustrating. The key to solve this are the <a href="http://books.google.com/books?id=U4UuyIU6bZAC&pg=PA124&lpg=PA124&dq=step+filters+eclipse&source=web&ots=eOh7Lh6FLx&sig=fW-vVn6zzRUAudjDTdaGIv-0QUg">S</a><a href="http://books.google.com/books?id=U4UuyIU6bZAC&pg=PA124&lpg=PA124&dq=step+filters+eclipse&source=web&ots=eOh7Lh6FLx&sig=fW-vVn6zzRUAudjDTdaGIv-0QUg">tep Filers</a>...<br /><span class="fullpost" id="fullpost"><br />They provide with the means to filter out irrelevant packages or classes from step through paths in your debug session.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrJc1tYj0NzhJyPFPzX2yYw1SMUt5t2j_5-w32zpBVW5PIuaMFeLudRxTi_Itii1WN9sXWMlNhNC-8euRC5C3MjLK0ALjhgmXIHw9ivqEHZ8pVZBnpoQ8YWSyj9ogXntllrlXOXHysN2A/s1600-h/eclipse_sf1.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrJc1tYj0NzhJyPFPzX2yYw1SMUt5t2j_5-w32zpBVW5PIuaMFeLudRxTi_Itii1WN9sXWMlNhNC-8euRC5C3MjLK0ALjhgmXIHw9ivqEHZ8pVZBnpoQ8YWSyj9ogXntllrlXOXHysN2A/s320/eclipse_sf1.jpg" alt="" id="BLOGGER_PHOTO_ID_5165385667140543714" border="0" /></a>Make sure your filters are enabled and include all required classes and packages to be excluded in the debug session.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBUDkBY2kgFpG7ubp6ozV1Ny5AASJSwRwiWblRuoaJVevqyqDydYN_IoXmR9GDgEGcTFbpN4A8TLSGypzuFCUm-XlMFF_TFS4pMuSBk3RQgHAfOoV_2QtBfEPaLB4CFWqnXfVNJX56Kzw/s1600-h/eclipse_sf3.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBUDkBY2kgFpG7ubp6ozV1Ny5AASJSwRwiWblRuoaJVevqyqDydYN_IoXmR9GDgEGcTFbpN4A8TLSGypzuFCUm-XlMFF_TFS4pMuSBk3RQgHAfOoV_2QtBfEPaLB4CFWqnXfVNJX56Kzw/s320/eclipse_sf3.jpg" alt="" id="BLOGGER_PHOTO_ID_5165386423054787842" border="0" /></a><br />When you do not want to step to the selected class from the call stack again, simply right click and add to the filter.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-3MNXxX4mCRG4TsYlDZmj6SQmekH-9MngI9V5wg_vxBdDyUVKfVjV6sMF0VJoSw02eFH6S7JfKiN9FOFwrItzSWPpIVNAjOelGF0rRpky8lSYRgfGOmtFS-Hxu-3asy65Ri6qbBaFceI/s1600-h/eclipse_sf2.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-3MNXxX4mCRG4TsYlDZmj6SQmekH-9MngI9V5wg_vxBdDyUVKfVjV6sMF0VJoSw02eFH6S7JfKiN9FOFwrItzSWPpIVNAjOelGF0rRpky8lSYRgfGOmtFS-Hxu-3asy65Ri6qbBaFceI/s320/eclipse_sf2.jpg" alt="" id="BLOGGER_PHOTO_ID_5165386040802698482" border="0" /></a><br />You can easily toggle filters on and off.<br /><br /><br /><br /><br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-69743847269982287052008-02-10T11:37:00.001+00:002008-04-26T15:04:08.411+01:00SOA vs OOADQuite long time ago it has struck me that the new mantra: Service Oriented Architecture and well established Object Oriented Analysis shared many traits. Both practises as well as many other design techniques flourish on commonality extraction and reuse but there is more to it, as usual...<br /><span class="fullpost" id="fullpost"><br />The question to answer is: <span style="font-weight:bold;">Why to have <a href="http://en.wikipedia.org/wiki/Service-oriented_architecture">SOA </a> as a new term to allow us talking about the componentization of the software?</span> There is a very good <a href="http://www.soamag.com/I15/0208-4.asp#When:09.02.08">article </a>on <a href="http://www.soamag.com/">SOA Magazine</a> discussing just that. It highlights the commonalities and differences in both approaches. In precise manner shows the fact that SOA expands <a href="http://www.ooad.org/">OOAD </a>by raising it up a layer of abstraction and encapsulation. Therefore this paradigm has the capacity to clearly address touch points between the business and the application of the technology. Capturing business benefits, as defined by OOAD at technological low level and transferring them up for better visibility and to complement other factors at the enterprise level.<br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-10033653229848607682007-11-29T17:56:00.000+00:002007-11-29T18:57:05.483+00:00Theory of programmingWhen I came to the UK and have been interviewed by my first employer, I needed to explain away the fears and ensure that the code I write, is using English. Not enough said, I prefer English for being precise and concise. This allowed me to think, I could write the code, which could be read as a book and this way easily communicate its meaning...<br /><span class="fullpost" id="fullpost"><br />During my studies I have been thought and proven, that the best and durable solutions are "simple" in nature. But only with the right level of flexibility they can prove to be a valuable business propositions. To strike the right balance there, is hard but possible. <br /><br />Over years within industry, I have learned to grasp principles describing general ideas first. So that their application does not overshadow the intent of the design. Object oriented methodologies have somehow kept me away from troubles, which mismanagement of side effects and their locality can lead to. <br /><br />The DRY principle has been always in my mind as repetition leads to redundancy and maintenance nightmares. So unless there is a good reason (like performance) factoring commonalities out has always been my goal when coding. <br /><br />Anyway, I could go on and on here. But I would be simply repeating the content of this excellent article published recently by Dr Dobb's Journal, which discusses the <a href="http://ddj.com/architect/204201170;jsessionid=KWYCRHU02AX1QQSNDLPSKH0CJUNN2JVN?pgno=1">theory of programming</a>, which BTW, for those who know me, know also that I could sign with both of my hands ;)<br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-70380151599030932312007-11-23T11:55:00.000+00:002007-11-23T12:23:37.973+00:00Monads ExplainedCheck this out! After series of video interviews posted on Channel 9 after the <a href="http://kbac70.blogspot.com/2007/10/concurrency-paradigm-shift.html">JAOO </a>conference, there is this new video post, in which Dr Brian Beckman explains why <a href="http://channel9.msdn.com/showpost.aspx?postid=358968">we should not fear the Monads</a>...<br /><span class="fullpost" id="fullpost"><br />During his brief lecture, Brian explains the most feared MONAD theory in the friendly way to the imperative programmer.<br /><br />After <a href="http://kbac70.blogspot.com/2007/05/is-future-functional.html">my own experience</a> with functional programming, I love this video as it managed to explain the hard saleable, good reasons for adopting functional programming styles. The beauty of implementing generic/meta functionality is something close to my heart. So to be able to see the two worlds closing to each other:<br /><ol><li>bottom-up: add necessary abstractions on top of the hardware to perform well<br /></li><li>top-down: extract abstractions from a mathematical model to make things execute not necessarily in the best performing way<br /></li></ol>is a real bless. And the point they meet is <a href="http://research.microsoft.com/fsharp/fsharp.aspx">F#</a> at the moment.<br /><br />The things to remember is<br /><blockquote>Tackle complexity through composability</blockquote>and<br /><blockquote><a href="http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx">LINQ</a> is monads in action</blockquote><br /><br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-22028196756095207652007-11-16T11:44:00.001+00:002008-04-26T15:03:23.548+01:00My Skype plugin is publicly listedWhen, I was <a href="http://kbac70.blogspot.com/2007/10/testing-skypes-extensibility.html">experimenting with Skype</a>, I have committed <a href="http://gadgets.kbac70.googlepages.com/inacall">this</a> little plugin, which is responsible for indicating to others that you are in a call. The plugin has just got qualified to be enlisted on the official Skype site. <a href="https://extras.skype.com/1346/view">Take a look</a>.<div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-28983412557694978472007-11-15T12:12:00.000+00:002007-11-15T12:44:22.619+00:00Next generation semantic layer<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEdnIl8iOKnl6l40dsRqva1qWxOJsbRRZzjSiOG8b9AGVcn8KmyLLRuiNdlyVjI_gO7_dvohb5ptcR5Te6JH7lkwaw6k1HBy_UPT68YcqpDa3ZO3Ve_6biv8-yKQYqDOE5crT5fTyxjXY/s1600-h/sl.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEdnIl8iOKnl6l40dsRqva1qWxOJsbRRZzjSiOG8b9AGVcn8KmyLLRuiNdlyVjI_gO7_dvohb5ptcR5Te6JH7lkwaw6k1HBy_UPT68YcqpDa3ZO3Ve_6biv8-yKQYqDOE5crT5fTyxjXY/s200/sl.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5133041472215425202" /></a><br />Thanks <a href="http://grasshopper.tumblr.com/">Dave</a> for pointing out, this <a href="http://www.rittmanmead.com/2007/11/12/oow2007-next-generation-semantic-layer-ed-suen/">article</a> about the new offering of the <a href="http://www.oracle.com/technology/products/bi/index.html">Oracle</a> semantic layer. IMHO, the semantic layer has always been a place of great potential. Here is more details on <a href="http://www.oracle.com/technology/tech/semantic_technologies/htdocs/what_oracle_brings.html">What Oracle tries to bring to the semantic technologies</a>.<div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-45763149661185001172007-11-14T14:47:00.000+00:002007-11-14T14:58:19.962+00:00Databases: Yesterday, Today, and TomorrowCheck this out, how Jim Starkey, who is a Senior Software Architect at MySQL, challenges our way of thinking when dealing with databases...<br /><span class="fullpost" id="fullpost"><br />The <a href="http://ddj.com/architect/202802994?cid=RSSfeed_DDJ_ArchitectDebug">article</a> available on the Dr Dobbs. But lacks navigable references, so I thought of adding them here:<br /><br /><a href="http://portal.acm.org/citation.cfm?id=509264">The semantic data model</a><br /><a href="http://forge.mysql.com/wiki/Falcon">Falcon - the transactional storage engine</a><br /><br />Enjoy!<br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-12485048016038988202007-11-12T19:30:00.001+00:002008-04-26T15:02:28.704+01:00Commodisation of mobile servicesNow, six weeks before Xmass, we being bombarded with new exciting offers dealing with new mobile devices and development platforms... <br /><span class="fullpost" id="fullpost"><br />First is Skype to announce its <a href="http://www.three.co.uk/personal/products_services_/skype_phone.omp">Skype phone</a>. Well, I have been using Skype for some time now and indeed it is a robust free, video enabled, VOIP application. But I am not sure, what is the benefit of owning the prebuild Skype phone. As it is possible to have the Skype application installed on any phone which has fast enough internet connection and runs <a href="http://msdn2.microsoft.com/en-gb/embedded/aa731407.aspx">Windows CE</a> OS. Anybody? <br /><br />Then the <a href="http://www.msnbc.msn.com/id/19297486/">Jesus phone</a> - as this is how the iPhone has been named in blogsphere. It always makes people go WOW and ask to keep it touch it etc. I have to admit, like the user experience on offer there. The large touch screen is very well integrated with the applications, what is not the case for other platforms unfortunately. There is a problem though. The phone is expensive, locked to the provider networks and does not give much out to the developers; apparently for sake of stability and security...<br /><br />And the latest is the <a href="http://code.google.com/android/">Android</a>, which has just published its SDKs and made it available for <a href="http://code.google.com/android/download.html">download</a>. The whole idea is to open up the mobile OS platform to the developers community. There are no Android powered phones on the market at the moment, but <a href="http://www.youtube.com/watch?v=_avwGFsv60U">prototype preview</a> looks very promising. <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://code.google.com/android/images/android_adc.gif"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px;" src="http://code.google.com/android/images/android_adc.gif" border="0" alt="" /></a> Android is being build upon Linux kernel, comes with several applications like web browser based which is a fork of Safari. Its architecture aims at componentization and <a href="http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)">mashups</a> allowing merging 2D and 3D graphics. There is even a draw published to help with incubating new applications...<br /><br />Thankfully to software developers, it seems there is more and more opportunities to build distributed software services, which can be seamlessly integrated on closer and closer to hand and more powerful devices. BTW: Should we find a new name for those new mobile devices as they are not only just phones but music and video players, cameras, navigation units etc...?<br /><br /><script type="text/javascript" src="http://w.sharethis.com/widget/?tabs=web&charset=utf-8&services=facebook%2Cdigg%2Cstumbleupon%2Cdelicious%2Cnewsvine%2Cfurl%2Ctechnorati%2Cgoogle_bmarks&style=default&publisher=416a3418-c743-4182-b3d0-774dde3fe66c&headerbg=%23ffffff&linkfg=%23bb3300"></script><br /><br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-66505094166050397312007-10-29T12:18:00.001+00:002008-04-26T15:01:06.783+01:00Concurrency paradigm shift<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://jaoo.dk/file?path=/2005/top/jaoo_logo_top.gif"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px;" src="http://jaoo.dk/file?path=/2005/top/jaoo_logo_top.gif" border="0" alt="" /></a><br />Check this up - <a href="http://jaoo.dk/conference/">JAOO 2007</a>. Channel9 interviewers highlight the fact that we might be facing paradigm shift. In their opinion hardware has not changed dramatically over past 20 years mainly adding processing speed and decreasing sizes...<br /><span class="fullpost" id="fullpost"><br />This supported statically typed, imperative languages. Now, when the limits seemed to be touched, multicore technology is being rolled out, which will bring the revolution. The era of functional languages and dynamic typing seems to come upon us ;) <br /><br />Here are the links to follow:<br /><br /><a href="https://channel9.msdn.com/ShowPost.aspx?PostID=350187#350187">Bob Martin and Chad Fowler - Debating Static versus Dynamic Typing</a><br /><br /><a href="http://channel9.msdn.com/ShowPost.aspx?PostID=351659#351659">Joe Armstrong - On Erlang, OO, Concurrency, Shared State and the Future, Part 1</a><br /><br /><a href="http://channel9.msdn.com/ShowPost.aspx?PostID=352136#352136">AOO 2007: Joe Armstrong - On Erlang, OO, Concurrency, Shared State and the Future, Part 2</a><br /><br /><a href="http://channel9.msdn.com/Showpost.aspx?postid=349220">Erik Meijer and Dave Thomas - Objects, Functions, Virtual Machines, IDEs and Other Fun Stuff</a><br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-19457580635658814492007-10-28T15:10:00.001+00:002008-04-26T15:00:08.729+01:00Webscape changesThere was a lot of buzz on what the Web 2.0 is or should be. The idea was to bring more semantics to support intuitive and more relevant queries when performing searches, building <a href="http://www.google.com/views?q=thomas+jefferson%20view%3Atimeline&esrch=RefinementBarTopViewTabs">story lines</a> etc. But this nirvana still seems long way off...<br /><span class="fullpost" id="fullpost"><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://g-ecx.images-amazon.com/images/G/01/00/10/00/14/19/27/100014192753._V46777512_.gif"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://g-ecx.images-amazon.com/images/G/01/00/10/00/14/19/27/100014192753._V46777512_.gif" alt="" border="0" /></a>Never the less the landscape or web-scape is indeed changing. Service providers like Amazon keep reinventing the web by adding new offerings on top of their strong platform of web services. Now they promote <a href="http://feeds.feedburner.com/%7Er/readwriteweb/%7E3/176497459/amazon_haas_hardware_as_a_service.php">HaaS (hardware as a service)</a> with their new <a href="http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=84">elastic computing cloud (EC2)</a>. EC2 plus <a href="http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=46">simple storage service (S3)</a> gives us a distributed virtualization platform, where users can define their nodes and pay for their utilization on pay as you go basis.<br /><br />On software side<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://l.yimg.com/us.yimg.com/i/us/pps/logo_1.gif"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://l.yimg.com/us.yimg.com/i/us/pps/logo_1.gif" alt="" border="0" /></a> Yahoo provides their <a href="http://pipes.yahoo.com/pipes/">pipes</a> allowing us to mash feeds up and this way provide with new shapes of outputs. This leads to new ways of dealing with the web content trying to use <a href="http://www.readwriteweb.com/archives/web_30_when_web_sites_become_web_services.php">web pages themselves as web services</a>. There are many unanswered questions left out there, about IP, content ownership etc. But this web scratching approach seems to be the enabler technology to help with structuring the mainly unstructured web content. And in this way maybe to narrow the gap between computer and human generated content.<br /><br />The end-user client tools undergo changes as well. As result of web migration of our calendars, tags, address books, maps, photo albums etc., new data access metaphors are required. Desktop applications look more web like and web apps want to share your desktop (more often now being off-line enabled). Libraries like: <a href="http://code.google.com/webtoolkit/">GWT</a>, <a href="http://script.aculo.us/">Sriptaculous</a>, <a href="http://developer.yahoo.com/yui/">YUI</a>, <a href="http://www.adobe.com/products/flex/">FLEX</a> have plenty to offer to help matching up the desktop experience by providing gadgets and add-ons.<br /><br />Recent contributors to the arena are Mozilla's <a href="http://labs.mozilla.com/2007/10/prism/">Prism</a> and Microsoft's <a href="http://www.popfly.ms/">Popfly</a> sitting on top of <a href="http://silverlight.net/">Silverlight</a>, which I have decided to test and written a Popfly components:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFuVBvAxrr6-H3JGUtmImtxfxTx2dKnlXC_Y42kwxsMzP0Rlxrrt5P5R7S-5NjcdhE7ZvCpDow3ruEkIezZxdZHBqruyDIuj97fnDNeRhzC08DT8LhDIO5KSXHed-IKLeIWAcHxsrx4Xo/s1600-h/books.carousel.medium.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFuVBvAxrr6-H3JGUtmImtxfxTx2dKnlXC_Y42kwxsMzP0Rlxrrt5P5R7S-5NjcdhE7ZvCpDow3ruEkIezZxdZHBqruyDIuj97fnDNeRhzC08DT8LhDIO5KSXHed-IKLeIWAcHxsrx4Xo/s200/books.carousel.medium.jpg" alt="" id="BLOGGER_PHOTO_ID_5126707840536334466" border="0" /></a><br /><ol><li>block allowing to geo-position your URL source (but this needs more work due to the URL lookup service not returning good results)<br /></li><li>mashup to show <a href="http://gadgets.kbac70.googlepages.com/bookscarousel">MSN book list as a Popfly carousel</a><br /></li></ol>Do not know about you, but I tend to use more and more computers over time. This makes me migrate my data to the web, so I can easily get hold of it when needed. Thankfully the aforementioned technologies let me do it with more and more ease and less frustration. Many smart people were saying that we can see desktop applications making the full circle from being run from smart-server on dumb clients, to full clients and now coming back to the server. The thing is the server is not going to be only smart but distributed and componentized. Don't you think?<br /><p/><br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-83605096624098029452007-10-17T12:44:00.001+01:002008-04-26T14:59:10.522+01:00PFX, PLINQ and TPLYou must take a look at the <a href="http://channel9.msdn.com/Showpost.aspx?postid=347531">Programming in the Age of Concurrency by Anders Hejlsberg and Joe Duffy: Concurrent Programming with PFX</a> posted on <span style="font-weight: bold;">Channel 9</span>...<br /><span class="fullpost" id="fullpost"><br />It is great to see this natural, one would think, progression of <a href="http://en.wikipedia.org/wiki/Lambda_function">lambdas</a> into task managing, which no doubt will be simplifying concurrent implementations. Think <a href="http://en.wikipedia.org/wiki/Mutual_exclusion">mutexes</a>, <a href="http://en.wikipedia.org/wiki/Semaphore_%28programming%29">semaphores</a>, <a href="http://en.wikipedia.org/wiki/Critical_section">critical sections</a>, <a href="http://en.wikipedia.org/wiki/Monitor_%28synchronization%29">monitors</a>, locks, threads etc. being hidden behind API simply accepting lambdas expressing your execution requirements. The same with workload control and optimization. This looks fantastic.<br /><br />Here are some more links to Joe's articles, simply copied from his <a href="http://www.bluebytesoftware.com/blog/default.aspx">blog</a>:<br /><ol><li><a href="http://www.bluebytesoftware.com/blog/ct.ashx?id=5a15898b-6c1e-46cb-8553-04f08bb9336e&url=http%3a%2f%2fmsdn.microsoft.com%2fmsdnmag%2fissues%2f07%2f10%2fPLINQ%2fdefault.aspx">Parallel LINQ: Running Queries on Multi-Core Processors</a>. An overview of an implementation of <a href="http://www.bluebytesoftware.com/blog/ct.ashx?id=5a15898b-6c1e-46cb-8553-04f08bb9336e&url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb394939.aspx">LINQ-to-Objects</a> and <a href="http://www.bluebytesoftware.com/blog/ct.ashx?id=5a15898b-6c1e-46cb-8553-04f08bb9336e&url=http%3a%2f%2fmsdn2.microsoft.com%2flibrary%2fbb308960.aspx">-XML</a> which automagically uses data parallelism internally to execute declarative language queries. It supports the full set of LINQ operators, and several ways of consuming output in parallel. </li><li><a href="http://www.bluebytesoftware.com/blog/ct.ashx?id=5a15898b-6c1e-46cb-8553-04f08bb9336e&url=http%3a%2f%2fmsdn.microsoft.com%2fmsdnmag%2fissues%2f07%2f10%2fFutures%2fdefault.aspx">Parallel Performance: Optimize Managed Code for Multi-Core Machines</a>. Describes the Task Parallel Library (TPL), a new "thread pool on steroids" with cancellation, waiting, and pool isolation support, among many other things. Uses dynamic work stealing techniques (see <a href="http://www.bluebytesoftware.com/blog/ct.ashx?id=5a15898b-6c1e-46cb-8553-04f08bb9336e&url=http%3a%2f%2fsupertech.csail.mit.edu%2fcilk%2f">here</a> and <a href="http://www.bluebytesoftware.com/blog/ct.ashx?id=5a15898b-6c1e-46cb-8553-04f08bb9336e&url=http%3a%2f%2fresearch.sun.com%2ftechrep%2f2005%2fabstract-144.html">here</a>) for superior scalability.</li></ol><br />By being declarative and not over specifying, <a href="http://kbac70.blogspot.com/2007/05/is-future-functional.html">isn't functional approach way for the future?</a> <br /><br />PS. Have you tried <a href="http://research.microsoft.com/fsharp/fsharp.aspx">F#</a>, which just went into production?<br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0tag:blogger.com,1999:blog-7735052812775713203.post-52235864174712192492007-10-17T09:19:00.000+01:002007-10-29T09:34:21.989+00:00Are we all turning into system integrators?Take a look at this <a href="http://feeds.feedburner.com/~r/readwriteweb/~3/170809037/the_future_of_software_development.php">article</a> discussing <span style="font-weight:bold;">"The Future of Software Development"</span>. It is a nice retrospective view on software development, with some ideas of things to come, which IMHO are about right.<br />What is interesting, is the importance of libraries, what you probably noticed coding your systems anyway. There are more and more of them in use around us. You can hardly escape (to mention a few from outside of javax.*): <a href="http://logging.apache.org/log4j/">Log4J</a>, <a href="http://www.hibernate.org/">Hibernate</a>, <a href="http://www.springframework.org/">Spring</a> etc. <br /><span class="fullpost" id="fullpost"><br />Thanks to those libraries we start to play more of the role of <a href="http://en.wikipedia.org/wiki/System_integrator">integrators</a>. This is great as highlights the fact: integration is necessary and important. It is a green field, where new applications and ideas of how to put them together are growing. But what is even more important, by employing specialized libraries, we can focus on the core of the problem rather then build necessary tooling, information pipe-lining from scratch. Don't you think?<br /></span><div class="blogger-post-footer">From KBac's Alter Ego</div>kbac70http://www.blogger.com/profile/00215517627159926223noreply@blogger.com0