<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.NET @ Kape ni LaTtEX</title>
	<atom:link href="http://dotnet.kapenilattex.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://dotnet.kapenilattex.com</link>
	<description>Software Development and the Philippine IT industry</description>
	<lastBuildDate>Sat, 28 Aug 2010 06:38:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Three developer -abilities they don&#8217;t teach in college</title>
		<link>http://dotnet.kapenilattex.com/?p=471</link>
		<comments>http://dotnet.kapenilattex.com/?p=471#comments</comments>
		<pubDate>Mon, 16 Aug 2010 16:47:19 +0000</pubDate>
		<dc:creator>Jon Limjap</dc:creator>
				<category><![CDATA[Talks and Conferences]]></category>
		<category><![CDATA[Tech Musings]]></category>
		<category><![CDATA[Technical Articles]]></category>
		<category><![CDATA[DEVCON]]></category>
		<category><![CDATA[JPCS-AdU]]></category>
		<category><![CDATA[maintainability]]></category>
		<category><![CDATA[SOLID]]></category>
		<category><![CDATA[testability]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://dotnet.kapenilattex.com/?p=471</guid>
		<description><![CDATA[This talk was delivered last August 7, 2010 to university students taking up Computer Science and IT courses as part of the JPCS-AdU Extreme Engagement event organized by the Adamson University chapter of the Junior Philippine Computer Society and sponsored by Devcon Foundation. Three Developer Abilities They Dont Teach In College View more presentations from [...]]]></description>
			<content:encoded><![CDATA[<p><em>This talk was delivered last August 7, 2010 to university students taking up Computer Science and IT courses as part of the JPCS-AdU Extreme Engagement event organized by the Adamson University chapter of the Junior Philippine Computer Society and sponsored by Devcon Foundation.</em></p>
<div style="width:425px" id="__ss_4916453"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/LaTtEX/three-developer-abilities-they-dont-teach-in-college" title="Three Developer  Abilities They Dont Teach In College">Three Developer  Abilities They Dont Teach In College</a></strong><object id="__sse4916453" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=devconaduthreedeveloperabilitiestheydontteachincollege-12811065565-phpapp02&stripped_title=three-developer-abilities-they-dont-teach-in-college" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4916453" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=devconaduthreedeveloperabilitiestheydontteachincollege-12811065565-phpapp02&stripped_title=three-developer-abilities-they-dont-teach-in-college" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/LaTtEX">Jon Limjap</a>.</div>
</div>
<p>When a person first learns programming it is natural that they learn its form and structure first. They focus on constructs, syntax, concepts like variables and memory addresses, data structures, and eventually move on to programming paradigms like methods, functions, classes, and objects, as well as techniques and complex algorithms. These are the things that a student of software engineering will learn in school, but once they step into work there are some things that will take precedence over the elegance of the algorithm you write.</p>
<p>It’s not that these things are not taught in college – they most likely will be covered at one point or another in the curriculum – but it will only be in the workplace where their importance will become compelling. I’d like to talk about three concepts in particular that I feel are very important in the workplace but oft ignored at school.</p>
<p><strong>Maintainability</strong></p>
<p>I define maintainability as “a measure of how easy it is to understand, modify, and extend your code.” </p>
<p>Now when you think of the word “maintenance” it’s likely that you might think of handymen or janitors maintaining your building – this is not far from the truth. When you get employed the first thing that you will notice is that you won’t be able to write new code. While writing new code is the first thing you do at school, it is the last thing that you get to do when you first get a job.</p>
<p>One of my most significant experiences on this was when I joined Philippine National Bank and had to learn COBOL to maintain JCL reports running off of mainframes. Some of the reports I were handling were first written as far back as when I was in puberty; I suspect that these were replacements to even older reports that served the bank during the time I was the figment of my parents’ imaginations.</p>
<p>Some of that code is messy. By messy I mean they have variable names that you can’t figure out, method names that don’t make sense, and inconsistent techniques in writing code. How many of you have had lost track of a variable named “a”, “aa”, and “aaa” in your machine problems?</p>
<p>Some of you may graduate, join that bank, and then realize that I, that crappy COBOL developer from eight or ten years back, had left a mess of my code. How would you feel? How much effort would it take to modify those reports?</p>
<p>In his article <a href="http://www.computer.org/portal/web/buildyourcareer/fa010">“Learning to distinguish a solution from a problem</a>” and his book “Facts and Fallacies of Software Engineering”, Robert L. Glass states that “Maintenance typically consumes 40 to 80 percent of software costs”. </p>
<p>That’s not just maintaining old code or code other people wrote; it includes code you wrote three to six months ago and have totally forgotten about. Large projects can last for up to a year, sometimes even two, and in my case I’ve had to face code I have written three to four years ago as we roll out newer versions of our software. </p>
<p>Don’t think that you don’t need to maintain your own code. Make it easy for yourself and for your colleagues. Make your code readable. Make it easy to understand. Make your code maintainable.</p>
<p><strong>Testability</strong></p>
<p>The <a href="http://www.aptest.com/glossary.html">Software Testing Glossary</a> defines testability as “the degree to which a system or component facilitates the establishment of test criteria and the performance of tests to find whether these criteria have been met.”</p>
<p>Let’s simplify that to a question: “when there’s a bug, how easy is it to find out which part of your code to fix?”</p>
<p>A few years back a former colleague of mine IMed me asking for help. He wanted me to look at his code and find out what was broken. Thinking I could help, I agreed and downloaded the file he sent to me. What I saw was a disaster: one main void method, filled with 7,000 or so lines of code. I didn’t even want to ask him how he survived for so long in the IT industry writing code like this – all I could do was scroll up and down, gape at the nested ifs and for loops, then reply to him “sorry dude, I don’t know how to fix this.”</p>
<p>Now, I understand how tempting it is to do this kind of programming when its 2 in the morning and you have an 8 AM deadline for a machine problem. But in the workplace, whatever deadline they tell you is rubbish if the end result is an application that is broken and unfixable.</p>
<p>So how do we ensure that our programs are testable? If you’re doing object-oriented programming, there are several clear cut principles defined by Robert Martin in his article <a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">Principles of Object Oriented Design</a>. </p>
<p>Together they are called SOLID Principles:</p>
<p>•	Single Responsibility Principle – your class should have one, and only one, reason to change<br />
•	Open Closed Principle – you should be able to extend a class’s behaviour without modifying it<br />
•	Liskov Substitution Principle – derived classes must be substitutable for their base classes<br />
•	Interface Segregation Principle – Make fine grained interfaces that are client specific<br />
•	Dependency Inversion Principle – Depend on abstractions, not on concretions</p>
<p>There are tons of extensive discussions on these principles on the internet, and you would easily notice that these topics are intertwined with Test Driven Development. That’s because if you follow the SOLID principles, your code would easily lend itself to automated unit tests, and vice versa. Also notice how these principles relate back to maintainability – in many cases testable code is maintainable code.</p>
<p>It’s all good advice, so do take your time researching on these topics, because this is what separates the awesome programmers from the mediocre ones.</p>
<p><strong>Usability</strong></p>
<p>Wikipedia defines usability as “the ease with which people can employ a particular tool or other human-made object in order to achieve a particular goal”.</p>
<p>It’s much easier to define usability in pictures. In 2008 Eric Burke published on his website stuffthathappens.com a classic comic defining what usability is:</p>
<img alt="Simplicity" src="http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png" title="Simplicity" width="425"/>
<p>He entitled this comic “Simplicity”. I’m sure it’s easy to understand the correlation between simplicity and usability.</p>
<p>Consequently it’s easy to see from this comic why Apple products are just taking the world by storm. The comic was published in 2008, about a year after the first iPhone came out and almost two years before the iPad hit the market. Why is there a three week long waiting list for getting an iPhone 4 today? Why are Chinese manufacturers trying hard to copy the iPad and coming out with absurd products like the iPed? Why are those manufacturers failing?</p>
<p>It all boils down to usability. Apple products are easy to use, and if you’re developing software for it you are forced to make it easy to use.</p>
<p>One valuable lesson I learned in my two months as an iPhone developer is that, while the Cocoa Touch developer experience is inferior to my experience developing Microsoft products, its limitations clearly define one objective – all the controls provided clearly translate to the touch screen paradigm of the iPhone.</p>
<p>So how do you make your application highly usable? I recommend following Steve Krug’s First Rule of Usability: <a href="http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=sr_1_1?ie=UTF8&s=books&qid=1282963606&sr=8-1">“Don’t make me think”</a>. It also happens to be the title of his bestselling book which I highly recommend if you want to learn more about the very broad topic of usability. In essence, what “Don’t make me think” is trying to say is that the user interface of an application must not need any explanation, and simply tap common sense. This is the secret behind the success of Apple’s products.</p>
<p>Even more importantly, good usability sells your software because it makes your customers feel good. <a href="http://www.joelonsoftware.com/uibook/fog0000000249.html">Joel Spolsky states that</a> “good UI sells software, but it also makes people happy, because people are happy when they accomplish the task they want to accomplish”.</p>
<p>Is the user interface of your software capable of making other people happy? Think about it.</p>
<p><strong>Maintainability, Testability, Usability</strong></p>
<p>These three tenets are in no way simple to master – it takes years of conscious effort and practice to improve your code to be able to achieve this. However, it’s very rewarding whenever you realize that your investment towards these tenets create a great product that your customers appreciate. </p>
<p>They are powerful concepts that define the difference between an awesome programmer and a mediocre coding monkey. It’s no surprise a great amount of discussion in the internet boils down to these three “abilities” and will continue to do so for years to come.</p>
]]></content:encoded>
			<wfw:commentRss>http://dotnet.kapenilattex.com/?feed=rss2&amp;p=471</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why you should post about awesome tools like dotTrace and Trace Analyzer</title>
		<link>http://dotnet.kapenilattex.com/?p=466</link>
		<comments>http://dotnet.kapenilattex.com/?p=466#comments</comments>
		<pubDate>Mon, 16 Aug 2010 15:28:36 +0000</pubDate>
		<dc:creator>Jon Limjap</dc:creator>
				<category><![CDATA[Industry Talk]]></category>
		<category><![CDATA[Tech Musings]]></category>
		<category><![CDATA[Cormant]]></category>
		<category><![CDATA[db sophic]]></category>
		<category><![CDATA[dotTrace]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[trace analyzer]]></category>

		<guid isPermaLink="false">http://dotnet.kapenilattex.com/?p=466</guid>
		<description><![CDATA[A few months back while I still worked with Cormant Technologies I went about dealing with "slowness issues" submitted by our client. Now we've done all the server-side optimizations we've got on the code using JetBrains' excellent dotTrace profiling tool. That left one area to cover: the database. Not only was it slow, the client [...]]]></description>
			<content:encoded><![CDATA[<p>A few months back while I still worked with <a href="http://cormant.com">Cormant Technologies</a> I went about dealing with "slowness issues" submitted by our client. Now we've done all the server-side optimizations we've got on the code using <a href="http://www.jetbrains.com/profiler/">JetBrains' excellent dotTrace profiling tool</a>.</p>
<p>That left one area to cover: the database. Not only was it slow, the client was also talking about unexplained near-exponential growth of the database in terms of size on disk. I went on searching online for a tool that would help us optimize on the database the way dotTrace helped us optimize on our code. Using that tool, I was able to rewrite certain indexes that were made inefficiently while at the same time squeezing a considerable amount of improvement on our query speeds.</p>
<p>Fast forward to today: my old supervisor chatted me up in Skype asking me what the name of the tool was, and I couldn't remember. Now most of the time I could find these things on my blog, but I distinctly remember <em>not</em> blogging about this tool, and I had a "doh!" moment right then and there complete with a Homer Simpson-slapping my forehead look.</p>
<div class="wp-caption alignright" style="width: 410px"><a href="http://www.dbsophic.com/traceanalyzer/"><img alt="DBSophic Trace Analyzer" src="http://www.dbsophic.com/assets/files/Trace_Analyzer_Screenshot.PNG" title="DBSophic Trace Analyzer" class="alignnone" width="400" /></a><p class="wp-caption-text">Trace Analyzer, how dare I forget thee?</p></div>
<p>After about 20 minutes of frantic googling and mucking around my 18,000 tweets (total FAIL) I found the correct search terms to bring it up -- the tool was <a href="http://www.dbsophic.com/traceanalyzer/">DBSophic Trace Analyzer</a>. How could I let such a great tool go undocumented?</p>
<p><strong>Moral of the story</strong>: always blog about the tools that helped you a lot. Even if you don't think you would use it again. Because you or someone you know might need it again long after you've forgotten about it. </p>
<p><strong>P.S.</strong> Dear Twitter, you're totally useless for remembering things. Love, Jon</p>
]]></content:encoded>
			<wfw:commentRss>http://dotnet.kapenilattex.com/?feed=rss2&amp;p=466</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On &#8220;why I suddenly became an iPhone developer&#8221;</title>
		<link>http://dotnet.kapenilattex.com/?p=452</link>
		<comments>http://dotnet.kapenilattex.com/?p=452#comments</comments>
		<pubDate>Tue, 06 Jul 2010 06:23:51 +0000</pubDate>
		<dc:creator>Jon Limjap</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://dotnet.kapenilattex.com/?p=452</guid>
		<description><![CDATA[I've been getting a lot of questions, surprised looks, expressions of shock, and scratched heads when people find out that I've recently become an iPhone developer. "Won't they take away your MVP for that?" was one question. The words traitor, betrayal and turncoat all came up one by one in different occassions. The answer to [...]]]></description>
			<content:encoded><![CDATA[<p><div class="wp-caption alignright" style="width: 250px"><a href="http://www.flickr.com/photos/jonlimjap/4749046432/" title="Jonjon, with an iPad, that he doesn't own :("><img src="http://farm5.static.flickr.com/4118/4749046432_a0f0c55103_m.jpg" width="240" height="160" alt="DevCon Philippines 2010" /></a><p class="wp-caption-text">Jonjon, with an iPad he doesn't own <img src='http://dotnet.kapenilattex.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p></div>I've been getting a lot of questions, surprised looks, expressions of shock, and scratched heads when people find out that I've recently become an iPhone developer.</p>
<p>"Won't they take away your MVP for that?" was one question. The words traitor, betrayal and turncoat all came up one by one in different occassions. <img src='http://dotnet.kapenilattex.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>The answer to the MVP question is no: around the world there are numerous MVPs working as Java, Ruby and iPhone devs in their day jobs, whether or not concurrent to their use of Microsoft platforms. The MVP award is all about community, and I won't be giving up on my community activities anytime soon.</p>
<p>However the answer to the "why" question will bring me back to 1998, when I decided to join the Filipino language newspaper in college. Back then I considered my command of the English language as excellent, both spoken and in print, and I was having some sort of writer's itch, so it might have made sense to join one of the two college papers. So thinking about which one to join, I asked myself; should I merely stay in my comfort zone or not? Eventually I decided that joining Ang Pahayagang Plaridel was an excellent opportunity to hone my writing skills in my native tongue -- something much more unusual in this country and in many ways more special -- and so I wrote for the paper and the rest is history.</p>
<p><a href="http://geniusblog.davidshenk.com/2007/11/benefits-of-bil.html">Bilingualism has many known benefits</a>, and it could usually be summarized as being able to think in more ways than one. With the paradigms and mindsets of two languages usually being very different, it allows the mind of a polyglot to have a much wider perspective and more points of view, and as my own experiences suggest this same phenomenon applies to programming languages. This is very much the same reason I'm now studying Objective-C and developing iPhone applications -- <a href="http://memeagora.blogspot.com/2006/12/polyglot-programming.html">striving to be a polyglot programmer contributes to your own awesomeness</a>.</p>
<p>As for .NET, I'm sure I'll be writing in C# again soon, especially now that I appreciate its form all the more. <img src='http://dotnet.kapenilattex.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dotnet.kapenilattex.com/?feed=rss2&amp;p=452</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DevCon Philippines 2010 in Cebu</title>
		<link>http://dotnet.kapenilattex.com/?p=432</link>
		<comments>http://dotnet.kapenilattex.com/?p=432#comments</comments>
		<pubDate>Mon, 28 Jun 2010 14:06:34 +0000</pubDate>
		<dc:creator>Jon Limjap</dc:creator>
				<category><![CDATA[Talks and Conferences]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C# 4.0]]></category>
		<category><![CDATA[DEVCON]]></category>
		<category><![CDATA[MVP]]></category>

		<guid isPermaLink="false">http://dotnet.kapenilattex.com/?p=432</guid>
		<description><![CDATA[I had an awesome time last week in Cebu, having presented a 5 minute lightning talk at the DevCon Philippines. There I talked on a similar topic to that I presented in the Visual Studio 2010 Community Launch, Dynamics and Runtime Object Composition with C# 4.0, which I also discussed in a previous blog entry. [...]]]></description>
			<content:encoded><![CDATA[<p>I had an awesome time last week in Cebu, having presented a 5 minute lightning talk at the DevCon Philippines. There I talked on a similar topic to that I presented in the <a href="http://dotnet.kapenilattex.com/?p=426">Visual Studio 2010 Community Launch</a>, Dynamics and Runtime Object Composition with C# 4.0, which I also <a href="http://dotnet.kapenilattex.com/?p=253">discussed in a previous blog entry</a>.</p>
<p><a title="View Dynamics and Object Runtime Composition With C# 4.0 on Scribd" href="http://www.scribd.com/doc/33658186/Dynamics-and-Object-Runtime-Composition-With-C-4-0" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;">Dynamics and Object Runtime Composition With C# 4.0</a> <object id="doc_839202869458713" name="doc_839202869458713" height="500" width="100%" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;" rel="media:presentation" resource="http://d1.scribdassets.com/ScribdViewer.swf?document_id=33658186&access_key=key-384wolel458s5mwkfia&page=1&viewMode=slideshow" xmlns:media="http://search.yahoo.com/searchmonkey/media/" xmlns:dc="http://purl.org/dc/terms/" ><param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"><param name="wmode" value="opaque"><param name="bgcolor" value="#ffffff"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><param name="FlashVars" value="document_id=33658186&access_key=key-384wolel458s5mwkfia&page=1&viewMode=slideshow"><embed id="doc_839202869458713" name="doc_839202869458713" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=33658186&access_key=key-384wolel458s5mwkfia&page=1&viewMode=slideshow" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="500" width="100%" wmode="opaque" bgcolor="#ffffff"></embed></object> </p>
<p>It was nice meeting (again) the vibrant and passionate Cebu developer community! Hope to see you again next year!</p>
<p>Some pics from the event:<br />
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/jonlimjap/4742682496/" title="DevCon Philippines 2010 by Jon Limjap, on Flickr"><img src="http://farm5.static.flickr.com/4078/4742682496_6ef7eca5f9.jpg" width="400"  alt="DevCon Philippines 2010" /></a><p class="wp-caption-text">Jon Limjap at DevCon 2010</p></div></p>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/jonlimjap/4742672448/" title="DevCon Philippines 2010 by Jon Limjap, on Flickr"><img src="http://farm5.static.flickr.com/4116/4742672448_4562690665.jpg" width="400" alt="DevCon Philippines 2010" /></a><p class="wp-caption-text">Kevin Leversee delivering his awesome presentation on <a href='http://webanatics.com/2010/06/24/devcon-cebu-2010-wiifm-and-mediocrity-how-flat-world-has-changed-everythin/'>WIIFM and Mediocrity</a></p></div>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/jonlimjap/4742034427/" title="DevCon Philippines 2010 by Jon Limjap, on Flickr"><img src="http://farm5.static.flickr.com/4073/4742034427_4b06c37f2b.jpg" width="400" alt="DevCon Philippines 2010" /></a><p class="wp-caption-text">DevCon 2010 audience</p></div>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/jonlimjap/4742045773/" title="DevCon Philippines 2010 by Jon Limjap, on Flickr"><img src="http://farm5.static.flickr.com/4075/4742045773_f85d5a8b63.jpg" width="400" alt="DevCon Philippines 2010" /></a><p class="wp-caption-text">Hackathon participants submit their entries onstage</p></div>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/jonlimjap/4742687996/" title="DevCon Philippines 2010 by Jon Limjap, on Flickr"><img src="http://farm5.static.flickr.com/4135/4742687996_90076daa8d.jpg" width="400" alt="DevCon Philippines 2010" /></a><p class="wp-caption-text">Enric Sen Canales cheers after winning the Sybase Hackathon</p></div>
<p>The complete set of pictures are in <a href="http://www.flickr.com/photos/jonlimjap/sets/72157624252003641/">Flickr</a> and <a href="http://www.facebook.com/LaTtEX?v=wall&story_fbid=409303403609#!/album.php?aid=184507&id=520563609">Facebook</a>.</p>
<p><strong>Update</strong> Enric Sen Canales won the Sybase, not the IBM Hackathon. There were 2 hackathons held, sponsored by Sybase and IBM. Congratulations to the winners. <img src='http://dotnet.kapenilattex.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dotnet.kapenilattex.com/?feed=rss2&amp;p=432</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2010 Community Launch</title>
		<link>http://dotnet.kapenilattex.com/?p=426</link>
		<comments>http://dotnet.kapenilattex.com/?p=426#comments</comments>
		<pubDate>Thu, 06 May 2010 07:29:11 +0000</pubDate>
		<dc:creator>Jon Limjap</dc:creator>
				<category><![CDATA[Talks and Conferences]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[Microsoft Philippines]]></category>
		<category><![CDATA[PHINUG]]></category>
		<category><![CDATA[visual studio 2010]]></category>

		<guid isPermaLink="false">http://dotnet.kapenilattex.com/?p=426</guid>
		<description><![CDATA[I'd like to invite you to the Visual Studio 2010 Community Launch, to be held at Microsoft Philippines (16th Flr, 6750 Ayala Ave., Makati) on May 15, 2010, 1PM to 6PM. Topics include: Sharepoint 2010 Programming with Visual Studio 2010 Web Development with Visual Studio 2010 and Telerik Web Controls Runtime Object Composition with C# [...]]]></description>
			<content:encoded><![CDATA[<p>I'd like to invite you to the Visual Studio 2010 Community Launch, to be held at  Microsoft Philippines (16th Flr, 6750 Ayala Ave., Makati) on May 15, 2010, 1PM to 6PM.</p>
<p>Topics include:</p>
<ul>
<li>Sharepoint 2010 Programming with Visual Studio 2010</li>
<li>Web Development with Visual Studio 2010 and Telerik Web Controls</li>
<li>Runtime Object Composition with C# 4.0 dynamics</li>
<li>Service Factory on Visual Studio 2010 (Web Service Software Factory 2010 RC)</li>
</ul>
<p>We'll also have a roundtable discussion on T-SQL vs. Non-T-SQL data access with the Microsoft MVPs where everyone can engage and exchange ideas and thoughts.</p>
<p>Tickets cost PHP150 and will be payable at the venue, starting at 1PM. Please register at <a href="http://www.clicktoattend.com/?id=148162">http://www.clicktoattend.com/?id=148162</a></p>
<p>This will be PHINUG's first activity after some time, so we hope to see you there.</p>
]]></content:encoded>
			<wfw:commentRss>http://dotnet.kapenilattex.com/?feed=rss2&amp;p=426</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Runtime object composition with C# 4.0 dynamics</title>
		<link>http://dotnet.kapenilattex.com/?p=253</link>
		<comments>http://dotnet.kapenilattex.com/?p=253#comments</comments>
		<pubDate>Thu, 29 Apr 2010 12:12:11 +0000</pubDate>
		<dc:creator>Jon Limjap</dc:creator>
				<category><![CDATA[Technical Articles]]></category>
		<category><![CDATA[C# 4.0]]></category>
		<category><![CDATA[DLR]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[ExpandoObject]]></category>

		<guid isPermaLink="false">http://dotnet.kapenilattex.com/?p=253</guid>
		<description><![CDATA[The Dynamic Language Runtime (DLR) of the Microsoft .NET Framework 4.0 allowed for the introduction of dynamically-typed language capabilities to statically typed languages such as C#. One of these capabilities is the run time rather than compile-time evaluation of members. For example: dynamic myObj = &#34;blah&#34;; Console.WriteLine(myObj.Contains(&#34;lah&#34;)); Console.WriteLine(myObj.IndexOf(&#34;x&#34;)); myObj = new List&#60;int&#62;(); Console.WriteLine(myObj.Count); No errors [...]]]></description>
			<content:encoded><![CDATA[<p>The Dynamic Language Runtime (DLR) of the Microsoft .NET Framework 4.0 allowed for the introduction of dynamically-typed language capabilities to statically typed languages such as C#. One of these capabilities is the run time rather than compile-time evaluation of members. For example:</p>
<pre class="brush: csharp;">
            dynamic myObj = &quot;blah&quot;;
            Console.WriteLine(myObj.Contains(&quot;lah&quot;));
            Console.WriteLine(myObj.IndexOf(&quot;x&quot;));

            myObj = new List&lt;int&gt;();
            Console.WriteLine(myObj.Count);
</pre>
<div class="wp-caption alignright" style="width: 180px"><img alt="Mr. Fantastic" src="http://upload.wikimedia.org/wikipedia/en/thumb/b/ba/Reedr.jpg/250px-Reedr.jpg" title="Mr. Fantastic" width="160" /><p class="wp-caption-text">Mr. Fantastic's suit is made up of &quot;unstable molecules&quot; that expand with his form -- like the ExpandoObject.</p></div>
<p>No errors occur when compiling the above code because the dynamic keyword suppresses checking; if the member is absent an exception is thrown during run time.</p>
<p>However, the introduction of the DLR introduces more than just the capability to switch types during runtime.</p>
<p><strong>Enter the ExpandoObject</strong></p>
<p>The System.Dynamic namespace introduced in .NET 4.0 includes a bunch of new objects that leverages the dynamic capabilities of the DLR. One of these is the ExpandoObject. The ExpandoObject allows members to be added at run time.</p>
<p>For example, we could arbitrarily add properties to a class during run time:</p>
<pre class="brush: csharp;">
            dynamic mrFantastic = new ExpandoObject();
            mrFantastic.Name = &quot;Reed Richards&quot;;
            mrFantastic.BirthDate = new DateTime(year: 1961, month: 12, day: 2);

            Console.WriteLine(mrFantastic.Name);
            Console.WriteLine(mrFantastic.BirthDate);
</pre>
<p>However, we stated that the ExpandoObject can add <em>members</em> during run time, which doesn't only mean properties, but also methods. To be able to treat methods and functions as assignable objects, delegates have to be used. The two primary examples of delegates are the Action delegate, and the Func&lt;TResult&gt; delegate.</p>
<p>Action delegates take on a single parameter and doesn't return a value. Essentially Action&lt;T&gt; accepts void methods as its value. Func&lt;TResult&gt; on the other hand, takes on no parameters and returns a result of type TResult.</p>
<p>Using lambda expressions, or even anonymous delegates, we could then add methods to our ExpandoObject like this:</p>
<pre class="brush: csharp;">
            //write the value of the Name attribute to the console:
            mrFantastic.SayMyName = new Action(() =&gt; Console.WriteLine(mrFantastic.Name));

            //calculate Age of person by subtracting current time with birthdate, and dividing by average number of days in a year:
            mrFantastic.GetAge = new Func&lt;int&gt;( () =&gt; Convert.ToInt32((DateTime.Now - mrFantastic.BirthDate).Days / 365.25) );      

            mrFantastic.SayMyName();
            Console.WriteLine(mrFantastic.GetAge());
</pre>
<p>Of course, you could use other delegates like Action&lt;T&gt;, Action&lt;T1, T2&gt;, Func&lt;T1, TResult&gt;, etc. to accommodate multiple parameters into the object definitions.</p>
<p><strong>Further reading</strong></p>
<p>There are some interesting and practical applications of ExpandoObjects. One of them is <a href="http://amazedsaint.blogspot.com/">Client Application Development MVP Anoop Madhusudanan</a>'s ElasticObject, which allows for multilevel ExpandoObjects, which can then be used to create dynamic XElement structures. Read more about it <a href="http://www.codeproject.com/KB/cs/dynamicincsharp.aspx">here</a>.</p>
<p><em>Image taken from <a href="http://en.wikipedia.org/wiki/Mister_Fantastic">http://en.wikipedia.org/wiki/Mister_Fantastic</a></em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dotnet.kapenilattex.com/?feed=rss2&amp;p=253</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Of tool preferences and programming languages</title>
		<link>http://dotnet.kapenilattex.com/?p=237</link>
		<comments>http://dotnet.kapenilattex.com/?p=237#comments</comments>
		<pubDate>Mon, 26 Apr 2010 12:30:01 +0000</pubDate>
		<dc:creator>Jon Limjap</dc:creator>
				<category><![CDATA[Tech Musings]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://dotnet.kapenilattex.com/?p=237</guid>
		<description><![CDATA[A few months back in my post Why I love C#, Mike left some really interesting comments about the preference of C# over VB and what he thinks matters when it comes to return-on-investment vis-a-vis programming language choice, to quote: The author of this C# article fails to mention even a single thing (a real [...]]]></description>
			<content:encoded><![CDATA[<p>A few months back in my post <a href="http://dotnet.kapenilattex.com/?p=205">Why I love C#</a>, Mike left some really interesting comments about <a href="http://dotnet.kapenilattex.com/?p=205#comment-25444">the preference of C# over VB</a> and <a href="http://dotnet.kapenilattex.com/?p=205#comment-25445">what he thinks matters when it comes to return-on-investment vis-a-vis programming language choice</a>, to quote:</p>
<blockquote><p>The author of this C# article fails to mention even a single thing (a real example, in a real business situation) where he did something better and quicker because he was using C#</p>
<p>...</p>
<p>And if it is true that C# programmers cost 10% more, then I as a person who has been hiring programmers for 15 years, certainly do not want to bring in C#. Instead I will put my money in VB.NET which is easier to read and programmers cost less – so I save my company money – and achieve exactly the same results – in less time.</p></blockquote>
<p>And in a later comment:</p>
<blockquote><p>More importantly, almost all programming is done for use in a business environment. Which means there needs to be ROI, and the best one possible.</p>
<p>...</p>
<p>Of course ROI does not apply if you are doing non-critical (to business) programming work, in which case the longer learning curve of C# does not matter – as it is all for fun; but for serious business applications, Lambda expressions, and the odd features really do not matter.</p></blockquote>
<p>His opinion on the matter is interesting because first, it comes from the perspective of a business person who, in the "15 years of hiring developers", has found no need for the use of any language more complex than Basic. He has found C# or other non-english-like language so unnecessary to his applications that he is convinced they are a waste of resources in terms of return-on-investment.</p>
<div class="wp-caption alignleft" style="width: 310px"><img alt="AK-47" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Rifle_AK-47.jpg/300px-Rifle_AK-47.jpg" title="AK-47" width="300" height="173" /><p class="wp-caption-text">The AK-47 is probably the most popular assault rifle in the planet</p></div>
<p>I actually agree with him. The key of success in many products is often their simplicity in terms of construction, operating principles, and the ease by which you could find or manufacture spare parts (as an analog to software maintenance) for these products. Consider for example, the most pervasive assault weapon in the planet: the AK-47.</p>
<p>The reasons for the AK-47's success is simple:</p>
<blockquote><p>Even after six decades, due to its durability, low production cost and ease of use, the model and its variants remain the most widely used and popular assault rifles in the world. It has been manufactured in many countries and has seen service with regular armed forces as well as irregular, revolutionary and terrorist organizations worldwide. The AK-47 was also used as a basis for the development of many other types of individual and crew-served firearms. More AK-type rifles have been produced than all other assault rifles combined. [<a href="http://en.wikipedia.org/wiki/AK-47">Wikipedia article on AK-47</a>]</p></blockquote>
<p>Clearly, the AK-47's superior qualities should have made it the assault rifle of choice for every military unit in the world, but there are a wide variety of <a href="http://en.wikipedia.org/wiki/Assault_rifle">assault rifles</a> and other such weapons used around the world, for a variety of purposes. While some riflemen will simply dislike it because of idealogical reasons (e.g., its Soviet origins or association with paramilitary and terrorist organizations), others may find a variety of practical reasons not to use it: whether it be dimensions, recoil, range, handling, etc.</p>
<p>The same will be true for Visual Basic or its variants. While it's perfect for many, many business applications, with the perception that developers can easily be trained for using it for a reasonable return on investment, there will be cases and applications beyond simple business logic that will render it cumbersome, and where C# may be the better choice of language for development.</p>
<p>Mike also accuses me of dismissing Visual Basic simply because I don't want to be considered a beginner:</p>
<blockquote><p>It is very clear that he associates VB with his first language BASIC; and because he wants himself not be considered a beginner (but a very experienced programmed well capable of using all symbols in C#) he chooses C#. It is C after all and not a Beginner languange(sic)...</p>
<p>C# with its more cryptic looking code, certainly costs more to the business.</p></blockquote>
<div class="wp-caption alignright" style="width: 250px"><img alt="Crayons" src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Crayones_cera.jpg/240px-Crayones_cera.jpg" title="Crayons" width="240" height="120" /><p class="wp-caption-text">How many commissioned paintings are made with crayons?</p></div>
<p>If I follow his logic, believing that "cryptic looking code" costs more to business, and using a "simpler language" is more beneficial to businesses, then tell me, why aren't there more paintings made with crayons than those made with oil pastels, acrylic, and other more complex media?</p>
<p>I have to make this clear: I don't think using Visual Basic is tantamount to using crayons. But if I like doing paintings more with acrylics than with oils, or with watercolor than with gouache, or with sable brushes than synthetic ones, or with lacquer-based rather than water-based paints, should it be taken against me?</p>
<p>If the person who commissions my work mandates me to use Visual Basic, then by all means I'll use it, but that doesn't mean my preference for working with C# will go away. It's a tooling preference, a matter of choice, and not the kind of elitism Mike implies in his comment.</p>
<p>Every craftsman will have his tool of choice, and they'll try to use it as much as the circumstances will allow.</p>
]]></content:encoded>
			<wfw:commentRss>http://dotnet.kapenilattex.com/?feed=rss2&amp;p=237</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Having a good April</title>
		<link>http://dotnet.kapenilattex.com/?p=222</link>
		<comments>http://dotnet.kapenilattex.com/?p=222#comments</comments>
		<pubDate>Sun, 25 Apr 2010 15:37:30 +0000</pubDate>
		<dc:creator>Jon Limjap</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[MVP]]></category>

		<guid isPermaLink="false">http://dotnet.kapenilattex.com/?p=222</guid>
		<description><![CDATA[This has been a very beautiful month for me so far, both in the professional and personal front. First, I once more received a Microsoft Most Valuable Professional for Visual C# award for the year 2010. It was an interesting year meeting people both in real life and online with the same passion for software [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="MVP logo" src="http://dotnet.kapenilattex.com/wp-content/uploads/2009/04/microsoft-mvp-logo.png" title="MVP logo" class="alignright" width="75" />This has been a very beautiful month for me so far, both in the professional and personal front.</p>
<p>First, I once more received a Microsoft Most Valuable Professional for Visual C# award for the year 2010. It was an interesting year meeting people both in real life and online with the same passion for software development and it feels good to know that there are people all around us who we can teach, and from whom we can learn from.</p>
<div class="wp-caption alignleft" style="width: 285px"><img alt="Apollo Johan Alipio Limjap" src="http://img255.imageshack.us/img255/5426/jalimg1175.jpg" title="Apollo Johan Alipio Limjap" width="275" /><p class="wp-caption-text">Apollo Johan Alipio Limjap</p></div>
<p>But the bigger gift to me this month is the birth of my second child and first boy, Apollo Johan Alipio Limjap. He was born on April 11, 2010. He was confined for the following week because of an elevated white blood cell count, with visits limited to his mother. I was only able to enjoy his company the past week, and needless to say it was a very happy and fulfilling week that reminded me how it is to be father to an infant again, soiled diapers, pee baths and all.</p>
<p>Can't wait to teach him all the geekery I could muster. <img src='http://dotnet.kapenilattex.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dotnet.kapenilattex.com/?feed=rss2&amp;p=222</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DEVCON Luzon 2010</title>
		<link>http://dotnet.kapenilattex.com/?p=212</link>
		<comments>http://dotnet.kapenilattex.com/?p=212#comments</comments>
		<pubDate>Thu, 11 Feb 2010 17:45:36 +0000</pubDate>
		<dc:creator>Jon Limjap</dc:creator>
				<category><![CDATA[Talks and Conferences]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C# 4.0]]></category>
		<category><![CDATA[DEVCON]]></category>
		<category><![CDATA[MVP]]></category>
		<category><![CDATA[PSIA]]></category>

		<guid isPermaLink="false">http://dotnet.kapenilattex.com/?p=212</guid>
		<description><![CDATA[I had an awesome time presenting and participating in last Tuesday's DEVCON Luzon! More than 200 software industry participants attended the event at SMX Convention Center near SM Mall of Asia. I was lucky to have been able to present, as a 10 minute Lightining Talk,&#160; a topic I loved a lot -- What's new [...]]]></description>
			<content:encoded><![CDATA[<p>I had an awesome time presenting and participating in last Tuesday's DEVCON Luzon! More than 200 software industry participants attended the event at SMX Convention Center near SM Mall of Asia.</p>
<p>I was lucky to have been able to present, as a 10 minute Lightining Talk,&nbsp; a topic I loved a lot -- What's new in C# 4.0. And for the first time, my talk was live-streamed over the net and recorded using ustream.tv.</p>
<p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:766578e0-cc7a-41b7-b23c-4fb118bbe039" class="wlWriterSmartContent">
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" id="utv720190" name="utv_n_406183"><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=4580824&amp;beginPercent=0.6320&amp;endPercent=0.9989" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/video/4580824" /><embed flashvars="loc=%2F&amp;autoplay=false&amp;vid=4580824&amp;beginPercent=0.6320&amp;endPercent=0.9989" width="480" height="386" allowfullscreen="true" allowscriptaccess="always" id="utv720190" name="utv_n_406183" src="http://www.ustream.tv/flash/video/4580824" type="application/x-shockwave-flash" /></object></div>
</div>
</p>
<p>Thanks to Karl Arao for the photos below!</p>
<p><a href="http://dotnet.kapenilattex.com/wp-content/uploads/2010/02/18673_309766118584_151052508584_3558919_4732446_n.jpg"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="18673_309766118584_151052508584_3558919_4732446_n" src="http://dotnet.kapenilattex.com/wp-content/uploads/2010/02/18673_309766118584_151052508584_3558919_4732446_n_thumb.jpg" width="389" height="261"></a> </p>
<p><a href="http://dotnet.kapenilattex.com/wp-content/uploads/2010/02/18673_309766128584_151052508584_3558920_4325744_n.jpg"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="18673_309766128584_151052508584_3558920_4325744_n" src="http://dotnet.kapenilattex.com/wp-content/uploads/2010/02/18673_309766128584_151052508584_3558920_4325744_n_thumb.jpg" width="388" height="260"></a> </p>
<p>Later in the evening I was part of the judges for the Hackathon where PHP10,000 pesos was awarded to the winner <a href="http://twitter.com/ubuntunero">Elmer Rivera</a>, after a 30 minute programming challenge.</p>
<p>Hackathon participants congregating around an access point. Maybe for faster documentation browsing? <img src='http://dotnet.kapenilattex.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><img src="http://farm3.static.flickr.com/2708/4346605962_9d3a5ab6cd.jpg"> </p>
<p>Participants look on during judging</p>
<p><img src="http://farm5.static.flickr.com/4053/4346605800_fafe622707.jpg"> </p>
<p>Special thanks to the Philippines Software Industry Association (PSIA) Secretariat, especially Diane, for a great DEVCON Luzon.</p>
<p>Hope to see you in Cebu for DEVCON Philippines this June!</p>
]]></content:encoded>
			<wfw:commentRss>http://dotnet.kapenilattex.com/?feed=rss2&amp;p=212</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSDN Session: VB vs. C#</title>
		<link>http://dotnet.kapenilattex.com/?p=207</link>
		<comments>http://dotnet.kapenilattex.com/?p=207#comments</comments>
		<pubDate>Mon, 30 Nov 2009 17:06:40 +0000</pubDate>
		<dc:creator>Jon Limjap</dc:creator>
				<category><![CDATA[Talks and Conferences]]></category>
		<category><![CDATA[Tech Musings]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MVP]]></category>
		<category><![CDATA[Talks & Seminars]]></category>

		<guid isPermaLink="false">http://dotnet.kapenilattex.com/?p=207</guid>
		<description><![CDATA[I had a lot of fun when Warren Yu and I presented a rare dual-session in the showdown between VB and C# developers - whilst showing them the newest language features in the upcoming versions of the languages Visual Basic 10 and C# 4.0. The heated discussion (aided by some San Miguel Beer) afterwards was [...]]]></description>
			<content:encoded><![CDATA[<p>I had a lot of fun when <a href="http://msdnphilippines.net/blogs/warren/">Warren Yu</a> and I presented a rare dual-session in the showdown between VB and C# developers - whilst showing them the newest language features in the upcoming versions of the languages Visual Basic 10 and C# 4.0. The heated discussion (aided by some San Miguel Beer) afterwards was the most passionate we've heard from members of the audience, and their lively participation only means that we're going to do this again!</p>
<p>Here are some of the pictures from the event:</p>
<p>The speakers squaring off...</p>
<p><img src="http://farm3.static.flickr.com/2511/4147711302_5ec32875dd.jpg" /> </p>
<p>The VB camp...</p>
<p><img src="http://farm3.static.flickr.com/2574/4146953503_098f371c9a.jpg" /> </p>
<p>The C# camp...</p>
<p><img src="http://farm3.static.flickr.com/2494/4146953653_86c3d7d5d7.jpg" />&#160;</p>
<p>Ladies of VB</p>
<p><img src="http://farm3.static.flickr.com/2546/4147710186_46e356190a.jpg" /> </p>
<p>JL Tolentino with his passionate defense of C#</p>
<p><img src="http://farm3.static.flickr.com/2650/4146953155_ac8293b942.jpg" /> </p>
<p>Jad with his views on VB</p>
<p><img src="http://farm3.static.flickr.com/2632/4146953237_1c73a4a29c.jpg" />&#160;</p>
<p>We want to thank new Microsoft DPE Dale Jose for all that booze (and the idea for the event, actually <img src='http://dotnet.kapenilattex.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</p>
<p><img src="http://farm3.static.flickr.com/2690/4146952959_6de65521ea.jpg" /> </p>
<p>I again thank all the awesome audience who came, spoke their mind and helped us make this event truly awesome! Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://dotnet.kapenilattex.com/?feed=rss2&amp;p=207</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
